@syncfusion/ej2-filemanager 32.2.3 → 33.1.44

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.
Files changed (84) hide show
  1. package/dist/ej2-filemanager.min.js +2 -2
  2. package/dist/ej2-filemanager.umd.min.js +2 -2
  3. package/dist/ej2-filemanager.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-filemanager.es2015.js +10 -4
  5. package/dist/es6/ej2-filemanager.es2015.js.map +1 -1
  6. package/dist/es6/ej2-filemanager.es5.js +12 -4
  7. package/dist/es6/ej2-filemanager.es5.js.map +1 -1
  8. package/dist/global/ej2-filemanager.min.js +2 -2
  9. package/dist/global/ej2-filemanager.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +11 -11
  12. package/src/file-manager/actions/toolbar.js +8 -0
  13. package/src/file-manager/models/default-locale.js +2 -2
  14. package/src/file-manager/pop-up/context-menu.js +2 -2
  15. package/styles/bds-lite.css +8 -0
  16. package/styles/bds.css +8 -0
  17. package/styles/bootstrap-dark-lite.css +8 -0
  18. package/styles/bootstrap-dark.css +8 -0
  19. package/styles/bootstrap-lite.css +8 -0
  20. package/styles/bootstrap.css +8 -0
  21. package/styles/bootstrap4-lite.css +13 -1
  22. package/styles/bootstrap4.css +13 -1
  23. package/styles/bootstrap5-dark-lite.css +12 -0
  24. package/styles/bootstrap5-dark.css +12 -0
  25. package/styles/bootstrap5-lite.css +13 -1
  26. package/styles/bootstrap5.3-lite.css +12 -8
  27. package/styles/bootstrap5.3.css +12 -8
  28. package/styles/bootstrap5.css +13 -1
  29. package/styles/fabric-dark-lite.css +8 -0
  30. package/styles/fabric-dark.css +8 -0
  31. package/styles/fabric-lite.css +8 -0
  32. package/styles/fabric.css +8 -0
  33. package/styles/file-manager/_bigger.scss +1 -1
  34. package/styles/file-manager/_bootstrap4-definition.scss +3 -0
  35. package/styles/file-manager/_bootstrap5-dark-definition.scss +3 -0
  36. package/styles/file-manager/_bootstrap5-definition.scss +3 -0
  37. package/styles/file-manager/_fluent2-definition.scss +1 -0
  38. package/styles/file-manager/_layout.scss +9 -1
  39. package/styles/file-manager/_theme.scss +10 -1
  40. package/styles/file-manager/bds.css +8 -0
  41. package/styles/file-manager/bootstrap-dark.css +8 -0
  42. package/styles/file-manager/bootstrap.css +8 -0
  43. package/styles/file-manager/bootstrap4.css +13 -1
  44. package/styles/file-manager/bootstrap5-dark.css +12 -0
  45. package/styles/file-manager/bootstrap5.3.css +12 -8
  46. package/styles/file-manager/bootstrap5.css +13 -1
  47. package/styles/file-manager/fabric-dark.css +8 -0
  48. package/styles/file-manager/fabric.css +8 -0
  49. package/styles/file-manager/fluent-dark.css +8 -0
  50. package/styles/file-manager/fluent.css +8 -0
  51. package/styles/file-manager/fluent2.css +9 -0
  52. package/styles/file-manager/highcontrast-light.css +8 -0
  53. package/styles/file-manager/highcontrast.css +8 -0
  54. package/styles/file-manager/material-dark.css +8 -0
  55. package/styles/file-manager/material.css +8 -0
  56. package/styles/file-manager/material3-dark.css +8 -5
  57. package/styles/file-manager/material3.css +8 -5
  58. package/styles/file-manager/tailwind-dark.css +8 -0
  59. package/styles/file-manager/tailwind.css +8 -0
  60. package/styles/file-manager/tailwind3.css +8 -0
  61. package/styles/fluent-dark-lite.css +8 -0
  62. package/styles/fluent-dark.css +8 -0
  63. package/styles/fluent-lite.css +8 -0
  64. package/styles/fluent.css +8 -0
  65. package/styles/fluent2-lite.css +9 -0
  66. package/styles/fluent2.css +9 -0
  67. package/styles/highcontrast-light-lite.css +8 -0
  68. package/styles/highcontrast-light.css +8 -0
  69. package/styles/highcontrast-lite.css +8 -0
  70. package/styles/highcontrast.css +8 -0
  71. package/styles/material-dark-lite.css +8 -0
  72. package/styles/material-dark.css +8 -0
  73. package/styles/material-lite.css +8 -0
  74. package/styles/material.css +8 -0
  75. package/styles/material3-dark-lite.css +8 -5
  76. package/styles/material3-dark.css +8 -5
  77. package/styles/material3-lite.css +8 -5
  78. package/styles/material3.css +8 -5
  79. package/styles/tailwind-dark-lite.css +8 -0
  80. package/styles/tailwind-dark.css +8 -0
  81. package/styles/tailwind-lite.css +8 -0
  82. package/styles/tailwind.css +8 -0
  83. package/styles/tailwind3-lite.css +8 -0
  84. package/styles/tailwind3.css +8 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../src/file-manager/models/ajax-settings.js","../src/file-manager/models/toolbar-settings.js","../src/file-manager/models/search-settings.js","../src/file-manager/models/details-view-settings.js","../src/file-manager/models/contextMenu-settings.js","../src/file-manager/models/navigation-pane-settings.js","../src/file-manager/models/upload-settings.js","../src/file-manager/models/column.js","../src/file-manager/base/classes.js","../src/file-manager/base/constant.js","../src/file-manager/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.js","../src/file-manager/layout/large-icons-view.js","../src/file-manager/actions/breadcrumb-bar.js","../src/file-manager/pop-up/context-menu.js","../src/file-manager/models/default-locale.js","../src/file-manager/base/file-manager.js","../src/file-manager/actions/toolbar.js","../src/file-manager/actions/virtualization.js","../src/file-manager/layout/navigation-pane.js","../src/file-manager/layout/details-view.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var defaultToolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\"e-fe-text\">${name}</span>',\n customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n }), format: 'n2'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"sequentialUpload\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"chunkSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"isPrimaryKey\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_FOLDER = 'e-icons e-folder';\n/** @hidden */\nexport var ICON_FILE = 'e-icons e-file-format';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete, isFileSystemData } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility function to compare two strings in a way similar to Windows Explorer.\n * Files and folders are sorted separately, with folders coming before files.\n *\n * @param {string} reference - The first string to compare. This could be a file or folder name.\n * @param {string} comparer - The second string to compare. This could be a file or folder name.\n * @returns {number} - A negative number if `reference` should come before `comparer`, a positive number if `comparer` should come before `reference`, and 0 if they are considered equal.\n */\nexport function sortComparer(reference, comparer) {\n // Check if reference and comparer are files or folders\n var referenceIsFile = /\\.\\S+/.test(reference);\n var comparerIsFile = /\\.\\S+/.test(comparer);\n // If one is a file and the other is a folder, the folder should come first\n if (referenceIsFile && !comparerIsFile) {\n return 1;\n }\n if (!referenceIsFile && comparerIsFile) {\n return -1;\n }\n var referenceParts = [];\n var comparerParts = [];\n (reference + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { referenceParts.push([$1 || Infinity, $2 || '']); return ''; });\n (comparer + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { comparerParts.push([$1 || Infinity, $2 || '']); return ''; });\n // Compare each part of reference and comparer\n while (referenceParts.length && comparerParts.length) {\n var referencePart = referenceParts.shift();\n var comparerPart = comparerParts.shift();\n if (referencePart && comparerPart) {\n var comparisonResult = referencePart[0] - comparerPart[0] ||\n referencePart[1].localeCompare(comparerPart[1]);\n if (comparisonResult) {\n return comparisonResult;\n }\n }\n }\n return referenceParts.length - comparerParts.length;\n}\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId, instance) }, true);\n instance.pathId = getPathId(node, instance);\n instance.pathNames = getPathNames(node, text, instance);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId, instance) {\n var matched = getParents(element, text, false, hasId, instance);\n var path = '/';\n var len = matched.length - (2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node, instance) {\n var matched = getParents(node, node.getAttribute('data-uid'), true, false, instance);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text, instance) {\n var matched = getParents(element, text, false, false, instance);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId, instance) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var data = [{}];\n if (!isNOU(instance) && !isNOU(instance.navigationpaneModule) && !isNOU(instance.navigationpaneModule.treeObj)) {\n data = instance.navigationpaneModule.treeObj.getTreeData(el);\n }\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') : getValue('name', data[0]));\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = '/';\n var i = 1;\n for (i; i < parent.pathId.length; i++) {\n var data = getValue(parent.pathId[parseInt(i.toString(), 10)], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Get all child items\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent ID.\n * @returns {Object[]} An array of child items\n * @private\n */\nexport function getAllChildItems(parent, parentId) {\n var children = parent.fileSystemData.filter(function (item) {\n return String(item.parentId) === String(parentId);\n });\n var allChildren = children.slice();\n children.forEach(function (child) {\n var childId = child.id;\n allChildren = allChildren.concat(getAllChildItems(parent, childId));\n });\n return allChildren;\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (isFileSystemData(parent)) {\n if (value === '') {\n parent.itemData = parent.fileSystemData;\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n else {\n parent.searchSettings.filterType = isNOU(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;\n var currData = getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n var parentId = getValue('id', currData);\n var filteredData = getAllChildItems(parent, parentId);\n var data = new DataManager(filteredData).\n executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));\n var searchValue = parent.searchSettings.ignoreCase ? value.toLowerCase() : value;\n parent.itemData = data;\n parent.responseData.error = null;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchValue, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n return;\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable') || element.classList.contains('e-text-content')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {BeforeImageLoadEventArgs} - returns the eventargs.\n * @private\n */\nexport function getImageUrl(parent, item) {\n var imgUrl = isFileSystemData(parent) ? getValue('imageUrl', item) : '';\n if (isFileSystemData(parent)) {\n var eventArgs_1 = {\n fileDetails: [item],\n imageUrl: imgUrl,\n useImageAsUrl: true\n };\n parent.trigger('beforeImageLoad', eventArgs_1);\n return eventArgs_1;\n }\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var data = { 'action': 'getImage', 'path': parent.path + fileName, 'id': getValue('id', item) };\n var ajaxSettings = {\n url: baseUrl,\n type: 'POST',\n contentType: 'application/json',\n responseType: 'blob',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl,\n useImageAsUrl: true,\n ajaxSettings: ajaxSettings\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/').replace(/^.*?(?=\\/)/, '') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None' && !isNullOrUndefined(parent.sortOrder)) {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\nexport function getObject(parent, key, value) {\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var result = currFiles.filter(function (data) { return data[key].toString() === value; });\n return result[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = parent.uploadObj.dropArea == null ? getLocaleText(parent, '') : getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @returns {void}\n * @private\n */\nexport function setDateObject(args) {\n for (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n setValue('_fm_created', createdDate, args[i]);\n setValue('_fm_modified', modifiedDate, args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @param {IFileManager} [parent] - optional parameter representing the parent IFileManager.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n var data = getObject(parent, key, folders[parseInt(i.toString(), 10)]);\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n if (!isNullOrUndefined(id)) {\n parent.pathId.push(id);\n }\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var navData = parent.feParent[getValue('_fm_id', parent.itemData[0])];\n var isRoot = isNullOrUndefined(navData) || getValue('_fm_id', navData) === 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, isFileSystemData(parent) ? getValue('id', data) : getValue('name', data));\n if (isNullOrUndefined(searchData)) {\n if (!isRoot) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n }\n else {\n setNextPath(parent, parent.path);\n return;\n }\n }\n else {\n var id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n if (parent.activeModule === 'navigationpane' && !parent.selectedNodes[0].includes('/')) {\n parent.targetPath = getTargetPath(parent, parent.actionRecords[0]);\n }\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var name_1 = parent.dragData[i] ? parent.dragData[i].name : null;\n var srcData = isFileSystemData(parent) ? name_1 : parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId && !isNullOrUndefined(parent.ajaxSettings.url) ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath) && isFileSystemData(parent) && fPath !== '' && fPath !== '\\\\') {\n fPath = '\\\\' + args.cwd.parentId + '\\\\';\n }\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return '/';\n }\n return fPath.replace(/\\\\/g, '/').replace(/^.*?(?=\\/)/, '') + filePath;\n }\n else {\n return isFileSystemData(parent) ? filePath : parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n parent.trigger('success', { action: operation, result: result });\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute('data-uid');\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\nexport function getDuplicateData(parent, name) {\n var data = null;\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.\n * @returns {void}\n * @private\n */\nexport function scrollHandler(scrollParent, parent, nodeClass, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select('.' + nodeClass, scrollParent);\n if ((clientY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n var scrollParent;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.y);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');\n scrollHandler(scrollParent, parent, 'e-row', args.event.y);\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n scrollParent = parent.largeiconsviewModule.element.firstElementChild;\n scrollHandler(scrollParent, parent, 'e-large-icon', args.event.y);\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\nexport function createDeniedDialog(parent, data, action) {\n var permission = getValue('permission', data);\n var message = getValue('message', permission);\n var restriction = getValue('uploadContentFilter', permission) === 1 ? 'Folder Upload' : 'File Upload';\n if (message === '') {\n if (!isNOU(permission) && getValue('upload', permission) && getValue('uploadContentFilter', permission) === 1) {\n message = getLocaleText(parent, 'FolderUpload-Access-Message').replace('{0}', getValue('name', data)).replace('{1}', restriction);\n }\n else if (!isNOU(permission) && getValue('upload', permission) && getValue('uploadContentFilter', permission) === 2) {\n message = getLocaleText(parent, 'FileUpload-Access-Message').replace('{0}', getValue('name', data)).replace('{1}', restriction);\n }\n else {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\nexport function hasReadAccess(data) {\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\nexport function hasEditAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\nexport function hasContentAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\nexport function hasUploadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\nexport function hasDownloadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n/**\n * Close dialog popup handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function closePopup(parent) {\n if (!isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n}\n/**\n * Get target path from item data.\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} itemData - specifies the item elements.\n * @returns {string} returns the path.\n * @private\n */\nexport function getTargetPath(parent, itemData) {\n if (parent.hasId && !isNOU(getValue('filterId', itemData))) {\n return getValue('filterId', itemData).replace(/\\\\/g, '/').replace(/^[^/]+\\//, '/');\n }\n else {\n return getValue('filterPath', itemData).replace(/\\\\/g, '/');\n }\n}\n/**\n * Access control handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} itemData - specifies the item elements.\n * @param {string} action - specifies the action.\n * @param {boolean} isPathPermision - specifies the path permission.\n * @returns {string} returns the path.\n * @private\n */\nexport function getAccessDetails(parent, itemData, action, isPathPermision) {\n var accessMessage = '';\n for (var i = 0; i < itemData.length; i++) {\n var permission = getValue('permission', itemData[i]);\n if (permission == null) {\n permission = undefined;\n }\n if (isPathPermision) {\n if (permission && (!getValue('read', permission) || !getValue('writeContents', permission))) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', 'writeContents');\n }\n }\n }\n else {\n var copyOrMovePermission = action === 'copy' ? getValue('copy', permission) : getValue('write', permission);\n if (permission && (!getValue('read', permission) || !copyOrMovePermission)) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', action);\n }\n }\n }\n if (accessMessage !== '') {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: '401',\n message: accessMessage,\n fileExists: null\n },\n files: null\n };\n break;\n }\n }\n return accessMessage;\n}\n","import { Ajax, Fetch, createElement, select, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getPathObject } from '../common/utility';\nimport { generatePath, getAccessDetails, getTargetPath } from '../common/utility';\nimport { getUid } from '@syncfusion/ej2-grids';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n var filterData;\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, renameItems, actionRecords) {\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Checks whether fileSystemData is enabled.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns the boolean value.\n */\nexport function isFileSystemData(parent) {\n var isFileSystemData = parent.fileSystemData.length >= 0 && isNOU(parent.ajaxSettings.url);\n return isFileSystemData;\n}\n/**\n * Function to check whether file already exist or not.\n *\n * @param {Record<string, any>} fileSystemData - specifies the file data.\n * @param {string} name - specifies the name.\n * @returns {boolean} - returns the boolean value.\n * @private\n */\nfunction isFileExists(fileSystemData, name) {\n var isExists = fileSystemData.some(function (item) { return item.name === name; });\n return isExists;\n}\n/**\n * Function to find the index value of a file or folder.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number} id - specifies the id.\n * @returns {number} - returns the index value.\n * @private\n */\nfunction findIndexById(parent, id) {\n var index = parent.fileSystemData.findIndex(function (item) {\n return !isNOU(item) && String(item.id) === String(id);\n });\n return index;\n}\n/**\n * Function to get the entire data of a file or folder using id value.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} id - specifies the id.\n * @returns {Object} - returns the data.\n * @private\n */\nfunction filterById(parent, id) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.id) === String(id); })[0];\n return data;\n}\n/**\n * Function to get the entire data of a file or folder for a parent.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} parentId - specifies the parent id.\n * @returns {Object[]} - returns the data.\n * @private\n */\nfunction filterByParent(parent, parentId) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.parentId) === String(parentId); });\n return data;\n}\n/**\n * Function to create a new copied file or folder.\n *\n * @param {Record<string, any>} data - specifies the file or folder data.\n * @param {Record<string, any>} target - specifies the target data.\n * @param {string} itemName - specifies the item name.\n * @param {boolean} isCopy - specifies the copy operation.\n * @returns {Record<string, Object>} - returns the data.\n * @private\n */\nfunction createNewItem(data, target, itemName, isCopy) {\n var newItem = {};\n //Construct the new folder details.\n for (var key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newItem[key] = null;\n }\n }\n var currentDate = new Date();\n var folderPath = String(target.id) !== String(0) && !isNOU(target.parentId) ? target.filterPath + target.name + '\\\\' : '\\\\';\n Object.assign(newItem, {\n dateCreated: currentDate,\n dateModified: currentDate,\n filterPath: folderPath,\n hasChild: isCopy ? data.hasChild : false,\n id: getUid(itemName === null ? data.name : itemName),\n isFile: isCopy ? data.isFile : false,\n name: itemName === null ? data.name : itemName,\n parentId: target.id,\n size: isCopy ? data.size : 0,\n type: isCopy ? data.type : ''\n });\n if (!isNOU(target.filterId)) {\n Object.assign(newItem, {\n filterId: target.filterId + target.id + '/'\n });\n }\n return newItem;\n}\n/**\n * Function to create an error response.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} message - specifies the error message.\n * @param {string} code - specifies the error code.\n * @param {Object[]} fileName - specifies the file name.\n * @returns {void}\n * @private\n */\nfunction createErrorObject(parent, message, code, fileName) {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: code,\n message: message,\n fileExists: fileName != null ? fileName : null\n },\n files: null\n };\n}\n/**\n * Function to trigger folder creation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerFolderCreation(parent, data, eventArgs) {\n var createEventArgs = {\n folderName: getValue('name', data),\n cancel: false,\n path: getValue('path', data),\n parentFolder: getValue('data', data)\n };\n parent.trigger('beforeFolderCreate', createEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.folderName)) {\n var data_1 = args.parentFolder[0];\n var newObject = createNewItem(data_1, data_1, args.folderName, false);\n parent.fileSystemData.push(newObject);\n }\n else {\n var message = 'A file or folder with the name ' + args.folderName + ' already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger delete operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerDeleteOperation(parent, data, eventArgs) {\n var deleteEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeDelete', deleteEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n args.itemData.forEach(function (itemData) {\n var index = findIndexById(parent, itemData.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n if (!itemData.isFile) {\n var subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });\n subItems.forEach(function (subItem) {\n var index = findIndexById(parent, subItem.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n });\n }\n });\n }\n });\n}\n/**\n * Function to trigger rename operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerRenameOperation(parent, data, eventArgs) {\n var renameEventArgs = {\n cancel: false,\n newName: getValue('newName', data),\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeRename', renameEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.newName)) {\n var fileData = filterById(parent, args.itemData[0].id);\n var oldName = fileData.name;\n fileData.name = args.newName;\n updateChildrenFilterPath(parent, fileData.id, oldName, args.newName);\n parent.responseData.error = null;\n }\n else {\n var message = 'Cannot rename' + args.itemData[0].name + 'to' + args.newName + ': destination already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to update child item filter path.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent id.\n * @param {string} oldName - specifies the previous name.\n * @param {string} newName - specifies the new name.\n * @returns {void}\n * @private\n */\nfunction updateChildrenFilterPath(parent, parentId, oldName, newName) {\n parent.fileSystemData.forEach(function (item) {\n if (String(item.parentId) === String(parentId)) {\n var oldPath = item.filterPath;\n var newPath = oldPath.replace(oldName + '\\\\', newName + '\\\\');\n item.filterPath = newPath;\n updateChildrenFilterPath(parent, item.id, oldName, newName);\n }\n });\n}\n/**\n * Function to trigger move or copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerMoveOrCopyOperation(parent, data, eventArgs) {\n var moveEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n isCopy: getValue('action', data) === 'copy' ? true : false,\n path: getValue('path', data),\n targetData: getValue('targetData', data),\n targetPath: getValue('targetPath', data)\n };\n parent.trigger('beforeMove', moveEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n var message = 'File Already Exists';\n var action = getValue('action', data);\n var itemPermission = getAccessDetails(parent, args.itemData, action, false);\n var pathPermission = getAccessDetails(parent, [args.targetData], action, true);\n var file_1 = [];\n parent.pasteNodes = [];\n if (itemPermission === '' && pathPermission === '') {\n if (args.isCopy) {\n var folderSubItems_1 = filterByParent(parent, args.targetData.id);\n var copiedFolders = args.itemData;\n copiedFolders.forEach(function (itemData) {\n if (!isFileExists(folderSubItems_1, itemData.name) || getValue('renameFiles', data).length > 0) {\n if (getValue('renameFiles', data).length > 0) {\n var names = itemData.name.split('.');\n var name_1 = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n copyFolderItems(parent, itemData, args.targetData, name_1);\n parent.responseData.error = null;\n parent.existingFileCount++;\n return;\n }\n copyFolderItems(parent, itemData, args.targetData, null);\n }\n else {\n file_1.push(itemData.name);\n }\n });\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n return;\n }\n var target_1 = args.targetData;\n var getTargetFiles = filterByParent(parent, target_1.id);\n for (var i = 0; i < args.itemData.length; i++) {\n var currItem = args.itemData[i];\n if (!isFileExists(getTargetFiles, currItem.name) || getValue('renameFiles', data).length > 0) {\n if (!target_1.hasChild) {\n target_1.hasChild = !currItem.isFile;\n var targetItem = parent.fileSystemData\n .filter(function (item) { return String(item.id) === String(target_1.id); });\n if (targetItem.length > 0) {\n targetItem[0].hasChild = target_1.hasChild;\n }\n }\n if (!currItem.isFile) {\n //Check whether the source folder include other sub folders or not.\n var subItems = currItem.parentId !== 0\n ? filterByParent(parent, currItem.parentId) : [];\n var itemData = filterById(parent, currItem.parentId);\n itemData.hasChild = subItems.length > 1 ? true : false;\n }\n var fileData = filterById(parent, currItem.id);\n if (getValue('renameFiles', data).length > 0) {\n var names = currItem.name.split('.');\n currItem.name = currItem.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n fileData.name = currItem.name;\n parent.responseData.error = null;\n parent.existingFileCount++;\n parent.dropData = target_1;\n parent.dropPath = args.path;\n var pathArray = args.targetPath.replace(/^\\/|\\/$/g, '').split('/');\n target_1 = filterById(parent, pathArray[pathArray.length - 1]);\n }\n fileData.parentId = target_1.id;\n fileData.filterPath = target_1.id === 0 ? '\\\\' : target_1.filterPath + target_1.name + '\\\\';\n if (!isNOU(target_1.filterId)) {\n fileData.filterId = target_1.filterId + target_1.id + '/';\n }\n if (!currItem.isFile) {\n updateMovedItemChildren(parent, fileData);\n }\n }\n else {\n file_1.push(currItem.name);\n }\n }\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n }\n }\n });\n}\n/**\n * Function to trigger search operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerSearchOperation(parent, data, eventArgs) {\n var searchEventArgs = {\n searchResults: getValue('data', data),\n cancel: false,\n path: getValue('path', data),\n searchText: getValue('searchString', data),\n caseSensitive: getValue('caseSensitive', data),\n showHiddenItems: getValue('showHiddenItems', data)\n };\n parent.trigger('search', searchEventArgs, function (args) {\n setValue('data', args.searchResults, data);\n if (args.cancel) {\n eventArgs.cancel = true;\n }\n });\n}\n/**\n * Function to trigger client side events.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerClientEvents(parent, data, eventArgs) {\n switch (getValue('action', data)) {\n case 'create': {\n triggerFolderCreation(parent, data, eventArgs);\n break;\n }\n case 'delete': {\n triggerDeleteOperation(parent, data, eventArgs);\n break;\n }\n case 'rename': {\n triggerRenameOperation(parent, data, eventArgs);\n break;\n }\n case 'move':\n case 'copy': {\n triggerMoveOrCopyOperation(parent, data, eventArgs);\n break;\n }\n case 'search': {\n triggerSearchOperation(parent, data, eventArgs);\n break;\n }\n }\n}\n/**\n * Creates an AJAX request for the file manager.\n *\n * @param {IFileManager} parent - The parent file manager instance.\n * @param {Object} data - The data object for the AJAX request.\n * @param {Function} fn - The callback function to be executed after the AJAX request.\n * @param {string} [event] - The event type for the AJAX request.\n * @param {string} [operation] - The operation type for the AJAX request.\n * @param {string} [targetPath] - The target path for the AJAX request.\n * @returns {void}\n * @private\n */\nfunction createAjax(parent, data, fn, event, operation, targetPath) {\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n triggerClientEvents(parent, data, eventArgs);\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n if (isFileSystemData(parent)) {\n var filePath = event === 'node-expand' || event === 'finalize-end' || event === 'rename-end-parent'\n ? getValue('path', data) : parent.path;\n var pathArray = filePath.replace(/^\\/|\\/$/g, '').split('/');\n var idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0 && isNOU(parent.renamedItem))\n ? getValue('data', data)[0].id : pathArray[pathArray.length - 1];\n var action = getValue('action', data);\n var isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';\n if (action === 'read' || action === 'create' || event === 'rename-end') {\n var rootId = parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })\n .length > 0\n ? parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })[0].id\n : 0;\n parent.responseData = {\n cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue),\n details: null,\n error: null,\n files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue)\n };\n if (isNOU(parent.responseData.cwd)) {\n var message = 'Cannot load empty data within the File Manager.';\n createErrorObject(parent, message, '400', null);\n }\n }\n else if (isFileOperation && parent.responseData.error === null) {\n var itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];\n if (itemData.length === 0) {\n if (action === 'copy') {\n itemData = parent.pasteNodes.map(function (item) { return filterById(parent, item); });\n }\n else {\n itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });\n }\n }\n parent.responseData = {\n cwd: null,\n details: null,\n error: null,\n files: itemData\n };\n }\n else if (getValue('action', data) === 'details') {\n var itemData = getValue('data', data);\n var details = itemData[0];\n var isMultipleFiles = itemData.length > 1;\n var itemNames = itemData.map(function (item) { return item.name; });\n var totalSize = isMultipleFiles ? getSize(itemData.reduce(function (accumulator, currentObject) { return accumulator + (currentObject.size || 0); }, 0)) : getSize(details.size);\n var path = (parent.pathNames.includes(details.name) || isMultipleFiles ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);\n parent.responseData.details = Object.assign({\n location: path,\n multipleFiles: isMultipleFiles,\n name: itemNames.join(', '),\n size: totalSize\n }, isMultipleFiles ? {} : {\n created: details.dateCreated,\n isFile: details.isFile,\n modified: details.dateModified,\n permission: details.permission\n });\n }\n performReadOperation(parent, parent.responseData, fn, data, event, operation, targetPath, beforeSendArgs);\n return;\n }\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function to get file size.\n *\n * @param {number} size - specifies the size.\n * @returns {string} - returns the size.\n * @private\n */\nfunction getSize(size) {\n var hz;\n if (size < 1024) {\n hz = size + ' B';\n }\n else if (size < 1024 * 1024) {\n hz = (size / 1024).toFixed(2) + ' KB';\n }\n else if (size < 1024 * 1024 * 1024) {\n hz = (size / 1024 / 1024).toFixed(2) + ' MB';\n }\n else {\n hz = (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n }\n return hz;\n}\n/**\n * Function to perform read operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {Function} fn - specifies the function.\n * @param {Object} data - specifies the data.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs) {\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n if (!isNOU(result.files)) {\n setDateObject(result.files);\n for (var i = 0, len = result.files.length; i < len; i++) {\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n }\n if (location_1.indexOf('\\\\') === -1) {\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function to copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} target - specifies the target.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction copyFolderItems(parent, data, target, itemName) {\n var newObject = createNewItem(data, target, itemName, true);\n parent.fileSystemData.push(newObject);\n parent.pasteNodes.push(newObject.id);\n var copiedItems = filterByParent(parent, data.id);\n for (var i = 0; i < copiedItems.length; i++) {\n copyFolderItems(parent, copiedItems[i], newObject, null);\n }\n}\n/**\n * Function to move operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} itemData - specifies the data.\n * @returns {void}\n * @private\n */\nfunction updateMovedItemChildren(parent, itemData) {\n var childItems = filterByParent(parent, itemData.id);\n childItems.forEach(function (childItem) {\n childItem.filterPath = itemData.filterPath + itemData.name + '\\\\';\n if (!isNOU(itemData.filterId)) {\n childItem.filterId = itemData.filterId + itemData.id + '/';\n }\n if (!childItem.isFile) {\n updateMovedItemChildren(parent, childItem);\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (!isNOU(result.error) && result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n }\n catch (error) {\n handleCatchError(parent, error, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n try {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var createEventArgs = {\n folderName: itemName,\n path: parent.path,\n parentFolder: parent.itemData\n };\n parent.trigger('folderCreate', createEventArgs);\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n }\n catch (error) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'create');\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result) {\n try {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;\n var renameEventArgs = {\n newName: parent.renamedItem.name,\n itemData: [parent.renamedItem],\n path: parent.path\n };\n parent.trigger('rename', renameEventArgs);\n if (parent.activeModule === 'navigationpane') {\n var pathObject = getPathObject(parent);\n var pathLevel = parent.pathId[parent.pathId.length - 1].split('_').length - 2;\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n var renamePath = getTargetPath(parent, parent.renamedItem);\n read(parent, events.renameEndParent, renamePath);\n if (!isNOU(pathObject) && parent.pathNames.length > 1 && pathLevel <= parent.pathNames.length - 1) {\n parent.pathNames[pathLevel] = parent.renameText;\n if (!parent.hasId) {\n parent.setProperties({ path: \"/\" + parent.pathNames.slice(1).join('/') + \"/\" }, true);\n }\n }\n parent.itemData = parent.navigationpaneModule.previousSelected.length > 0\n ? parent.navigationpaneModule.treeObj.getTreeData(parent.navigationpaneModule.previousSelected[0]) : parent.itemData;\n read(parent, events.pathChanged, parent.path);\n parent.itemData[0] = parent.renamedItem;\n parent.renamedItem = null;\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n }\n catch (error) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n try {\n var moveorcopyEventArgs = {\n itemData: result.files,\n isCopy: operation === 'copy' ? true : false,\n path: path,\n targetData: parent.itemData[0],\n targetPath: parent.path\n };\n parent.trigger('move', moveorcopyEventArgs);\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n }\n catch (error) {\n handleCatchError(parent, error, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n try {\n var deleteEventArgs = {\n itemData: result.files,\n path: path\n };\n parent.trigger('delete', deleteEventArgs);\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n try {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(parent, event, path, searchString, showHiddenItems, caseSensitive) {\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var ajaxSettings = {\n url: downloadUrl,\n type: 'POST',\n contentType: 'application/json',\n responseType: 'blob',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n if (downloadArgs.useFormPost) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n else {\n try {\n var contentDisposition_1;\n var fileName_1;\n var fetch_1 = new Fetch({\n url: getValue('url', downloadArgs.ajaxSettings),\n type: getValue('type', downloadArgs.ajaxSettings),\n contentType: getValue('contentType', downloadArgs.ajaxSettings),\n responseType: getValue('responseType', downloadArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', downloadArgs.ajaxSettings),\n onLoad: function (e) {\n contentDisposition_1 = e.headers.get('Content-Disposition');\n if (contentDisposition_1) {\n var filenameMatch = contentDisposition_1.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n var extractedFilename = filenameMatch && filenameMatch[1];\n fileName_1 = extractedFilename ? extractedFilename.replace(/['\"]/g, '') : fileName_1;\n }\n else {\n fileName_1 = parent.itemData.length > 1 ? 'files.zip' : getValue('isFile', parent.itemData[0]) ? getValue('name', parent.itemData[0]) : getValue('name', parent.itemData[0]) + '.zip';\n }\n },\n onSuccess: function (e) {\n parent.trigger('success', downloadArgs);\n var blob = e;\n var blobUrl = URL.createObjectURL(blob);\n var link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName_1;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n onFailure: function (e) {\n var result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.downloadUrl\n }\n };\n createDialog(parent, 'Error', result);\n parent.trigger('failure', downloadArgs);\n }\n });\n fetch_1.send(JSON.stringify(downloadArgs.data));\n }\n catch (error) {\n handleCatchError(parent, error, 'download');\n }\n }\n }\n });\n}\n/**\n * Function for on catch handler in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {any} error - specifies the catch error.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction handleCatchError(parent, error, action) {\n var errorResult = {\n files: null,\n error: {\n message: error.message,\n fileExists: null\n }\n };\n onFailure(parent, errorResult, action);\n}\n/**\n * Function for trigger Fetch success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} ajaxSettings - specifies the ajax settings.\n * @returns {void}\n */\nexport function triggerFetchSuccess(parent, ajaxSettings) {\n parent.notify(events.afterRequest, { action: 'success' });\n if (ajaxSettings && typeof getValue('onSuccess', ajaxSettings) === 'function') {\n getValue('onSuccess', ajaxSettings)();\n }\n}\n/**\n * Function for trigger Fetch failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} ajaxSettings - specifies the ajax settings.\n * @param {ReadArgs} result - specifies the result.\n * @returns {void}\n */\nexport function triggerFetchFailure(parent, ajaxSettings, result) {\n parent.notify(events.afterRequest, { action: 'failure' });\n createDialog(parent, 'Error', result);\n if (typeof getValue('onFailure', ajaxSettings) === 'function') {\n getValue('onFailure', ajaxSettings)();\n }\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization, Fetch } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename, triggerFetchFailure, triggerFetchSuccess } from '../common/operations';\nimport { getLocaleText, getDuplicateData, objectToString, getCssClass, getTargetPath } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details) {\n var options = getOptions(parent, text, e, details);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n var index;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '<input type=\"text\" value=\"New folder\" id=\"newname\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index = val.name.indexOf('.') + 1;\n return (index === 0 && (!val.isFile)) ? 'Folder' : ((index !== 0) ? val.name.substr(index).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] === undefined) {\n strArr = details.name.split(',').map(function (val) {\n index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n }\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = '';\n if (parent.activeModule === 'navigationpane') {\n newPath = getTargetPath(parent, parent.itemData[0]);\n }\n else {\n newPath = parent.path;\n }\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {BeforeImageLoadEventArgs} imageData - specifies the image eventargs.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageData) {\n var content = createElement('div', { className: 'e-image-wrap' });\n if (imageData.useImageAsUrl) {\n var image = createElement('img', { className: 'e-image', attrs: { src: imageData.imageUrl, alt: header } });\n content.appendChild(image);\n }\n else {\n var fetch_1 = new Fetch({\n url: getValue('url', imageData.ajaxSettings),\n type: getValue('type', imageData.ajaxSettings),\n contentType: getValue('contentType', imageData.ajaxSettings),\n responseType: getValue('responseType', imageData.ajaxSettings),\n beforeSend: getValue('beforeSend', imageData.ajaxSettings),\n onSuccess: function (e) {\n var blobUrl = URL.createObjectURL(e);\n var image = createElement('img', { className: 'e-image', attrs: { src: blobUrl, alt: header } });\n content.appendChild(image);\n triggerFetchSuccess(parent, imageData.ajaxSettings);\n },\n onFailure: function (e) {\n var result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + getValue('url', imageData.ajaxSettings)\n }\n };\n triggerFetchFailure(parent, imageData.ajaxSettings, result);\n }\n });\n var data = getValue('data', imageData.ajaxSettings);\n fetch_1.send(data);\n }\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable, Fetch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete, triggerFetchFailure, triggerFetchSuccess } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout, getLocaleText } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isSelectAllCalled = false;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.imageEventArgsMap = new Map();\n this.imageUrlCache = new Map();\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', imageAttributes: '_fm_imageAttr', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n if (this.parent.largeIconsTemplate) {\n this.listObj.template = this.parent.largeIconsTemplate;\n this.listObj.templateID = this.parent.element.id + '_largeIconsTemplate';\n }\n this.items = [];\n this.items = this.renderList(args);\n if (this.parent.sortComparer && this.parent.sortBy !== 'None') {\n this.items = this.allItems = DataUtil.sort(this.items, this.parent.sortBy, this.comparer.bind(this));\n }\n else {\n this.items = this.allItems = getSortedData(this.parent, this.items);\n }\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0 && !isNOU(this.parent.virtualizationModule)) {\n this.parent.virtualizationModule.setUIVirtualization();\n }\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj, null, null, this.parent);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.parent.renderReactTemplates();\n if (this.imageEventArgsMap.size > 0) {\n this.loadImages();\n }\n this.listElements.setAttribute('aria-label', 'listbox');\n this.preventImgDrag();\n this.createDragObj();\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0 && !isNOU(this.parent.virtualizationModule)) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.loadImages = function () {\n var _this = this;\n var imageEle = this.parent.element.querySelectorAll('.e-list-img');\n imageEle.forEach(function (imgElement) {\n var imageKey = imgElement.getAttribute('data-image-key');\n if (!imageKey) {\n return;\n }\n if (_this.imageUrlCache.has(imageKey)) {\n imgElement.setAttribute('src', _this.imageUrlCache.get(imageKey));\n imgElement.classList.remove('image-blur');\n return;\n }\n var imageDetails = _this.imageEventArgsMap.get(imageKey);\n if (!imageDetails) {\n return;\n }\n var fetch = new Fetch({\n url: getValue('url', imageDetails.ajaxSettings),\n type: getValue('type', imageDetails.ajaxSettings),\n contentType: getValue('contentType', imageDetails.ajaxSettings),\n responseType: getValue('responseType', imageDetails.ajaxSettings),\n beforeSend: getValue('beforeSend', imageDetails.ajaxSettings),\n onSuccess: function (blob) {\n var blobUrl = URL.createObjectURL(blob);\n _this.imageUrlCache.set(imageKey, blobUrl);\n imgElement.setAttribute('src', blobUrl);\n imgElement.classList.remove('image-blur');\n triggerFetchSuccess(_this.parent, imageDetails.ajaxSettings);\n },\n onFailure: function (response) {\n var result = {\n files: null,\n error: {\n code: response.status ? response.status.toString() : '404',\n message: getLocaleText(_this.parent, 'Network-Error') + ' ' + getValue('url', imageDetails.ajaxSettings),\n fileExists: null\n }\n };\n triggerFetchFailure(_this.parent, imageDetails.ajaxSettings, result);\n }\n });\n fetch.send(getValue('data', imageDetails.ajaxSettings));\n });\n };\n LargeIconsView.prototype.comparer = function (x, y) {\n if (this.parent.sortOrder === 'Descending') {\n var z = x;\n x = y;\n y = z;\n }\n return this.parent.sortComparer(x, y);\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: false,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.dragData.push(this.getItemObject(activeEle[parseInt(i.toString(), 10)]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.largeIconsTemplate) {\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n if (txt.indexOf(type) !== -1) {\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n }\n this.renderCheckbox(args);\n }\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n checkElement.setAttribute('aria-label', 'checkbox');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imageData = getImageUrl(this.parent, items[i]);\n if (imageData.useImageAsUrl) {\n setValue('_fm_imageUrl', imageData.imageUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n var uniqueKey = \"img_\" + name_1 + \"_\" + i;\n this.imageEventArgsMap.set(uniqueKey, imageData);\n setValue('_fm_imageUrl', '', items[i]);\n setValue('_fm_imageAttr', { alt: name_1, class: 'e-list-img image-blur', 'data-image-key': uniqueKey }, items[i]);\n }\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n this.parent.activeModule = 'largeiconsview';\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem && this.parent.activeModule === 'largeiconsview') {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n case 'showItemCheckBoxes':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n this.startItem = null;\n this.listElements = null;\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n if (_this.parent.isDevice) {\n _this.tapCount = eve.tapCount;\n _this.tapEvent = eve;\n setTimeout(function () {\n if (_this.tapCount > 0) {\n _this.doTapAction(_this.tapEvent);\n }\n _this.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n _this.dblClickHandler(eve);\n }\n else {\n _this.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n _this.multiSelect = _this.parent.allowMultiSelection ? true : false;\n if (_this.parent.allowMultiSelection) {\n addClass([_this.parent.element], CLS.MULTI_SELECT);\n }\n _this.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var ctrlKey = this.parent.isMac ? e.metaKey : e.ctrlKey;\n var isMacRightClick = this.parent.isMac && e.ctrlKey && e.shiftKey;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if ((e.which === 3 || isMacRightClick) && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.addActive(item);\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (ctrlKey && e.shiftKey && !isMacRightClick) {\n this.isSelectAllCalled = true;\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey && !isMacRightClick) {\n if (!(e && ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imageData = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imageData);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n this.parent.isFile = getValue('isFile', this.getItemObject(item));\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keyActionHandler = function (e) {\n var _this = this;\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNOU(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = { action: action, fileDetails: data.length > 1\n ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null\n : item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1\n ? data\n : data[0], isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n LargeIconsView.prototype.addSelection = function (data) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('fileupload')) {\n this.renderFileFolderIcons(args, CLS.ICON_FILE, !this.parent.uploadObj.directoryUpload);\n }\n if (args.item.id === this.getMenuId('folderupload')) {\n this.renderFileFolderIcons(args, CLS.ICON_FOLDER, this.parent.uploadObj.directoryUpload);\n }\n };\n ContextMenu.prototype.renderFileFolderIcons = function (menuArgs, fileFolderIcon, isDirectory) {\n var iconSpan = createElement('span');\n var element = menuArgs.element;\n element.insertBefore(iconSpan, isDirectory ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', fileFolderIcon + ' ' + CLS.MENU_ICON);\n };\n ContextMenu.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: false,\n element: args.element,\n event: args.event,\n isFocused: args.isFocused,\n fileDetails: [this.menuItemData],\n items: args.items,\n parentItem: args.parentItem,\n menuType: this.menuType\n };\n this.parent.trigger('menuClose', eventArgs, function (menuCloseArgs) {\n if (menuCloseArgs.cancel) {\n args.cancel = menuCloseArgs.cancel;\n return;\n }\n });\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule === 'navigationpane') {\n this.parent.pathId.pop();\n var parentKey = [];\n var itemKeys = Object.keys(this.parent.feParent);\n for (var _i = 0, itemKeys_1 = itemKeys; _i < itemKeys_1.length; _i++) {\n var item = itemKeys_1[_i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var itemData = getValue(item, this.parent.feParent);\n if (this.parent.pathNames.indexOf(itemData.name) !== -1) {\n parentKey.push(itemData._fm_id);\n }\n }\n this.parent.pathId.push(parentKey[parentKey.length - 1]);\n this.parent.navigationpaneModule.treeObj.setProperties({ selectedNodes: [this.parent.pathId[this.parent.pathId.length - 1]] });\n }\n this.isMenuItemClicked = false;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var selected = false;\n var uid;\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest('div');\n }\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10) - 1]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n if (!isNOU(uid)) {\n this.navUid = uid;\n }\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n else {\n var itemsToRemove = ['Delete', 'Rename', 'Cut', 'Copy'];\n for (var i = 0; i < this.disabledItems.length; i++) {\n var item = this.disabledItems[i];\n if (itemsToRemove.indexOf(item) !== -1) {\n this.disabledItems.splice(i, 1);\n i--;\n }\n }\n }\n /* istanbul ignore next */\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n else {\n var pasteIndex = this.disabledItems.indexOf('Paste');\n if (pasteIndex !== -1) {\n this.disabledItems.splice(pasteIndex, 1);\n }\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable) {\n this.disabledItems = this.disabledItems.filter(function (item) { return items.indexOf(item) === -1; });\n }\n for (var i = 0; i < items.length; i++) {\n var validItem = this.checkValidItem(items[i]);\n if (validItem === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (validItem === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n var selectedTreeNode = select('[data-uid=\"' + this.navUid + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (!isNOU(selectedTreeNode) &&\n this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n else {\n var indexToRemove = this.disabledItems.indexOf('Open');\n if (indexToRemove !== -1) {\n this.disabledItems.splice(indexToRemove, 1);\n }\n }\n if (this.parent.selectedItems.length === 0) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n }\n else if (this.parent.activeModule !== 'navigationpane') {\n if (this.parent.selectedItems.length === 1) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename', 'Paste');\n }\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length === 1) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n else {\n this.disabledItems = this.disabledItems.filter(function (item) { return item !== 'SelectAll'; });\n }\n if (this.parent.selectedNodes.length === 0) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(this.currentElement)) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n }\n return -1;\n };\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'fileupload' || itemText === 'folderupload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n if (itemText !== 'cut' && itemText !== 'copy') {\n _this.isMenuItemClicked = true;\n }\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n _this.parent.folderPath = _this.parent.path;\n }\n else {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'name':\n case 'size':\n case 'date':\n case 'ascending':\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n case 'fileupload':\n case 'folderupload':\n _this.parent.setProperties({ uploadSettings: { directoryUpload: itemText === 'fileupload' ? false : true } });\n _this.parent.dataBind();\n uploadItem(_this.parent);\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD,\n items: [\n {\n id: this.getMenuId('folderupload'), text: getLocaleText(this.parent, 'Upload-Folder'),\n iconCss: !this.parent.uploadObj.directoryUpload ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('fileupload'), text: getLocaleText(this.parent, 'Upload-File'),\n iconCss: this.parent.uploadObj.directoryUpload ? null : CLS.TB_OPTION_TICK\n }\n ]\n };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Upload-File': 'File',\n 'Upload-Folder': 'Folder',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'FolderUpload-Access-Message': '{0} is not accessible. you need permission to perform the {1} action.',\n 'FileUpload-Access-Message': '{0} is not accessible. you need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isNullOrUndefined, L10n, closest, Collection, detach, selectAll, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { ToolbarItem } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem, closePopup } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n * <div id=\"file\"></div>\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.existingFileCount = 0;\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n _this.isSortByClicked = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not\n _this.isMac = false;\n _this.dragSelectedItems = [];\n _this.onScrollHandler = function () {\n if (!isNOU(_this.contextmenuModule) && !isNOU(_this.contextmenuModule.contextMenu)) {\n _this.contextmenuModule.contextMenu.close();\n }\n };\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this],\n name: 'Toolbar'\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this],\n name: 'NavigationPane'\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this],\n name: 'DetailsView'\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\n args: [this],\n name: 'Virtualization'\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n if (this.fileView === 'Details') {\n this.largeiconsviewModule.element.classList.add(CLS.DISPLAY_NONE);\n }\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl,\n chunkSize: this.uploadSettings.chunkSize,\n retryCount: 0\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n chunkUploading: this.onChunkUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n sequentialUpload: this.uploadSettings.sequentialUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onChunkUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n if (this.uploadSettings.chunkSize === 0) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n if (this.allowOrDenyUpload(args, details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n FileManager.prototype.allowOrDenyUpload = function (args, uploadDetails) {\n var permission = getValue('permission', uploadDetails);\n if (isNOU(args) || isNOU(permission) || isNOU(getValue('uploadContentFilter', permission))) {\n return false;\n }\n var hasFolder = args.filesData.some(function (f) {\n var name = !isNOU(f.name) ? f.name : '';\n return name.includes('/') || name.includes('\\\\');\n });\n var hasFile = args.filesData.some(function (f) {\n var name = !isNOU(f.name) ? f.name : '';\n return !(name.includes('/') || name.includes('\\\\'));\n });\n if (hasFolder && getValue('uploadContentFilter', permission) === 1) {\n return true;\n }\n if (hasFile && getValue('uploadContentFilter', permission) === 2) {\n return true;\n }\n return false;\n };\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n FileManager.prototype.onChunkUploadComplete = function (files) {\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n var uploadFile = !isNullOrUndefined(files) ? getValue('file', files).name : '';\n if (uploadFile === this.retryArgs[i].file.name) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadSuccess = function (files) {\n if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadFailure = function (files) {\n if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') !== -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n };\n FileManager.prototype.wireSelectOnDragEvent = function (isBind) {\n if (isNOU(this.view)) {\n return;\n }\n if (isBind) {\n this.viewElem = this.view === 'LargeIcons' ? this.largeiconsviewModule.element : this.element.querySelector('.e-gridcontent');\n }\n if (isBind) {\n if (this.allowMultiSelection) {\n this.on(events.layoutChange, this.onLayoutChange, this);\n this.on(events.selectionChanged, this.onLayoutChange, this);\n }\n }\n else {\n this.off(events.layoutChange, this.onLayoutChange);\n this.off(events.selectionChanged, this.onLayoutChange);\n }\n if (this.viewElem) {\n if (isBind && this.allowMultiSelection) {\n EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);\n }\n else {\n EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);\n }\n }\n };\n FileManager.prototype.wireEvents = function () {\n if (this.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n if (this.contextMenuSettings.visible) {\n this.element.addEventListener('scroll', this.onScrollHandler, true);\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n this.wireSelectOnDragEvent(false);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n if (this.contextMenuSettings.visible) {\n this.element.removeEventListener('scroll', this.onScrollHandler, true);\n }\n this.keyboardModule.destroy();\n };\n FileManager.prototype.onDragStart = function (event) {\n if (this.viewElem) {\n if (this.allowDragAndDrop) {\n var targetElement = closest(event.target, this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-fe-text');\n if (targetElement) {\n return;\n }\n }\n event.preventDefault();\n this.dragX = event.pageX;\n this.dragY = event.pageY;\n if (!this.dragSelectElement) {\n this.dragSelectElement = createElement('div', {\n id: this.element.id + '_drag',\n className: 'e-filemanager e-drag-select',\n styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'\n });\n document.body.append(this.dragSelectElement);\n }\n EventHandler.add(document, 'mouseup', this.onDragStop, this);\n EventHandler.add(this.viewElem, 'mousemove', this.onDrag, this);\n EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);\n }\n };\n FileManager.prototype.onDrag = function (event) {\n event.stopPropagation();\n if (this.dragSelectElement) {\n var diffX = event.pageX - this.dragX;\n var diffY = event.pageY - this.dragY;\n setStyleAttribute(this.dragSelectElement, {\n 'left': diffX < 0 ? this.dragX + diffX + 'px' : this.dragX + 'px', 'top': diffY < 0 ? this.dragY + diffY + 'px' : this.dragY + 'px',\n 'height': Math.abs(diffY) + 'px', 'width': Math.abs(diffX) + 'px'\n });\n this.selectItems();\n }\n else {\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n };\n FileManager.prototype.onDragStop = function () {\n if (this.viewElem) {\n EventHandler.remove(document, 'mouseup', this.onDragStop);\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n if (this.dragSelectElement) {\n EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);\n if (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0) {\n this.setProperties({ selectedItems: this.dragSelectedItems });\n }\n this.dragSelectedItems = [];\n detach(this.dragSelectElement);\n this.dragSelectElement = null;\n }\n };\n FileManager.prototype.selectItems = function () {\n var dragRect = this.dragSelectElement.getBoundingClientRect();\n if (dragRect.height > 0 && dragRect.width > 0) {\n this.dragSelectedItems = [];\n removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);\n removeClass(selectAll('.e-check', this.viewElem), ['e-check']);\n }\n var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);\n for (var _i = 0, allItems_1 = allItems; _i < allItems_1.length; _i++) {\n var item = allItems_1[_i];\n var itemRect = item.getBoundingClientRect();\n if (!(dragRect.right < itemRect.left || dragRect.left > itemRect.right\n || dragRect.bottom < itemRect.top || dragRect.top > itemRect.bottom)\n && (dragRect.height > 0 && dragRect.width > 0)) {\n if (this.viewElem.classList.contains('e-large-icons')) {\n item.classList.add('e-active');\n this.dragSelectedItems.push(item.getAttribute('title'));\n }\n else {\n addClass(selectAll('.e-rowcell', item), ['e-active']);\n this.dragSelectedItems.push(item.querySelector('.e-drag-text').textContent);\n }\n if (this.showItemCheckBoxes) {\n if (item.querySelector('.e-frame')) {\n item.querySelector('.e-frame').classList.add('e-check');\n }\n }\n }\n }\n };\n FileManager.prototype.onLayoutChange = function () {\n if (this.enableRangeSelection) {\n this.unWireEvents();\n this.wireEvents();\n }\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var height;\n var requiresRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showItemCheckBoxes':\n this.showItemCheckBoxes = newProp.showItemCheckBoxes;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableVirtualization':\n this.enableVirtualization = newProp.enableVirtualization;\n requiresRefresh = true;\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRangeSelection':\n this.wireSelectOnDragEvent(false);\n if (newProp.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n requiresRefresh = true;\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n requiresRefresh = true;\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.oldPath = oldProp.path;\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n if (this.view === 'Details') {\n var columns = this.detailsViewSettings.columns;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.sortBy; }) !== -1;\n if (!isValidSortField) {\n return;\n }\n refresh(this);\n this.notify(events.sortByChange, {});\n this.notify(events.sortColumn, {});\n }\n else {\n refresh(this);\n this.notify(events.sortByChange, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n case 'fileSystemData':\n this.fileSystemData = newProp.fileSystemData;\n requiresRefresh = true;\n break;\n case 'navigationPaneTemplate':\n this.navigationPaneTemplate = newProp.navigationPaneTemplate;\n requiresRefresh = true;\n break;\n case 'largeIconsTemplate':\n this.largeIconsTemplate = newProp.largeIconsTemplate;\n requiresRefresh = true;\n break;\n }\n }\n if (requiresRefresh) {\n this.refresh();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n this.viewElem = null;\n this.dragSelectElement = null;\n this.dragSelectedItems = null;\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Enables the specified menu items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.enableItems(items, true, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Specifies the method that must be invoked to traverse the path backwards in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.traverseBackward = function () {\n if (this.pathNames.length > 1 && this.breadcrumbbarModule.searchObj.element.value === '' && !this.isFiltered) {\n this.pathId.pop();\n this.pathNames.pop();\n var newPath = this.pathNames.slice(1).join('/');\n newPath = newPath === '' ? '/' : '/' + newPath + '/';\n this.setProperties({ path: newPath }, true);\n read(this, events.pathChanged, this.path);\n var treeNodeId = this.pathId[this.pathId.length - 1];\n this.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the method which must be invoked to programmatically close the dialog popup in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.closeDialog = function () {\n closePopup(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property([])\n ], FileManager.prototype, \"fileSystemData\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"navigationPaneTemplate\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"largeIconsTemplate\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showItemCheckBoxes\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Property('name')\n ], FileManager.prototype, \"sortBy\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableRangeSelection\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Collection([], ToolbarItem)\n ], FileManager.prototype, \"toolbarItems\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeFolderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"folderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDelete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"delete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeRename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"rename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeMove\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"move\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"search\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n var _this = this;\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan_1 = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan_1 = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>',\n beforeItemRender: function (args) {\n var tickIcon = args.item.iconCss;\n var viewText = args.item.text === getLocaleText(_this.parent, 'View-LargeIcons');\n var iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '<span class=\"' + iconClass + '\"></span>' + (viewText ? largeIconSpan_1 : gridSpan_1) + args.item.text;\n var span = args.element.firstChild;\n if (span && span.className === '') {\n args.element.removeChild(span);\n }\n }\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n viewText + '></button>'\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = Object.assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n if (this.itemList.length !== 0 && this.largeIconInstance.element.querySelector('.' + CLS.EMPTY)) {\n this.largeIconInstance.element.removeChild(this.largeIconInstance.element.querySelector('.' + CLS.EMPTY));\n }\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n };\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add('e-virtual-top');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add('e-virtual-bottom');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount =\n Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) /\n (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount *\n (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength || itemCount === 0) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n *\n * @param {boolean} destroy - Set `true` to unwire the scroll event.\n * @returns {void}\n */\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n *\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.itemCount = this.itemCount !== this.largeIconInstance.itemList.length ?\n this.largeIconInstance.itemList.length : this.itemCount;\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n };\n /**\n * Calculates the current scroll position of the list element.\n *\n * @param {number} startingHeight The starting height from which to calculate the scroll position.\n * @returns {number} The current scroll position.\n * @private\n */\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n *\n * @param {number} listDiff The number of rows to update.\n * @param {boolean} isScrollingDown If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n *\n * @returns {void}\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete, isFileSystemData } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule, getPathId } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = [];\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: __assign({ dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name', hasChildren: 'hasChild' }, (isNOU(this.parent.navigationPaneTemplate) && { iconCss: '_fm_icon' }), { htmlAttributes: '_fm_htmlAttr', tooltip: 'name' }),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this),\n nodeTemplate: this.parent.navigationPaneTemplate\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop && isNOU(this.dragObj)) {\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW + ',.' + CLS.TEXT_CONTENT,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW) && !dragTarget.classList.contains(CLS.TEXT_CONTENT)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId, this.parent);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n if (this.parent && this.parent.portals && this.treeObj && this.treeObj.portals) {\n for (var i = 0; i < this.treeObj.portals.length; i++) {\n if (this.parent.portals.indexOf(this.treeObj.portals[i]) === -1) {\n this.parent.portals.push(this.treeObj.portals[i]);\n }\n }\n if (this.parent.isReact) {\n this.parent.renderReactTemplates();\n }\n }\n };\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n var directories = getDirectories(files);\n var targetDirectory = this.getTreeData(target);\n if (directories.length > 0 && targetDirectory.length > 0 &&\n (directories[0].filterPath == null ||\n isNOU(targetDirectory[0])\n && targetDirectory[0].filterPath == null\n || directories[0].filterPath !==\n targetDirectory[0].filterPath)) {\n var length_1 = 0;\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length_1.toString(), 10)]._fm_icon = 'e-fe-folder';\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick &&\n !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked || this.isPathDragged) {\n this.isSameNodeClicked = false;\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.isPathDragged = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.setProperties({ selectedNodes: [node.getAttribute('data-uid')] });\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node, this.parent);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node, this.parent);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.isNodeExpandCalled = true;\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? nodeData[0].name : id;\n var path = getPath(args.node, newText, isId, this.parent);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], true);\n }\n this.expandNodeTarget = '';\n }\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.setProperties({ selectedNodes: [sleId] });\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.setProperties({ selectedNodes: [this.parent.pathId[this.parent.pathId.length - 1]] });\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = this.previousSelected.length > 0 && this.treeObj.getTreeData(this.previousSelected[0]).length !== 0\n ? this.previousSelected[0] : getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n this.updateItemData();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n var data = this.treeObj.getTreeData();\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, this.parent.path);\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.setProperties({ selectedNodes: [e.selectedNode] });\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n if (isFileSystemData(this.parent)) {\n this.moveNames = [];\n var obj = this.parent.dragData;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n }\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (isFileSystemData(this.parent) && (this.parent.path === this.parent.dropPath || this.parent.targetModule === 'navigationpane')) {\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n if (!obj || !Array.isArray(obj)) {\n return;\n }\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n NavigationPane.prototype.getTreeData = function (args) {\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var node = select('[data-uid=\"' + this.parent.pathId[this.parent.pathId.length - 1] + '\"]', this.treeObj.element);\n updatePath(node, this.parent.itemData[0], this.parent);\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.isMultiSelect = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n back: 'backspace'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n var _this = this;\n if (this.parent.enablePersistence) {\n var gridPersistenceValue = window.localStorage.getItem('grid' + this.parent.element.id + '_grid');\n if (!isNOU(gridPersistenceValue)) {\n var model = JSON.parse(gridPersistenceValue);\n if (!isNOU(model) && Object.keys(model).length > 0 && 'sortSettings' in model) {\n delete model.sortSettings;\n window.localStorage.setItem('grid' + this.parent.element.id + '_grid', JSON.stringify(model));\n }\n }\n }\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.parent.sortBy; }) !== -1;\n if (this.parent.isMobile || !isValidSortField) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: function (args) { args.cancel = true; },\n load: function () {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n if (this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization && this.parent.enablePersistence) {\n this.isLoaded = true;\n }\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent['portals'] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n if (this.parent.portals && this.parent.navigationpaneModule &&\n this.parent.navigationpaneModule.treeObj && this.parent.navigationpaneModule.treeObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.navigationpaneModule.treeObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent['portals']);\n this.parent['renderReactTemplates']();\n };\n /**\n * Gets the grid height.\n *\n * @returns {number} - The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n var enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return \"<div class=\\\"e-fe-text\\\">\" + name + \"</div><div class=\\\"e-fe-date\\\">\" + data._fm_modified + \"</div><span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\n this.adjustWidth(columns, 'name');\n var _loop_1 = function (i, len) {\n columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n var template_1 = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template_1.replace(/\\${name}/g, name);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = columns.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '70' : '56');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-icon \" + data._fm_iconClass + \"\\\"></span>\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return '<span class=\\'e-fe-icon e-fe-folder\\'></span>';\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n if (this.parent.enableRangeSelection) {\n var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };\n columns.push(HiddenName);\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var text = getValue('name', args.data);\n var textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n if (name_1.indexOf(type) !== -1) {\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });\n if (nameColumn && !('sortComparer' in nameColumn) || this.parent.sortOrder === 'None') {\n var items = getSortedData(this.parent, (this.parent.enableVirtualization)\n ? args.result\n : this.gridObj.dataSource);\n args.result = items;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) || this.isLoaded) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true && (!isNullOrUndefined(this.gridObj.getDataRows()) && this.gridObj.getDataRows().length > 0)) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem && this.parent.selectedItems.length === 0) {\n this.gridObj.clearSelection();\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n if (this.parent.sortOrder === 'None' && !isNOU(this.gridObj.element)) {\n var sortIconElement = this.gridObj.element.querySelector('.e-ascending, .e-descending');\n if (sortIconElement && sortIconElement.classList) {\n sortIconElement.classList.remove('e-icon-ascending', 'e-ascending', 'e-icon-descending', 'e-descending');\n }\n }\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && !this.parent.hasId && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n DetailsView.prototype.addSelection = function (data) {\n var items = this.gridObj.getCurrentViewRecords();\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showItemCheckBoxes':\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var pathField = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === 'filterPath'; });\n if ((this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) ||\n (!isNullOrUndefined(pathField) && !isNullOrUndefined(pathField.hideAtMedia) && pathField.hideAtMedia !== '')) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.wireClickEvent(true);\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imageData = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imageData);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n if (this.gridObj == null) {\n return;\n }\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n var filterPathInSettings = this.parent.detailsViewSettings.columns.some(function (col) { return col.field === 'filterPath'; });\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath') && !filterPathInSettings) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.querySelector('colgroup');\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].style.width = '120px';\n gridContentColGroup.children[i].style.width = '120px';\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].style.width = 'auto';\n gridContentColGroup.children[i].style.width = 'auto';\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].style.width = '120px';\n gridContentColGroup.children[i].style.width = '120px';\n }\n else {\n gridHeaderColGroup.children[i].style.width = '180px';\n gridContentColGroup.children[i].style.width = '180px';\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].style.width = 'auto';\n gridContentColGroup.children[i].style.width = 'auto';\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop && isNullOrUndefined(this.dragObj)) {\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n var info = null;\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n if (!this.isMultiSelect) {\n this.isMultiSelect = true;\n if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {\n args.cancel = true;\n var rowIndex = (args && args.rowIndexes)\n ? args.rowIndexes[args.rowIndexes.length - 1]\n : args.rowIndex;\n this.gridObj.selectRow(rowIndex);\n }\n this.isMultiSelect = false;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n if (!isNOU(lastItem)) {\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n var item = this.gridObj.getRowByIndex(args.rowIndex);\n if (!isNOU(item)) {\n item.removeAttribute('tabindex');\n }\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n if (!isNOU(lastItem)) {\n lastItem.querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n _this.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (_this.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', _this.parent.allowMultiSelection, _this.gridObj.selectionModule);\n addClass([_this.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = _this.gridObj.getRows().indexOf(row);\n _this.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.onBlur = function (e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n var thElements = this.gridObj.element.querySelectorAll('th');\n for (var i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('aria-rowindex'), 10) - 1 : null;\n };\n /* istanbul ignore next */\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n var currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;\n this.gridObj.sortColumn(currentField, direction);\n if (!isNOU(this.getFocusedItem().nextSibling)) {\n this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');\n }\n }\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addHeaderFocus(e);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function (e) {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus;\n if (!isNOU(e.target) && e.target.classList.contains('e-defaultcursor')) {\n this.addFocus(0);\n nameFocus = e.target.nextElementSibling;\n }\n else if (!isNOU(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {\n nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;\n this.addFocus(0);\n }\n else {\n nameFocus = select('th.e-fe-grid-icon', this.element);\n }\n if (!isNOU(nameFocus)) {\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [CLS.FOCUS, CLS.FOCUSED]);\n }\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n DetailsView.prototype.getRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","AjaxSettings","ChildProperty","Property","apply","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","field","headerText","minWidth","template","customAttributes","class","type","format","width","initializeCSPTemplate","data","size","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","NAVIGATION_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","SEARCH_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT","NAVIGATION","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","FRAME","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","TEXT_CONTENT","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","SUBMENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_FOLDER","ICON_FILE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","BREADCRUMBS","RTL","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","OVERLAY","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","layoutRefresh","actionFailure","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dropPath","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","updatePath","node","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","ids","push","names","isId","parentText","el","parentNode","matches","CLS.LIST_ITEM","navigationpaneModule","treeObj","getTreeData","classList","contains","CLS.TREE_VIEW","generatePath","parent","newPath","parseInt","toString","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","getAllChildItems","parentId","children","fileSystemData","filter","item","String","allChildren","slice","forEach","child","childId","concat","searchWordHandler","isLayoutChange","caseSensitive","searchWord","events.pathColumn","args","isFileSystemData","itemData","read","events.layoutChange","events.search","searchSettings","filterType","currData","filteredData","DataManager","executeLocal","Query","where","ignoreCase","searchValue","toLowerCase","responseData","error","Search","showHiddenItems","getPathObject","hiddenItems","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","allItems","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","filetype","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","CLS.FOLDER","getImageUrl","baseUrl","fileName","fPath","eventArgs","imgUrl","trigger","eventArgs_1","fileDetails","imageUrl","useImageAsUrl","pathUrl","ajaxSettings","url","encodeURIComponent","imgId","replace","Date","getTime","contentType","responseType","JSON","stringify","onSuccess","onFailure","beforeSend","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","isNullOrUndefined","sortBy","group","lists","getObject","feFiles","createEmptyElement","emptyEle","dragFile","layoutElement","select","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","top","eDiv","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","CLS.EMPTY_CONTENT","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","innerHTML","getLocaleText","uploadObj","dropArea","style","marginTop","getDirectories","setNodeId","result","rootId","dirs","len","setValue","setDateObject","createdDate","modifiedDate","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","navData","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","includes","getTargetPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dragPath","subFolder","name_1","dragData","srcData","dragNodes","tempTarget","dropHandler","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","document","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","CLS.CONTENT_ID","detach","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","objectToString","str","keys","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","permission","restriction","getAccessClass","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","click","events.permissionUpload","closePopup","dialogObj","hide","getAccessDetails","isPathPermision","accessMessage","copyOrMovePermission","undefined","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","isFileExists","some","findIndexById","findIndex","filterById","filterByParent","createNewItem","isCopy","newItem","call","currentDate","assign","dateCreated","dateModified","hasChild","getUid","filterId","createErrorObject","triggerRenameOperation","renameEventArgs","fileData","oldName","updateChildrenFilterPath","triggerMoveOrCopyOperation","moveEventArgs","folderSubItems_1","itemPermission","pathPermission","file_1","existingFileCount","copyFolderItems","target_1","getTargetFiles","subItems","pathArray","currItem","targetItem","updateMovedItemChildren","childItems","childItem","triggerClientEvents","createEventArgs","folderName","parentFolder","newObject","data_1","deleteEventArgs","index","splice","obj","subItem","searchEventArgs","searchResults","searchText","fn","mode","dataType","beforeSendArgs","isMultipleFiles","itemNames","totalSize","events.beforeRequest","idValue","renamedItem","isFileOperation","map","getSize","reduce","accumulator","currentObject","location","multipleFiles","created","modified","performReadOperation","Ajax","result_1","triggerAjaxFailure","parse","send","hz","toFixed","events.afterRequest","rootName","rootAliasName","location_1","RegExp","match","events.searchTextChange","copiedItems","events.selectionChanged","pop","handleCatchError","visible","nextElementSibling","createdItem","events.createEnd","pathObject","pathLevel","renamePath","isArray","events.renameEndParent","renameText","previousSelected","events.pathChanged","events.renameEnd","moveorcopyEventArgs","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","useFormPost","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","contentDisposition_1","fileName_1","Fetch","onLoad","e","headers","get","extractedFilename","filenameMatch","blobUrl","URL","createObjectURL","link","href","body","status","triggerFetchSuccess","triggerFetchFailure","options","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","bind","events.deleteInit","onReSubmit","inputEle","txt","intl","Internationalization","formattedString","formatDate","CLS.VALUE","strArr","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","replaceItems","extOptions","duplicateContent","extDialogObj","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","events.skipUpload","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","onKeepBothAll","retryArgs","retry","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","btnCount","_loop_1","onkeydown","keyCode","preventDefault","onSubmitValidate","oldExtension","newExtension","oIndex","renamedId","nIndex","test","addInvalid","textContent","which","charCode","createImageDialog","imageData","fetch_1","image","src","alt","viewerObj","height","enableResize","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","LargeIconsView","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","CLS.LARGEICON_ID","ul","activeEle","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","imageAttributes","htmlAttributes","itemCreated","onItemCreated","largeIconsTemplate","templateID","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","renderReactTemplates","imageEventArgsMap","loadImages","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","isPasteOperation","selectItems","uploadOperation","CLS.ACTIVE","maxHeight","getItemCount","addEventListener","wireEvents","setUlElementHeight","wireScrollEvent","isRendered","hideSpinner","checkItem","_this","imgElement","imageDetails","imageKey","imageUrlCache","has","blob","set","response","x","z","ondragstart","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","cwdData","getModuleName","dropLi","info","removeAttribute","curData","textEle","CLS.LIST_TEXT","renderCheckbox","checkElement","showItemCheckBoxes","createCheckBox","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","uniqueKey","icon","selected","showThumbnail","data-image-key","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","lastItem","getFirstItem","getLastItem","doSelection","ctrlKey","shiftKey","isInteraction","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","onMenuItemData","events.splitterResize","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","events.layoutRefresh","onDropPath","events.updateSelectionData","events.filterEnd","on","currentSelected","_i","_a","newProp","allowMultiSelection","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyConfigs","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","clickObj","Touch","tap","eve","isDevice","tapCount","tapEvent","doTapAction","originalEvent","dblClickHandler","clickHandler","tapHold","multiSelect","addClass","CLS.MULTI_SELECT","updateType","isMac","metaKey","isMacRightClick","cList","isSelectAllCalled","CLS.CHECK","triggerSelection","CLS.FRAME","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","traverseBackward","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","getPropertyValue","isVisible","liScrPos","getCurFocusedItem","liParent","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","Map","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","BreadCrumbBar","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","searchWrap","subMenuObj","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","CLS.SEARCH_ID","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","searchWrapWidth","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","searchTimer","nodeName","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","addressBarLink","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","addressPath","ContextMenu","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","iconSpan","getMenuId","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","renderFileFolderIcons","CLS.ICON_FILE","directoryUpload","CLS.ICON_FOLDER","menuArgs","fileFolderIcon","isDirectory","isFocused","parentItem","menuType","menuCloseArgs","menuTarget","isMenuItemClicked","parentKey","itemKeys_1","_fm_id","uid","treeFolder","targetNodeElement","currentElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.SUBMENU_ICON","CLS.TREE_ID","navUid","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","disabledItems","itemsToRemove","pasteIndex","isSubMenu","pasteEle","getMenuItemData","menuModule","currentItems","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","enable","isUniqueId","validItem","checkValidItem","isTree","renameIndex","getItemData","contextMenuSettings","folder","trim","selectedTreeNode","indexToRemove","layout","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","events.downloadInit","uploadSettings","separator","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.TB_OPTION_TICK","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","FileManager_1","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","Upload-File","Upload-Folder","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","FolderUpload-Access-Message","FileUpload-Access-Message","Network-Error","Server-Error","FileManager","Component","preRender","getUniqueID","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","adjustHeight","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","CLS.LAYOUT","navigationWrap","CLS.NAVIGATION_ID","CLS.NAVIGATION","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","CLS.BREADCRUMBS","largeiconWrap","role","overlay","CLS.OVERLAY","dialogWrap","paneSettings","min","max","maxWidth","Splitter","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","splitterAdjust","bar","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","chunkSize","retryCount","uploading","onUploading","chunkUploading","onChunkUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","minFileSize","maxFileSize","allowedExtensions","sequentialUpload","fileListRendering","onFileListRender","updateUploader","isOpened","clearAll","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","uploadingCount","uploadedCount","allowOrDenyUpload","uploadDetails","hasFolder","f","hasFile","autoClose","onChunkUploadComplete","statusText","onInitialEnd","removeEventListeners","wireSelectOnDragEvent","isBind","viewElem","onDragStart","enableRangeSelection","onScrollHandler","dragX","pageX","dragY","pageY","dragSelectElement","styles","append","onDragStop","onDrag","diffX","stopPropagation","diffY","setStyleAttribute","left","Math","abs","dragSelectedItems","dragRect","allItems_1","itemRect","right","bottom","setPath","oldProp","requiresRefresh","ajaxSettingSetModel","localeSetModelOption","col","navigationPaneTemplate","refreshing","CLS.RTL","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","enableMenuItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","closeDialog","rtl","Complex","Collection","Event","NotifyPropertyChanges","previousPath","nextPath","deleteRecords","isSameAction","persistData","Inject","Toolbar","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","tickIcon","viewText","firstChild","hideItems","default","hideStatus","portals","updateSortByButton","itemCount","mergedItems","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","single","selection","multiple","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","currentViewItems","largeIconInstance","lastRowCount","rowItemCount","topElement","filemanagerInstance","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","__assign","t","s","n","NavigationPane","onInit","rootData","attr","BaseTreeView","parentID","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","nodeTemplate","CLS.TEXT_CONTENT","getDragPath","getDropPath","nodeData","isReact","addChild","prevent","directories","targetDirectory","_fm_icon","childElements","addNodes","selecEventArgs","isRightClick","isSameNodeClicked","isPathDragged","isRenameParent","restrictSelecting","renameParent","isNodeClickCalled","expandNodeTarget","onPathDrag","selectResultNode","isDrag","isNodeExpandCalled","events.nodeExpand","onNodeExpanded","innerHtml","currFiles","sNode","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","removeNodes","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selectedNodeEle","selcetedEle","onRenameEndParent","id_1","nData","onDownLoadInit","onClearPathInit","onDragEnd","moveNames","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","ctrlShiftN","shiftF10","DetailsView","sortSettings","isValidSortField","enablePersistence","gridPersistenceValue","localStorage","getItem","model","setItem","checkNameWidth","getColumns","direction","Grid","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","reactTemplateRender","isLoaded","emptyArgs","pane","initialColumn","isNameWidth","adjustWidth","fieldName","nameWidth","headerTextAlign","SanitizeHtmlHelper","sanitize","_fm_modified","this_1","template_1","iWidth","_fm_iconClass","headerTemplate","unshift","cBox","cWidth","disableHtmlEncode","gridHeader","renderCheckBox","isColumnRefresh","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","nameColumn","find","cnTable","sortIconElement","selectRecords","getDataRows","isSelectionUpdate","currentSelectedItem","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","interaction","onDetailsResize","pathField","hideAtMedia","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","filterPathInSettings","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","isMultiSelect","isShiftPressed","isCtrlPressed","rowIndexes","selectedRecords","firstItemIndex","getRowByIndex","isHeaderCheckboxClicked","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","relatedTarget","thElements","getFocusedItemIndex","crtSrlPos","crtFocusIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","currentField","getColumnByUid","nextSibling","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","nameFocus","treeFocus","tagName","check","getRecords","hasFilter","name_4","dRecords","Resize","Sort","VirtualScroll","reference","referenceIsFile","comparerIsFile","referenceParts","comparerParts","_","$1","$2","Infinity","referencePart","shift","comparerPart","comparisonResult","localeCompare"],"mappings":"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"}
1
+ {"version":3,"file":"ej2-filemanager.umd.min.js","sources":["../src/file-manager/models/ajax-settings.js","../src/file-manager/models/toolbar-settings.js","../src/file-manager/models/search-settings.js","../src/file-manager/models/details-view-settings.js","../src/file-manager/models/contextMenu-settings.js","../src/file-manager/models/navigation-pane-settings.js","../src/file-manager/models/upload-settings.js","../src/file-manager/models/column.js","../src/file-manager/base/classes.js","../src/file-manager/base/constant.js","../src/file-manager/common/utility.js","../src/file-manager/common/operations.js","../src/file-manager/pop-up/dialog.js","../src/file-manager/layout/large-icons-view.js","../src/file-manager/actions/breadcrumb-bar.js","../src/file-manager/pop-up/context-menu.js","../src/file-manager/models/default-locale.js","../src/file-manager/base/file-manager.js","../src/file-manager/actions/toolbar.js","../src/file-manager/actions/virtualization.js","../src/file-manager/layout/navigation-pane.js","../src/file-manager/layout/details-view.js"],"sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\nexport { AjaxSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var defaultToolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @class */ (function (_super) {\n __extends(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(defaultToolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\nexport { ToolbarSettings };\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property()\n ], ToolbarItem.prototype, \"name\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, initializeCSPTemplate } from '@syncfusion/ej2-base';\n/**\n * Specifies the columns in the details view of the file manager.\n */\nexport var columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120,\n template: '<span class=\"e-fe-text\">${name}</span>',\n customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110',\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n }), format: 'n2'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @class */ (function (_super) {\n __extends(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\nexport { DetailsViewSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\nexport var fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nexport var folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nexport var layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @class */ (function (_super) {\n __extends(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\nexport { ContextMenuSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @class */ (function (_super) {\n __extends(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\nexport { NavigationPaneSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @class */ (function (_super) {\n __extends(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property(false)\n ], UploadSettings.prototype, \"sequentialUpload\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n __decorate([\n Property(0)\n ], UploadSettings.prototype, \"chunkSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\nexport { UploadSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n __decorate([\n Property(false)\n ], Column.prototype, \"isPrimaryKey\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n","/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nexport var TOOLBAR_ID = '_toolbar';\n/** @hidden */\nexport var LAYOUT_ID = '_layout';\n/** @hidden */\nexport var NAVIGATION_ID = '_navigation';\n/** @hidden */\nexport var TREE_ID = '_tree';\n/** @hidden */\nexport var GRID_ID = '_grid';\n/** @hidden */\nexport var LARGEICON_ID = '_largeicons';\n/** @hidden */\nexport var DIALOG_ID = '_dialog';\n/** @hidden */\nexport var ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nexport var IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nexport var EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nexport var UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nexport var RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nexport var CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nexport var SORTBY_ID = '_sortby';\n/** @hidden */\nexport var VIEW_ID = '_view';\n/** @hidden */\nexport var SPLITTER_ID = '_splitter';\n/** @hidden */\nexport var CONTENT_ID = '_content';\n/** @hidden */\nexport var BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nexport var UPLOAD_ID = '_upload';\n/** @hidden */\nexport var RETRY_ID = '_retry';\n/** @hidden */\nexport var SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nexport var ROOT = 'e-filemanager';\n/** @hidden */\nexport var CONTROL = 'e-control';\n/** @hidden */\nexport var CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nexport var ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nexport var MOBILE = 'e-fe-mobile';\n/** @hidden */\nexport var MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nexport var MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nexport var FILTER = 'e-fe-m-filter';\n/** @hidden */\nexport var LAYOUT = 'e-layout';\n/** @hidden */\nexport var NAVIGATION = 'e-navigation';\n/** @hidden */\nexport var LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nexport var LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nexport var TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nexport var LIST_ITEM = 'e-list-item';\n/** @hidden */\nexport var LIST_TEXT = 'e-list-text';\n/** @hidden */\nexport var LIST_PARENT = 'e-list-parent';\n/** @hidden */\nexport var TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nexport var TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nexport var BLUR = 'e-blur';\n/** @hidden */\nexport var ACTIVE = 'e-active';\n/** @hidden */\nexport var HOVER = 'e-hover';\n/** @hidden */\nexport var FOCUS = 'e-focus';\n/** @hidden */\nexport var FOCUSED = 'e-focused';\n/** @hidden */\nexport var CHECK = 'e-check';\n/** @hidden */\nexport var FRAME = 'e-frame';\n/** @hidden */\nexport var CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nexport var ROW = 'e-row';\n/** @hidden */\nexport var ROWCELL = 'e-rowcell';\n/** @hidden */\nexport var EMPTY = 'e-empty';\n/** @hidden */\nexport var EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nexport var EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nexport var CLONE = 'e-fe-clone';\n/** @hidden */\nexport var DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nexport var DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nexport var FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nexport var ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nexport var ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nexport var LARGE_ICON = 'e-large-icon';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nexport var LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nexport var LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nexport var SELECTED_ITEMS = 'e-items';\n/** @hidden */\nexport var TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nexport var GRID_HEADER = 'e-gridheader';\n/** @hidden */\nexport var TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nexport var TREE_VIEW = 'e-treeview';\n/** @hidden */\nexport var MENU_ITEM = 'e-menu-item';\n/** @hidden */\nexport var MENU_ICON = 'e-menu-icon';\n/** @hidden */\nexport var SUBMENU_ICON = 'e-caret';\n/** @hidden */\nexport var GRID_VIEW = 'e-content';\n/** @hidden */\nexport var GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nexport var ICON_VIEW = 'e-list-parent';\n/** @hidden */\nexport var ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nexport var ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nexport var ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nexport var ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nexport var ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nexport var ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nexport var ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nexport var ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nexport var ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nexport var ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nexport var ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nexport var ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nexport var ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nexport var ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nexport var ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nexport var ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nexport var ICON_FOLDER = 'e-icons e-folder';\n/** @hidden */\nexport var ICON_FILE = 'e-icons e-file-format';\n/** @hidden */\nexport var ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nexport var ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nexport var ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nexport var ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nexport var ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nexport var ICONS = 'e-icons';\n/** @hidden */\nexport var DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nexport var ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nexport var STATUS = 'e-status';\n/** @hidden */\nexport var BREADCRUMBS = 'e-address';\n/** @hidden */\nexport var RTL = 'e-rtl';\n/** @hidden */\nexport var DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nexport var COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nexport var FULLROW = 'e-fullrow';\n/** @hidden */\nexport var ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nexport var SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nexport var HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nexport var OVERLAY = 'e-fe-overlay';\n/** @hidden */\nexport var VALUE = 'e-fe-value';\n","/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nexport var isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var finalizeEnd = 'finalize-end';\n/** @hidden */\nexport var createEnd = 'create-end';\n/** @hidden */\nexport var filterEnd = 'filter-end';\n/** @hidden */\nexport var beforeDelete = 'before-delete';\n/** @hidden */\nexport var pathDrag = 'path-drag';\n/** @hidden */\nexport var deleteInit = 'delete-init';\n/** @hidden */\nexport var deleteEnd = 'delete-end';\n/** @hidden */\nexport var refreshEnd = 'refresh-end';\n/** @hidden */\nexport var resizeEnd = 'resize-end';\n/** @hidden */\nexport var splitterResize = 'splitter-resize';\n/** @hidden */\nexport var pathChanged = 'path-changed';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var beforeRequest = 'before-request';\n/** @hidden */\nexport var upload = 'upload';\n/** @hidden */\nexport var skipUpload = 'skip-upload';\n/** @hidden */\nexport var afterRequest = 'after-request';\n/** @hidden */\nexport var download = 'download';\n/** @hidden */\nexport var layoutRefresh = 'layout-refresh';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var search = 'search';\n/** @hidden */\nexport var openInit = 'open-init';\n/** @hidden */\nexport var openEnd = 'open-end';\n/** @hidden */\nexport var selectionChanged = 'selection-changed';\n/** @hidden */\nexport var selectAllInit = 'select-all-init';\n/** @hidden */\nexport var clearAllInit = 'clear-all-init';\n/** @hidden */\nexport var clearPathInit = 'clear-path-init';\n/** @hidden */\nexport var layoutChange = 'layout-change';\n/** @hidden */\nexport var sortByChange = 'sort-by-change';\n/** @hidden */\nexport var nodeExpand = 'node-expand';\n/** @hidden */\nexport var detailsInit = 'details-init';\n/** @hidden */\nexport var menuItemData = 'menu-item-data';\n/** @hidden */\nexport var renameInit = 'rename-init';\n/** @hidden */\nexport var renameEndParent = 'rename-end-parent';\n/** @hidden */\nexport var renameEnd = 'rename-end';\n/** @hidden */\nexport var showPaste = 'show-paste';\n/** @hidden */\nexport var hidePaste = 'hide-paste';\n/** @hidden */\nexport var selectedData = 'selected-data';\n/** @hidden */\nexport var cutCopyInit = 'cut-copy-init';\n/** @hidden */\nexport var pasteInit = 'paste-init';\n/** @hidden */\nexport var pasteEnd = 'paste-end';\n/** @hidden */\nexport var cutEnd = 'cut-end';\n/** @hidden */\nexport var hideLayout = 'hide-layout';\n/** @hidden */\nexport var updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nexport var treeSelect = 'select-node';\n/** @hidden */\nexport var sortColumn = 'sort-column';\n/** @hidden */\nexport var pathColumn = 'path-column';\n/** @hidden */\nexport var searchTextChange = 'search-change';\n/** @hidden */\nexport var beforeDownload = 'before-download';\n/** @hidden */\nexport var downloadInit = 'download-init';\n/** @hidden */\nexport var dropInit = 'drop-init';\n/** @hidden */\nexport var dragEnd = 'drag-end';\n/** @hidden */\nexport var dropPath = 'drop-path';\n/** @hidden */\nexport var dragHelper = 'drag-helper';\n/** @hidden */\nexport var dragging = 'dragging';\n/** @hidden */\nexport var updateSelectionData = 'update-selection-data';\n/** @hidden */\nexport var methodCall = 'method-call';\n/** @hidden */\nexport var permissionRead = 'read';\n/** @hidden */\nexport var permissionEdit = 'write';\n/** @hidden */\nexport var permissionEditContents = 'writeContents';\n/** @hidden */\nexport var permissionCopy = 'copy';\n/** @hidden */\nexport var permissionUpload = 'upload';\n/** @hidden */\nexport var permissionDownload = 'download';\n","import * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { read, paste, Search, filter, Download, Delete, isFileSystemData } from '../common/operations';\nimport { getValue, setValue, isNullOrUndefined as isNOU, matches, select, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, detach } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createDialog } from '../pop-up/dialog';\n/**\n * Utility function to compare two strings in a way similar to Windows Explorer.\n * Files and folders are sorted separately, with folders coming before files.\n *\n * @param {string} reference - The first string to compare. This could be a file or folder name.\n * @param {string} comparer - The second string to compare. This could be a file or folder name.\n * @returns {number} - A negative number if `reference` should come before `comparer`, a positive number if `comparer` should come before `reference`, and 0 if they are considered equal.\n */\nexport function sortComparer(reference, comparer) {\n // Check if reference and comparer are files or folders\n var referenceIsFile = /\\.\\S+/.test(reference);\n var comparerIsFile = /\\.\\S+/.test(comparer);\n // If one is a file and the other is a folder, the folder should come first\n if (referenceIsFile && !comparerIsFile) {\n return 1;\n }\n if (!referenceIsFile && comparerIsFile) {\n return -1;\n }\n var referenceParts = [];\n var comparerParts = [];\n (reference + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { referenceParts.push([$1 || Infinity, $2 || '']); return ''; });\n (comparer + '').replace(/(\\d+)|(\\D+)/g, function (_, $1, $2) { comparerParts.push([$1 || Infinity, $2 || '']); return ''; });\n // Compare each part of reference and comparer\n while (referenceParts.length && comparerParts.length) {\n var referencePart = referenceParts.shift();\n var comparerPart = comparerParts.shift();\n if (referencePart && comparerPart) {\n var comparisonResult = referencePart[0] - comparerPart[0] ||\n referencePart[1].localeCompare(comparerPart[1]);\n if (comparisonResult) {\n return comparisonResult;\n }\n }\n }\n return referenceParts.length - comparerParts.length;\n}\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\nexport function updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNOU(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId, instance) }, true);\n instance.pathId = getPathId(node, instance);\n instance.pathNames = getPathNames(node, text, instance);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {string} returns the path.\n * @private\n */\nexport function getPath(element, text, hasId, instance) {\n var matched = getParents(element, text, false, hasId, instance);\n var path = '/';\n var len = matched.length - (2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {string[]} returns the path ids.\n * @private\n */\nexport function getPathId(node, instance) {\n var matched = getParents(node, node.getAttribute('data-uid'), true, false, instance);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {string[]} returns the path names.\n * @private\n */\nexport function getPathNames(element, text, instance) {\n var matched = getParents(element, text, false, false, instance);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {string[]} returns parent element.\n * @private\n */\nexport function getParents(element, text, isId, hasId, instance) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, '.' + CLS.LIST_ITEM)) {\n var data = [{}];\n if (!isNOU(instance) && !isNOU(instance.navigationpaneModule) && !isNOU(instance.navigationpaneModule.treeObj)) {\n data = instance.navigationpaneModule.treeObj.getTreeData(el);\n }\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') : getValue('name', data[0]));\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(CLS.TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = '/';\n var i = 1;\n for (i; i < parent.pathId.length; i++) {\n var data = getValue(parent.pathId[parseInt(i.toString(), 10)], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nexport function activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(events.cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(events.showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nexport function addBlur(nodes) {\n nodes.classList.add(CLS.BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nexport function removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + CLS.BLUR) :\n parent.element.querySelectorAll('.' + CLS.HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? CLS.BLUR : CLS.HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getModule(parent, element) {\n if (element) {\n if (element.classList.contains(CLS.ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Get all child items\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent ID.\n * @returns {Object[]} An array of child items\n * @private\n */\nexport function getAllChildItems(parent, parentId) {\n var children = parent.fileSystemData.filter(function (item) {\n return String(item.parentId) === String(parentId);\n });\n var allChildren = children.slice();\n children.forEach(function (child) {\n var childId = child.id;\n allChildren = allChildren.concat(getAllChildItems(parent, childId));\n });\n return allChildren;\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nexport function searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(events.pathColumn, { args: parent });\n }\n if (isFileSystemData(parent)) {\n if (value === '') {\n parent.itemData = parent.fileSystemData;\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n else {\n parent.searchSettings.filterType = isNOU(parent.searchSettings.filterType) ? 'contains' : parent.searchSettings.filterType;\n var currData = getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n var parentId = getValue('id', currData);\n var filteredData = getAllChildItems(parent, parentId);\n var data = new DataManager(filteredData).\n executeLocal(new Query().where('name', parent.searchSettings.filterType, value, parent.searchSettings.ignoreCase));\n var searchValue = parent.searchSettings.ignoreCase ? value.toLowerCase() : value;\n parent.itemData = data;\n parent.responseData.error = null;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchValue, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n return;\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? events.layoutChange : events.search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(events.layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? events.layoutChange : events.search, parent.path);\n }\n }\n else {\n filter(parent, events.layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nexport function updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nexport function getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + CLS.ROOT + '.' + CLS.CONTROL + ' .' + CLS.GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + CLS.LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable') || element.classList.contains('e-text-content')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionRead);\n }\n else {\n read(parent, events.refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function openAction(parent) {\n read(parent, events.openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\nexport function getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\nexport function fileType(file) {\n var isFile = getValue('isFile', file);\n if (!isFile) {\n return CLS.FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = CLS.ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {BeforeImageLoadEventArgs} - returns the eventargs.\n * @private\n */\nexport function getImageUrl(parent, item) {\n var imgUrl = isFileSystemData(parent) ? getValue('imageUrl', item) : '';\n if (isFileSystemData(parent)) {\n var eventArgs_1 = {\n fileDetails: [item],\n imageUrl: imgUrl,\n useImageAsUrl: true\n };\n parent.trigger('beforeImageLoad', eventArgs_1);\n return eventArgs_1;\n }\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNOU(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var data = { 'action': 'getImage', 'path': parent.path + fileName, 'id': getValue('id', item) };\n var ajaxSettings = {\n url: baseUrl,\n type: 'POST',\n contentType: 'application/json',\n responseType: 'blob',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl,\n useImageAsUrl: true,\n ajaxSettings: ajaxSettings\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\nexport function getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNOU(fPath)) {\n return fPath.replace(/\\\\/g, '/').replace(/^.*?(?=\\/)/, '') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\nexport function getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNOU(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\nexport function getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None' && !isNullOrUndefined(parent.sortOrder)) {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\nexport function getObject(parent, key, value) {\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var result = currFiles.filter(function (data) { return data[key].toString() === value; });\n return result[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nexport function createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + CLS.LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + CLS.BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + CLS.GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNOU(element.querySelector('.' + CLS.EMPTY))) {\n var emptyDiv = createElement('div', { className: CLS.EMPTY });\n var emptyFolder = createElement('div', { className: CLS.LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: CLS.EMPTY_CONTENT });\n var dragFile = createElement('div', { className: CLS.EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + CLS.GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + CLS.EMPTY)) {\n if (!isNOU(args.error)) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + CLS.EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + CLS.EMPTY_INNER_CONTENT).innerHTML = parent.uploadObj.dropArea == null ? getLocaleText(parent, '') : getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + CLS.EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\nexport function getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(events.isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nexport function setNodeId(result, rootId) {\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @returns {void}\n * @private\n */\nexport function setDateObject(args) {\n for (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n setValue('_fm_created', createdDate, args[i]);\n setValue('_fm_modified', modifiedDate, args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nexport function getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nexport function getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNOU(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nexport function sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id, parent);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(events.sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(events.sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @param {IFileManager} [parent] - optional parameter representing the parent IFileManager.\n * @returns {string} - returns the sorted fields\n * @private\n */\nexport function getSortField(id, parent) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? events.finalizeEnd : events.initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n var data = getObject(parent, key, folders[parseInt(i.toString(), 10)]);\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n if (!isNullOrUndefined(id)) {\n parent.pathId.push(id);\n }\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\nexport function openSearchFolder(parent, data) {\n parent.originalPath = getFullPath(parent, data, parent.path);\n var root = getValue(parent.pathId[0], parent.feParent);\n var navData = parent.feParent[getValue('_fm_id', parent.itemData[0])];\n var isRoot = isNullOrUndefined(navData) || getValue('_fm_id', navData) === 'fe_tree';\n var key = isNOU(getValue('id', root)) ? 'name' : 'id';\n var searchData = getObject(parent, key, isFileSystemData(parent) ? getValue('id', data) : getValue('name', data));\n if (isNullOrUndefined(searchData)) {\n if (!isRoot) {\n parent.notify(events.clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n }\n else {\n setNextPath(parent, parent.path);\n return;\n }\n }\n else {\n var id = getValue('_fm_id', searchData);\n parent.setProperties({ path: parent.originalPath }, true);\n parent.pathId.push(id);\n parent.itemData = [searchData];\n parent.pathNames.push(getValue('name', searchData));\n }\n read(parent, (parent.path !== parent.originalPath) ? events.initialEnd : events.finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n if (parent.activeModule === 'navigationpane' && !parent.selectedNodes[0].includes('/')) {\n parent.targetPath = getTargetPath(parent, parent.actionRecords[0]);\n }\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(events.pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n removeBlur(parent);\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\nexport function validateSubFolder(parent, data, dropPath, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var name_1 = parent.dragData[i] ? parent.dragData[i].name : null;\n var srcData = isFileSystemData(parent) ? name_1 : parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nexport function dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(events.pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nexport function getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nexport function getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId && !isNullOrUndefined(parent.ajaxSettings.url) ? 'filterId' : 'filterPath', args.cwd);\n if (!isNOU(fPath) && isFileSystemData(parent) && fPath !== '' && fPath !== '\\\\') {\n fPath = '\\\\' + args.cwd.parentId + '\\\\';\n }\n if (!isNOU(fPath)) {\n if (fPath === '') {\n return '/';\n }\n return fPath.replace(/\\\\/g, '/').replace(/^.*?(?=\\/)/, '') + filePath;\n }\n else {\n return isFileSystemData(parent) ? filePath : parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nexport function doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(events.hidePaste, {});\n parent.notify(events.cutEnd, result);\n }\n else {\n parent.notify(events.dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n parent.trigger('success', { action: operation, result: result });\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, events.pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(events.pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute('data-uid');\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, events.dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\nexport function getDuplicateData(parent, name) {\n var data = null;\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLS.CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CLS.CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(events.dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNOU(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nexport function dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLS.CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function removeDropTarget(parent) {\n removeItemClass(parent, CLS.DROP_FOLDER);\n removeItemClass(parent, CLS.DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nexport function removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Remove item class handler\n *\n * @param {Element} scrollParent - specifies the scrolling target.\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} nodeClass - specifies the node class.\n * @param {number} clientY - specifies the vertical (Y) coordinate of the mouse cursor position relative to the target element.\n * @returns {void}\n * @private\n */\nexport function scrollHandler(scrollParent, parent, nodeClass, clientY) {\n var position;\n var elementData = scrollParent.getBoundingClientRect();\n var node = select('.' + nodeClass, scrollParent);\n if ((clientY >= (elementData.top + scrollParent.clientHeight - 30)) && !isNullOrUndefined(node)) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, position);\n }\n if (!isNullOrUndefined(node) && (clientY <= (elementData.top + 30))) {\n position = (parent.targetModule === 'navigationpane' || parent.targetModule === 'detailsview') ? node.offsetHeight / 2.5 : node.offsetHeight / 4.5;\n scrollParent.scrollBy(0, -position);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nexport function draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n var scrollParent;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(events.dragging, args); }, 800);\n scrollParent = parent.navigationpaneModule.treeObj.element.parentElement;\n scrollHandler(scrollParent, parent, 'e-level-2', args.event.y);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.DROP_FILE);\n }\n canDrop = true;\n scrollParent = parent.detailsviewModule.gridObj.element.querySelector('.e-content');\n scrollHandler(scrollParent, parent, 'e-row', args.event.y);\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + CLS.FOLDER) && !node.classList.contains(CLS.BLUR)) {\n node.classList.add(CLS.HOVER, CLS.DROP_FOLDER);\n }\n canDrop = true;\n scrollParent = parent.largeiconsviewModule.element.firstElementChild;\n scrollHandler(scrollParent, parent, 'e-large-icon', args.event.y);\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\nexport function objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\nexport function getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\nexport function updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], events.permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function doDownload(parent) {\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], events.permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\nexport function doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], events.permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\nexport function createDeniedDialog(parent, data, action) {\n var permission = getValue('permission', data);\n var message = getValue('message', permission);\n var restriction = getValue('uploadContentFilter', permission) === 1 ? 'Folder Upload' : 'File Upload';\n if (message === '') {\n if (!isNOU(permission) && getValue('upload', permission) && getValue('uploadContentFilter', permission) === 1) {\n message = getLocaleText(parent, 'FolderUpload-Access-Message').replace('{0}', getValue('name', data)).replace('{1}', restriction);\n }\n else if (!isNOU(permission) && getValue('upload', permission) && getValue('uploadContentFilter', permission) === 2) {\n message = getLocaleText(parent, 'FileUpload-Access-Message').replace('{0}', getValue('name', data)).replace('{1}', restriction);\n }\n else {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\nexport function getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\nexport function hasReadAccess(data) {\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\nexport function hasEditAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\nexport function hasContentAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\nexport function hasUploadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\nexport function hasDownloadAccess(data) {\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function createNewFolder(parent) {\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, events.permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function uploadItem(parent) {\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, events.permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + CLS.UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n/**\n * Close dialog popup handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nexport function closePopup(parent) {\n if (!isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n}\n/**\n * Get target path from item data.\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} itemData - specifies the item elements.\n * @returns {string} returns the path.\n * @private\n */\nexport function getTargetPath(parent, itemData) {\n if (parent.hasId && !isNOU(getValue('filterId', itemData))) {\n return getValue('filterId', itemData).replace(/\\\\/g, '/').replace(/^[^/]+\\//, '/');\n }\n else {\n return getValue('filterPath', itemData).replace(/\\\\/g, '/');\n }\n}\n/**\n * Access control handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} itemData - specifies the item elements.\n * @param {string} action - specifies the action.\n * @param {boolean} isPathPermision - specifies the path permission.\n * @returns {string} returns the path.\n * @private\n */\nexport function getAccessDetails(parent, itemData, action, isPathPermision) {\n var accessMessage = '';\n for (var i = 0; i < itemData.length; i++) {\n var permission = getValue('permission', itemData[i]);\n if (permission == null) {\n permission = undefined;\n }\n if (isPathPermision) {\n if (permission && (!getValue('read', permission) || !getValue('writeContents', permission))) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', 'writeContents');\n }\n }\n }\n else {\n var copyOrMovePermission = action === 'copy' ? getValue('copy', permission) : getValue('write', permission);\n if (permission && (!getValue('read', permission) || !copyOrMovePermission)) {\n accessMessage = getValue('message', getValue('permission', itemData[i]));\n if (accessMessage === '') {\n accessMessage = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', itemData[i])).replace('{1}', action);\n }\n }\n }\n if (accessMessage !== '') {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: '401',\n message: accessMessage,\n fileExists: null\n },\n files: null\n };\n break;\n }\n }\n return accessMessage;\n}\n","import { Ajax, Fetch, createElement, select, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, setValue, getValue } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { fileType, setNodeId, getLocaleText, setDateObject, doPasteUpdate, getPathObject } from '../common/utility';\nimport { generatePath, getAccessDetails, getTargetPath } from '../common/utility';\nimport { getUid } from '@syncfusion/ej2-grids';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nexport function read(parent, event, path) {\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNOU(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nexport function createFolder(parent, itemName) {\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nexport function filter(parent, event) {\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n var filterData;\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nexport function rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData, showFileExtension: parent.showFileExtension\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nexport function paste(parent, path, names, targetPath, pasteOperation, renameItems, actionRecords) {\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nexport function Delete(parent, items, path, operation) {\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nexport function GetDetails(parent, names, path, operation) {\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Checks whether fileSystemData is enabled.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns the boolean value.\n */\nexport function isFileSystemData(parent) {\n var isFileSystemData = parent.fileSystemData.length >= 0 && isNOU(parent.ajaxSettings.url);\n return isFileSystemData;\n}\n/**\n * Function to check whether file already exist or not.\n *\n * @param {Record<string, any>} fileSystemData - specifies the file data.\n * @param {string} name - specifies the name.\n * @returns {boolean} - returns the boolean value.\n * @private\n */\nfunction isFileExists(fileSystemData, name) {\n var isExists = fileSystemData.some(function (item) { return item.name === name; });\n return isExists;\n}\n/**\n * Function to find the index value of a file or folder.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number} id - specifies the id.\n * @returns {number} - returns the index value.\n * @private\n */\nfunction findIndexById(parent, id) {\n var index = parent.fileSystemData.findIndex(function (item) {\n return !isNOU(item) && String(item.id) === String(id);\n });\n return index;\n}\n/**\n * Function to get the entire data of a file or folder using id value.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} id - specifies the id.\n * @returns {Object} - returns the data.\n * @private\n */\nfunction filterById(parent, id) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.id) === String(id); })[0];\n return data;\n}\n/**\n * Function to get the entire data of a file or folder for a parent.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {number | string} parentId - specifies the parent id.\n * @returns {Object[]} - returns the data.\n * @private\n */\nfunction filterByParent(parent, parentId) {\n var data = parent.fileSystemData.filter(function (item) { return String(item.parentId) === String(parentId); });\n return data;\n}\n/**\n * Function to create a new copied file or folder.\n *\n * @param {Record<string, any>} data - specifies the file or folder data.\n * @param {Record<string, any>} target - specifies the target data.\n * @param {string} itemName - specifies the item name.\n * @param {boolean} isCopy - specifies the copy operation.\n * @returns {Record<string, Object>} - returns the data.\n * @private\n */\nfunction createNewItem(data, target, itemName, isCopy) {\n var newItem = {};\n //Construct the new folder details.\n for (var key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newItem[key] = null;\n }\n }\n var currentDate = new Date();\n var folderPath = String(target.id) !== String(0) && !isNOU(target.parentId) ? target.filterPath + target.name + '\\\\' : '\\\\';\n Object.assign(newItem, {\n dateCreated: currentDate,\n dateModified: currentDate,\n filterPath: folderPath,\n hasChild: isCopy ? data.hasChild : false,\n id: getUid(itemName === null ? data.name : itemName),\n isFile: isCopy ? data.isFile : false,\n name: itemName === null ? data.name : itemName,\n parentId: target.id,\n size: isCopy ? data.size : 0,\n type: isCopy ? data.type : ''\n });\n if (!isNOU(target.filterId)) {\n Object.assign(newItem, {\n filterId: target.filterId + target.id + '/'\n });\n }\n return newItem;\n}\n/**\n * Function to create an error response.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} message - specifies the error message.\n * @param {string} code - specifies the error code.\n * @param {Object[]} fileName - specifies the file name.\n * @returns {void}\n * @private\n */\nfunction createErrorObject(parent, message, code, fileName) {\n parent.responseData = {\n cwd: null,\n details: null,\n error: {\n code: code,\n message: message,\n fileExists: fileName != null ? fileName : null\n },\n files: null\n };\n}\n/**\n * Function to trigger folder creation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerFolderCreation(parent, data, eventArgs) {\n var createEventArgs = {\n folderName: getValue('name', data),\n cancel: false,\n path: getValue('path', data),\n parentFolder: getValue('data', data)\n };\n parent.trigger('beforeFolderCreate', createEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.folderName)) {\n var data_1 = args.parentFolder[0];\n var newObject = createNewItem(data_1, data_1, args.folderName, false);\n parent.fileSystemData.push(newObject);\n }\n else {\n var message = 'A file or folder with the name ' + args.folderName + ' already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to trigger delete operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerDeleteOperation(parent, data, eventArgs) {\n var deleteEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeDelete', deleteEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n args.itemData.forEach(function (itemData) {\n var index = findIndexById(parent, itemData.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n if (!itemData.isFile) {\n var subItems = parent.fileSystemData.filter(function (obj) { return obj.filterPath.includes(itemData.name); });\n subItems.forEach(function (subItem) {\n var index = findIndexById(parent, subItem.id);\n if (index !== -1) {\n parent.fileSystemData.splice(index, 1);\n }\n });\n }\n });\n }\n });\n}\n/**\n * Function to trigger rename operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerRenameOperation(parent, data, eventArgs) {\n var renameEventArgs = {\n cancel: false,\n newName: getValue('newName', data),\n itemData: getValue('data', data),\n path: getValue('path', data)\n };\n parent.trigger('beforeRename', renameEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n if (!isFileExists(parent.fileSystemData, args.newName)) {\n var fileData = filterById(parent, args.itemData[0].id);\n var oldName = fileData.name;\n fileData.name = args.newName;\n updateChildrenFilterPath(parent, fileData.id, oldName, args.newName);\n parent.responseData.error = null;\n }\n else {\n var message = 'Cannot rename' + args.itemData[0].name + 'to' + args.newName + ': destination already exists.';\n createErrorObject(parent, message, '400', null);\n }\n }\n });\n}\n/**\n * Function to update child item filter path.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string | number} parentId - specifies the parent id.\n * @param {string} oldName - specifies the previous name.\n * @param {string} newName - specifies the new name.\n * @returns {void}\n * @private\n */\nfunction updateChildrenFilterPath(parent, parentId, oldName, newName) {\n parent.fileSystemData.forEach(function (item) {\n if (String(item.parentId) === String(parentId)) {\n var oldPath = item.filterPath;\n var newPath = oldPath.replace(oldName + '\\\\', newName + '\\\\');\n item.filterPath = newPath;\n updateChildrenFilterPath(parent, item.id, oldName, newName);\n }\n });\n}\n/**\n * Function to trigger move or copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerMoveOrCopyOperation(parent, data, eventArgs) {\n var moveEventArgs = {\n cancel: false,\n itemData: getValue('data', data),\n isCopy: getValue('action', data) === 'copy' ? true : false,\n path: getValue('path', data),\n targetData: getValue('targetData', data),\n targetPath: getValue('targetPath', data)\n };\n parent.trigger('beforeMove', moveEventArgs, function (args) {\n if (args.cancel) {\n eventArgs.cancel = true;\n return;\n }\n if (isFileSystemData(parent)) {\n var message = 'File Already Exists';\n var action = getValue('action', data);\n var itemPermission = getAccessDetails(parent, args.itemData, action, false);\n var pathPermission = getAccessDetails(parent, [args.targetData], action, true);\n var file_1 = [];\n parent.pasteNodes = [];\n if (itemPermission === '' && pathPermission === '') {\n if (args.isCopy) {\n var folderSubItems_1 = filterByParent(parent, args.targetData.id);\n var copiedFolders = args.itemData;\n copiedFolders.forEach(function (itemData) {\n if (!isFileExists(folderSubItems_1, itemData.name) || getValue('renameFiles', data).length > 0) {\n if (getValue('renameFiles', data).length > 0) {\n var names = itemData.name.split('.');\n var name_1 = itemData.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n copyFolderItems(parent, itemData, args.targetData, name_1);\n parent.responseData.error = null;\n parent.existingFileCount++;\n return;\n }\n copyFolderItems(parent, itemData, args.targetData, null);\n }\n else {\n file_1.push(itemData.name);\n }\n });\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n return;\n }\n var target_1 = args.targetData;\n var getTargetFiles = filterByParent(parent, target_1.id);\n for (var i = 0; i < args.itemData.length; i++) {\n var currItem = args.itemData[i];\n if (!isFileExists(getTargetFiles, currItem.name) || getValue('renameFiles', data).length > 0) {\n if (!target_1.hasChild) {\n target_1.hasChild = !currItem.isFile;\n var targetItem = parent.fileSystemData\n .filter(function (item) { return String(item.id) === String(target_1.id); });\n if (targetItem.length > 0) {\n targetItem[0].hasChild = target_1.hasChild;\n }\n }\n if (!currItem.isFile) {\n //Check whether the source folder include other sub folders or not.\n var subItems = currItem.parentId !== 0\n ? filterByParent(parent, currItem.parentId) : [];\n var itemData = filterById(parent, currItem.parentId);\n itemData.hasChild = subItems.length > 1 ? true : false;\n }\n var fileData = filterById(parent, currItem.id);\n if (getValue('renameFiles', data).length > 0) {\n var names = currItem.name.split('.');\n currItem.name = currItem.name.includes('.') ? names[0] + '(' + parent.existingFileCount + ').' + names[1] : names[0] + '(' + parent.existingFileCount + ')';\n fileData.name = currItem.name;\n parent.responseData.error = null;\n parent.existingFileCount++;\n parent.dropData = target_1;\n parent.dropPath = args.path;\n var pathArray = args.targetPath.replace(/^\\/|\\/$/g, '').split('/');\n target_1 = filterById(parent, pathArray[pathArray.length - 1]);\n }\n fileData.parentId = target_1.id;\n fileData.filterPath = target_1.id === 0 ? '\\\\' : target_1.filterPath + target_1.name + '\\\\';\n if (!isNOU(target_1.filterId)) {\n fileData.filterId = target_1.filterId + target_1.id + '/';\n }\n if (!currItem.isFile) {\n updateMovedItemChildren(parent, fileData);\n }\n }\n else {\n file_1.push(currItem.name);\n }\n }\n if (file_1.length > 0) {\n createErrorObject(parent, message, '400', file_1);\n }\n }\n }\n });\n}\n/**\n * Function to trigger search operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerSearchOperation(parent, data, eventArgs) {\n var searchEventArgs = {\n searchResults: getValue('data', data),\n cancel: false,\n path: getValue('path', data),\n searchText: getValue('searchString', data),\n caseSensitive: getValue('caseSensitive', data),\n showHiddenItems: getValue('showHiddenItems', data)\n };\n parent.trigger('search', searchEventArgs, function (args) {\n setValue('data', args.searchResults, data);\n if (args.cancel) {\n eventArgs.cancel = true;\n }\n });\n}\n/**\n * Function to trigger client side events.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {BeforeSendEventArgs} eventArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction triggerClientEvents(parent, data, eventArgs) {\n switch (getValue('action', data)) {\n case 'create': {\n triggerFolderCreation(parent, data, eventArgs);\n break;\n }\n case 'delete': {\n triggerDeleteOperation(parent, data, eventArgs);\n break;\n }\n case 'rename': {\n triggerRenameOperation(parent, data, eventArgs);\n break;\n }\n case 'move':\n case 'copy': {\n triggerMoveOrCopyOperation(parent, data, eventArgs);\n break;\n }\n case 'search': {\n triggerSearchOperation(parent, data, eventArgs);\n break;\n }\n }\n}\n/**\n * Creates an AJAX request for the file manager.\n *\n * @param {IFileManager} parent - The parent file manager instance.\n * @param {Object} data - The data object for the AJAX request.\n * @param {Function} fn - The callback function to be executed after the AJAX request.\n * @param {string} [event] - The event type for the AJAX request.\n * @param {string} [operation] - The operation type for the AJAX request.\n * @param {string} [targetPath] - The target path for the AJAX request.\n * @returns {void}\n * @private\n */\nfunction createAjax(parent, data, fn, event, operation, targetPath) {\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n triggerClientEvents(parent, data, eventArgs);\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(events.beforeRequest, {});\n if (isFileSystemData(parent)) {\n var filePath = event === 'node-expand' || event === 'finalize-end' || event === 'rename-end-parent'\n ? getValue('path', data) : parent.path;\n var pathArray = filePath.replace(/^\\/|\\/$/g, '').split('/');\n var idValue = event === 'rename-end-parent' || (event === 'path-changed' && getValue('data', data).length !== 0 && isNOU(parent.renamedItem))\n ? getValue('data', data)[0].id : pathArray[pathArray.length - 1];\n var action = getValue('action', data);\n var isFileOperation = (action === 'move' || action === 'rename' || action === 'copy' || action === 'delete' || action === 'search') && event !== 'rename-end';\n if (action === 'read' || action === 'create' || event === 'rename-end') {\n var rootId = parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })\n .length > 0\n ? parent.fileSystemData\n .filter(function (item) { return isNOU(item.parentId); })[0].id\n : 0;\n parent.responseData = {\n cwd: filterById(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue),\n details: null,\n error: null,\n files: filterByParent(parent, parent.path === '/' && event !== 'node-expand' && event !== 'rename-end-parent' ? rootId : idValue)\n };\n if (isNOU(parent.responseData.cwd)) {\n var message = 'Cannot load empty data within the File Manager.';\n createErrorObject(parent, message, '400', null);\n }\n }\n else if (isFileOperation && parent.responseData.error === null) {\n var itemData = action === 'search' || action === 'delete' ? getValue('data', data) : [];\n if (itemData.length === 0) {\n if (action === 'copy') {\n itemData = parent.pasteNodes.map(function (item) { return filterById(parent, item); });\n }\n else {\n itemData = getValue('data', data).map(function (item) { return filterById(parent, item.id); });\n }\n }\n parent.responseData = {\n cwd: null,\n details: null,\n error: null,\n files: itemData\n };\n }\n else if (getValue('action', data) === 'details') {\n var itemData = getValue('data', data);\n var details = itemData[0];\n var isMultipleFiles = itemData.length > 1;\n var itemNames = itemData.map(function (item) { return item.name; });\n var totalSize = isMultipleFiles ? getSize(itemData.reduce(function (accumulator, currentObject) { return accumulator + (currentObject.size || 0); }, 0)) : getSize(details.size);\n var path = (parent.pathNames.includes(details.name) || isMultipleFiles ? parent.pathNames.join('/') : parent.pathNames.join('/') + '/' + details.name);\n parent.responseData.details = Object.assign({\n location: path,\n multipleFiles: isMultipleFiles,\n name: itemNames.join(', '),\n size: totalSize\n }, isMultipleFiles ? {} : {\n created: details.dateCreated,\n isFile: details.isFile,\n modified: details.dateModified,\n permission: details.permission\n });\n }\n performReadOperation(parent, parent.responseData, fn, data, event, operation, targetPath, beforeSendArgs);\n return;\n }\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNOU(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs);\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function to get file size.\n *\n * @param {number} size - specifies the size.\n * @returns {string} - returns the size.\n * @private\n */\nfunction getSize(size) {\n var hz;\n if (size < 1024) {\n hz = size + ' B';\n }\n else if (size < 1024 * 1024) {\n hz = (size / 1024).toFixed(2) + ' KB';\n }\n else if (size < 1024 * 1024 * 1024) {\n hz = (size / 1024 / 1024).toFixed(2) + ' MB';\n }\n else {\n hz = (size / 1024 / 1024 / 1024).toFixed(2) + ' GB';\n }\n return hz;\n}\n/**\n * Function to perform read operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {Function} fn - specifies the function.\n * @param {Object} data - specifies the data.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the eventArgs.\n * @returns {void}\n * @private\n */\nfunction performReadOperation(parent, result, fn, data, event, operation, targetPath, beforeSendArgs) {\n parent.notify(events.afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNOU(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNOU(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNOU(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n if (!isNOU(result.files)) {\n setDateObject(result.files);\n for (var i = 0, len = result.files.length; i < len; i++) {\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNOU(result.details) && !isNOU(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n }\n if (location_1.indexOf('\\\\') === -1) {\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNOU(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end' || event === 'drop-path')) {\n parent.notify(events.searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function to copy operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} target - specifies the target.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction copyFolderItems(parent, data, target, itemName) {\n var newObject = createNewItem(data, target, itemName, true);\n parent.fileSystemData.push(newObject);\n parent.pasteNodes.push(newObject.id);\n var copiedItems = filterByParent(parent, data.id);\n for (var i = 0; i < copiedItems.length; i++) {\n copyFolderItems(parent, copiedItems[i], newObject, null);\n }\n}\n/**\n * Function to move operation.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} itemData - specifies the data.\n * @returns {void}\n * @private\n */\nfunction updateMovedItemChildren(parent, itemData) {\n var childItems = filterByParent(parent, itemData.id);\n childItems.forEach(function (childItem) {\n childItem.filterPath = itemData.filterPath + itemData.name + '\\\\';\n if (!isNOU(itemData.filterId)) {\n childItem.filterId = itemData.filterId + itemData.id + '/';\n }\n if (!childItem.isFile) {\n updateMovedItemChildren(parent, childItem);\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(events.afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (!isNOU(result.error) && result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(events.selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n }\n catch (error) {\n handleCatchError(parent, error, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n try {\n if (!isNOU(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = isFileSystemData(parent) ? result.files[result.files.length - 1] : result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var createEventArgs = {\n folderName: itemName,\n path: parent.path,\n parentFolder: parent.itemData\n };\n parent.trigger('folderCreate', createEventArgs);\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n }\n catch (error) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'create');\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result) {\n try {\n if (!isNOU(result.files)) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = Array.isArray(result.files) ? result.files[0] : result.files;\n var renameEventArgs = {\n newName: parent.renamedItem.name,\n itemData: [parent.renamedItem],\n path: parent.path\n };\n parent.trigger('rename', renameEventArgs);\n if (parent.activeModule === 'navigationpane') {\n var pathObject = getPathObject(parent);\n var pathLevel = parent.pathId[parent.pathId.length - 1].split('_').length - 2;\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n var renamePath = getTargetPath(parent, parent.renamedItem);\n read(parent, events.renameEndParent, renamePath);\n if (!isNOU(pathObject) && parent.pathNames.length > 1 && pathLevel <= parent.pathNames.length - 1) {\n parent.pathNames[pathLevel] = parent.renameText;\n if (!parent.hasId) {\n parent.setProperties({ path: \"/\" + parent.pathNames.slice(1).join('/') + \"/\" }, true);\n }\n }\n parent.itemData = parent.navigationpaneModule.previousSelected.length > 0\n ? parent.navigationpaneModule.treeObj.getTreeData(parent.navigationpaneModule.previousSelected[0]) : parent.itemData;\n read(parent, events.pathChanged, parent.path);\n parent.itemData[0] = parent.renamedItem;\n parent.renamedItem = null;\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, events.renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, events.renameEnd);\n }\n else {\n read(parent, events.renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n }\n catch (error) {\n if (!isNOU(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n handleCatchError(parent, error, 'rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n try {\n var moveorcopyEventArgs = {\n itemData: result.files,\n isCopy: operation === 'copy' ? true : false,\n path: path,\n targetData: parent.itemData[0],\n targetPath: parent.path\n };\n parent.trigger('move', moveorcopyEventArgs);\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNOU(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNOU(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n }\n catch (error) {\n handleCatchError(parent, error, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n try {\n var deleteEventArgs = {\n itemData: result.files,\n path: path\n };\n parent.trigger('delete', deleteEventArgs);\n if (!isNOU(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, events.deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n try {\n if (!isNOU(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nexport function Search(parent, event, path, searchString, showHiddenItems, caseSensitive) {\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n try {\n if (!isNOU(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n }\n catch (error) {\n handleCatchError(parent, error, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nexport function Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var ajaxSettings = {\n url: downloadUrl,\n type: 'POST',\n contentType: 'application/json',\n responseType: 'blob',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { data: data, cancel: false, useFormPost: true, ajaxSettings: ajaxSettings };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n if (downloadArgs.useFormPost) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n else {\n try {\n var contentDisposition_1;\n var fileName_1;\n var fetch_1 = new Fetch({\n url: getValue('url', downloadArgs.ajaxSettings),\n type: getValue('type', downloadArgs.ajaxSettings),\n contentType: getValue('contentType', downloadArgs.ajaxSettings),\n responseType: getValue('responseType', downloadArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', downloadArgs.ajaxSettings),\n onLoad: function (e) {\n contentDisposition_1 = e.headers.get('Content-Disposition');\n if (contentDisposition_1) {\n var filenameMatch = contentDisposition_1.match(/filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/);\n var extractedFilename = filenameMatch && filenameMatch[1];\n fileName_1 = extractedFilename ? extractedFilename.replace(/['\"]/g, '') : fileName_1;\n }\n else {\n fileName_1 = parent.itemData.length > 1 ? 'files.zip' : getValue('isFile', parent.itemData[0]) ? getValue('name', parent.itemData[0]) : getValue('name', parent.itemData[0]) + '.zip';\n }\n },\n onSuccess: function (e) {\n parent.trigger('success', downloadArgs);\n var blob = e;\n var blobUrl = URL.createObjectURL(blob);\n var link = document.createElement('a');\n link.href = blobUrl;\n link.download = fileName_1;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n },\n onFailure: function (e) {\n var result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.downloadUrl\n }\n };\n createDialog(parent, 'Error', result);\n parent.trigger('failure', downloadArgs);\n }\n });\n fetch_1.send(JSON.stringify(downloadArgs.data));\n }\n catch (error) {\n handleCatchError(parent, error, 'download');\n }\n }\n }\n });\n}\n/**\n * Function for on catch handler in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {any} error - specifies the catch error.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction handleCatchError(parent, error, action) {\n var errorResult = {\n files: null,\n error: {\n message: error.message,\n fileExists: null\n }\n };\n onFailure(parent, errorResult, action);\n}\n/**\n * Function for trigger Fetch success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} ajaxSettings - specifies the ajax settings.\n * @returns {void}\n */\nexport function triggerFetchSuccess(parent, ajaxSettings) {\n parent.notify(events.afterRequest, { action: 'success' });\n if (ajaxSettings && typeof getValue('onSuccess', ajaxSettings) === 'function') {\n getValue('onSuccess', ajaxSettings)();\n }\n}\n/**\n * Function for trigger Fetch failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} ajaxSettings - specifies the ajax settings.\n * @param {ReadArgs} result - specifies the result.\n * @returns {void}\n */\nexport function triggerFetchFailure(parent, ajaxSettings, result) {\n parent.notify(events.afterRequest, { action: 'failure' });\n createDialog(parent, 'Error', result);\n if (typeof getValue('onFailure', ajaxSettings) === 'function') {\n getValue('onFailure', ajaxSettings)();\n }\n}\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { select, isNullOrUndefined as isNOU, createElement, Internationalization, Fetch } from '@syncfusion/ej2-base';\nimport { getValue, remove, selectAll } from '@syncfusion/ej2-base';\nimport { createFolder } from '../common/operations';\nimport * as CLS from '../base/classes';\nimport * as events from '../base/constant';\nimport { paste, rename, triggerFetchFailure, triggerFetchSuccess } from '../common/operations';\nimport { getLocaleText, getDuplicateData, objectToString, getCssClass, getTargetPath } from '../common/utility';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @returns {void}\n * @private\n */\nexport function createDialog(parent, text, e, details) {\n var options = getOptions(parent, text, e, details);\n if (isNOU(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + CLS.DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nexport function createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNOU(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + CLS.EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(events.actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '<div>' + getLocaleText(parent, 'Content-Rename-Confirmation') + '</div>';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '<div>' + getLocaleText(parent, 'Content-Duplicate') + '</div>';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '<div class=\"e-fe-retrycontent\">' +\n (getLocaleText(parent, 'Content-Retry')) + '</div>';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(events.skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n var index;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '<input type=\"text\" value=\"New folder\" id=\"newname\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('<div>' + getLocaleText(parent, 'Content-Multiple-Delete') + '</div>')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '<div>' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '</div>';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '<input type=\"text\" class=\"e-input\" id=\"rename\"><div class=\"e-fe-error\"></div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNOU(details.permission)) {\n permission = '<tr><td>' + getLocaleText(parent, 'Permission') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + objectToString(details.permission) + '</td></tr>';\n }\n options.header = details.name;\n options.content = '<table>' +\n '<tr><td>' + getLocaleText(parent, 'Type') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n (details.isFile ? 'File' : 'Folder') + '\">' + (details.isFile ? 'File' : 'Folder') + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + '</td><td><span class=\"' + CLS.VALUE + '\" title =\"' +\n details.size + '\">' + details.size + '</span></td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Location') + '</td><td class=\"' + CLS.VALUE + '\" title=\"' +\n details.location + '\">' + details.location + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Modified') + '</td><td class=\"' + CLS.VALUE + '\" >'\n + formattedString + '</td></tr>'\n + permission + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index = val.name.indexOf('.') + 1;\n return (index === 0 && (!val.isFile)) ? 'Folder' : ((index !== 0) ? val.name.substr(index).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] === undefined) {\n strArr = details.name.split(',').map(function (val) {\n index = val.indexOf('.') + 1;\n return (index === 0) ? 'Folder' : val.substr(index).replace(' ', '');\n });\n }\n fileType = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '<table><tr><td>' + getLocaleText(parent, 'Type')\n + ':</td><td class=\"' + CLS.VALUE + '\">' + fileType + '</td></tr>' +\n '<tr><td>' + getLocaleText(parent, 'Size') + ':</td><td>' +\n details.size + '<span class=\"' + CLS.VALUE + '\" title =\"' + details.size\n + '\"></span></td></tr>' + '<tr><td>' + getLocaleText(parent, 'Location') +\n ':</td><td class=\"' + CLS.VALUE + '\" title=\"' + location + '\">'\n + location + '</td></tr>' + '</table>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(events.actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '<span class=\"e-fe-icon e-fe-access-error\"></span><div class=\"e-fe-access-header\">' +\n getLocaleText(parent, 'Access-Denied') + '</div>';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '<div class=\"' + CLS.ERROR_CONTENT + '\">' + e.error.message + '</div>';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = '';\n if (parent.activeModule === 'navigationpane') {\n newPath = getTargetPath(parent, parent.itemData[0]);\n }\n else {\n newPath = parent.path;\n }\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(events.deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {BeforeImageLoadEventArgs} imageData - specifies the image eventargs.\n * @returns {void}\n * @private\n */\nexport function createImageDialog(parent, header, imageData) {\n var content = createElement('div', { className: 'e-image-wrap' });\n if (imageData.useImageAsUrl) {\n var image = createElement('img', { className: 'e-image', attrs: { src: imageData.imageUrl, alt: header } });\n content.appendChild(image);\n }\n else {\n var fetch_1 = new Fetch({\n url: getValue('url', imageData.ajaxSettings),\n type: getValue('type', imageData.ajaxSettings),\n contentType: getValue('contentType', imageData.ajaxSettings),\n responseType: getValue('responseType', imageData.ajaxSettings),\n beforeSend: getValue('beforeSend', imageData.ajaxSettings),\n onSuccess: function (e) {\n var blobUrl = URL.createObjectURL(e);\n var image = createElement('img', { className: 'e-image', attrs: { src: blobUrl, alt: header } });\n content.appendChild(image);\n triggerFetchSuccess(parent, imageData.ajaxSettings);\n },\n onFailure: function (e) {\n var result = {\n error: {\n code: e.status.toString(),\n message: getLocaleText(parent, 'Network-Error') + ' ' + getValue('url', imageData.ajaxSettings)\n }\n };\n triggerFetchFailure(parent, imageData.ajaxSettings, result);\n }\n });\n var data = getValue('data', imageData.ajaxSettings);\n fetch_1.send(data);\n }\n if (isNOU(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + CLS.IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, select, selectAll, EventHandler, KeyboardEvents, closest, Draggable, Fetch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, addClass, removeClass, Touch, isVisible } from '@syncfusion/ej2-base';\nimport { getValue, setValue, remove } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { read, GetDetails, Delete, triggerFetchFailure, triggerFetchSuccess } from '../common/operations';\nimport { doRename, getAccessClass, getPathObject, getFullPath, getDirectoryPath, rename, doDownload, getItemName } from '../common/index';\nimport { removeBlur, cutFiles, copyFiles, addBlur, openSearchFolder, removeActive, pasteHandler } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule } from '../common/index';\nimport { updateRenamingData, doDeleteFiles, doDownloadFiles } from '../common/index';\nimport { openAction, fileType, refresh, getImageUrl, getSortedData, createDeniedDialog, updateLayout, getLocaleText } from '../common/utility';\nimport { createEmptyElement, hasReadAccess, hasEditAccess } from '../common/utility';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isSelectAllCalled = false;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.imageEventArgsMap = new Map();\n this.imageUrlCache = new Map();\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n addClass([this.element], CLS.LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(events.hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + CLS.LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', imageAttributes: '_fm_imageAttr', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n if (this.parent.largeIconsTemplate) {\n this.listObj.template = this.parent.largeIconsTemplate;\n this.listObj.templateID = this.parent.element.id + '_largeIconsTemplate';\n }\n this.items = [];\n this.items = this.renderList(args);\n if (this.parent.sortComparer && this.parent.sortBy !== 'None') {\n this.items = this.allItems = DataUtil.sort(this.items, this.parent.sortBy, this.comparer.bind(this));\n }\n else {\n this.items = this.allItems = getSortedData(this.parent, this.items);\n }\n iconsView.classList.remove(CLS.DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0 && !isNOU(this.parent.virtualizationModule)) {\n this.parent.virtualizationModule.setUIVirtualization();\n }\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj, null, null, this.parent);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.parent.renderReactTemplates();\n if (this.imageEventArgsMap.size > 0) {\n this.loadImages();\n }\n this.listElements.setAttribute('aria-label', 'listbox');\n this.preventImgDrag();\n this.createDragObj();\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + CLS.LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0 && !isNOU(this.parent.virtualizationModule)) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.loadImages = function () {\n var _this = this;\n var imageEle = this.parent.element.querySelectorAll('.e-list-img');\n imageEle.forEach(function (imgElement) {\n var imageKey = imgElement.getAttribute('data-image-key');\n if (!imageKey) {\n return;\n }\n if (_this.imageUrlCache.has(imageKey)) {\n imgElement.setAttribute('src', _this.imageUrlCache.get(imageKey));\n imgElement.classList.remove('image-blur');\n return;\n }\n var imageDetails = _this.imageEventArgsMap.get(imageKey);\n if (!imageDetails) {\n return;\n }\n var fetch = new Fetch({\n url: getValue('url', imageDetails.ajaxSettings),\n type: getValue('type', imageDetails.ajaxSettings),\n contentType: getValue('contentType', imageDetails.ajaxSettings),\n responseType: getValue('responseType', imageDetails.ajaxSettings),\n beforeSend: getValue('beforeSend', imageDetails.ajaxSettings),\n onSuccess: function (blob) {\n var blobUrl = URL.createObjectURL(blob);\n _this.imageUrlCache.set(imageKey, blobUrl);\n imgElement.setAttribute('src', blobUrl);\n imgElement.classList.remove('image-blur');\n triggerFetchSuccess(_this.parent, imageDetails.ajaxSettings);\n },\n onFailure: function (response) {\n var result = {\n files: null,\n error: {\n code: response.status ? response.status.toString() : '404',\n message: getLocaleText(_this.parent, 'Network-Error') + ' ' + getValue('url', imageDetails.ajaxSettings),\n fileExists: null\n }\n };\n triggerFetchFailure(_this.parent, imageDetails.ajaxSettings, result);\n }\n });\n fetch.send(getValue('data', imageDetails.ajaxSettings));\n });\n };\n LargeIconsView.prototype.comparer = function (x, y) {\n if (this.parent.sortOrder === 'Descending') {\n var z = x;\n x = y;\n y = z;\n }\n return this.parent.sortComparer(x, y);\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: false,\n dragTarget: '.' + CLS.LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.dragData.push(this.getItemObject(activeEle[parseInt(i.toString(), 10)]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.largeIconsTemplate) {\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + CLS.LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n if (txt.indexOf(type) !== -1) {\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n }\n this.renderCheckbox(args);\n }\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n checkElement.setAttribute('aria-label', 'checkbox');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n CLS.LARGE_ICON + ' e-active' : CLS.LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === CLS.ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imageData = getImageUrl(this.parent, items[i]);\n if (imageData.useImageAsUrl) {\n setValue('_fm_imageUrl', imageData.imageUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n var uniqueKey = \"img_\" + name_1 + \"_\" + i;\n this.imageEventArgsMap.set(uniqueKey, imageData);\n setValue('_fm_imageUrl', '', items[i]);\n setValue('_fm_imageAttr', { alt: name_1, class: 'e-list-img image-blur', 'data-image-key': uniqueKey }, items[i]);\n }\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n this.parent.activeModule = 'largeiconsview';\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem && this.parent.activeModule === 'largeiconsview') {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNOU(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(events.sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.search, this.onSearch);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.splitterResize, this.splitterResizeHandler);\n this.parent.off(events.resizeEnd, this.resizeHandler);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(events.filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.search, this.onSearch, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.splitterResize, this.splitterResizeHandler, this);\n this.parent.on(events.resizeEnd, this.resizeHandler, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + CLS.ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNOU(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n case 'showItemCheckBoxes':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n this.startItem = null;\n this.listElements = null;\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(CLS.HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n if (_this.parent.isDevice) {\n _this.tapCount = eve.tapCount;\n _this.tapEvent = eve;\n setTimeout(function () {\n if (_this.tapCount > 0) {\n _this.doTapAction(_this.tapEvent);\n }\n _this.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n _this.dblClickHandler(eve);\n }\n else {\n _this.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n _this.multiSelect = _this.parent.allowMultiSelection ? true : false;\n if (_this.parent.allowMultiSelection) {\n addClass([_this.parent.element], CLS.MULTI_SELECT);\n }\n _this.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n if (this.multiSelect || target.classList.contains(CLS.LIST_PARENT) || isNOU(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var ctrlKey = this.parent.isMac ? e.metaKey : e.ctrlKey;\n var isMacRightClick = this.parent.isMac && e.ctrlKey && e.shiftKey;\n var item = closest(target, '.' + CLS.LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if ((e.which === 3 || isMacRightClick) && !isNOU(item) && item.classList.contains(CLS.ACTIVE)) {\n this.addActive(item);\n this.updateType(item);\n return;\n }\n else if (!isNOU(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)\n && (ctrlKey || target.classList.contains(CLS.CHECK))) {\n action = 'unselect';\n }\n if (ctrlKey && e.shiftKey && !isMacRightClick) {\n this.isSelectAllCalled = true;\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !ctrlKey)))\n && !cList.contains(CLS.FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey && !isMacRightClick) {\n if (!(e && ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(CLS.ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNOU(item)) {\n this.isSelectAllCalled = false;\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(events.selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNOU(target)) {\n return;\n }\n var item = closest(target, '.' + CLS.LIST_ITEM);\n this.parent.isFile = false;\n if (!isNOU(item)) {\n this.updateType(item);\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === CLS.ICON_IMAGE) {\n var imageData = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imageData);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n this.parent.isFile = getValue('isFile', this.getItemObject(item));\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.keyActionHandler = function (e) {\n var _this = this;\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNOU(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNOU(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNOU(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNOU(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNOU(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNOU(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNOU(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNOU(fItem) && !fItem.classList.contains(CLS.ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNOU(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + CLS.LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNOU(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNOU(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNOU(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNOU(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNOU(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNOU(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNOU(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNOU(nextItem)) {\n if (!nextItem.classList.contains(CLS.ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [CLS.ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNOU(preItem)) {\n removeClass([preItem], [CLS.ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS]);\n }\n addClass([item], [CLS.FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.showItemCheckBoxes) {\n return;\n }\n var checkEle = select('.' + CLS.FRAME, item);\n if (isNOU(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CLS.CHECK)) {\n addClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CLS.CHECK)) {\n removeClass([checkEle], CLS.CHECK);\n closest(checkEle, '.' + CLS.CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + CLS.ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = { action: action, fileDetails: data.length > 1\n ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null\n : item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n var data = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1\n ? data\n : data[0], isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n LargeIconsView.prototype.addSelection = function (data) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n var data = [];\n var items = selectAll('.' + CLS.LIST_ITEM + '.' + CLS.ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNOU(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\nexport { LargeIconsView };\n","import { EventHandler, closest, isNullOrUndefined, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, addClass, removeClass, remove, createElement } from '@syncfusion/ej2-base';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { read } from '../common/operations';\nimport { getLocaleText, searchWordHandler } from '../common/utility';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: CLS.ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: CLS.LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: CLS.LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + CLS.SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + CLS.SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search = this.searchObj.element.nextElementSibling;\n EventHandler.add(search, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: CLS.ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(events.pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, events.pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(CLS.FILTER)) {\n removeClass([this.parent.element], CLS.FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], CLS.FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.pathChanged, this.onUpdatePath, this);\n this.parent.on(events.finalizeEnd, this.onUpdatePath, this);\n this.parent.on(events.refreshEnd, this.onUpdatePath, this);\n this.parent.on(events.openEnd, this.onUpdatePath, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.splitterResize, this.onResize, this);\n this.parent.on(events.pasteEnd, this.onPasteEnd, this);\n this.parent.on(events.resizeEnd, this.onResize, this);\n this.parent.on(events.searchTextChange, this.onSearchTextChange, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.layoutRefresh, this.onResize, this);\n this.parent.on(events.dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(events.pathChanged, this.onUpdatePath);\n this.parent.off(events.finalizeEnd, this.onUpdatePath);\n this.parent.off(events.refreshEnd, this.onUpdatePath);\n this.parent.off(events.openEnd, this.onUpdatePath);\n this.parent.off(events.pasteEnd, this.onPasteEnd);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.splitterResize, this.onResize);\n this.parent.off(events.resizeEnd, this.onResize);\n this.parent.off(events.searchTextChange, this.onSearchTextChange);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.layoutRefresh, this.onResize);\n this.parent.off(events.dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n };\n return BreadCrumbBar;\n}());\nexport { BreadCrumbBar };\n","import { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, createElement, closest, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { getValue, select } from '@syncfusion/ej2-base';\nimport { Download, GetDetails } from './../common/operations';\nimport { createDialog } from './dialog';\nimport { cutFiles, copyFiles, refresh, getPathObject, getLocaleText, updateLayout, getFullPath } from './../common/utility';\nimport { getCssClass, sortbyClickHandler, pasteHandler } from './../common/utility';\nimport { createDeniedDialog, createNewFolder, uploadItem, hasEditAccess, hasDownloadAccess } from './../common/utility';\nimport * as events from './../base/constant';\nimport * as CLS from '../base/classes';\n/**\n * ContextMenu module\n */\nvar ContextMenu = /** @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu(parent) {\n this.isMenuItemClicked = false;\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new Menu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, CLS.ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CLS.CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_LARGE + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', CLS.ICON_GRID + ' ' + CLS.MENU_ICON);\n }\n if (args.item.id === this.getMenuId('fileupload')) {\n this.renderFileFolderIcons(args, CLS.ICON_FILE, !this.parent.uploadObj.directoryUpload);\n }\n if (args.item.id === this.getMenuId('folderupload')) {\n this.renderFileFolderIcons(args, CLS.ICON_FOLDER, this.parent.uploadObj.directoryUpload);\n }\n };\n ContextMenu.prototype.renderFileFolderIcons = function (menuArgs, fileFolderIcon, isDirectory) {\n var iconSpan = createElement('span');\n var element = menuArgs.element;\n element.insertBefore(iconSpan, isDirectory ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', fileFolderIcon + ' ' + CLS.MENU_ICON);\n };\n ContextMenu.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: false,\n element: args.element,\n event: args.event,\n isFocused: args.isFocused,\n fileDetails: [this.menuItemData],\n items: args.items,\n parentItem: args.parentItem,\n menuType: this.menuType\n };\n this.parent.trigger('menuClose', eventArgs, function (menuCloseArgs) {\n if (menuCloseArgs.cancel) {\n args.cancel = menuCloseArgs.cancel;\n return;\n }\n });\n this.menuTarget = null;\n if (!this.isMenuItemClicked && this.parent.pathId.length > 1 && this.parent.activeModule === 'navigationpane') {\n this.parent.pathId.pop();\n var parentKey = [];\n var itemKeys = Object.keys(this.parent.feParent);\n for (var _i = 0, itemKeys_1 = itemKeys; _i < itemKeys_1.length; _i++) {\n var item = itemKeys_1[_i];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var itemData = getValue(item, this.parent.feParent);\n if (this.parent.pathNames.indexOf(itemData.name) !== -1) {\n parentKey.push(itemData._fm_id);\n }\n }\n this.parent.pathId.push(parentKey[parentKey.length - 1]);\n this.parent.navigationpaneModule.treeObj.setProperties({ selectedNodes: [this.parent.pathId[this.parent.pathId.length - 1]] });\n }\n this.isMenuItemClicked = false;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var selected = false;\n var uid;\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(CLS.FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest('div');\n }\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(CLS.TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + CLS.TOOLBAR_ID))) {\n args.cancel = true;\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + CLS.EMPTY)) {\n this.setLayoutItem(target);\n }\n else if (!target.classList.contains(CLS.MENU_ITEM) &&\n !target.classList.contains(CLS.MENU_ICON) && !target.classList.contains(CLS.SUBMENU_ICON)) {\n /* istanbul ignore next */\n if (this.parent.view === 'LargeIcons' && !isNOU(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNOU(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNOU(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('aria-rowindex'), 10) - 1]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + CLS.TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n if (!isNOU(uid)) {\n this.navUid = uid;\n }\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n else {\n var itemsToRemove = ['Delete', 'Rename', 'Cut', 'Copy'];\n for (var i = 0; i < this.disabledItems.length; i++) {\n var item = this.disabledItems[i];\n if (itemsToRemove.indexOf(item) !== -1) {\n this.disabledItems.splice(i, 1);\n i--;\n }\n }\n }\n /* istanbul ignore next */\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n else {\n var pasteIndex = this.disabledItems.indexOf('Paste');\n if (pasteIndex !== -1) {\n this.disabledItems.splice(pasteIndex, 1);\n }\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(CLS.MENU_ITEM) ||\n target.classList.contains(CLS.MENU_ICON) || target.classList.contains(CLS.SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + CLS.TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + CLS.LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu.prototype.getTargetView = function (target) {\n return target.classList.contains(CLS.TREE_VIEW) ?\n 'TreeView' : target.classList.contains(CLS.GRID_VIEW) ?\n 'GridView' : target.classList.contains(CLS.ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(CLS.LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable) {\n this.disabledItems = this.disabledItems.filter(function (item) { return items.indexOf(item) === -1; });\n }\n for (var i = 0; i < items.length; i++) {\n var validItem = this.checkValidItem(items[i]);\n if (validItem === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (validItem === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n var selectedTreeNode = select('[data-uid=\"' + this.navUid + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (!isNOU(selectedTreeNode) &&\n this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n else {\n var indexToRemove = this.disabledItems.indexOf('Open');\n if (indexToRemove !== -1) {\n this.disabledItems.splice(indexToRemove, 1);\n }\n }\n if (this.parent.selectedItems.length === 0) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n }\n else if (this.parent.activeModule !== 'navigationpane') {\n if (this.parent.selectedItems.length === 1) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename', 'Paste');\n }\n }\n };\n ContextMenu.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length === 1) {\n var renameIndex = this.disabledItems.indexOf('Rename');\n if (renameIndex !== -1) {\n this.disabledItems.splice(renameIndex, 1);\n }\n }\n else {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + CLS.LARGEICON_ID).getElementsByClassName(CLS.EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + CLS.GRID_ID).getElementsByClassName(CLS.EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n else {\n this.disabledItems = this.disabledItems.filter(function (item) { return item !== 'SelectAll'; });\n }\n if (this.parent.selectedNodes.length === 0) {\n if (this.disabledItems.indexOf('Paste') === -1) {\n this.disabledItems.push('Paste');\n }\n }\n this.contextMenu.dataBind();\n };\n ContextMenu.prototype.checkValidItem = function (nameEle) {\n if (!isNOU(this.currentElement)) {\n if (!isNOU(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNOU(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n }\n return -1;\n };\n ContextMenu.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n var args = { target: this.menuTarget };\n this.parent.notify(events.menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu.prototype.onSelect = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'fileupload' || itemText === 'folderupload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n if (itemText !== 'cut' && itemText !== 'copy') {\n _this.isMenuItemClicked = true;\n }\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n _this.parent.folderPath = _this.parent.path;\n }\n else {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(events.downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(events.openInit, { target: _this.parent.visitedItem });\n }\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'name':\n case 'size':\n case 'date':\n case 'ascending':\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n case 'fileupload':\n case 'folderupload':\n _this.parent.setProperties({ uploadSettings: { directoryUpload: itemText === 'fileupload' ? false : true } });\n _this.parent.dataBind();\n uploadItem(_this.parent);\n break;\n }\n }\n });\n };\n ContextMenu.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu.prototype.addEventListener = function () {\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu.prototype.removeEventListener = function () {\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n this.targetElement = null;\n };\n /* istanbul ignore next */\n ContextMenu.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_OPEN };\n break;\n case 'Upload':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_UPLOAD,\n items: [\n {\n id: this.getMenuId('folderupload'), text: getLocaleText(this.parent, 'Folder'),\n iconCss: !this.parent.uploadObj.directoryUpload ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('fileupload'), text: getLocaleText(this.parent, 'File'),\n iconCss: this.parent.uploadObj.directoryUpload ? null : CLS.TB_OPTION_TICK\n }\n ]\n };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: CLS.ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : CLS.TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: CLS.ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.split(' ').join('').toLowerCase();\n };\n return ContextMenu;\n}());\nexport { ContextMenu };\n","/**\n * Specifies the default locale of FileManager component\n */\nexport var defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'File': 'File',\n 'Folder': 'Folder',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'FolderUpload-Access-Message': '{0} is not accessible. you need permission to perform the {1} action.',\n 'FileUpload-Access-Message': '{0} is not accessible. you need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isNullOrUndefined, L10n, closest, Collection, detach, selectAll, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Complex, select } from '@syncfusion/ej2-base';\nimport { createElement, addClass, removeClass, setStyleAttribute as setAttr, getUniqueID } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, formatUnit, Browser, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { createDialog, createExtDialog } from '../pop-up/dialog';\nimport { ToolbarSettings, AjaxSettings, NavigationPaneSettings, DetailsViewSettings } from '../models/index';\nimport { ToolbarItem } from '../models/index';\nimport { SearchSettings } from '../models/index';\nimport { LargeIconsView } from '../layout/large-icons-view';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { UploadSettings } from '../models/upload-settings';\nimport * as events from './constant';\nimport * as CLS from './classes';\nimport { read, filter, createFolder } from '../common/operations';\nimport { refresh, getPathObject, getLocaleText, setNextPath, createDeniedDialog, getCssClass } from '../common/utility';\nimport { hasContentAccess, hasUploadAccess, updateLayout, createNewFolder, uploadItem, closePopup } from '../common/utility';\nimport { ContextMenuSettings } from '../models/contextMenu-settings';\nimport { BreadCrumbBar } from '../actions/breadcrumb-bar';\nimport { ContextMenu } from '../pop-up/context-menu';\nimport { defaultLocale } from '../models/default-locale';\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n * <div id=\"file\"></div>\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @class */ (function (_super) {\n __extends(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.existingFileCount = 0;\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n _this.isSortByClicked = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not\n _this.isMac = false;\n _this.dragSelectedItems = [];\n _this.onScrollHandler = function () {\n if (!isNOU(_this.contextmenuModule) && !isNOU(_this.contextmenuModule.contextMenu)) {\n _this.contextmenuModule.contextMenu.close();\n }\n };\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNOU(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setAttr(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this],\n name: 'Toolbar'\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this],\n name: 'NavigationPane'\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this],\n name: 'DetailsView'\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this],\n name: 'ContextMenu'\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\n args: [this],\n name: 'Virtualization'\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNOU(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n if (this.fileView === 'Details') {\n this.largeiconsviewModule.element.classList.add(CLS.DISPLAY_NONE);\n }\n this.adjustHeight();\n if (isNOU(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNOU(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], CLS.MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + CLS.TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + CLS.LAYOUT_ID, className: CLS.LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + CLS.NAVIGATION_ID, className: CLS.NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + CLS.TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CLS.CONTENT_ID, className: CLS.LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + CLS.BREADCRUMBBAR_ID,\n className: CLS.BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + CLS.GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + CLS.LARGEICON_ID,\n className: CLS.LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: CLS.OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + CLS.DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CLS.CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + CLS.IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + CLS.EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + CLS.UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + CLS.TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(events.splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + CLS.SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(CLS.DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(CLS.DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNOU(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNOU(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + CLS.UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? CLS.MOB_POPUP : CLS.ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + CLS.UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CLS.CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl,\n chunkSize: this.uploadSettings.chunkSize,\n retryCount: 0\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n chunkUploading: this.onChunkUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n sequentialUpload: this.uploadSettings.sequentialUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + CLS.UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onChunkUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n if (this.uploadSettings.chunkSize === 0) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'size': args.fileData.size }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n if (this.allowOrDenyUpload(args, details)) {\n args.cancel = true;\n createDeniedDialog(this, details, events.permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n FileManager.prototype.allowOrDenyUpload = function (args, uploadDetails) {\n var permission = getValue('permission', uploadDetails);\n if (isNOU(args) || isNOU(permission) || isNOU(getValue('uploadContentFilter', permission))) {\n return false;\n }\n var hasFolder = args.filesData.some(function (f) {\n var name = !isNOU(f.name) ? f.name : '';\n return name.includes('/') || name.includes('\\\\');\n });\n var hasFile = args.filesData.some(function (f) {\n var name = !isNOU(f.name) ? f.name : '';\n return !(name.includes('/') || name.includes('\\\\'));\n });\n if (hasFolder && getValue('uploadContentFilter', permission) === 1) {\n return true;\n }\n if (hasFile && getValue('uploadContentFilter', permission) === 2) {\n return true;\n }\n return false;\n };\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n FileManager.prototype.onChunkUploadComplete = function (files) {\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n var uploadFile = !isNullOrUndefined(files) ? getValue('file', files).name : '';\n if (uploadFile === this.retryArgs[i].file.name) {\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadSuccess = function (files) {\n if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, events.pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploadFailure = function (files) {\n if (this.uploadSettings.chunkSize > 0) {\n this.onChunkUploadComplete(files);\n }\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(events.beforeRequest, this.showSpinner, this);\n this.on(events.afterRequest, this.hideSpinner, this);\n this.on(events.initialEnd, this.onInitialEnd, this);\n this.on(events.detailsInit, this.onDetailsInit, this);\n this.on(events.skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.beforeRequest, this.showSpinner);\n this.off(events.afterRequest, this.hideSpinner);\n this.off(events.initialEnd, this.onInitialEnd);\n this.off(events.detailsInit, this.onDetailsInit);\n this.off(events.skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNOU(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(events.resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], events.permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n if (this.toolbarSettings.items.indexOf('Upload') !== -1) {\n uploadEle = select('#' + this.element.id + CLS.UPLOAD_ID, this.element);\n uploadEle.click();\n }\n break;\n }\n };\n FileManager.prototype.wireSelectOnDragEvent = function (isBind) {\n if (isNOU(this.view)) {\n return;\n }\n if (isBind) {\n this.viewElem = this.view === 'LargeIcons' ? this.largeiconsviewModule.element : this.element.querySelector('.e-gridcontent');\n }\n if (isBind) {\n if (this.allowMultiSelection) {\n this.on(events.layoutChange, this.onLayoutChange, this);\n this.on(events.selectionChanged, this.onLayoutChange, this);\n }\n }\n else {\n this.off(events.layoutChange, this.onLayoutChange);\n this.off(events.selectionChanged, this.onLayoutChange);\n }\n if (this.viewElem) {\n if (isBind && this.allowMultiSelection) {\n EventHandler.add(this.viewElem, 'mousedown', this.onDragStart, this);\n }\n else {\n EventHandler.remove(this.viewElem, 'mousedown', this.onDragStart);\n }\n }\n };\n FileManager.prototype.wireEvents = function () {\n if (this.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n if (this.contextMenuSettings.visible) {\n this.element.addEventListener('scroll', this.onScrollHandler, true);\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n this.wireSelectOnDragEvent(false);\n EventHandler.remove(window, 'resize', this.resizeHandler);\n if (this.contextMenuSettings.visible) {\n this.element.removeEventListener('scroll', this.onScrollHandler, true);\n }\n this.keyboardModule.destroy();\n };\n FileManager.prototype.onDragStart = function (event) {\n if (this.viewElem) {\n if (this.allowDragAndDrop) {\n var targetElement = closest(event.target, this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-fe-text');\n if (targetElement) {\n return;\n }\n }\n event.preventDefault();\n this.dragX = event.pageX;\n this.dragY = event.pageY;\n if (!this.dragSelectElement) {\n this.dragSelectElement = createElement('div', {\n id: this.element.id + '_drag',\n className: 'e-filemanager e-drag-select',\n styles: 'left: ' + this.dragX + 'px;top: ' + this.dragY + 'px;'\n });\n document.body.append(this.dragSelectElement);\n }\n EventHandler.add(document, 'mouseup', this.onDragStop, this);\n EventHandler.add(this.viewElem, 'mousemove', this.onDrag, this);\n EventHandler.add(this.dragSelectElement, 'mousemove', this.onDrag, this);\n }\n };\n FileManager.prototype.onDrag = function (event) {\n event.stopPropagation();\n if (this.dragSelectElement) {\n var diffX = event.pageX - this.dragX;\n var diffY = event.pageY - this.dragY;\n setStyleAttribute(this.dragSelectElement, {\n 'left': diffX < 0 ? this.dragX + diffX + 'px' : this.dragX + 'px', 'top': diffY < 0 ? this.dragY + diffY + 'px' : this.dragY + 'px',\n 'height': Math.abs(diffY) + 'px', 'width': Math.abs(diffX) + 'px'\n });\n this.selectItems();\n }\n else {\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n };\n FileManager.prototype.onDragStop = function () {\n if (this.viewElem) {\n EventHandler.remove(document, 'mouseup', this.onDragStop);\n EventHandler.remove(this.viewElem, 'mousemove', this.onDrag);\n }\n if (this.dragSelectElement) {\n EventHandler.remove(this.dragSelectElement, 'mousemove', this.onDrag);\n if (this.dragSelectElement.clientHeight > 0 && this.dragSelectElement.clientWidth > 0) {\n this.setProperties({ selectedItems: this.dragSelectedItems });\n }\n this.dragSelectedItems = [];\n detach(this.dragSelectElement);\n this.dragSelectElement = null;\n }\n };\n FileManager.prototype.selectItems = function () {\n var dragRect = this.dragSelectElement.getBoundingClientRect();\n if (dragRect.height > 0 && dragRect.width > 0) {\n this.dragSelectedItems = [];\n removeClass(selectAll('.e-active', this.viewElem), ['e-active', 'e-focus']);\n removeClass(selectAll('.e-check', this.viewElem), ['e-check']);\n }\n var allItems = selectAll(this.viewElem.classList.contains('e-large-icons') ? '.e-list-item' : '.e-row', this.viewElem);\n for (var _i = 0, allItems_1 = allItems; _i < allItems_1.length; _i++) {\n var item = allItems_1[_i];\n var itemRect = item.getBoundingClientRect();\n if (!(dragRect.right < itemRect.left || dragRect.left > itemRect.right\n || dragRect.bottom < itemRect.top || dragRect.top > itemRect.bottom)\n && (dragRect.height > 0 && dragRect.width > 0)) {\n if (this.viewElem.classList.contains('e-large-icons')) {\n item.classList.add('e-active');\n this.dragSelectedItems.push(item.getAttribute('title'));\n }\n else {\n addClass(selectAll('.e-rowcell', item), ['e-active']);\n this.dragSelectedItems.push(item.querySelector('.e-drag-text').textContent);\n }\n if (this.showItemCheckBoxes) {\n if (item.querySelector('.e-frame')) {\n item.querySelector('.e-frame').classList.add('e-check');\n }\n }\n }\n }\n };\n FileManager.prototype.onLayoutChange = function () {\n if (this.enableRangeSelection) {\n this.unWireEvents();\n this.wireEvents();\n }\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(events.clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? events.initialEnd : events.finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var height;\n var requiresRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showItemCheckBoxes':\n this.showItemCheckBoxes = newProp.showItemCheckBoxes;\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableVirtualization':\n this.enableVirtualization = newProp.enableVirtualization;\n requiresRefresh = true;\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CLS.CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CLS.CHECK_SELECT);\n }\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRangeSelection':\n this.wireSelectOnDragEvent(false);\n if (newProp.enableRangeSelection) {\n this.wireSelectOnDragEvent(true);\n }\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n requiresRefresh = true;\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n requiresRefresh = true;\n break;\n case 'height':\n height = !isNOU(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setAttr(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNOU(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(events.modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.oldPath = oldProp.path;\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(events.modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.adjustHeight();\n this.notify(events.modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(events.modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(events.modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setAttr(this.element, { 'width': !isNOU(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(events.modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(events.sortByChange, {});\n break;\n case 'sortBy':\n if (this.view === 'Details') {\n var columns = this.detailsViewSettings.columns;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.sortBy; }) !== -1;\n if (!isValidSortField) {\n return;\n }\n refresh(this);\n this.notify(events.sortByChange, {});\n this.notify(events.sortColumn, {});\n }\n else {\n refresh(this);\n this.notify(events.sortByChange, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n case 'fileSystemData':\n this.fileSystemData = newProp.fileSystemData;\n requiresRefresh = true;\n break;\n case 'navigationPaneTemplate':\n this.navigationPaneTemplate = newProp.navigationPaneTemplate;\n requiresRefresh = true;\n break;\n case 'largeIconsTemplate':\n this.largeIconsTemplate = newProp.largeIconsTemplate;\n requiresRefresh = true;\n break;\n }\n }\n if (requiresRefresh) {\n this.refresh();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(events.destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [CLS.RTL, CLS.MOBILE, CLS.CHECK_SELECT]);\n this.element.innerHTML = '';\n this.breadCrumbBarNavigation = null;\n this.activeElements = null;\n this.virtualDragElement = null;\n this.visitedItem = null;\n _super.prototype.destroy.call(this);\n this.virtualizationModule = null;\n this.navigationpaneModule = null;\n this.toolbarModule = null;\n this.contextmenuModule = null;\n this.largeiconsviewModule = null;\n this.detailsviewModule = null;\n this.breadcrumbbarModule = null;\n this.viewElem = null;\n this.dragSelectElement = null;\n this.dragSelectedItems = null;\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(events.methodCall, { action: 'createFolder' });\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], events.permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(events.methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(events.methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNOU(items) && this.toolbarModule) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Enables the specified menu items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.enableItems(items, true, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNOU(items) && !isNOU(this.contextmenuModule) && !isNOU(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(events.selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, events.filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(events.updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(events.methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(events.layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(events.methodCall, { action: 'selectAll' });\n };\n /**\n * Specifies the method that must be invoked to traverse the path backwards in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.traverseBackward = function () {\n if (this.pathNames.length > 1 && this.breadcrumbbarModule.searchObj.element.value === '' && !this.isFiltered) {\n this.pathId.pop();\n this.pathNames.pop();\n var newPath = this.pathNames.slice(1).join('/');\n newPath = newPath === '' ? '/' : '/' + newPath + '/';\n this.setProperties({ path: newPath }, true);\n read(this, events.pathChanged, this.path);\n var treeNodeId = this.pathId[this.pathId.length - 1];\n this.notify(events.updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(events.methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(events.methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the method which must be invoked to programmatically close the dialog popup in the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.closeDialog = function () {\n closePopup(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, CLS.RTL);\n }\n else {\n this.addCssClass(CLS.RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate([\n Property([])\n ], FileManager.prototype, \"fileSystemData\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"navigationPaneTemplate\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"largeIconsTemplate\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showItemCheckBoxes\", void 0);\n __decorate([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate([\n Property('name')\n ], FileManager.prototype, \"sortBy\", void 0);\n __decorate([\n Property(null)\n ], FileManager.prototype, \"sortComparer\", void 0);\n __decorate([\n Property(false)\n ], FileManager.prototype, \"enableRangeSelection\", void 0);\n __decorate([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate([\n Collection([], ToolbarItem)\n ], FileManager.prototype, \"toolbarItems\", void 0);\n __decorate([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeFolderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"folderCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeDelete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"delete\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeRename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"rename\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"beforeMove\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"move\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"search\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"menuClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\nexport { FileManager };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Toolbar as BaseToolbar } from '@syncfusion/ej2-navigations';\nimport { select, isNullOrUndefined as isNOU, closest, selectAll } from '@syncfusion/ej2-base';\nimport { createDialog } from '../pop-up/dialog';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { refresh, getPathObject, getLocaleText, getCssClass, sortbyClickHandler } from '../common/utility';\nimport { createDeniedDialog, updateLayout } from '../common/utility';\nimport { GetDetails } from '../common/operations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { cutFiles, copyFiles, pasteHandler, hasEditAccess } from '../common/index';\nimport { doDownload, createNewFolder, uploadItem } from '../common/index';\n/**\n * Toolbar module\n */\nvar Toolbar = /** @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new BaseToolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + CLS.TOOLBAR_ID);\n });\n };\n Toolbar.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n if (this.parent.toolbarItems.length > 0) {\n currItems = this.parent.toolbarItems.map(function (item) { return item.name; });\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar.prototype.onClicked = function (args) {\n var _this = this;\n if (isNOU(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(events.selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + CLS.TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], events.permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(events.detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], events.permissionEdit);\n }\n else {\n _this.parent.notify(events.renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(events.selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(events.clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar.prototype.toolbarCreateHandler = function () {\n var _this = this;\n if (!isNOU(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, CLS.ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: CLS.ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNOU(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan_1 = '<span class=\"' + CLS.ICON_GRID + ' ' + CLS.MENU_ICON + '\"></span>';\n var largeIconSpan_1 = '<span class=\"' + CLS.ICON_LARGE + ' ' + CLS.MENU_ICON + '\"></span>';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : CLS.TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n content: '<span class=\"e-tbar-btn-text\">' + getLocaleText(this.parent, 'View') + '</span>',\n beforeItemRender: function (args) {\n var tickIcon = args.item.iconCss;\n var viewText = args.item.text === getLocaleText(_this.parent, 'View-LargeIcons');\n var iconClass = tickIcon ? ' e-menu-icon ' + tickIcon : '';\n args.element.innerHTML = '<span class=\"' + iconClass + '\"></span>' + (viewText ? largeIconSpan_1 : gridSpan_1) + args.item.text;\n var span = args.element.firstChild;\n if (span && span.className === '') {\n args.element.removeChild(span);\n }\n }\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n if (this.parent.portals && this.toolbarObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.toolbarObj.portals);\n this.parent['renderReactTemplates']();\n }\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? CLS.TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? CLS.TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? CLS.TB_OPTION_DOT : '';\n }\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar.prototype.toolbarItemData = function (data) {\n var _this = this;\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var propItem = void 0;\n if (this.parent.toolbarItems.length > 0) {\n propItem = this.getItemModel(this.parent.toolbarItems[parseInt(i.toString(), 10)]);\n }\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy': {\n var spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + itemText + '</span>';\n if (propItem && propItem.text) {\n spanElement = '<span class=\"e-tbar-btn-text e-tbar-ddb-text\">' + propItem.text + '</span>';\n }\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\">' + spanElement + '</button>'\n };\n break;\n }\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: CLS.ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View': {\n var viewText = void 0;\n if (propItem && propItem.text) {\n viewText = propItem.text;\n }\n else {\n viewText = getLocaleText(this.parent, 'View');\n }\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: '<button id=\"' + itemId + '\" class=\"e-tbar-btn e-tbtn-txt\" tabindex=\"-1\" aria-label=' +\n viewText + '></button>'\n };\n break;\n }\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: CLS.ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, template: '' };\n break;\n }\n if (this.parent.toolbarItems.length > 0 && propItem) {\n var mergedItems = Object.assign({}, item, propItem);\n items.push(mergedItems);\n }\n else {\n items.push(item);\n }\n }\n for (var _i = 0, _a = items; _i < _a.length; _i++) {\n var item = _a[_i];\n if (typeof item === 'object' && item !== null && typeof item.template === 'string') {\n var template = item.template;\n item.template = template.replace(/>((?:Upload|SortBy|View|Refresh|NewFolder|Cut|Copy|Paste|Delete|Rename|Download|SelectAll|Details))</g, function (_match, key) { return '>' + getLocaleText(_this.parent, key) + '<'; });\n }\n }\n return items;\n };\n Toolbar.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n Toolbar.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.showPaste, this.showPaste, this);\n this.parent.on(events.hidePaste, this.hidePaste, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.sortByChange, this.updateSortByButton, this);\n };\n Toolbar.prototype.reRenderToolbar = function (e) {\n var _this = this;\n var itemsToProcess = [];\n if (this.parent.toolbarItems.length > 0) {\n itemsToProcess = this.parent.toolbarItems.map(function (item) {\n return item.name;\n });\n }\n else if (e.newProp.toolbarSettings.items !== undefined) {\n itemsToProcess = e.newProp.toolbarSettings.items.map(function (item) {\n return item.trim();\n });\n }\n if (itemsToProcess.length > 0) {\n this.items = this.toolbarItemData(this.getItems(itemsToProcess));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? CLS.ICON_GRID : CLS.ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? CLS.TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? CLS.TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar.prototype.removeEventListener = function () {\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.showPaste, this.showPaste);\n this.parent.off(events.hidePaste, this.hidePaste);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, CLS.ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + CLS.ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n case 'toolbarItems':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { EventHandler, isNullOrUndefined, detach, formatUnit } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createElement, selectAll } from '@syncfusion/ej2-base';\nimport * as CLS from '../base/classes';\nvar Virtualization = /** @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n if (this.itemList.length !== 0 && this.largeIconInstance.element.querySelector('.' + CLS.EMPTY)) {\n this.largeIconInstance.element.removeChild(this.largeIconInstance.element.querySelector('.' + CLS.EMPTY));\n }\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n };\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n *\n * @returns {void}\n */\n Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add('e-virtual-top');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add('e-virtual-bottom');\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n *\n * @param {number} dataSourceLength The length of the data source.\n * @returns {number} The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount =\n Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) /\n (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount *\n (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength || itemCount === 0) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n *\n * @param {boolean} destroy - Set `true` to unwire the scroll event.\n * @returns {void}\n */\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n *\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, this.largeIconInstance.element));\n this.itemCount = this.itemCount !== this.largeIconInstance.itemList.length ?\n this.largeIconInstance.itemList.length : this.itemCount;\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n };\n /**\n * Calculates the current scroll position of the list element.\n *\n * @param {number} startingHeight The starting height from which to calculate the scroll position.\n * @returns {number} The current scroll position.\n * @private\n */\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n *\n * @param {number} listDiff The number of rows to update.\n * @param {boolean} isScrollingDown If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n *\n * @param {boolean} isScrollingDown - If set to true, the scroll direction is downward.\n * @returns {void}\n * @private\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + CLS.LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n *\n * @returns {void}\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\nexport { Virtualization };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { TreeView as BaseTreeView } from '@syncfusion/ej2-navigations';\nimport { isNullOrUndefined as isNOU, select, setValue, getValue, Draggable } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, closest } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { read, Download, GetDetails, Delete, isFileSystemData } from '../common/operations';\nimport { createDialog } from '../pop-up/dialog';\nimport { updatePath, getPath, getDirectories } from '../common/utility';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getDirectoryPath, getModule, getPathId } from '../common/index';\nimport { copyFiles, cutFiles, removeActive, pasteHandler, getParentPath, readDropPath } from '../common/index';\nimport { hasEditAccess, createDeniedDialog, hasDownloadAccess, getAccessClass } from '../common/index';\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = [];\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.isSameNodeClicked = false;\n this.isNodeExpandCalled = false;\n this.renameParent = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNOU(this.treeObj)) {\n return;\n }\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new BaseTreeView({\n fields: __assign({ dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name', hasChildren: 'hasChild' }, (isNOU(this.parent.navigationPaneTemplate) && { iconCss: '_fm_icon' }), { htmlAttributes: '_fm_htmlAttr', tooltip: 'name' }),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this),\n nodeTemplate: this.parent.navigationPaneTemplate\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + CLS.TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop && isNOU(this.dragObj)) {\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + CLS.FULLROW + ',.' + CLS.TEXT_CONTENT,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(CLS.FULLROW) && !dragTarget.classList.contains(CLS.TEXT_CONTENT)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId, this.parent);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n if (this.parent && this.parent.portals && this.treeObj && this.treeObj.portals) {\n for (var i = 0; i < this.treeObj.portals.length; i++) {\n if (this.parent.portals.indexOf(this.treeObj.portals[i]) === -1) {\n this.parent.portals.push(this.treeObj.portals[i]);\n }\n }\n if (this.parent.isReact) {\n this.parent.renderReactTemplates();\n }\n }\n };\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n var directories = getDirectories(files);\n var targetDirectory = this.getTreeData(target);\n if (directories.length > 0 && targetDirectory.length > 0 &&\n (directories[0].filterPath == null ||\n isNOU(targetDirectory[0])\n && targetDirectory[0].filterPath == null\n || directories[0].filterPath !==\n targetDirectory[0].filterPath)) {\n var length_1 = 0;\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line camelcase\n folders[parseInt(length_1.toString(), 10)]._fm_icon = 'e-fe-folder';\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNOU(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNOU(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n var element = select('[data-uid=\"' + target + '\"]', this.treeObj.element);\n var childElements = select('ul', element);\n if (isNOU(childElements)) {\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick &&\n !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked || this.isPathDragged) {\n this.isSameNodeClicked = false;\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.isPathDragged = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.setProperties({ selectedNodes: [node.getAttribute('data-uid')] });\n }\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node, this.parent);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n if (!this.isRightClick && this.isSameNodeClicked) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node, this.parent);\n this.parent.visitedItem = args.node;\n }\n if (args.node.querySelector('.' + CLS.ICONS) && args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? events.pasteEnd : events.pathChanged, this.parent.path);\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = false;\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + CLS.LIST_ITEM) === null) {\n this.isNodeExpandCalled = true;\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n var id = args.node.getAttribute('data-id');\n var isId = isNOU(id) ? false : true;\n var newText = isNOU(id) ? nodeData[0].name : id;\n var path = getPath(args.node, newText, isId, this.parent);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.pathId.push(getValue('id', args.nodeData));\n read(this.parent, events.nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n this.isNodeExpandCalled = false;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.setProperties({ selectedNodes: [args.node.getAttribute('data-uid')] });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(events.modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNOU(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNOU(sNode)) ? select('.' + CLS.LIST_PARENT, sNode) : null;\n if (isNOU(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], true);\n }\n this.expandNodeTarget = '';\n }\n if (isNOU(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + CLS.LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.setProperties({ selectedNodes: [sleId] });\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + CLS.ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.addChild(args.files, id, false);\n this.treeObj.setProperties({ selectedNodes: [this.parent.pathId[this.parent.pathId.length - 1]] });\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + CLS.LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = this.previousSelected.length > 0 && this.treeObj.getTreeData(this.previousSelected[0]).length !== 0\n ? this.previousSelected[0] : getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n this.updateItemData();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n var data = this.treeObj.getTreeData();\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, events.renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, events.finalizeEnd, this.parent.path);\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.setProperties({ selectedNodes: [e.selectedNode] });\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n if (isFileSystemData(this.parent)) {\n this.moveNames = [];\n var obj = this.parent.dragData;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n }\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (isFileSystemData(this.parent) && (this.parent.path === this.parent.dropPath || this.parent.targetModule === 'navigationpane')) {\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n if (!obj || !Array.isArray(obj)) {\n return;\n }\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.downloadInit, this.onDownLoadInit, this);\n this.parent.on(events.initialEnd, this.onInitialEnd, this);\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutEnd, this.onCutEnd, this);\n this.parent.on(events.pasteInit, this.onpasteInit, this);\n this.parent.on(events.nodeExpand, this.onNodeExpanded, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.openEnd, this.onOpenEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onRenameEnd, this);\n this.parent.on(events.renameEndParent, this.onRenameEndParent, this);\n this.parent.on(events.clearPathInit, this.onClearPathInit, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.dragEnd, this.onDragEnd, this);\n this.parent.on(events.dragging, this.onDragging, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(events.initialEnd, this.onInitialEnd);\n this.parent.off(events.downloadInit, this.onDownLoadInit);\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutEnd, this.onCutEnd);\n this.parent.off(events.pasteInit, this.onpasteInit);\n this.parent.off(events.updateTreeSelection, this.onSelectionChanged);\n this.parent.off(events.nodeExpand, this.onNodeExpanded);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.openEnd, this.onOpenEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onRenameEnd);\n this.parent.off(events.renameEndParent, this.onRenameEndParent);\n this.parent.off(events.clearPathInit, this.onClearPathInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.dragEnd, this.onDragEnd);\n this.parent.off(events.dragging, this.onDragging);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n NavigationPane.prototype.getTreeData = function (args) {\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNOU(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var node = select('[data-uid=\"' + this.parent.pathId[this.parent.pathId.length - 1] + '\"]', this.treeObj.element);\n updatePath(node, this.parent.itemData[0], this.parent);\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\nexport { NavigationPane };\n","import { Grid, Resize, ContextMenu, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\nimport { select, KeyboardEvents, EventHandler, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, Touch, setValue, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Internationalization, closest, Draggable, initializeCSPTemplate, extend, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as CLS from '../base/classes';\nimport { createDialog, createImageDialog } from '../pop-up/dialog';\nimport { removeBlur, openAction, getImageUrl, fileType, getSortedData, getLocaleText, updateLayout } from '../common/utility';\nimport { createEmptyElement } from '../common/utility';\nimport { read, Download, GetDetails, Delete } from '../common/operations';\nimport { cutFiles, addBlur, openSearchFolder, copyFiles, removeActive, pasteHandler, getPathObject, getName } from '../common/index';\nimport { hasReadAccess, hasEditAccess, hasDownloadAccess, doRename, getAccessClass, createDeniedDialog, rename } from '../common/index';\nimport { createVirtualDragElement, dragStopHandler, dragStartHandler, draggingHandler, getModule, getFullPath } from '../common/index';\nimport { getDirectoryPath, updateRenamingData, getItemName, doDeleteFiles, doDownloadFiles } from '../common/index';\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * DetailsView module\n */\nvar DetailsView = /** @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.isMultiSelect = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n Grid.Inject(Resize, ContextMenu, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + CLS.GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n back: 'backspace'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n var _this = this;\n if (this.parent.enablePersistence) {\n var gridPersistenceValue = window.localStorage.getItem('grid' + this.parent.element.id + '_grid');\n if (!isNOU(gridPersistenceValue)) {\n var model = JSON.parse(gridPersistenceValue);\n if (!isNOU(model) && Object.keys(model).length > 0 && 'sortSettings' in model) {\n delete model.sortSettings;\n window.localStorage.setItem('grid' + this.parent.element.id + '_grid', JSON.stringify(model));\n }\n }\n }\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n var isValidSortField = !isNullOrUndefined(columns) &&\n columns.findIndex(function (col) { return col.field === _this.parent.sortBy; }) !== -1;\n if (this.parent.isMobile || !isValidSortField) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick'\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: function (args) { args.cancel = true; },\n load: function () {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + CLS.GRID_ID);\n if (this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization && this.parent.enablePersistence) {\n this.isLoaded = true;\n }\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent['portals'] = args;\n if (this.parent.portals && this.parent.toolbarModule && this.parent.toolbarModule.toolbarObj &&\n this.parent.toolbarModule.toolbarObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.toolbarModule.toolbarObj.portals);\n }\n if (this.parent.portals && this.parent.navigationpaneModule &&\n this.parent.navigationpaneModule.treeObj && this.parent.navigationpaneModule.treeObj.portals) {\n this.parent['portals'] = this.parent['portals'].concat(this.parent.navigationpaneModule.treeObj.portals);\n }\n this.parent.notify('renderReactTemplate', this.parent['portals']);\n this.parent['renderReactTemplates']();\n };\n /**\n * Gets the grid height.\n *\n * @returns {number} - The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNOU(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n var enableHtmlSanitizer = this.parent.enableHtmlSanitizer;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return \"<div class=\\\"e-fe-text\\\">\" + name + \"</div><div class=\\\"e-fe-date\\\">\" + data._fm_modified + \"</div><span class=\\\"e-fe-size\\\">\" + data.size + \"</span>\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\n this.adjustWidth(columns, 'name');\n var _loop_1 = function (i, len) {\n columns[i].headerText = getLocaleText(this_1.parent, columns[i].headerText);\n if (columns[i].field === 'name' && !isNOU(columns[i].template) && !(typeof columns[i].template === 'function')) {\n var template_1 = columns[i].template;\n columns[i].template = initializeCSPTemplate(function (data) {\n var name = enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(data.name) : data.name;\n return template_1.replace(/\\${name}/g, name);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = columns.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '70' : '56');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth,\n template: initializeCSPTemplate(function (data) {\n return \"<span class=\\\"e-fe-icon \" + data._fm_iconClass + \"\\\"></span>\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return '<span class=\\'e-fe-icon e-fe-folder\\'></span>';\n })\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n if (this.parent.enableRangeSelection) {\n var HiddenName = { field: 'name', visible: false, customAttributes: { class: 'e-drag-text' } };\n columns.push(HiddenName);\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CLS.CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + CLS.BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + CLS.GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var text = getValue('name', args.data);\n var textEle = args.row.querySelector('[title= \"' + text + '\"]');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n if (name_1.indexOf(type) !== -1) {\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(events.sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CLS.CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n var _this = this;\n showSpinner(this.parent.element);\n var nameColumn = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === _this.parent.sortBy; });\n if (nameColumn && !('sortComparer' in nameColumn) || this.parent.sortOrder === 'None') {\n var items = getSortedData(this.parent, (this.parent.enableVirtualization)\n ? args.result\n : this.gridObj.dataSource);\n args.result = items;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) || this.isLoaded) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true && (!isNullOrUndefined(this.gridObj.getDataRows()) && this.gridObj.getDataRows().length > 0)) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem && this.parent.selectedItems.length === 0) {\n this.gridObj.clearSelection();\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n if (this.parent.sortOrder === 'None' && !isNOU(this.gridObj.element)) {\n var sortIconElement = this.gridObj.element.querySelector('.e-ascending, .e-descending');\n if (sortIconElement && sortIconElement.classList) {\n sortIconElement.classList.remove('e-icon-ascending', 'e-ascending', 'e-icon-descending', 'e-descending');\n }\n }\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && !this.parent.hasId && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n DetailsView.prototype.addSelection = function (data) {\n var items = this.gridObj.getCurrentViewRecords();\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNOU(this.gridObj)) {\n this.gridObj.clearSelection();\n this.interaction = true;\n }\n break;\n case 'showFileExtension':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, events.pathChanged, this.parent.path);\n break;\n case 'showItemCheckBoxes':\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n var pathField = this.parent.detailsViewSettings.columns.find(function (column) { return column.field === 'filterPath'; });\n if ((this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) ||\n (!isNullOrUndefined(pathField) && !isNullOrUndefined(pathField.hideAtMedia) && pathField.hideAtMedia !== '')) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\n this.wireClickEvent(true);\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNOU(this.element.querySelector('.' + CLS.GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + CLS.EMPTY)) {\n if (this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + CLS.GRID_VIEW).querySelector('.' + CLS.EMPTY);\n this.element.querySelector('.' + CLS.GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + CLS.EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, events.permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === CLS.ICON_IMAGE) {\n var imageData = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imageData);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNOU(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + CLS.IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(events.hideLayout, {});\n this.gridObj.element.classList.remove(CLS.DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n if (this.gridObj == null) {\n return;\n }\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n var filterPathInSettings = this.parent.detailsViewSettings.columns.some(function (col) { return col.field === 'filterPath'; });\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath') && !filterPathInSettings) {\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.gridObj.sortSettings.columns[0]) && this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(events.sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(CLS.DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], CLS.HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], CLS.HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(events.finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.layoutChange, this.onLayoutChange, this);\n this.parent.on(events.pathChanged, this.onPathChanged, this);\n this.parent.on(events.createEnd, this.onCreateEnd, this);\n this.parent.on(events.dropInit, this.onDropInit, this);\n this.parent.on(events.detailsInit, this.onDetailsInit, this);\n this.parent.on(events.refreshEnd, this.onRefreshEnd, this);\n this.parent.on(events.search, this.onSearchFiles, this);\n this.parent.on(events.methodCall, this.onMethodCall, this);\n this.parent.on(events.actionFailure, this.onActionFailure, this);\n this.parent.on(events.modelChanged, this.onPropertyChanged, this);\n this.parent.on(events.deleteInit, this.onDeleteInit, this);\n this.parent.on(events.deleteEnd, this.onDeleteEnd, this);\n this.parent.on(events.selectedData, this.onSelectedData, this);\n this.parent.on(events.renameInit, this.onRenameInit, this);\n this.parent.on(events.renameEnd, this.onPathChanged, this);\n this.parent.on(events.openInit, this.onOpenInit, this);\n this.parent.on(events.sortColumn, this.onSortColumn, this);\n this.parent.on(events.openEnd, this.onPathChanged, this);\n this.parent.on(events.filterEnd, this.onPathChanged, this);\n this.parent.on(events.pasteInit, this.onPasteInit, this);\n this.parent.on(events.hideLayout, this.onHideLayout, this);\n this.parent.on(events.selectAllInit, this.onSelectAllInit, this);\n this.parent.on(events.clearAllInit, this.onClearAllInit, this);\n this.parent.on(events.pathColumn, this.onPathColumn, this);\n this.parent.on(events.selectionChanged, this.onSelectionChanged, this);\n this.parent.on(events.beforeRequest, this.onBeforeRequest, this);\n this.parent.on(events.afterRequest, this.onAfterRequest, this);\n this.parent.on(events.pasteEnd, this.onpasteEnd, this);\n this.parent.on(events.cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(events.menuItemData, this.onMenuItemData, this);\n this.parent.on(events.resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(events.splitterResize, this.onDetailsResize, this);\n this.parent.on(events.layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(events.dropPath, this.onDropPath, this);\n this.parent.on(events.updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(events.finalizeEnd, this.onFinalizeEnd);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.layoutChange, this.onLayoutChange);\n this.parent.off(events.pathChanged, this.onPathChanged);\n this.parent.off(events.pasteInit, this.onPasteInit);\n this.parent.off(events.createEnd, this.onCreateEnd);\n this.parent.off(events.refreshEnd, this.onRefreshEnd);\n this.parent.off(events.search, this.onSearchFiles);\n this.parent.off(events.methodCall, this.onMethodCall);\n this.parent.off(events.actionFailure, this.onActionFailure);\n this.parent.off(events.modelChanged, this.onPropertyChanged);\n this.parent.off(events.renameInit, this.onRenameInit);\n this.parent.off(events.renameEnd, this.onPathChanged);\n this.parent.off(events.filterEnd, this.onPathChanged);\n this.parent.off(events.openInit, this.onOpenInit);\n this.parent.off(events.sortColumn, this.onSortColumn);\n this.parent.off(events.openEnd, this.onPathChanged);\n this.parent.off(events.hideLayout, this.onHideLayout);\n this.parent.off(events.selectAllInit, this.onSelectAllInit);\n this.parent.off(events.clearAllInit, this.onClearAllInit);\n this.parent.off(events.deleteInit, this.onDeleteInit);\n this.parent.off(events.deleteEnd, this.onDeleteEnd);\n this.parent.off(events.pathColumn, this.onPathColumn);\n this.parent.off(events.selectionChanged, this.onSelectionChanged);\n this.parent.off(events.beforeRequest, this.onBeforeRequest);\n this.parent.off(events.afterRequest, this.onAfterRequest);\n this.parent.off(events.pasteEnd, this.onpasteEnd);\n this.parent.off(events.cutCopyInit, this.oncutCopyInit);\n this.parent.off(events.dropInit, this.onDropInit);\n this.parent.off(events.selectedData, this.onSelectedData);\n this.parent.off(events.detailsInit, this.onDetailsInit);\n this.parent.off(events.menuItemData, this.onMenuItemData);\n this.parent.off(events.resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(events.splitterResize, this.onDetailsResize);\n this.parent.off(events.layoutRefresh, this.onLayoutRefresh);\n this.parent.off(events.dropPath, this.onDropPath);\n this.parent.off(events.updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling) {\n name = this.parent.hasId ? this.gridObj.getRowInfo(dragLi).rowData.id : dragLi.getElementsByClassName('e-rowcell e-templatecell')[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.querySelector('colgroup');\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].style.width = '120px';\n gridContentColGroup.children[i].style.width = '120px';\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].style.width = 'auto';\n gridContentColGroup.children[i].style.width = 'auto';\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].style.width = '120px';\n gridContentColGroup.children[i].style.width = '120px';\n }\n else {\n gridHeaderColGroup.children[i].style.width = '180px';\n gridContentColGroup.children[i].style.width = '180px';\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].style.width = 'auto';\n gridContentColGroup.children[i].style.width = 'auto';\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNOU(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (this.gridObj) {\n if (this.parent.allowDragAndDrop && isNullOrUndefined(this.dragObj)) {\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + CLS.ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n this.dragObj = null;\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n var info = null;\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath ||\n this.parent.path === getDirectoryPath(this.parent, args) || this.parent.hasId) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + CLS.FOLDER, item);\n this.parent.isFile = isNOU(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n if (!this.isMultiSelect) {\n this.isMultiSelect = true;\n if ((args.isShiftPressed || args.isCtrlPressed) && !this.parent.allowMultiSelection && (args.target && args.target.parentElement && !args.target.parentElement.classList.contains('e-checkbox-wrapper'))) {\n args.cancel = true;\n var rowIndex = (args && args.rowIndexes)\n ? args.rowIndexes[args.rowIndexes.length - 1]\n : args.rowIndex;\n this.gridObj.selectRow(rowIndex);\n }\n this.isMultiSelect = false;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNOU(item) && !isNOU(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n if (!isNOU(lastItem)) {\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNOU(this.gridObj) && !isNOU(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNOU(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNOU(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNOU(args.data)) {\n var item = this.gridObj.getRowByIndex(args.rowIndex);\n if (!isNOU(item)) {\n item.removeAttribute('tabindex');\n }\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n if (!isNOU(lastItem)) {\n lastItem.querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n }\n this.parent.notify(events.selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n _this.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (_this.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (_this.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', _this.parent.allowMultiSelection, _this.gridObj.selectionModule);\n addClass([_this.parent.element], CLS.MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + CLS.ROW);\n var index = _this.gridObj.getRows().indexOf(row);\n _this.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], CLS.MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(events.selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.onBlur = function (e) {\n if ((e.relatedTarget !== null && closest(e.relatedTarget, '.e-grid') !== e.relatedTarget)) {\n return;\n }\n if (!isNOU(this.gridObj.element)) {\n var thElements = this.gridObj.element.querySelectorAll('th');\n for (var i = 0; i < thElements.length; i++) {\n if (thElements[i].classList.contains('e-focus')) {\n this.addFocus(null);\n }\n }\n }\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNOU(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('aria-rowindex'), 10) - 1 : null;\n };\n /* istanbul ignore next */\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n this.parent.notify(events.detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1 && this.gridObj.allowSorting === true) {\n if (!e.target.classList.contains('e-fe-grid-icon')) {\n var direction = !e.target.getElementsByClassName('e-ascending').length ? 'Ascending' : 'Descending';\n var currentField = this.gridObj.getColumnByUid(e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid')).field;\n this.gridObj.sortColumn(currentField, direction);\n if (!isNOU(this.getFocusedItem().nextSibling)) {\n this.getFocusedItem().nextSibling.setAttribute('tabindex', '0');\n }\n }\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNOU(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else {\n this.addHeaderFocus(e);\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNOU(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNOU(gridItems[0])) {\n if (!isNOU(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n case 'back':\n this.parent.traverseBackward();\n break;\n }\n };\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], events.permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNOU(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNOU(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNOU(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNOU(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNOU(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNOU(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNOU(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNOU(indexValue) ? 0 : indexValue, isNOU(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNOU(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNOU(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNOU(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [CLS.FOCUS, CLS.FOCUSED]);\n }\n if (!isNOU(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [CLS.FOCUS, CLS.FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function (e) {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus;\n if (!isNOU(e.target) && e.target.classList.contains('e-defaultcursor')) {\n this.addFocus(0);\n nameFocus = e.target.nextElementSibling;\n }\n else if (!isNOU(this.gridObj.element.querySelector('.e-focus')) && (this.gridObj.element.querySelector('.e-focus').tagName === 'TH')) {\n nameFocus = this.gridObj.element.querySelector('.e-focus').nextElementSibling;\n this.addFocus(0);\n }\n else {\n nameFocus = select('th.e-fe-grid-icon', this.element);\n }\n if (!isNOU(nameFocus)) {\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [CLS.FOCUS, CLS.FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [CLS.FOCUS, CLS.FOCUSED]);\n }\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + CLS.FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNOU(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n DetailsView.prototype.getRecords = function (nodes) {\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(ids)) {\n this.performDelete();\n return;\n }\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNOU(ids)) {\n this.doDownload();\n return;\n }\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNOU(id)) {\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNOU(id)) {\n this.performRename();\n return;\n }\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNOU(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], events.permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\nexport { DetailsView };\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","_super","__extends","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","AjaxSettings","ChildProperty","Property","apply","defaultToolbarItems","ToolbarSettings","ToolbarItem","SearchSettings","columnArray","field","headerText","minWidth","template","customAttributes","class","type","format","width","initializeCSPTemplate","data","size","DetailsViewSettings","fileItems","folderItems","layoutItems","ContextMenuSettings","NavigationPaneSettings","UploadSettings","Column","TOOLBAR_ID","LAYOUT_ID","NAVIGATION_ID","TREE_ID","GRID_ID","LARGEICON_ID","DIALOG_ID","IMG_DIALOG_ID","EXTN_DIALOG_ID","UPLOAD_DIALOG_ID","CONTEXT_MENU_ID","CONTENT_ID","BREADCRUMBBAR_ID","UPLOAD_ID","SEARCH_ID","ROOT","CONTROL","CHECK_SELECT","ROOT_POPUP","MOBILE","MOB_POPUP","MULTI_SELECT","FILTER","LAYOUT","NAVIGATION","LAYOUT_CONTENT","LARGE_ICONS","TB_ITEM","LIST_ITEM","LIST_TEXT","LIST_PARENT","TB_OPTION_TICK","TB_OPTION_DOT","BLUR","ACTIVE","HOVER","FOCUS","FOCUSED","CHECK","FRAME","CB_WRAP","ROW","EMPTY","EMPTY_CONTENT","EMPTY_INNER_CONTENT","CLONE","DROP_FOLDER","DROP_FILE","FOLDER","ICON_IMAGE","ICON_MUSIC","ICON_VIDEO","LARGE_ICON","LARGE_EMPTY_FOLDER","TEXT_CONTENT","GRID_HEADER","TREE_VIEW","MENU_ITEM","MENU_ICON","SUBMENU_ICON","GRID_VIEW","GRID_CONTENT","ICON_VIEW","ICON_OPEN","ICON_UPLOAD","ICON_CUT","ICON_COPY","ICON_PASTE","ICON_DELETE","ICON_RENAME","ICON_NEWFOLDER","ICON_DETAILS","ICON_SHORTBY","ICON_REFRESH","ICON_SELECTALL","ICON_DOWNLOAD","ICON_GRID","ICON_LARGE","ICON_FOLDER","ICON_FILE","ICON_BREADCRUMB","ICON_CLEAR","ICONS","ERROR_CONTENT","BREADCRUMBS","RTL","DISPLAY_NONE","FULLROW","SPLIT_BAR","HEADER_CHECK","OVERLAY","VALUE","modelChanged","initialEnd","finalizeEnd","createEnd","filterEnd","pathDrag","deleteInit","deleteEnd","refreshEnd","resizeEnd","splitterResize","pathChanged","destroy","beforeRequest","skipUpload","afterRequest","layoutRefresh","actionFailure","search","openInit","openEnd","selectionChanged","selectAllInit","clearAllInit","clearPathInit","layoutChange","sortByChange","nodeExpand","detailsInit","menuItemData","renameInit","renameEndParent","renameEnd","showPaste","hidePaste","selectedData","cutCopyInit","pasteInit","pasteEnd","cutEnd","hideLayout","updateTreeSelection","sortColumn","pathColumn","searchTextChange","downloadInit","dropInit","dragEnd","dropPath","dragging","updateSelectionData","methodCall","permissionRead","permissionEdit","permissionEditContents","permissionUpload","permissionDownload","updatePath","node","instance","text","getValue","id","getAttribute","newText","isNOU","setProperties","path","getPath","hasId","pathId","getPathId","pathNames","getPathNames","element","matched","getParents","ids","push","names","isId","parentText","el","parentNode","matches","CLS.LIST_ITEM","navigationpaneModule","treeObj","getTreeData","classList","contains","CLS.TREE_VIEW","generatePath","parent","newPath","parseInt","toString","feParent","removeActive","isCut","removeBlur","selectedNodes","actionRecords","enablePaste","notify","events.hidePaste","activeElement","action","isSearchCut","activeElements","events.cutCopyInit","blurEle","activeModule","targetPath","getParentPath","getModule","addBlur","events.showPaste","activeRecords","breadcrumbbarModule","searchObj","value","isFiltered","i_1","selectedItems","nodes","add","CLS.BLUR","hover","querySelectorAll","CLS.HOVER","remove","CLS.ROW","closest","CLS.LARGE_ICON","getAllChildItems","parentId","children","fileSystemData","filter","item","String","allChildren","slice","forEach","child","childId","concat","searchWordHandler","isLayoutChange","caseSensitive","searchWord","events.pathColumn","args","isFileSystemData","itemData","read","events.layoutChange","events.search","searchSettings","filterType","currData","filteredData","DataManager","executeLocal","Query","where","ignoreCase","searchValue","toLowerCase","responseData","error","Search","showHiddenItems","getPathObject","hiddenItems","isSortByClicked","files","oldView","detailsviewModule","gridObj","dataSource","largeiconsviewModule","allItems","updateLayout","view","layoutSelectedItems","getTargetModule","tartgetModule","CLS.ROOT","CLS.CONTROL","CLS.GRID_CONTENT","CLS.LARGE_ICONS","targetModule","refresh","hasReadAccess","events.refreshEnd","createDeniedDialog","events.permissionRead","openAction","events.openEnd","copyFiles","fileAction","cutFiles","fileType","file","filetype","indexOf","split","join","CLS.ICON_IMAGE","CLS.ICON_MUSIC","CLS.ICON_VIDEO","CLS.FOLDER","getImageUrl","baseUrl","fileName","fPath","eventArgs","imgUrl","trigger","eventArgs_1","fileDetails","imageUrl","useImageAsUrl","pathUrl","ajaxSettings","url","encodeURIComponent","imgId","replace","Date","getTime","contentType","responseType","JSON","stringify","onSuccess","onFailure","beforeSend","getFullPath","filePath","getName","name","getSortedData","items","query","sortOrder","isNullOrUndefined","sortBy","group","lists","getObject","feFiles","createEmptyElement","emptyEle","dragFile","layoutElement","select","CLS.LAYOUT_ID","addressBarHeight","CLS.BREADCRUMBBAR_ID","offsetHeight","top","eDiv","CLS.GRID_HEADER","querySelector","CLS.EMPTY","emptyDiv","createElement","className","emptyFolder","CLS.LARGE_EMPTY_FOLDER","CLS.EMPTY_CONTENT","CLS.EMPTY_INNER_CONTENT","CLS.GRID_VIEW","appendChild","innerHTML","getLocaleText","uploadObj","dropArea","style","marginTop","getDirectories","setNodeId","result","rootId","dirs","len","setValue","setDateObject","createdDate","modifiedDate","locale","localeObj","getConstant","getCssClass","css","cssClass","sortbyClickHandler","getSortField","isMobile","events.sortColumn","module","events.sortByChange","column","substring","lastIndexOf","detailsViewSettings","columns","setNextPath","currfolders","folders","originalPath","root","eventName","events.finalizeEnd","events.initialEnd","openSearchFolder","navData","isRoot","searchData","events.clearPathInit","selectedNode","pasteHandler","isDragDrop","folderPath","includes","getTargetPath","validateSubFolder","events.pasteInit","paste","createDialog","code","message","fileExists","dragPath","subFolder","name_1","dragData","srcData","dragNodes","tempTarget","dropHandler","dropData","oldPath","getDirectoryPath","cwd","doPasteUpdate","operation","events.dragEnd","events.cutEnd","duplicateItems","pasteNodes","count","droppedObjects","duplicateRecords","isPasteError","isDropEnd","isSearchDrag","isPathDrag","events.pasteEnd","readDropPath","expandedId","events.pathDrag","document","events.dropPath","getDuplicateData","records","createVirtualDragElement","getItemName","cloneIcon","cloneName","virtualEle","ele","CLS.CLONE","badge","virtualDragElement","dragStopHandler","dragArgs","cancel","treeExpandTimer","window","clearTimeout","removeDropTarget","CLS.CONTENT_ID","detach","events.dropInit","dragCount","dragStartHandler","dragObj","allowDragAndDrop","intDestroy","event","dragCancel","removeItemClass","CLS.DROP_FOLDER","CLS.DROP_FILE","scrollHandler","scrollParent","nodeClass","clientY","position","elementData","getBoundingClientRect","clientHeight","scrollBy","draggingHandler","canDrop","setTimeout","events.dragging","parentElement","y","firstElementChild","objectToString","str","keys","updateRenamingData","currentItemText","isFile","filterPath","doRename","hasEditAccess","events.permissionEdit","doDownload","hasDownloadAccess","events.permissionDownload","Download","doDeleteFiles","newIds","Delete","doDownloadFiles","permission","restriction","getAccessClass","hasContentAccess","hasUploadAccess","createNewFolder","details","events.permissionEditContents","uploadItem","eleId","CLS.UPLOAD_ID","click","events.permissionUpload","closePopup","dialogObj","hide","getAccessDetails","isPathPermision","accessMessage","copyOrMovePermission","undefined","createAjax","readSuccess","createFolder","itemName","createSuccess","filterDataVal","filterData","extend","filterSuccess","rename","itemNewName","newName","showFileExtension","renameSuccess","pasteOperation","renameItems","targetData","renameFiles","destinationPath","pasteSuccess","deleteSuccess","GetDetails","detailsSuccess","isFileExists","some","findIndexById","findIndex","filterById","filterByParent","createNewItem","isCopy","newItem","call","currentDate","assign","dateCreated","dateModified","hasChild","getUid","filterId","createErrorObject","triggerRenameOperation","renameEventArgs","fileData","oldName","updateChildrenFilterPath","triggerMoveOrCopyOperation","moveEventArgs","folderSubItems_1","itemPermission","pathPermission","file_1","existingFileCount","copyFolderItems","target_1","getTargetFiles","subItems","pathArray","currItem","targetItem","updateMovedItemChildren","childItems","childItem","triggerClientEvents","createEventArgs","folderName","parentFolder","newObject","data_1","deleteEventArgs","index","splice","obj","subItem","searchEventArgs","searchResults","searchText","fn","mode","dataType","beforeSendArgs","isMultipleFiles","itemNames","totalSize","events.beforeRequest","idValue","renamedItem","isFileOperation","map","getSize","reduce","accumulator","currentObject","location","multipleFiles","created","modified","performReadOperation","Ajax","result_1","triggerAjaxFailure","parse","send","hz","toFixed","events.afterRequest","rootName","rootAliasName","location_1","RegExp","match","events.searchTextChange","copiedItems","events.selectionChanged","pop","handleCatchError","visible","nextElementSibling","createdItem","events.createEnd","pathObject","pathLevel","renamePath","isArray","events.renameEndParent","renameText","previousSelected","events.pathChanged","events.renameEnd","moveorcopyEventArgs","fileLength","createExtDialog","events.deleteEnd","searchString","searchSuccess","downloadUrl","useFormPost","downloadArgs","form","attrs","method","download","input","forms","namedItem","submit","removeChild","contentDisposition_1","fileName_1","Fetch","onLoad","e","headers","get","extractedFilename","filenameMatch","blobUrl","URL","createObjectURL","link","href","body","status","triggerFetchSuccess","triggerFetchFailure","options","header","content","buttons","dialogName","open","triggerPopupOpen","close","triggerPopupClose","buttonModel","isPrimary","onSubmit","createInput","oninput","onValidate","onkeyup","getKeyCode","focus","setSelectionRange","bind","events.deleteInit","onReSubmit","inputEle","txt","intl","Internationalization","formattedString","formatDate","CLS.VALUE","strArr","val","substr","every","arr","toLocaleUpperCase","events.actionFailure","CLS.ERROR_CONTENT","Dialog","beforeOpen","keydownAction","beforeClose","triggerPopupBeforeClose","animationSettings","effect","showCloseIcon","closeOnEscape","allowDragging","isModal","popupTarget","CLS.MOB_POPUP","CLS.ROOT_POPUP","enableRtl","enableHtmlSanitizer","isStringTemplate","appendTo","CLS.DIALOG_ID","dataBind","show","replaceItems","extOptions","duplicateContent","extDialogObj","item_1","indexval","item_2","ind","retryFiles","isRetryOpened","dialogEle","container","checkContainer","checkbox","CheckBox","label","change","isApplySame","checked","retryDlgClose","retryDlgUpdate","events.skipUpload","beforeExtOpen","CLS.EXTN_DIALOG_ID","triggerPopupBeforeOpen","dlgModule","popupName","popupModule","eventargs","isInteracted","isKeepBoth","onKeepBothAll","retryArgs","retry","onReplaceAll","flag","placeholder","Input","properties","preventKeydown","selectAll","dlgName","btnElement","btnCount","_loop_1","onkeydown","keyCode","preventDefault","onSubmitValidate","oldExtension","newExtension","oIndex","renamedId","nIndex","test","addInvalid","textContent","which","charCode","createImageDialog","imageData","fetch_1","image","src","alt","viewerObj","height","enableResize","X","Y","updateImage","resizing","resizeStop","CLS.IMG_DIALOG_ID","imgWrap","cssObj","getComputedStyle","paddingWidth","parseFloat","paddingRight","paddingHeight","paddingBottom","offsetWidth","LargeIconsView","render","visitedItem","startItem","showSpinner","resetMultiSelect","setAttribute","listObj","unWireEvents","removeEventListener","events.hideLayout","iconsView","CLS.LARGEICON_ID","ul","activeEle","ariaAttributes","itemRole","listRole","itemText","groupItemRole","wrapperRole","showIcon","fields","iconCss","imageAttributes","htmlAttributes","itemCreated","onItemCreated","largeIconsTemplate","templateID","renderList","sortComparer","DataUtil","sort","comparer","CLS.DISPLAY_NONE","enableVirtualization","virtualizationModule","setUIVirtualization","listElements","ListBase","createListFromJson","itemList","renderReactTemplates","imageEventArgsMap","loadImages","preventImgDrag","createDragObj","emptyList","CLS.LIST_PARENT","isPasteOperation","selectItems","uploadOperation","CLS.ACTIVE","maxHeight","getItemCount","addEventListener","wireEvents","setUlElementHeight","wireScrollEvent","isRendered","hideSpinner","checkItem","_this","imgElement","imageDetails","imageKey","imageUrlCache","has","blob","set","response","x","z","ondragstart","Draggable","enableTailMode","distance","enableAutoScroll","dragTarget","helper","dragHelper","cursorAt","dragCursorPosition","dragArea","dragStop","drag","clone","dragStart","sender","dragLi","setFocus","getItemObject","onDropInit","cwdData","getModuleName","dropLi","info","removeAttribute","curData","textEle","CLS.LIST_TEXT","renderCheckbox","checkElement","showItemCheckBoxes","createCheckBox","insertBefore","childNodes","onLayoutChange","indexes","getIndexes","length_1","checkEle","checkLength","checkState","uniqueKey","icon","selected","showThumbnail","data-image-key","title","onFinalizeEnd","onCreateEnd","clearSelect","onSelectedData","updateSelectedData","onDeleteInit","onDeleteEnd","onRefreshEnd","onRenameInit","updateRenameData","onPathChanged","searchedItems","addSelection","onOpenInit","doOpenAction","onHideLayout","onSelectAllInit","lastItem","getFirstItem","getLastItem","doSelection","ctrlKey","shiftKey","isInteraction","onClearAllInit","clearSelection","onBeforeRequest","onAfterRequest","onSearch","onLayoutRefresh","onUpdateSelectionData","onPathColumn","isDestroyed","off","events.selectedData","events.openInit","events.modelChanged","onPropertyChanged","events.methodCall","onMethodCall","onActionFailure","events.renameInit","events.selectAllInit","events.clearAllInit","events.menuItemData","onMenuItemData","events.splitterResize","splitterResizeHandler","events.resizeEnd","resizeHandler","onpasteInit","onpasteEnd","oncutCopyInit","events.detailsInit","onDetailsInit","events.layoutRefresh","onDropPath","events.updateSelectionData","events.filterEnd","on","currentSelected","_i","_a","newProp","allowMultiSelection","wireClickEvent","keyboardModule","KeyboardEvents","keyAction","keyActionHandler","keyConfigs","keyboardDownModule","keydownActionHandler","EventHandler","onMouseOver","targetEle","toBind","clickObj","Touch","tap","eve","isDevice","tapCount","tapEvent","doTapAction","originalEvent","dblClickHandler","clickHandler","tapHold","multiSelect","addClass","CLS.MULTI_SELECT","updateType","isMac","metaKey","isMacRightClick","cList","isSelectAllCalled","CLS.CHECK","triggerSelection","CLS.FRAME","startIndex","endIndex","addActive","addFocus","triggerSelect","removeClass","details_1","fileOpenArgs","fItem","getFocusedItem","firstItem","scrollTo","scrollHeight","navigateItem","scrollTop","navigateDown","navigateRight","csEndKey","csHomeKey","csDownKey","csLeftKey","csRightKey","csUpKey","spaceKey","ctrlAKey","getVisitedItem","performDelete","performRename","traverseBackward","CLS.FOCUS","getActiveItem","isTowards","nItem","getNextItem","perRow","li","nextItem","marginValue","getPropertyValue","isVisible","liScrPos","getCurFocusedItem","liParent","dItem","lItem","rItem","uItem","getDataName","preItem","toCheck","CLS.CB_WRAP","eles","visitedData","j","byId","resultData","newData","deleteFiles","downloadFiles","openFile","renameFile","getItemsIndex","isFilter","filterName","name_2","Map","end","home","tab","moveDown","moveLeft","moveRight","moveUp","ctrlEnd","ctrlHome","ctrlDown","ctrlLeft","ctrlRight","ctrlUp","shiftEnd","shiftHome","shiftDown","shiftLeft","shiftRight","shiftUp","csEnd","csHome","csDown","csLeft","csRight","csUp","space","ctrlSpace","shiftSpace","csSpace","ctrlA","enter","altEnter","esc","del","ctrlX","ctrlC","ctrlV","f2","shiftdel","back","ctrlD","BreadCrumbBar","prop","allowSearchOnTyping","searchEventBind","onPathChange","paths","addressbarUL","addressbarLI","pathNamesLen","addressATag","CLS.ICONS","innerText","ulElement","breadCrumbBarNavigation","searchWrap","subMenuObj","updateBreadCrumbBar","addresBarUL","liElements","pRight","pLeft","breadCrumbBarWidth","liElementsWidth","liElementsWidths","clientWidth","searchContainer","CLS.SEARCH_ID","searchInput","autocomplete","aria-label","searchEle","span","onShowInput","TextBox","showClearButton","onFocus","blur","onBlur","searchChangeHandler","onKeyUp","searchWrapWidth","diff","liElement","utext","subMenuLi","subMenuSpan","DropDownButton","CLS.ICON_BREADCRUMB","iconPosition","beforeItemRender","addSubMenuAttributes","subMenuSelectOperations","addressPathClickHandler","anchor","allow","searchTimer","nodeName","currentPath","triggerFileOpen","treeNodeId","events.updateTreeSelection","CLS.FILTER","list","liElementId","addressBarLink","newpath","onUpdatePath","removeSearchValue","onRenameEnd","onResize","onPasteEnd","events.destroy","onSearchTextChange","liEle","addressPath","ContextMenu","downarrow","uparrow","contextMenu","Menu","onBeforeItemRender","onSelect","onBeforeOpen","onBeforeClose","CLS.CONTEXT_MENU_ID","iconSpan","getMenuId","CLS.ICON_LARGE","CLS.MENU_ICON","CLS.ICON_GRID","renderFileFolderIcons","CLS.ICON_FILE","directoryUpload","CLS.ICON_FOLDER","menuArgs","fileFolderIcon","isDirectory","isFocused","parentItem","menuType","menuCloseArgs","menuTarget","isMenuItemClicked","parentKey","itemKeys_1","_fm_id","uid","treeFolder","targetNodeElement","currentElement","activeNode","getElementsByClassName","CLS.FULLROW","targetElement","getTargetView","updateActiveModule","CLS.TOOLBAR_ID","setLayoutItem","CLS.MENU_ITEM","CLS.SUBMENU_ICON","CLS.TREE_ID","navUid","getRowObjectFromUID","selectRows","setFileItem","setFolderItem","disabledItems","itemsToRemove","pasteIndex","isSubMenu","pasteEle","getMenuItemData","menuModule","currentItems","menuOpenArgs","enableItems","CLS.GRID_ID","CLS.ICON_VIEW","getItemIndex","itemId","disableItem","enable","isUniqueId","validItem","checkValidItem","isTree","renameIndex","getItemData","contextMenuSettings","folder","trim","selectedTreeNode","indexToRemove","layout","nameEle","menuClickArgs","sItems","openFileOnContextMenuClick","events.downloadInit","uploadSettings","separator","CLS.ICON_OPEN","CLS.ICON_UPLOAD","CLS.TB_OPTION_TICK","CLS.ICON_CUT","CLS.ICON_COPY","CLS.ICON_PASTE","CLS.ICON_DELETE","CLS.ICON_RENAME","CLS.ICON_NEWFOLDER","CLS.ICON_DETAILS","CLS.ICON_SHORTBY","CLS.TB_OPTION_DOT","CLS.ICON_REFRESH","CLS.ICON_SELECTALL","CLS.ICON_DOWNLOAD","FileManager_1","defaultLocale","NewFolder","Upload","Rename","Cut","Copy","Paste","SortBy","Refresh","Item-Selection","Items-Selection","View","Details","SelectAll","Open","Tooltip-NewFolder","Tooltip-Upload","Tooltip-Delete","Tooltip-Rename","Tooltip-Download","Tooltip-Cut","Tooltip-Copy","Tooltip-Paste","Tooltip-SortBy","Tooltip-Refresh","Tooltip-Selection","Tooltip-View","Tooltip-Details","Tooltip-SelectAll","Name","Size","DateModified","DateCreated","Path","Modified","Created","Location","Type","Permission","Ascending","Descending","None","View-LargeIcons","View-Details","File","Folder","Button-Ok","Button-Cancel","Button-Yes","Button-No","Button-Create","Button-Save","Header-NewFolder","Content-NewFolder","Header-Rename","Content-Rename","Header-Rename-Confirmation","Content-Rename-Confirmation","Header-Delete","Content-Delete","Header-Folder-Delete","Content-Folder-Delete","Header-Multiple-Delete","Content-Multiple-Delete","Header-Duplicate","Content-Duplicate","Header-Upload","Error","Validation-Empty","Validation-Invalid","Validation-NewFolder-Exists","Validation-Rename-Exists","Folder-Empty","File-Upload","Search-Empty","Search-Key","Filter-Empty","Filter-Key","Sub-Folder-Error","Same-Folder-Error","Access-Denied","Access-Details","Header-Retry","Content-Retry","Button-Keep-Both","Button-Replace","Button-Skip","ApplyAll-Label","KB","Access-Message","FolderUpload-Access-Message","FileUpload-Access-Message","Network-Error","Server-Error","FileManager","Component","preRender","getUniqueID","ensurePath","setAttr","formatUnit","Browser","checkMobile","navigationPaneSettings","isBigger","createSpinner","addWrapper","altN","f5","ctrlShift1","ctrlShift2","ctrlU","L10n","getPersistData","addOnPersist","requiredModules","modules","member","toolbarSettings","initialize","slItems","fileView","navigator","platform","toUpperCase","setRtl","addEventListeners","adjustHeight","splitterObj","collapse","CLS.SPLIT_BAR","renderComplete","CLS.MOBILE","CLS.CHECK_SELECT","addCssClass","renderFileUpload","headerWrap","layoutWrap","CLS.LAYOUT","navigationWrap","CLS.NAVIGATION_ID","CLS.NAVIGATION","treeWrap","contentWrap","CLS.LAYOUT_CONTENT","gridWrap","CLS.BREADCRUMBS","largeiconWrap","role","overlay","CLS.OVERLAY","dialogWrap","paneSettings","min","max","maxWidth","Splitter","menuWrap","dialogImgWrap","extnDialogWrap","uploadDialogWrap","CLS.UPLOAD_DIALOG_ID","toolbar","toolBarHeight","splitterAdjust","bar","expand","oldOne","newOne","onContextMenu","userAgent","uploadEle","uploadDialogObj","onOpen","onClose","renderUploadBox","uploadUrl","Uploader","asyncSettings","saveUrl","removeUrl","chunkSize","retryCount","uploading","onUploading","chunkUploading","onChunkUploading","removing","onRemoving","canceling","onCancel","clearing","onClearing","onSelected","success","onUploadSuccess","failure","onUploadFailure","autoUpload","minFileSize","maxFileSize","allowedExtensions","sequentialUpload","fileListRendering","onFileListRender","updateUploader","isOpened","clearAll","customFormData","filename","uploadEventArgs","httpRequest","currentRequest","onFileUploadSuccess","getFilesData","filesData","uploadingCount","uploadedCount","allowOrDenyUpload","uploadDetails","hasFolder","f","hasFile","autoClose","onChunkUploadComplete","statusText","onInitialEnd","removeEventListeners","wireSelectOnDragEvent","isBind","viewElem","onDragStart","enableRangeSelection","onScrollHandler","dragX","pageX","dragY","pageY","dragSelectElement","styles","append","onDragStop","onDrag","diffX","stopPropagation","diffY","setStyleAttribute","left","Math","abs","dragSelectedItems","dragRect","allItems_1","itemRect","right","bottom","setPath","oldProp","requiresRefresh","ajaxSettingSetModel","localeSetModelOption","col","navigationPaneTemplate","refreshing","CLS.RTL","toolbarModule","contextmenuModule","disableToolbarItems","enableToolbarItems","enableMenuItems","disableMenuItems","getMenuItemIndex","getToolbarItemIndex","filterFiles","getSelectedFiles","refreshFiles","refreshLayout","uploadFiles","closeDialog","rtl","Complex","Collection","Event","NotifyPropertyChanges","previousPath","nextPath","deleteRecords","isSameAction","persistData","Inject","Toolbar","toolbarItemData","getItems","toolbarCreateArgs","toolbarObj","BaseToolbar","toolbarCreateHandler","overflowMode","clicked","onClicked","getId","currItems","toolbarItems","tool","toolbarClickArgs","CLS.TB_ITEM","getPupupId","buttonObj","layoutBtnObj","tickIcon","viewText","firstChild","hideItems","default","hideStatus","portals","updateSortByButton","itemCount","mergedItems","propItem","getItemModel","itemTooltip","tooltipText","prefixIcon","showTextOn","spanElement","suffixIcon","CLS.ICON_CLEAR","overflow","align","_match","disabled","showAlwaysInPopup","tabIndex","onSelectionChanged","reRenderToolbar","itemsToProcess","single","selection","multiple","hideItem","tools","toHide","refreshOverflow","isEnable","Virtualization","currentViewItems","largeIconInstance","lastRowCount","rowItemCount","topElement","filemanagerInstance","bottomElement","listItemHeight","totalHeight","topElementHeight","bottomElementHeight","listDiff","renderedCount","dataSourceLength","widthMargin","floor","round","onVirtualUiScroll","scrollPosition","scroll","getscrollerHeight","onNormalScroll","startingHeight","isScrollingDown","updateUI","lastItemIndex","isAllRendered","startItemIndex","previousElementSibling","__assign","t","s","n","NavigationPane","onInit","rootData","attr","BaseTreeView","parentID","expanded","hasChildren","tooltip","nodeSelecting","onNodeSelecting","nodeSelected","onNodeSelected","nodeExpanding","onNodeExpand","nodeClicked","onNodeClicked","allowEditing","nodeEditing","onNodeEditing","drawNode","onDrowNode","dataBound","addDragDrop","nodeTemplate","CLS.TEXT_CONTENT","getDragPath","getDropPath","nodeData","isReact","addChild","prevent","directories","targetDirectory","_fm_icon","childElements","addNodes","selecEventArgs","isRightClick","isSameNodeClicked","isPathDragged","isRenameParent","restrictSelecting","renameParent","isNodeClickCalled","expandNodeTarget","onPathDrag","selectResultNode","isDrag","isNodeExpandCalled","events.nodeExpand","onNodeExpanded","innerHtml","currFiles","sNode","updateTree","updateTreeNode","toExpand","expandedNodes","removeChildNodes","childs","removeNodes","onOpenEnd","sleId","expandAll","updateItemData","updateActionData","selectedNodeEle","selcetedEle","onRenameEndParent","id_1","nData","onDownLoadInit","onClearPathInit","onDragEnd","moveNames","getMoveNames","previousName","onCutEnd","resultObj","itemname","checkDropPath","onDragging","dataobj","level","keyDown","ctrlShiftN","shiftF10","DetailsView","sortSettings","isValidSortField","enablePersistence","gridPersistenceValue","localStorage","getItem","model","setItem","checkNameWidth","getColumns","direction","Grid","allowSorting","rowSelecting","onSelection","rowDeselecting","rowSelected","rowDeselected","onDeSelection","allowResizing","columnResizing","selectionSettings","checkboxMode","pageSettings","pageSize","enableVirtualMaskRow","allowUnsort","recordDoubleClick","DblClickEvents","beforeDataBound","onBeforeDataBound","onDataBound","rowDataBound","onRowDataBound","actionBegin","onActionBegin","headerCellInfo","onHeaderCellInfo","getGridHeight","beforeCopy","load","focusModule","reactTemplateRender","isLoaded","emptyArgs","pane","initialColumn","isNameWidth","adjustWidth","fieldName","nameWidth","headerTextAlign","SanitizeHtmlHelper","sanitize","_fm_modified","this_1","template_1","iWidth","_fm_iconClass","headerTemplate","unshift","cBox","cWidth","disableHtmlEncode","gridHeader","renderCheckBox","isColumnRefresh","refreshColumns","td","row","sizeEle","modifiedSize","sizeValue","sizeFormat","formatNumber","dateEle","checkWrap","requestType","columnName","sortItem","rows","getSelectedRowIndexes","sortSelectedNodes","getRowsObject","nameColumn","find","cnTable","sortIconElement","selectRecords","getDataRows","isSelectionUpdate","currentSelectedItem","currentViewData","getRowHeight","hdTable","getHeaderContent","paddingLeft","borderRightWidth","getContent","overflowY","checkEmptyDiv","gridRecords","getCurrentViewRecords","sRecords","Str2","selectedRowIndex","rData","onSortColumn","sortModule","freezeRefresh","interaction","onDetailsResize","pathField","hideAtMedia","updatePathColumn","removePathColumn","columnData","getSelectedRecords","openContent","rowIndex","rowData","onSearchFiles","isRefresh","filterPathInSettings","selectionModule","selectRowsByRange","getRows","selectRow","removeSelection","CLS.HEADER_CHECK","onPasteInit","onDetailsResizeHandler","getRowInfo","dragRow","getSelectedRows","gridHeaderColGroup","gridContentColGroup","gridHeaderColNames","isMultiSelect","isShiftPressed","isCtrlPressed","rowIndexes","selectedRecords","firstItemIndex","getRowByIndex","isHeaderCheckboxClicked","gridSelectNodes","selectSize","record","name_3","keyupHandler","keydownHandler","removeFocus","relatedTarget","thElements","getFocusedItemIndex","crtSrlPos","crtFocusIndex","gridItems","gridLength","focIndex","selIndex","selRowIndeces","currentField","getColumnByUid","nextSibling","addHeaderFocus","checkRowsKey","spaceSelection","shiftMoveMethod","ctrlMoveFunction","moveFunction","isSelected","shiftSelectedItem","shiftSelectFocusItem","nextIndex","indexValue","checkAllRows","InnerItems","itemArr","fIndex","selRowIndexes","itemElement","CLS.FOCUSED","nameFocus","treeFocus","tagName","check","getRecords","hasFilter","name_4","dRecords","Resize","Sort","VirtualScroll","reference","referenceIsFile","comparerIsFile","referenceParts","comparerParts","_","$1","$2","Infinity","referencePart","shift","comparerPart","comparisonResult","localeCompare"],"mappings":"86BACQA,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,EAsBoCS,EAvBxCC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,EAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIM,GAAwCrB,EAkB1CsB,gBAjBErB,EAAUoB,EAAcrB,CAAM,EAI9BO,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,cAAe,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,cAAe,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,YAAa,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,IAAI,GACdF,EAAahB,UAAW,MAAO,KAAA,CAAM,EACjCgB,GAfP,SAASA,IACL,OAAkB,OAAXrB,GAAmBA,EAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzB3DZ,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,EAwBuCS,EAzB3CC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,EAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAEWU,EAAsB,CAAC,YAAa,SAAU,MAAO,OAAQ,QAAS,SAAU,WAAY,SACnG,SAAU,UAAW,YAAa,OAAQ,WAI1CC,GAA2C1B,EAY7CsB,gBAXErB,EAAUyB,EAAiB1B,CAAM,EAIjCO,EAAW,CACPgB,WAASE,CAAmB,GAC7BC,EAAgBrB,UAAW,QAAS,KAAA,CAAM,EAC7CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACdG,EAAgBrB,UAAW,UAAW,KAAA,CAAM,EACxCqB,GATP,SAASA,IACL,OAAkB,OAAX1B,GAAmBA,EAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KAWxBH,EA4DzCsB,gBA3DErB,EAAU0B,EAAa3B,CAAM,EAI7BO,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,KAAM,KAAA,CAAM,EACtCE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,QAAS,KAAA,CAAM,EACzCE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfI,EAAYtB,UAAW,oBAAqB,KAAA,CAAM,EACrDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACdI,EAAYtB,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,QAAQ,GAClBI,EAAYtB,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,IAAI,GACdI,EAAYtB,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,WAAS,EAAE,GACZI,EAAYtB,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPgB,WAAS,MAAM,GAChBI,EAAYtB,UAAW,QAAS,KAAA,CAAM,EACzCE,EAAW,CACPgB,WAAS,CAAC,CAAC,GACZI,EAAYtB,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgB,cACDI,EAAYtB,UAAW,OAAQ,KAAA,CAAM,MA1DDL,EAAvC2B,EA2DOA,EAzDP,SAASA,IACL,OAAkB,OAAX3B,GAAmBA,EAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzC3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsBsCS,GAvB1CC,EAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIa,GAA0C5B,GAkB5CsB,gBAjBErB,EAAU2B,GAAgB5B,EAAM,EAIhCO,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdK,GAAevB,UAAW,sBAAuB,KAAA,CAAM,EAC1DE,GAAW,CACPgB,WAAS,UAAU,GACpBK,GAAevB,UAAW,aAAc,KAAA,CAAM,EACjDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdK,GAAevB,UAAW,aAAc,KAAA,CAAM,EACjDE,GAAW,CACPgB,WAAS,IAAI,GACdK,GAAevB,UAAW,cAAe,KAAA,CAAM,EAC3CuB,IAfP,SAASA,KACL,OAAkB,OAAX5B,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzB3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GA2C2CS,GA5C/CC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKWc,GAAc,CACrB,CACIC,MAAO,OAAQC,WAAY,OAAQC,SAAU,IAC7CC,SAAU,yCACVC,iBAAkB,CAAEC,MAAO,mBAE/B,CACIL,MAAO,eAAgBC,WAAY,eAAgBK,KAAM,WACzDC,OAAQ,sBAAuBL,SAAU,IAAKM,MAAO,OAEzD,CACIR,MAAO,OAAQC,WAAY,OAAQC,SAAU,GAAIM,MAAO,MAExDL,SAAUM,wBAAsB,SAAUC,GACtC,MAAO,2BAA+BA,EAAKC,KAAO,UACrD,EAAGJ,OAAQ,OAMhBK,IAA+C1C,GAYjDsB,gBAXErB,GAAUyC,GAAqB1C,EAAM,EAIrCO,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdmB,GAAoBrC,UAAW,iBAAkB,KAAA,CAAM,EAC1DE,GAAW,CACPgB,WAASM,EAAW,GACrBa,GAAoBrC,UAAW,UAAW,KAAA,CAAM,EAC5CqC,IATP,SAASA,KACL,OAAkB,OAAX1C,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KC9C3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GA2B2CS,GA5B/CC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAEW4B,GAAY,CAAC,OAAQ,IAAK,MAAO,OAAQ,IAAK,SAAU,WAAY,SAAU,IAAK,WACnFC,GAAc,CAAC,OAAQ,IAAK,MAAO,OAAQ,QAAS,IAAK,SAAU,SAAU,WAAY,IAAK,WAC9FC,GAAc,CACrB,SAAU,OAAQ,UAAW,IAAK,QAAS,IAAK,YAAa,SAAU,IAAK,UAAW,IAAK,aAK5FC,IAA+C9C,GAkBjDsB,gBAjBErB,GAAU6C,GAAqB9C,EAAM,EAIrCO,GAAW,CACPgB,WAASoB,EAAS,GACnBG,GAAoBzC,UAAW,OAAQ,KAAA,CAAM,EAChDE,GAAW,CACPgB,WAASqB,EAAW,GACrBE,GAAoBzC,UAAW,SAAU,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAASsB,EAAW,GACrBC,GAAoBzC,UAAW,SAAU,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACduB,GAAoBzC,UAAW,UAAW,KAAA,CAAM,EAC5CyC,IAfP,SAASA,KACL,OAAkB,OAAX9C,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KC9B3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsB8CS,GAvBlDC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIgC,IAAkD/C,GAkBpDsB,gBAjBErB,GAAU8C,GAAwB/C,EAAM,EAIxCO,GAAW,CACPgB,WAAS,OAAO,GACjBwB,GAAuB1C,UAAW,WAAY,KAAA,CAAM,EACvDE,GAAW,CACPgB,WAAS,OAAO,GACjBwB,GAAuB1C,UAAW,WAAY,KAAA,CAAM,EACvDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdwB,GAAuB1C,UAAW,UAAW,KAAA,CAAM,EACtDE,GAAW,CACPgB,WAAS,MAAM,GAChBwB,GAAuB1C,UAAW,YAAa,KAAA,CAAM,EACjD0C,IAfP,SAASA,KACL,OAAkB,OAAX/C,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzB3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAsBsCS,GAvB1CC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,GAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAKIiC,IAA0ChD,GA8B5CsB,gBA7BErB,GAAU+C,GAAgBhD,EAAM,EAIhCO,GAAW,CACPgB,WAAS,EAAE,GACZyB,GAAe3C,UAAW,oBAAqB,KAAA,CAAM,EACxDE,GAAW,CACPgB,WAAS,CAAA,CAAI,GACdyB,GAAe3C,UAAW,aAAc,KAAA,CAAM,EACjDE,GAAW,CACPgB,WAAS,CAAA,CAAK,GACfyB,GAAe3C,UAAW,YAAa,KAAA,CAAM,EAChDE,GAAW,CACPgB,WAAS,CAAA,CAAK,GACfyB,GAAe3C,UAAW,kBAAmB,KAAA,CAAM,EACtDE,GAAW,CACPgB,WAAS,CAAA,CAAK,GACfyB,GAAe3C,UAAW,mBAAoB,KAAA,CAAM,EACvDE,GAAW,CACPgB,WAAS,CAAC,GACXyB,GAAe3C,UAAW,cAAe,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAAS,GAAQ,GAClByB,GAAe3C,UAAW,cAAe,KAAA,CAAM,EAClDE,GAAW,CACPgB,WAAS,CAAC,GACXyB,GAAe3C,UAAW,YAAa,KAAA,CAAM,EACzC2C,IA3BP,SAASA,KACL,OAAkB,OAAXhD,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,KCzB3DZ,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GALjC,IACQF,GAuB8BS,GAxBlCC,GAOO,SAAUT,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,IAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAMIkC,IAAkCjD,GA4DpCsB,gBA3DErB,GAAUgD,EAAQjD,EAAM,EAIxBO,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,QAAS,KAAA,CAAM,EACpCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,aAAc,KAAA,CAAM,EACzCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,QAAS,KAAA,CAAM,EACpCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACPgB,WAAS,MAAM,GAChB0B,EAAO5C,UAAW,YAAa,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,kBAAmB,KAAA,CAAM,EAC9CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,OAAQ,KAAA,CAAM,EACnCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,SAAU,KAAA,CAAM,EACrCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,WAAY,KAAA,CAAM,EACvCE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,iBAAkB,KAAA,CAAM,EAC7CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACd0B,EAAO5C,UAAW,gBAAiB,KAAA,CAAM,EAC5CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,mBAAoB,KAAA,CAAM,EAC/CE,EAAW,CACPgB,WAAS,EAAE,GACZ0B,EAAO5C,UAAW,cAAe,KAAA,CAAM,EAC1CE,EAAW,CACPgB,WAAS,IAAI,GACd0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EAC3CE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACf0B,EAAO5C,UAAW,eAAgB,KAAA,CAAM,EACpC4C,GAzDP,SAASA,IACL,OAAkB,OAAXjD,IAAmBA,GAAOwB,MAAMrB,KAAMU,SAAS,GAAKV,SCvBxD+C,GAAa,WAEbC,GAAY,UAEZC,GAAgB,cAEhBC,GAAU,QAEVC,GAAU,QAEVC,GAAe,cAEfC,GAAY,UAIZC,GAAgB,cAEhBC,GAAiB,eAEjBC,GAAmB,iBAInBC,GAAkB,eAQlBC,GAAa,WAEbC,GAAmB,iBAEnBC,GAAY,UAIZC,GAAY,UAKZC,GAAO,gBAEPC,GAAU,YAEVC,GAAe,iBAEfC,GAAa,aAEbC,GAAS,cAETC,GAAY,yBAEZC,GAAe,gBAEfC,GAAS,gBAETC,GAAS,WAETC,GAAa,eAEbC,GAAiB,mBAEjBC,GAAc,gBAEdC,GAAU,iBAEVC,EAAY,cAEZC,GAAY,cAEZC,GAAc,gBAEdC,EAAiB,oBAEjBC,GAAgB,mBAEhBC,GAAO,SAEPC,EAAS,WAETC,GAAQ,UAERC,GAAQ,UAERC,GAAU,YAEVC,GAAQ,UAERC,GAAQ,UAERC,GAAU,qBAEVC,GAAM,QAINC,EAAQ,UAERC,GAAgB,kBAEhBC,GAAsB,wBAEtBC,GAAQ,aAERC,GAAc,mBAEdC,GAAY,iBAEZC,GAAS,cAETC,GAAa,aAEbC,GAAa,aAEbC,GAAa,aAEbC,GAAa,eAEbC,GAAqB,2BAQrBC,GAAe,iBAEfC,GAAc,eAIdC,GAAY,aAEZC,GAAY,cAEZC,GAAY,cAEZC,GAAe,UAEfC,GAAY,YAEZC,GAAe,gBAEfC,GAAY,gBAEZC,GAAY,oBAEZC,GAAc,sBAEdC,GAAW,mBAEXC,GAAY,oBAEZC,GAAa,qBAEbC,GAAc,sBAEdC,GAAc,sBAEdC,GAAiB,yBAEjBC,GAAe,uBAEfC,GAAe,oBAEfC,GAAe,uBAEfC,GAAiB,sBAEjBC,GAAgB,wBAIhBC,GAAY,oBAEZC,GAAa,qBAEbC,GAAc,mBAEdC,GAAY,wBAEZC,GAAkB,0BAElBC,GAAa,qBAQbC,GAAQ,UAIRC,GAAgB,oBAIhBC,GAAc,YAEdC,GAAM,QAENC,GAAe,iBAIfC,GAAU,YAIVC,GAAY,cAEZC,GAAe,gBAEfC,GAAU,eAEVC,GAAQ,aC1NRC,EAAe,gBAEfC,GAAa,cAEbC,EAAc,eAEdC,GAAY,aAEZC,GAAY,aAIZC,GAAW,YAEXC,GAAa,cAEbC,GAAY,aAEZC,GAAa,cAEbC,GAAY,aAEZC,GAAiB,kBAEjBC,EAAc,eAEdC,GAAU,UAEVC,GAAgB,iBAIhBC,GAAa,cAEbC,GAAe,gBAIfC,GAAgB,iBAEhBC,GAAgB,gBAEhBC,GAAS,SAETC,GAAW,YAEXC,GAAU,WAEVC,EAAmB,oBAEnBC,GAAgB,kBAEhBC,GAAe,iBAEfC,GAAgB,kBAEhBC,EAAe,gBAEfC,GAAe,iBAEfC,GAAa,cAEbC,EAAc,eAEdC,GAAe,iBAEfC,GAAa,cAEbC,GAAkB,oBAElBC,EAAY,aAEZC,GAAY,aAEZC,GAAY,aAEZC,GAAe,gBAEfC,GAAc,gBAEdC,GAAY,aAEZC,GAAW,YAEXC,GAAS,UAETC,GAAa,cAEbC,GAAsB,wBAItBC,GAAa,cAEbC,GAAa,cAEbC,GAAmB,gBAInBC,GAAe,gBAEfC,GAAW,YAEXC,GAAU,WAEVC,GAAW,YAIXC,GAAW,WAEXC,GAAsB,wBAEtBC,GAAa,cAEbC,GAAiB,OAEjBC,EAAiB,QAEjBC,GAAyB,gBAIzBC,GAAmB,SAEnBC,GAAqB,WClFzB,SAASC,GAAWC,EAAMhK,EAAMiK,GACnC,IAAIC,EAAOC,WAAS,OAAQnK,CAAI,EAC5BoK,EAAKJ,EAAKK,aAAa,SAAS,EAChCC,EAAUC,oBAAMH,CAAE,EAAIF,EAAOE,EACjCH,EAASO,cAAc,CAAEC,KAAMC,GAAQV,EAAMM,EAASL,EAASU,MAAOV,CAAQ,GAAK,CAAA,CAAI,EACvFA,EAASW,OAASC,GAAUb,EAAMC,CAAQ,EAC1CA,EAASa,UAAYC,GAAaf,EAAME,EAAMD,CAAQ,CAC1D,CAWO,SAASS,GAAQM,EAASd,EAAMS,EAAOV,GAI1C,IAHA,IAAIgB,EAAUC,GAAWF,EAASd,EAAM,CAAA,EAAOS,EAAOV,CAAQ,EAC1DQ,EAAO,IAEF9L,EADCsM,EAAQ3M,SACK,GAALK,EAAQA,CAAC,GACvB8L,GAAQQ,EAAQtM,GAAK,IAEzB,OAAO8L,CACX,CASO,SAASI,GAAUb,EAAMC,GAG5B,IAFA,IAAIgB,EAAUC,GAAWlB,EAAMA,EAAKK,aAAa,UAAU,EAAG,CAAA,EAAM,CAAA,EAAOJ,CAAQ,EAC/EkB,EAAM,GACDxM,EAAIsM,EAAQ3M,OAAS,EAAQ,GAALK,EAAQA,CAAC,GACtCwM,EAAIC,KAAKH,EAAQtM,EAAE,EAEvB,OAAOwM,CACX,CAUO,SAASJ,GAAaC,EAASd,EAAMD,GAGxC,IAFA,IAAIgB,EAAUC,GAAWF,EAASd,EAAM,CAAA,EAAO,CAAA,EAAOD,CAAQ,EAC1DoB,EAAQ,GACH1M,EAAIsM,EAAQ3M,OAAS,EAAQ,GAALK,EAAQA,CAAC,GACtC0M,EAAMD,KAAKH,EAAQtM,EAAE,EAEzB,OAAO0M,CACX,CAYO,SAASH,GAAWF,EAASd,EAAMoB,EAAMX,EAAOV,GAGnD,IAFA,IAQYsB,EARRN,EAAU,CAACf,GACXsB,EAAKR,EAAQS,WACV,CAAClB,oBAAMiB,CAAE,IACRE,UAAQF,EAAI,IAAMG,CAAa,IAC3B3L,EAAO,CAAC,IACPuK,oBAAMN,CAAQ,GAAMM,oBAAMN,EAAS2B,oBAAoB,GAAMrB,oBAAMN,EAAS2B,qBAAqBC,OAAO,IACzG7L,EAAOiK,EAAS2B,qBAAqBC,QAAQC,YAAYN,CAAE,GAE3DD,EAAaD,EAAOE,EAAGnB,aAAa,UAAU,EAAKM,EAAQa,EAAGnB,aAAa,SAAS,EAAIF,WAAS,OAAQnK,EAAK,EAAE,EACpHiL,EAAQG,KAAKG,CAAU,GAGvBC,EADJA,EAAKA,EAAGC,YACDM,UAAUC,SAASC,EAAa,KAI3C,OAAOhB,CACX,CAQO,SAASiB,GAAaC,GAIzB,IAHA,IAAIjO,EAAMiO,EAAOxB,MAAQ,KAAO,OAC5ByB,EAAU,IACVzN,EAAI,EACAA,EAAIwN,EAAOvB,OAAOtM,OAAQK,CAAC,GAAI,CACnC,IAAIqB,EAAOmK,WAASgC,EAAOvB,OAAOyB,SAAS1N,EAAE2N,WAAY,EAAE,GAAIH,EAAOI,QAAQ,EAC9EH,GAAWjC,WAASjM,EAAK8B,CAAI,EAAI,IAErCmM,EAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,CAChD,CAQO,SAASI,GAAaL,GACrBA,EAAOM,QACPC,EAAWP,CAAM,EACjBA,EAAOQ,cAAgB,GACvBR,EAAOS,cAAgB,GACvBT,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOC,GAAkB,EAAE,EAE1C,CASO,SAASC,GAAcC,EAAQd,GAKlC,GAJAA,EAAOe,YAAc,CAAA,EACrBf,EAAOS,cAAgB,GACvBT,EAAOgB,eAAiB,GACxBhB,EAAOW,OAAOM,GAAoB,EAAE,EACC,IAAjCjB,EAAOgB,eAAe7O,OACtB,MAAO,CAAA,EAEXoO,EAAWP,CAAM,EACjB,IAAIkB,EAAUlB,EAAOgB,eAOjBxO,GANwB,mBAAxBwN,EAAOmB,aACPnB,EAAOoB,WAAapB,EAAO1B,KAG3B0B,EAAOoB,WAAaC,GAAcrB,EAAO1B,IAAI,EAEzC,GACR,GAAI4C,IACAI,GAAUtB,EAAQkB,EAAQ,EAAE,EACb,QAAXJ,GACA,KAAOtO,EAAI0O,EAAQ/O,QACfoP,GAAQL,EAAQ1O,EAAE,EAClBA,CAAC,GAQb,IAJAA,EAAI,EACJwN,EAAOQ,cAAgB,GACvBR,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOa,GAAkB,EAAE,EAC3BhP,EAAIwN,EAAOyB,cAActP,QAC5B6N,EAAOS,cAAcxB,KAAKe,EAAOyB,cAAcjP,EAAE,EACjDwN,EAAOQ,cAAcvB,KAAKjB,WAAS,OAAQgC,EAAOyB,cAAcjP,EAAE,CAAC,EACnEA,CAAC,GAEL,IAA4D,KAAvDwN,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgB5B,EAAO6B,aAC7C,mBAAxB7B,EAAOmB,aAAmC,CAC1CnB,EAAOQ,cAAgB,GACvBR,EAAOe,YAAc,CAAA,EAErB,IADA,IAAIe,EAAM,EACHA,EAAM9B,EAAO+B,cAAc5P,QAC9B6N,EAAOQ,cAAcvB,KAAKe,EAAO+B,cAAcD,EAAI,EACnDA,CAAG,GAGX,MAAO,CAAA,CACX,CAQO,SAASP,GAAQS,GACpBA,EAAMpC,UAAUqC,IAAIC,EAAQ,CAChC,CASO,SAAS3B,EAAWP,EAAQmC,GAI/B,IAHA,IAAIjB,EAAYiB,EACZnC,EAAOnB,QAAQuD,iBAAiB,IAAMC,EAAS,EAD1BrC,EAAOnB,QAAQuD,iBAAiB,IAAMF,EAAQ,EAEnE1P,EAAI,EACDA,EAAI0O,EAAQ/O,QACf+O,EAAQ1O,GAAGoN,UAAU0C,OAASH,EAAoBE,GAAXH,EAAoB,EAC3D1P,CAAC,EAET,CASO,SAAS8O,GAAUtB,EAAQnB,GAC1BA,IACIA,EAAQe,UAAUC,SAAS0C,EAAO,EAClCvC,EAAOmB,aAAe,cAEjBqB,UAAQ3D,EAAS,IAAM4D,EAAc,EAC1CzC,EAAOmB,aAAe,iBAGtBnB,EAAOmB,aAAe,iBAGlC,CASO,SAASuB,GAAiB1C,EAAQ2C,GACrC,IAAIC,EAAW5C,EAAO6C,eAAeC,OAAO,SAAUC,GAClD,OAAOC,OAAOD,EAAKJ,QAAQ,IAAMK,OAAOL,CAAQ,EACnD,EACGM,EAAcL,EAASM,QAK3B,OAJAN,EAASO,QAAQ,SAAUC,GACnBC,EAAUD,EAAMnF,GACpBgF,EAAcA,EAAYK,OAAOZ,GAAiB1C,EAAQqD,CAAO,CAAC,EACrE,EACMJ,CACX,CAUO,SAASM,GAAkBvD,EAAQ4B,EAAO4B,GAC7C,IAmCQC,EAXJC,EAvBiB,IAAjB9B,EAAMzP,QAAiB6N,EAAO6B,YAC9B7B,EAAOW,OAAOgD,GAAmB,CAAEC,KAAM5D,EAAQ,EAEjD6D,EAAiB7D,CAAM,EACT,KAAV4B,GACA5B,EAAO8D,SAAW9D,EAAO6C,eACzBkB,EAAK/D,EAAQwD,EAAiBQ,EAAsBC,GAAejE,EAAO1B,IAAI,IAG9E0B,EAAOkE,eAAeC,WAAa/F,oBAAM4B,EAAOkE,eAAeC,UAAU,EAAI,WAAanE,EAAOkE,eAAeC,WAC5GC,EAAWpG,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOtM,OAAS,GAAI6N,EAAOI,QAAQ,EAE5EiE,EAAe3B,GAAiB1C,EADrBhC,WAAS,KAAMoG,CAAQ,CACc,EAChDvQ,EAAO,IAAIyQ,cAAYD,CAAY,EACnCE,cAAa,IAAIC,SAAQC,MAAM,OAAQzE,EAAOkE,eAAeC,WAAYvC,EAAO5B,EAAOkE,eAAeQ,UAAU,CAAC,EACjHC,EAAc3E,EAAOkE,eAAeQ,WAAa9C,EAAMgD,cAAgBhD,EAC3E5B,EAAO8D,SAAWjQ,EAClBmM,EAAO6E,aAAaC,MAAQ,KAC5BC,GAAO/E,EAAQwD,EAAiBQ,EAAsBC,GAAejE,EAAO1B,KAAMqG,EAAa3E,EAAOgF,gBAAiB,CAAChF,EAAOkE,eAAeQ,UAAU,IAK5JhB,EADqC,eAArC1D,EAAOkE,eAAeC,WACTvC,EAAQ,IAEqB,aAArC5B,EAAOkE,eAAeC,WACd,IAAMvC,EAGN,IAAMA,EAAQ,IAE/B5B,EAAO0D,WAAaA,EACpB1D,EAAO8D,SAAW,CAACmB,EAAcjF,CAAM,GACpB,EAAf4B,EAAMzP,QACFsR,EAAgBzD,EAAOkE,eAAeQ,WACtCQ,EAAclF,EAAOgF,gBACzBD,GAAO/E,EAAQwD,EAAiBQ,EAAsBC,GAAejE,EAAO1B,KAAMoF,EAAYwB,EAAa,CAACzB,CAAa,GAGpHzD,EAAO6B,WAURiB,GAAO9C,EAAQgE,CAAmB,EAT9BhE,EAAOmF,iBACPnF,EAAOW,OAAOqD,EAAqB,CAAEoB,MAA2B,YAAnBpF,EAAOqF,QAAyBrF,EAAOsF,kBAAkBC,QAAQC,WAAaxF,EAAOyF,qBAAqBC,SAAU,EACjK1F,EAAOmF,gBAAkB,CAAA,GAGzBpB,EAAK/D,EAAQwD,EAAiBQ,EAAsBC,GAAejE,EAAO1B,IAAI,EAO9F,CASO,SAASqH,GAAa3F,EAAQ4F,GACjC5F,EAAOqF,QAAUrF,EAAO4F,KACxB5F,EAAO3B,cAAc,CAAEuH,KAAMA,GAAQ,CAAA,CAAI,EACkB,KAAvD5F,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgB5B,CAAAA,EAAO6B,aACpE7B,EAAO6F,oBAAsB7F,EAAO+B,eAEpC2B,EAAa,GACb1D,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,QAC7C8B,EAAa1D,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAE9D5B,EAAOwD,eAAiB,CAAA,EACxBD,GAAkBvD,EAAQ0D,EAAY,CAAA,CAAI,CAC9C,CAUO,SAASoC,GAAgB9F,EAAQnB,GACpC,IAAIkH,EAAgB,GAChBlH,IAEIkH,EADAvD,UAAQ3D,EAAS,IAAMmH,GAAW,IAAMC,GAAc,KAAOC,EAAgB,EAC7D,cAEX1D,UAAQ3D,EAAS,IAAMsH,EAAe,EAC3B,iBAEXtH,EAAQe,UAAUC,SAAS,WAAW,GAC3ChB,EAAQe,UAAUC,SAAS,mBAAmB,GAAKhB,EAAQe,UAAUC,SAAS,gBAAgB,EAC9E,iBAEX2C,UAAQ3D,EAAS,sBAAsB,EAC5B,gBAGA,IAGxBmB,EAAOoG,aAAeL,CAC1B,CASO,SAASM,GAAQrG,GACpBA,EAAO8D,SAAW,CAACmB,EAAcjF,CAAM,GAClCsG,GAActG,EAAO8D,SAAS,EAAE,EAIjCC,EAAK/D,EAAQuG,GAAmBvG,EAAO1B,IAAI,EAH3CkI,EAAmBxG,EAAQA,EAAO8D,SAAS,GAAI2C,EAAqB,CAK5E,CAQO,SAASC,GAAW1G,GACvB+D,EAAK/D,EAAQ2G,GAAgB3G,EAAO1B,IAAI,CAC5C,CAQO,SAAS2G,EAAcjF,GAC1B,OAAOhC,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOtM,OAAS,GAAI6N,EAAOI,QAAQ,CAC5E,CAQO,SAASwG,GAAU5G,GACjBa,GAAc,OAAQb,CAAM,IAI7BA,EAAO6G,WAAa,OAE5B,CAQO,SAASC,GAAS9G,GAChBa,GAAc,MAAOb,CAAM,IAI5BA,EAAOM,MAAQ,CAAA,EACfN,EAAO6G,WAAa,OAE5B,CAQO,SAASE,GAASC,GAErB,OADahJ,WAAS,SAAUgJ,CAAI,GAWN,CAAC,KAA3BC,GAFAA,EAAWjJ,WAAS,OAAQgJ,CAAI,GAChBpC,eACPsC,QAAQ,GAAG,IACpBD,EAAWA,EAASE,MAAM,GAAG,EAAEC,KAAK,EAAE,GAGJ,CAAC,IAXrB,CAAC,MAAO,MAAO,MAAO,OAAQ,MAAO,OAAQ,MAAO,MAAO,OAAQ,MAAO,OAW5EF,QAAQD,CAAQ,EACjBI,GAE4B,CAAC,IAb1B,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAa/CH,QAAQD,CAAQ,EACtBK,GAE4B,CAAC,IAf1B,CAAC,OAAQ,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAe9DJ,QAAQD,CAAQ,EACtBM,GAE4B,CAAC,IAjB1B,CAAC,MAAO,MAAO,OAAQ,KAAM,MAAO,MAAO,OAAQ,MAAO,MAAO,MAAO,MAAO,OAAQ,MACrG,OAAQ,MAAO,MAAO,MAAO,OAgBZL,QAAQD,CAAQ,EACtB,QAAUA,EAGV,qBAAuBA,GA1B3BO,EA6Bf,CAUO,SAASC,GAAYzH,EAAQ+C,GAChC,IAUI2E,EAEAC,EACAC,EAYA/T,EAWAgU,EApCAC,EAASjE,EAAiB7D,CAAM,EAAIhC,WAAS,WAAY+E,CAAI,EAAI,GACrE,OAAIc,EAAiB7D,CAAM,GAMvBA,EAAO+H,QAAQ,kBALXC,EAAc,CACdC,YAAa,CAAClF,GACdmF,SAAUJ,EACVK,cAAe,CAAA,EAE0B,EACtCH,IAGPI,EAAoC,CAAC,KADrCV,EAAU1H,EAAOqI,aAAaZ,aAAgDzH,EAAOqI,aAAaC,KAC/EpB,QAAQ,GAAG,EAAY,SAAW,SACrDS,EAAWY,mBAAmBvK,WAAS,OAAQ+E,CAAI,CAAC,EACpD6E,EAAQ5J,WAAS,aAAc+E,CAAI,EAWvC+E,GARIA,EAFA9H,EAAOxB,OACHgK,EAAQxK,WAAS,KAAM+E,CAAI,EACtB2E,EAAUU,EAAUpI,EAAO1B,KAAO,OAASkK,GAE9CpK,oBAAMwJ,CAAK,EAIRF,EAAUU,EAAUpI,EAAO1B,KAAOqJ,EAHlCD,EAAUU,EAAUG,mBAAmBX,EAAMa,QAAQ,MAAO,GAAG,CAAC,EAAId,GAK/D,UAAY,IAAIe,MAAOC,QAAS,EAAExI,WAChDtM,EAAO,CAAEiN,OAAU,WAAYxC,KAAQ0B,EAAO1B,KAAOqJ,EAAU1J,GAAMD,WAAS,KAAM+E,CAAI,GAWxF8E,EAAY,CACZI,YAAa,CAAClF,GACdmF,SAAUJ,EACVK,cAAe,CAAA,EACfE,aAde,CACfC,IAAKZ,EACLjU,KAAM,OACNmV,YAAa,mBACbC,aAAc,OACdhV,KAAMiV,KAAKC,UAAUlV,CAAI,EACzBmV,UAAW,KACXC,UAAW,KACXC,WAAY,OAQhBlJ,EAAO+H,QAAQ,kBAAmBF,CAAS,EACpCA,EACX,CAWO,SAASsB,GAAYnJ,EAAQnM,EAAMyK,GACtC,IAAI8K,EAAWpL,WAASgC,EAAOxB,MAAQ,KAAO,OAAQ3K,CAAI,EAAI,IAC1D+T,EAAQ5J,WAASgC,EAAOxB,MAAQ,WAAa,aAAc3K,CAAI,EACnE,OAAKuK,oBAAMwJ,CAAK,EAILtJ,EAAO8K,EAHPxB,EAAMa,QAAQ,MAAO,GAAG,EAAEA,QAAQ,aAAc,EAAE,EAAIW,CAKrE,CASO,SAASC,GAAQrJ,EAAQnM,GAC5B,IAAIyV,EAAOtL,WAAS,OAAQnK,CAAI,EAC5B+T,EAAQ5J,WAAS,aAAcnK,CAAI,EAKvC,OAFIyV,EAFwD,KAAvDtJ,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgB5B,CAAAA,EAAO6B,YAAgBzD,oBAAMwJ,CAAK,EAI7F0B,GAHH1B,EAAQA,EAAMa,QAAQ,MAAO,GAAG,GACnBA,QAAQzI,EAAO1B,KAAM,EAAE,EAAIgL,CAGhD,CASO,SAASC,GAAcvJ,EAAQwJ,GAClC,OAAqB,IAAjBA,EAAMrX,OACCqX,GAOPC,GAJqB,SAArBzJ,EAAO0J,WAAyBC,oBAAkB3J,EAAO0J,SAAS,EAI1D,IAAIlF,SAHJ,IAAIA,SAAQoF,OAAO5J,EAAO4J,OAAQ5J,EAAO0J,UAAU9E,cAAe,CAAA,CAAI,GAG1DiF,MAAM,QAAQ,EAElCC,EAAQ,IAAIxF,cAAYkF,CAAK,EAAEjF,aAAakF,CAAK,EAC9CzL,WAAS,UAAW8L,CAAK,EACpC,CAUO,SAASC,GAAU/J,EAAQjO,EAAK6P,GAGnC,OAFgB5D,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOtM,OAAS,GAAI6N,EAAOgK,OAAO,EACzDlH,OAAO,SAAUjP,GAAQ,OAAOA,EAAK9B,GAAKoO,aAAeyB,EAAQ,EAC1E,EAClB,CAUO,SAASqI,GAAmBjK,EAAQnB,EAAS+E,GAChD,IAUQsG,EACAC,EAVJC,EAAgBC,SAAO,IAAMrK,EAAOnB,QAAQZ,GAAKqM,GAAetK,EAAOnB,OAAO,EAC9E0L,EAAmBF,SAAO,IAAMrK,EAAOnB,QAAQZ,GAAKuM,GAAsBJ,CAAa,EAAEK,aAC7FC,EAAMN,EAAcK,aAAeF,EAqC/BI,GApCgB,YAAhB3K,EAAO4F,OACP8E,GAAYL,SAAO,IAAMO,GAAiBR,CAAa,EAAEK,cAEzDrM,oBAAMS,EAAQgM,cAAc,IAAMC,CAAS,CAAC,IACxCC,EAAWC,gBAAc,MAAO,CAAEC,UAAWH,EAAW,EACxDI,EAAcF,gBAAc,MAAO,CAAEC,UAAWE,GAAwB,EACxEjB,EAAWc,gBAAc,MAAO,CAAEC,UAAWG,GAAmB,EAChEjB,EAAWa,gBAAc,MAAO,CAAEC,UAAWI,GAAyB,GACtD,YAAhBrL,EAAO4F,KACP/G,EAAQgM,cAAc,IAAMS,EAAa,EAGzCzM,GAH2C0M,YAAYR,CAAQ,EAKnEA,EAASQ,YAAYL,CAAW,EAChCH,EAASQ,YAAYrB,CAAQ,EAC7Ba,EAASQ,YAAYpB,CAAQ,GAE7BtL,EAAQgM,cAAc,IAAMC,CAAS,IAChC1M,oBAAMwF,EAAKkB,KAAK,EAIZ9E,EAAO6B,YACZhD,EAAQgM,cAAc,IAAMO,EAAiB,EAAEI,UAAYC,EAAczL,EAAQ,cAAc,EAC/FnB,EAAQgM,cAAc,IAAMQ,EAAuB,EAAEG,UAAYC,EAAczL,EAAQ,YAAY,GAEvC,KAAvDA,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAClD/C,EAAQgM,cAAc,IAAMO,EAAiB,EAAEI,UAAYC,EAAczL,EAAQ,cAAc,EAC/FnB,EAAQgM,cAAc,IAAMQ,EAAuB,EAAEG,UAAYC,EAAczL,EAAQ,YAAY,IAGnGnB,EAAQgM,cAAc,IAAMO,EAAiB,EAAEI,UAAYC,EAAczL,EAAQ,cAAc,EAC/FnB,EAAQgM,cAAc,IAAMQ,EAAuB,EAAEG,UAAyC,MAA7BxL,EAAO0L,UAAUC,SAAmBF,EAAczL,EAAQ,EAAE,EAAIyL,EAAczL,EAAQ,aAAa,IAbpKnB,EAAQgM,cAAc,IAAMO,EAAiB,EAAEI,UAAYC,EAAczL,EAAQ,eAAe,EAChGnB,EAAQgM,cAAc,IAAMQ,EAAuB,EAAEG,UAAYC,EAAczL,EAAQ,gBAAgB,IAepGqK,SAAO,IAAMS,EAAWjM,CAAO,GAC1C6L,GAAOA,EAAMC,EAAKF,cAAgB,EAClCE,EAAKiB,MAAMC,UAAYnB,EAAM,IACjC,CAQO,SAASoB,GAAe1G,GAC3B,OAAO,IAAId,cAAYc,CAAK,EAAEb,cAAa,IAAIC,SAAQC,MDpsBvC,SCosB4D,QAAS,CAAA,EAAO,CAAA,CAAK,CAAC,CACtG,CASO,SAASsH,GAAUC,EAAQC,GAE9B,IADA,IAAIC,EAAOJ,GAAeE,EAAO5G,KAAK,EAC7B5S,EAAI,EAAG2Z,EAAMD,EAAK/Z,OAAQK,EAAI2Z,EAAK3Z,CAAC,GACzC4Z,WAAS,SAAUH,EAAS,IAAMzZ,EAAG0Z,EAAK1Z,EAAE,CAEpD,CAQO,SAAS6Z,GAAczI,GAC1B,IAAK,IAAIpR,EAAI,EAAGA,EAAIoR,EAAKzR,OAAQK,CAAC,GAAI,CAClC,IAAI8Z,EAAc,IAAI5D,KAAK1K,WAAS,cAAe4F,EAAKpR,EAAE,CAAC,EACvD+Z,EAAe,IAAI7D,KAAK1K,WAAS,eAAgB4F,EAAKpR,EAAE,CAAC,EAC7D4Z,WAAS,cAAeE,EAAa1I,EAAKpR,EAAE,EAC5C4Z,WAAS,eAAgBG,EAAc3I,EAAKpR,EAAE,EAEtD,CASO,SAASiZ,EAAczL,EAAQjC,GAC9ByO,EAASxM,EAAOyM,UAAUC,YAAY3O,CAAI,EAC9C,MAAmB,KAAXyO,EAAiBzO,EAAOyO,CACpC,CASO,SAASG,GAAY3M,EAAQ4M,GAC5BC,EAAW7M,EAAO6M,SAEtB,OADYzO,oBAAMyO,CAAQ,GAAkB,KAAbA,EAAmBD,EAAOC,EAAW,IAAMD,CAE9E,CASO,SAASE,GAAmB9M,EAAQ4D,GAEvC5D,EAAOmF,gBAAkB,CAAA,EACiB,CAAC,IAAvCvB,EAAKb,KAAK9E,GAAGiJ,QAAQ,WAAW,GAAmD,CAAC,IAAxCtD,EAAKb,KAAK9E,GAAGiJ,QAAQ,YAAY,GAA6C,CAAC,IAAlCtD,EAAKb,KAAK9E,GAAGiJ,QAAQ,MAAM,EAUpHlH,EAAO0J,UAAYqD,GAAanJ,EAAKb,KAAK9E,EAAE,EAH5C+B,EAAO4J,OAASmD,GAAanJ,EAAKb,KAAK9E,GAAI+B,CAAM,EAKrDA,EAAO8D,SAAW,CAACmB,EAAcjF,CAAM,GACnB,YAAhBA,EAAO4F,OACH5F,EAAOgN,SACPrH,GAAa3F,EAAQ,SAAS,GAG9BA,EAAOW,OAAOsM,GAAmB,CAAEC,OAAQ,cAAe,EAC1DlN,EAAOmF,gBAAkB,CAAA,IAGb,eAAhBnF,EAAO4F,MACPD,GAAa3F,EAAQ,YAAY,EAErCA,EAAOW,OAAOwM,GAAqB,EAAE,CACzC,CASO,SAASJ,GAAa9O,EAAI+B,GAC7B,IAEIoN,EAFArP,EAAOE,EAAGoP,UAAUpP,EAAGqP,YAAY,GAAG,EAAI,CAAC,EAC3Cna,EAAQ4K,EAKZ,OAHIiC,IACAoN,EAASpN,EAAOuN,oBAAoBC,SAEhCzP,GACJ,IAAK,OACD,IAAK,IAAIvL,EAAI,EAAG2Z,EAAMiB,EAAOjb,OAAQK,EAAI2Z,EAAK3Z,CAAC,GAAI,CAC/C,GAAwB,iBAApB4a,EAAO5a,GAAGW,OAAgD,gBAApBia,EAAO5a,GAAGW,MAAyB,CACzEA,EAAQia,EAAO5a,GAAGW,MAClB,MAGAA,EAAQ,eAGhB,MACJ,IAAK,YACDA,EAAQ,YACR,MACJ,IAAK,aACDA,EAAQ,aACR,MACJ,IAAK,OACDA,EAAQ,OAGhB,OAAOA,CACX,CASO,SAASsa,GAAYzN,EAAQ1B,GAKhC,IAJA,IAAIoP,EAAcpP,EAAK6I,MAAM,GAAG,EAC5BwG,EAAU3N,EAAO4N,aAAazG,MAAM,GAAG,EACvC0G,EAAO7P,WAASgC,EAAOvB,OAAO,GAAIuB,EAAOI,QAAQ,EACjDrO,EAAMqM,oBAAMJ,WAAS,KAAM6P,CAAI,CAAC,EAAI,OAAS,KACxCrb,EAAIkb,EAAYvb,OAAS,EAAGga,EAAMwB,EAAQxb,OAAS,EAAGK,EAAI2Z,EAAK3Z,CAAC,GAAI,CACzE,IAAIsb,EAAgC,KAAnBH,EAAQnb,EAAI,GAAaub,EAAqBC,GAC3D/N,EAA0B,KAAf0N,EAAQnb,GAAa,IAAOwN,EAAO1B,KAAOqP,EAAQnb,GAAK,IAClEqB,EAAOkW,GAAU/J,EAAQjO,EAAK4b,EAAQzN,SAAS1N,EAAE2N,WAAY,EAAE,EAAE,EACjElC,EAAKD,WAAS,SAAUnK,CAAI,EAChCmM,EAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EACvC0J,oBAAkB1L,CAAE,GACrB+B,EAAOvB,OAAOQ,KAAKhB,CAAE,EAEzB+B,EAAO8D,SAAW,CAACjQ,GACnBmM,EAAOrB,UAAUM,KAAKjB,WAAS,OAAQnK,CAAI,CAAC,EAC5CkQ,EAAK/D,EAAQ8N,EAAW9N,EAAO1B,IAAI,EACnC,MAER,CASO,SAAS2P,GAAiBjO,EAAQnM,GACrCmM,EAAO4N,aAAezE,GAAYnJ,EAAQnM,EAAMmM,EAAO1B,IAAI,EAC3D,IAAIuP,EAAO7P,WAASgC,EAAOvB,OAAO,GAAIuB,EAAOI,QAAQ,EACjD8N,EAAUlO,EAAOI,SAASpC,WAAS,SAAUgC,EAAO8D,SAAS,EAAE,GAC/DqK,EAASxE,oBAAkBuE,CAAO,GAAqC,YAAhClQ,WAAS,SAAUkQ,CAAO,EAEjEE,EAAarE,GAAU/J,EADjB5B,oBAAMJ,WAAS,KAAM6P,CAAI,CAAC,EAAI,OAAS,KACThK,EAAiB7D,CAAM,EAAIhC,WAAS,KAAMnK,CAAI,EAAImK,WAAS,OAAQnK,CAAI,CAAC,EAChH,GAAI8V,oBAAkByE,CAAU,EAAG,CAC/B,GAAKD,EAKD,OADAV,KAAAA,GAAYzN,EAAQA,EAAO1B,IAAI,EAH/B0B,EAAOW,OAAO0N,GAAsB,CAAEC,aAActO,EAAOvB,OAAOuB,EAAOvB,OAAOtM,OAAS,GAAI,MAOhG,CACG8L,EAAKD,WAAS,SAAUoQ,CAAU,EACtCpO,EAAO3B,cAAc,CAAEC,KAAM0B,EAAO4N,cAAgB,CAAA,CAAI,EACxD5N,EAAOvB,OAAOQ,KAAKhB,CAAE,EACrB+B,EAAO8D,SAAW,CAACsK,GACnBpO,EAAOrB,UAAUM,KAAKjB,WAAS,OAAQoQ,CAAU,CAAC,EAEtDrK,EAAK/D,EAASA,EAAO1B,OAAS0B,EAAO4N,aAAgBI,GAAoBD,EAAoB/N,EAAO1B,IAAI,CAC5G,CAQO,SAASiQ,GAAavO,GAEzB,IACQ1B,EAFR0B,EAAOwO,WAAa,CAAA,EACgB,IAAhCxO,EAAOQ,cAAcrO,QAAgB6N,EAAOU,cACxCpC,EAA8B,KAAtB0B,EAAOyO,WAAqBzO,EAAO1B,KAAO0B,EAAOyO,WACjC,mBAAxBzO,EAAOmB,cAAsCnB,EAAOQ,cAAc,GAAGkO,SAAS,GAAG,IACjF1O,EAAOoB,WAAauN,GAAc3O,EAAQA,EAAOS,cAAc,EAAE,GAErDmO,GAAkB5O,EAAQA,EAAOS,cAAenC,EAAM0B,EAAO1B,IAAI,IAElD,SAAtB0B,EAAO6G,YAAyB7G,EAAOoB,aAAe9C,GAA+B,SAAtB0B,EAAO6G,YACvE7G,EAAOW,OAAOkO,GAAkB,EAAE,EAClCC,GAAM9O,EAAQA,EAAOoB,WAAYpB,EAAOQ,cAAelC,EAAM0B,EAAO6G,WAAY,GAAI7G,EAAOS,aAAa,IAGxGT,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOC,GAAkB,EAAE,EAClCL,EAAWP,CAAM,EASjB+O,EAAa/O,EAAQ,QARR,CACToF,MAAO,KACPN,MAAO,CACHkK,KAAM,MACNC,QAASxD,EAAczL,EAAQ,mBAAmB,EAClDkP,WAAY,MAGgB,IAIpD,CAWO,SAASN,GAAkB5O,EAAQnM,EAAMsJ,EAAUgS,GAEtD,IADA,IAAIC,EAAY,CAAA,EACP5c,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAKwL,WAAS,SAAUnK,EAAKrB,EAAE,EAgB1B,CACD,IAAI6c,EAASrP,EAAOsP,SAAS9c,GAAKwN,EAAOsP,SAAS9c,GAAG8W,KAAO,KACxDiG,EAAU1L,EAAiB7D,CAAM,EAAIqP,EAASrP,EAAOwP,UAAUhd,GAC/D2Z,EAAM,EAIN7N,EAAO,GAIX,IAFIA,EADM,GAHN6N,EADAoD,EACMA,EAAQjC,YAAY,GAAG,EAG7BnB,GACOgD,EAAWI,EAAQlC,UAAU,EAAGlB,EAAM,CAAC,EAE9C7N,KAASnB,EAAU,CASnB4R,EAAa/O,EAAQ,QARR,CACToF,MAAO,KACPN,MAAO,CACHkK,KAAM,MACNC,QAASxD,EAAczL,EAAQ,mBAAmB,EAClDkP,WAAY,MAGgB,EACpCE,EAAY,CAAA,EACZ,WAtC0B,CAC1BK,EAAatG,GAAYnJ,EAAQnM,EAAKrB,GAAI2c,CAAQ,EACtD,GAAqC,IAAjChS,EAAS+J,QAAQuI,CAAU,EAAS,CASpCV,EAAa/O,EAAQ,QARR,CACToF,MAAO,KACPN,MAAO,CACHkK,KAAM,MACNC,QAASxD,EAAczL,EAAQ,kBAAkB,EACjDkP,WAAY,MAGgB,EACpCE,EAAY,CAAA,EACZ,OA6BZ,OAAOA,CACX,CAQO,SAASM,GAAY1P,GACxBA,EAAOwO,WAAa,CAAA,EACW,IAA3BxO,EAAOsP,SAASnd,SAChB6N,EAAOmP,SAAWnP,EAAOmP,SAAS1G,QAAQ,MAAO,GAAG,EACpDzI,EAAO7C,SAAW6C,EAAO7C,SAASsL,QAAQ,MAAO,GAAG,EACpCmG,GAAkB5O,EAAQA,EAAOsP,SAAUtP,EAAO7C,SAAU6C,EAAOmP,QAAQ,GACxEnP,EAAOmP,WAAanP,EAAO7C,WAC1C6C,EAAO8D,SAAW,CAAC9D,EAAO2P,UAC1Bb,GAAM9O,EAAQA,EAAOmP,SAAUnP,EAAOwP,UAAWxP,EAAO7C,SAAU,OAAQ,GAAI6C,EAAOsP,QAAQ,EAC7FtP,EAAOW,OAAOkO,GAAkB,EAAE,GAG9C,CAQO,SAASxN,GAAcuO,GAG1B,IAFA,IAAItR,EAAOsR,EAAQzI,MAAM,GAAG,EACxBlH,EAAU3B,EAAK,GAAK,IACf9L,EAAI,EAAGA,EAAI8L,EAAKnM,OAAS,EAAGK,CAAC,GAClCyN,GAAW3B,EAAK9L,GAAK,IAEzB,OAAOyN,CACX,CASO,SAAS4P,GAAiB7P,EAAQ4D,GACrC,IAAIwF,EAAWpL,WAASgC,EAAOxB,MAAQ,KAAO,OAAQoF,EAAKkM,GAAG,EAAI,IAC9DlI,EAAQ5J,WAASgC,EAAOxB,OAAS,CAACmL,oBAAkB3J,EAAOqI,aAAaC,GAAG,EAAI,WAAa,aAAc1E,EAAKkM,GAAG,EAItH,MAHI,CAAC1R,oBAAMwJ,CAAK,GAAK/D,EAAiB7D,CAAM,GAAe,KAAV4H,GAA0B,OAAVA,IAC7DA,EAAQ,KAAOhE,EAAKkM,IAAInN,SAAW,MAElCvE,oBAAMwJ,CAAK,EAOL/D,EAAiB7D,CAAM,EAAIoJ,EAAWpJ,EAAO1B,KAAO8K,EAN7C,KAAVxB,EACO,IAEJA,EAAMa,QAAQ,MAAO,GAAG,EAAEA,QAAQ,aAAc,EAAE,EAAIW,CAKrE,CAUO,SAAS2G,GAAc/P,EAAQgQ,EAAWhE,GAC3B,SAAdgE,IACKhQ,EAAOwO,WAMRxO,EAAOW,OAAOsP,GAAgBjE,CAAM,GALpChM,EAAOU,YAAc,CAAA,EACrBV,EAAOW,OAAOC,GAAkB,EAAE,EAClCZ,EAAOW,OAAOuP,GAAelE,CAAM,IAMN,IAAjChM,EAAOmQ,eAAehe,SACtB6N,EAAOoQ,WAAa,IAGxB,IADA,IACSC,EAAQ,EAAIA,EAAQrE,EAAO5G,MAAMjT,OAAkBke,CAAK,GAC7DrQ,EAAOoQ,WAAWnR,KAAK+M,EAAO5G,MAAMiL,GAAOrQ,EAAOxB,MAAQ,KAAO,OAAO,EACpEwB,EAAOwO,YACPxO,EAAOsQ,eAAerR,KAAK+M,EAAO5G,MAAMiL,EAAM,EAGtDrQ,EAAOmQ,eAAiB,GACxBnQ,EAAOuQ,iBAAmB,GACtBvQ,EAAOwO,YAAc,CAACxO,EAAOwQ,aAC7BxQ,EAAOyQ,UAAY,CAAA,EAGnBzQ,EAAOyQ,UAAY,CAAA,EAEvBzQ,EAAO+H,QAAQ,UAAW,CAAEjH,OAAQkP,EAAWhE,OAAQA,EAAQ,EAC3D,CAAChM,EAAOwO,YAAexO,EAAO1B,OAAS0B,EAAOmP,UAAcnP,EAAO1B,OAAS0B,EAAO7C,UAChF6C,EAAO0Q,cACV1Q,EAAO2Q,WAAa,CAAA,EACpB5M,EAAK/D,EAAQ4Q,GAAiB5Q,EAAO1B,IAAI,GAGzCuS,GAAa7Q,CAAM,CAE3B,CAQO,SAAS6Q,GAAa7Q,GACzB,IAYYnC,EAZRY,EAAST,WAAS,SAAUgC,EAAO2P,QAAQ,EAC/C3P,EAAO8Q,WAAarS,EACpBuB,EAAO8D,SAAW,CAAC9D,EAAO2P,UACtB3P,EAAO2Q,WACP3Q,EAAOW,OAAOoQ,GAAiB/Q,EAAO8D,QAAQ,GAG1C9D,EAAOP,wBACH5B,EAAOwM,SAAO,cAAgB5L,EAAS,KAAMuB,EAAOP,qBAAqBC,QAAQb,OAAO,KAGxFJ,EADgBuS,SAASnG,cAAc,eAAiB7M,WAAS,KAAMgC,EAAO2P,QAAQ,EAAI,IAAI,EAC3EzR,aAAa,UAAU,EAC1CL,EAAOwM,SAAO,cAAgB5L,EAAS,KAAMuB,EAAOP,qBAAqBC,QAAQb,OAAO,GAE5FjB,GAAWC,EAAMmC,EAAO2P,SAAU3P,CAAM,GAE5C+D,EAAK/D,EAAQiR,GAAiBjR,EAAO7C,QAAQ,EAErD,CASO,SAAS+T,GAAiBlR,EAAQsJ,GAGrC,IAFA,IAAIzV,EAAO,KACPsd,EAAUnR,EAAOwO,WAAaxO,EAAOsP,SAAWtP,EAAOS,cAClDjO,EAAI,EAAGA,EAAI2e,EAAQhf,OAAQK,CAAC,GACjC,GAAIwL,WAAS,OAAQmT,EAAQ3e,EAAE,IAAM8W,EAAM,CACvCzV,EAAOsd,EAAQ3e,GACf,MAGR,OAAOqB,CACX,CAQO,SAASud,GAAyBpR,GAKrC,GAJAA,EAAO0Q,aAAe,CAAA,EACqC,KAAvD1Q,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,QAC7C5B,EAAO0Q,aAAe,CAAA,GAEE,mBAAxB1Q,EAAOmB,aAAmC,CAC1CnB,EAAOwP,UAAY,GAEnB,IADA,IAAIhd,EAAI,EACDA,EAAIwN,EAAO+B,cAAc5P,QAC5B6N,EAAOwP,UAAUvQ,KAAKe,EAAO+B,cAAcvP,EAAE,EAC7CA,CAAC,GAE+B,IAAhCwN,EAAO+B,cAAc5P,QAAgB6N,EAAOsP,UAAuC,IAA3BtP,EAAOsP,SAASnd,QACxE6N,EAAOwP,UAAUvQ,KAAKoS,GAAYrR,EAAQA,EAAOsP,SAAS,EAAE,CAAC,EAGrE,IAAIgC,EAAYtR,EAAOgL,cAAc,MAAO,CACxCC,UAAW,aAAelE,GAAS/G,EAAOsP,SAAS,EAAE,EACxD,EACGiC,EAAYvR,EAAOgL,cAAc,MAAO,CACxCC,UAAW,YACXO,UAAWxL,EAAOsP,SAAS,GAAGhG,KACjC,EACGkI,EAAaxR,EAAOgL,cAAc,MAAO,CACzCC,UAAW,eACd,EAGGwG,GAFJD,EAAWjG,YAAY+F,CAAS,EAChCE,EAAWjG,YAAYgG,CAAS,EACtBvR,EAAOgL,cAAc,MAAO,CAClCC,UAAWyG,GACd,GACDD,EAAIlG,YAAYiG,CAAU,EACI,EAA1BxR,EAAOwP,UAAUrd,SACbwf,EAAQ3R,EAAOgL,cAAc,OAAQ,CACrCC,UAAW,aACXO,UAAYxL,EAAOwP,UAAgB,OAAErP,SAAS,EAAE,EACnD,EACDsR,EAAIlG,YAAYoG,CAAK,GAEzB3R,EAAO4R,mBAAqBH,EAC5BzR,EAAOnB,QAAQ0M,YAAYvL,EAAO4R,kBAAkB,CACxD,CASO,SAASC,GAAgB7R,EAAQ4D,GACpC,IAAIkO,EAAWlO,EAUX4N,GATJM,EAASC,OAAS,CAAA,EACY,MAA1B/R,EAAOgS,kBACPC,OAAOC,aAAalS,EAAOgS,eAAe,EAC1ChS,EAAOgS,gBAAkB,MAE7BG,GAAiBnS,CAAM,EACvBA,EAAOnB,QAAQe,UAAU0C,OAAO,YAAa,WAAW,EACxD/B,EAAWP,CAAM,EACjBA,EAAO0L,UAAUC,SAAWtB,SAAO,IAAMrK,EAAOnB,QAAQZ,GAAKmU,GAAgBpS,EAAOnB,OAAO,EAC1EwL,SAAO,IAAMqH,GAAW1R,EAAOnB,OAAO,GACnD2S,GACAa,SAAOb,CAAU,EAErB1L,GAAgB9F,EAAQ4D,EAAK9R,MAAM,EACnCkO,EAAOW,OAAO2R,GAAiB1O,CAAI,EACnCrD,EAAWP,EAAQ,OAAO,EAC1B8R,EAAS7J,YAAcjI,EAAOsP,SAC9BtP,EAAO+H,QAAQ,eAAgB+J,EAAU,SAAUA,GAC3C,CAACA,EAASC,QAAU,CAAC3T,oBAAM4B,EAAOoG,YAAY,GAA6B,KAAxBpG,EAAOoG,cAA0C,EAAnBpG,EAAOuS,WACxF7C,GAAY1P,CAAM,EAEtBA,EAAOuS,UAAY,EACtB,CACL,CAUO,SAASC,GAAiBxS,EAAQ4D,EAAM6O,GAC3C,IAAIX,EAAWlO,EAiBf,GAhBAkO,EAASC,OAAS,CAAA,EAClBD,EAAS7J,YAAcjI,EAAOsP,SAC9BtP,EAAOuS,UAAY,EACnBvS,EAAOsQ,eAAiB,GACnBtQ,EAAO0S,mBAA8C,mBAAxB1S,EAAOmB,cACpCqB,UAAQoB,EAAK/E,QAAS,IAAI,EAAEX,aAAa,UAAU,IAAM8B,EAAOvB,OAAO,MACxEqT,EAASC,OAAS,CAAA,GAEO,mBAAxB/R,EAAOmB,cACyE,CAAC,IAAjFnB,EAAOvB,OAAOyI,QAAQ1E,UAAQoB,EAAK/E,QAAS,IAAI,EAAEX,aAAa,UAAU,CAAC,EAC3E8B,EAAO2Q,WAAa,CAAA,EAGpB3Q,EAAO2Q,WAAa,CAAA,EAExBpQ,EAAWP,CAAM,EACb8R,EAASC,OACTU,EAAQE,WAAW/O,EAAKgP,KAAK,EAC7BC,GAAW7S,CAAM,OAEhB,GAAI,CAAC8R,EAASC,OAAQ,CAEvB,IADA,IAAIvf,EAAI,EACDA,EAAIwN,EAAOgB,eAAe7O,QAC7BoP,GAAQvB,EAAOgB,eAAexO,EAAE,EAChCA,CAAC,GAELwN,EAAO+H,QAAQ,gBAAiB+J,EAAU,SAAUA,GAC5CA,EAASC,QACTU,EAAQE,WAAW/O,EAAKgP,KAAK,EAC7BC,GAAW7S,CAAM,GAGjBA,EAAO0L,UAAUC,SAAW,KAEnC,EAET,CAQO,SAASkH,GAAW7S,GACvBO,EAAWP,CAAM,EACbwR,EAAanH,SAAO,IAAMqH,GAAW1R,EAAOnB,OAAO,EACnD2S,GACAa,SAAOb,CAAU,CAEzB,CAQO,SAASW,GAAiBnS,GAC7B8S,GAAgB9S,EAAQ+S,EAAe,EACvCD,GAAgB9S,EAAQgT,EAAa,CACzC,CASO,SAASF,GAAgB9S,EAAQ4B,GAEpC,IADA,IAAI6P,EAAMzR,EAAOnB,QAAQuD,iBAAiB,IAAMR,CAAK,EAC5CpP,EAAI,EAAGA,EAAIif,EAAItf,OAAQK,CAAC,GAC7Bif,EAAIjf,GAAGoN,UAAU0C,OAAOV,CAAK,CAErC,CAWO,SAASqR,GAAcC,EAAclT,EAAQmT,EAAWC,GAC3D,IAAIC,EACAC,EAAcJ,EAAaK,wBAC3B1V,EAAOwM,SAAO,IAAM8I,EAAWD,CAAY,EAC1CE,GAAYE,EAAY5I,IAAMwI,EAAaM,aAAe,IAAQ,CAAC7J,oBAAkB9L,CAAI,IAC1FwV,EAAoC,mBAAxBrT,EAAOoG,cAA6D,gBAAxBpG,EAAOoG,aAAkCvI,EAAK4M,aAAe,IAAM5M,EAAK4M,aAAe,IAC/IyI,EAAaO,SAAS,EAAGJ,CAAQ,GAEjC,CAAC1J,oBAAkB9L,CAAI,GAAMuV,GAAYE,EAAY5I,IAAM,KAC3D2I,EAAoC,mBAAxBrT,EAAOoG,cAA6D,gBAAxBpG,EAAOoG,aAAkCvI,EAAK4M,aAAe,IAAM5M,EAAK4M,aAAe,IAC/IyI,EAAaO,SAAS,EAAG,CAACJ,CAAQ,EAE1C,CASO,SAASK,GAAgB1T,EAAQ4D,GACpC,IAAIkO,EAAWlO,EAEX+P,GADJ7B,EAAS7J,YAAcjI,EAAOsP,SAChB,CAAA,GAQVzR,GAPJiI,GAAgB9F,EAAQ4D,EAAK9R,MAAM,EACnCqgB,GAAiBnS,CAAM,EACO,MAA1BA,EAAOgS,kBACPC,OAAOC,aAAalS,EAAOgS,eAAe,EAC1ChS,EAAOgS,gBAAkB,MAE7BzR,EAAWP,EAAQ,OAAO,EACf,MAEiB,mBAAxBA,EAAOoG,eACPvI,EAAO2E,UAAQoB,EAAK9R,OAAQ,IAAI,GAC3B8N,UAAUqC,IAAII,GAAW0Q,EAAe,EAC7CY,EAAU,CAAA,EAEV3T,EAAOgS,gBAAkBC,OAAO2B,WAAW,WAAc5T,EAAOW,OAAOkT,GAAiBjQ,CAAI,GAAM,GAAG,EAErGqP,GADejT,EAAOP,qBAAqBC,QAAQb,QAAQiV,cAC/B9T,EAAQ,YAAa4D,EAAKgP,MAAMmB,CAAC,GAEhC,gBAAxB/T,EAAOoG,eACZvI,EAAO2E,UAAQoB,EAAK9R,OAAQ,IAAI,IACpB+L,EAAKgN,cAAc,IAAMrD,EAAU,GAAK,CAAC3J,EAAK+B,UAAUC,SAASqC,EAAQ,EACjFrE,EAAK+B,UAAUqC,IAAI8Q,EAAe,EAE7BlV,CAAAA,GAASA,EAAKgN,cAAc,IAAMrD,EAAU,GAAM3J,EAAK+B,UAAUC,SAASqC,EAAQ,GACvFrE,EAAK+B,UAAUqC,IAAI+Q,EAAa,EAEpCW,EAAU,CAAA,EAEVV,GADejT,EAAOsF,kBAAkBC,QAAQ1G,QAAQgM,cAAc,YAAY,EACtD7K,EAAQ,QAAS4D,EAAKgP,MAAMmB,CAAC,GAE5B,mBAAxB/T,EAAOoG,eACZvI,EAAO2E,UAAQoB,EAAK9R,OAAQ,IAAI,IACpB+L,EAAKgN,cAAc,IAAMrD,EAAU,GAAK,CAAC3J,EAAK+B,UAAUC,SAASqC,EAAQ,GACjFrE,EAAK+B,UAAUqC,IAAII,GAAW0Q,EAAe,EAEjDY,EAAU,CAAA,EAEVV,GADejT,EAAOyF,qBAAqB5G,QAAQmV,kBACvBhU,EAAQ,eAAgB4D,EAAKgP,MAAMmB,CAAC,GAGnC,kBAAxB/T,EAAOoG,eACZuN,EAAU,CAAA,GAEd3T,EAAOnB,QAAQe,UAAU0C,OAAO,YAAa,WAAW,EACxDtC,EAAOnB,QAAQe,UAAUqC,IAAI0R,EAAU,YAAc,WAAW,EAChE3T,EAAOuS,UAAYvS,EAAOuS,UAAY,EACtCvS,EAAO+H,QAAQ,eAAgB+J,CAAQ,CAC3C,CASO,SAASmC,GAAepgB,GAG3B,IAFA,IAAIqgB,EAAM,GACNC,EAAOpjB,OAAOojB,KAAKtgB,CAAI,EAClBrB,EAAI,EAAGA,EAAI2hB,EAAKhiB,OAAQK,CAAC,GACd,YAAZ2hB,EAAK3hB,KACL0hB,IAAc,IAAN1hB,EAAU,GAAK,MAAQ2hB,EAAK3hB,GAAK,KAAOwL,WAASmW,EAAK3hB,GAAIqB,CAAI,GAG9E,OAAOqgB,CACX,CASO,SAAS7C,GAAYrR,EAAQnM,GAChC,OAAImM,EAAOxB,MACAR,WAAS,KAAMnK,CAAI,EAEvBwV,GAAQrJ,EAAQnM,CAAI,CAC/B,CASO,SAASugB,GAAmBpU,EAAQnM,GACvCmM,EAAO8D,SAAW,CAACjQ,GACnBmM,EAAOqU,gBAAkBrW,WAAS,OAAQnK,CAAI,EAC9CmM,EAAOsU,OAAStW,WAAS,SAAUnK,CAAI,EACvCmM,EAAOuU,WAAavW,WAAS,aAAcnK,CAAI,CACnD,CAQO,SAAS2gB,GAASxU,GAChByU,EAAczU,EAAO8D,SAAS,EAAE,EAIjCiL,EAAa/O,EAAQ,QAAQ,EAH7BwG,EAAmBxG,EAAQA,EAAO8D,SAAS,GAAI4Q,CAAqB,CAK5E,CASO,SAASC,GAAW3U,GAEvB,IADA,IAAIwJ,EAAQxJ,EAAO8D,SACVtR,EAAI,EAAGA,EAAIgX,EAAMrX,OAAQK,CAAC,GAC/B,GAAI,CAACoiB,GAAkBpL,EAAMhX,EAAE,EAE3B,OADAgU,KAAAA,EAAmBxG,EAAQwJ,EAAMhX,GAAIqiB,EAAyB,EAIpC,EAA9B7U,EAAO+B,cAAc5P,QACrB2iB,GAAS9U,EAAQA,EAAO1B,KAAM0B,EAAO+B,aAAa,CAE1D,CAUO,SAASgT,GAAc/U,EAAQnM,EAAMmhB,GACxC,IAAK,IAAIxiB,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAI,CAACiiB,EAAc5gB,EAAKrB,EAAE,EAEtB,OADAgU,KAAAA,EAAmBxG,EAAQnM,EAAKrB,GAAIkiB,CAAqB,EAIjE1U,EAAO8D,SAAWjQ,EAClBohB,GAAOjV,EAAQgV,EAAQhV,EAAO1B,KAAM,QAAQ,CAChD,CAWO,SAAS4W,GAAgBlV,EAAQnM,EAAMmhB,GAC1C,IAAK,IAAIxiB,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAI,CAACoiB,GAAkB/gB,EAAKrB,EAAE,EAE1B,OADAgU,KAAAA,EAAmBxG,EAAQnM,EAAKrB,GAAIqiB,EAAyB,EAIrE7U,EAAO8D,SAAWjQ,EACE,EAAhBmhB,EAAO7iB,QACP2iB,GAAS9U,EAAQA,EAAO1B,KAAM0W,CAAM,CAE5C,CAUO,SAASxO,EAAmBxG,EAAQnM,EAAMiN,GAC7C,IAAIqU,EAAanX,WAAS,aAAcnK,CAAI,EACxCob,EAAUjR,WAAS,UAAWmX,CAAU,EACxCC,EAA8D,IAAhDpX,WAAS,sBAAuBmX,CAAU,EAAU,gBAAkB,cAmBxFpG,EAAa/O,EAAQ,QAPN,CACX8E,MAAO,CACHkK,KAAM,MACNE,WAAY,KACZD,QAbAA,EAFQ,KAAZA,EACI,CAAC7Q,oBAAM+W,CAAU,GAAKnX,WAAS,SAAUmX,CAAU,GAAqD,IAAhDnX,WAAS,sBAAuBmX,CAAU,EACxF1J,EAAczL,EAAQ,6BAA6B,EAAEyI,QAAQ,MAAOzK,WAAS,OAAQnK,CAAI,CAAC,EAAE4U,QAAQ,MAAO2M,CAAW,EAE3H,CAAChX,oBAAM+W,CAAU,GAAKnX,WAAS,SAAUmX,CAAU,GAAqD,IAAhDnX,WAAS,sBAAuBmX,CAAU,EAC7F1J,EAAczL,EAAQ,2BAA2B,EAAEyI,QAAQ,MAAOzK,WAAS,OAAQnK,CAAI,CAAC,EAAE4U,QAAQ,MAAO2M,CAAW,EAGpH3J,EAAczL,EAAQ,gBAAgB,EAAEyI,QAAQ,MAAOzK,WAAS,OAAQnK,CAAI,CAAC,EAAE4U,QAAQ,MAAO3H,CAAM,EAOrGmO,GAGqB,CAC1C,CAQO,SAASoG,GAAexhB,GAC3B,OAAQyS,GAAczS,CAAI,EAAgC,cAA5B,yBAClC,CAQO,SAASyS,GAAczS,GACtBshB,EAAanX,WAAS,aAAcnK,CAAI,EAC5C,MAAO,EAACshB,GAAenX,CAAAA,WAAS,OAAQmX,CAAU,EACtD,CAQO,SAASV,EAAc5gB,GACtBshB,EAAanX,WAAS,aAAcnK,CAAI,EAC5C,MAAOshB,CAAAA,GAAenX,WAAS,OAAQmX,CAAU,GAAKnX,WAAS,QAASmX,CAAU,CACtF,CAQO,SAASG,GAAiBzhB,GACzBshB,EAAanX,WAAS,aAAcnK,CAAI,EAC5C,MAAOshB,CAAAA,GAAenX,WAAS,OAAQmX,CAAU,GAAKnX,WAAS,gBAAiBmX,CAAU,CAC9F,CAQO,SAASI,GAAgB1hB,GACxBshB,EAAanX,WAAS,aAAcnK,CAAI,EAC5C,MAAOshB,CAAAA,GAAenX,WAAS,OAAQmX,CAAU,GAAKnX,WAAS,SAAUmX,CAAU,CACvF,CAQO,SAASP,GAAkB/gB,GAC1BshB,EAAanX,WAAS,aAAcnK,CAAI,EAC5C,MAAOshB,CAAAA,GAAenX,WAAS,OAAQmX,CAAU,GAAKnX,WAAS,WAAYmX,CAAU,CACzF,CAQO,SAASK,GAAgBxV,GAC5B,IAAIyV,EAAUzV,EAAO8D,SAAS,GACzBwR,GAAiBG,CAAO,EAIzB1G,EAAa/O,EAAQ,WAAW,EAHhCwG,EAAmBxG,EAAQyV,EAASC,EAA6B,CAKzE,CAQO,SAASC,GAAW3V,GACvB,IAKQ4V,EALJH,EAAUzV,EAAO8D,SAAS,GACzByR,GAAgBE,CAAO,GAIpBG,EAAQ,IAAM5V,EAAOnB,QAAQZ,GAAK4X,GACtB7E,SAASnG,cAAc+K,CAAK,EAClCE,SALVtP,EAAmBxG,EAAQyV,EAASM,EAAuB,CAOnE,CAQO,SAASC,GAAWhW,GAClB2J,oBAAkB3J,EAAOiW,SAAS,GACnCjW,EAAOiW,UAAUC,MAEzB,CASO,SAASvH,GAAc3O,EAAQ8D,GAClC,OAAI9D,EAAOxB,OAAS,CAACJ,oBAAMJ,WAAS,WAAY8F,CAAQ,CAAC,EAC9C9F,WAAS,WAAY8F,CAAQ,EAAE2E,QAAQ,MAAO,GAAG,EAAEA,QAAQ,WAAY,GAAG,EAG1EzK,WAAS,aAAc8F,CAAQ,EAAE2E,QAAQ,MAAO,GAAG,CAElE,CAWO,SAAS0N,GAAiBnW,EAAQ8D,EAAUhD,EAAQsV,GAEvD,IADA,IAAIC,EAAgB,GACX7jB,EAAI,EAAGA,EAAIsR,EAAS3R,OAAQK,CAAC,GAAI,CACtC,IAaQ8jB,EAbJnB,EAAanX,WAAS,aAAc8F,EAAStR,EAAE,EAqBnD,GApBkB,MAAd2iB,IACAA,EAAaoB,KAAAA,GAEbH,EACIjB,CAAAA,GAAgBnX,WAAS,OAAQmX,CAAU,GAAMnX,WAAS,gBAAiBmX,CAAU,GAE/D,MADtBkB,EAAgBrY,WAAS,UAAWA,WAAS,aAAc8F,EAAStR,EAAE,CAAC,KAEnE6jB,EAAgB5K,EAAczL,EAAQ,gBAAgB,EAAEyI,QAAQ,MAAOzK,WAAS,OAAQ8F,EAAStR,EAAE,CAAC,EAAEiW,QAAQ,MAAO,eAAe,IAKxI6N,EAAkC,SAAXxV,EAAoB9C,WAAS,OAAQmX,CAAU,EAAInX,WAAS,QAASmX,CAAU,EACtGA,CAAAA,GAAgBnX,WAAS,OAAQmX,CAAU,GAAMmB,GAE3B,MADtBD,EAAgBrY,WAAS,UAAWA,WAAS,aAAc8F,EAAStR,EAAE,CAAC,KAEnE6jB,EAAgB5K,EAAczL,EAAQ,gBAAgB,EAAEyI,QAAQ,MAAOzK,WAAS,OAAQ8F,EAAStR,EAAE,CAAC,EAAEiW,QAAQ,MAAO3H,CAAM,IAIjH,KAAlBuV,EAAsB,CACtBrW,EAAO6E,aAAe,CAClBiL,IAAK,KACL2F,QAAS,KACT3Q,MAAO,CACHkK,KAAM,MACNC,QAASoH,EACTnH,WAAY,MAEhB9J,MAAO,MAEX,OAGR,OAAOiR,CACX,CCxrDO,SAAStS,EAAK/D,EAAQ4S,EAAOtU,GAEhC,IADA,IAAIwF,EAAW9D,EAAO8D,SACbtR,EAAI,EAAGA,EAAIsR,EAAS3R,OAAQK,CAAC,GAC9B4L,oBAAMJ,WAAS,WAAY8F,EAAStR,EAAE,CAAC,GACvC4Z,WAAS,WAAY,CAAA,EAAOtI,EAAStR,EAAE,EAI/CgkB,GAAWxW,EADA,CAAEc,OAAQ,OAAQxC,KAAMA,EAAM0G,gBAAiBhF,EAAOgF,gBAAiBnR,KAAMiQ,GAC/D2S,GAAa7D,CAAK,CAC/C,CASO,SAAS8D,GAAa1W,EAAQ2W,GAEjCH,GAAWxW,EADA,CAAEc,OAAQ,SAAUxC,KAAM0B,EAAO1B,KAAMgL,KAAMqN,EAAU9iB,KAAMmM,EAAO8D,UACtD8S,GAAeD,CAAQ,CACpD,CASO,SAAS7T,GAAO9C,EAAQ4S,GAC3B,IAAI/e,EAAO,CAAEiN,OAAQ,SAAUxC,KAAM0B,EAAO1B,KAAM0G,gBAAiBhF,EAAOgF,gBAAiBnR,KAAM,CAACoR,EAAcjF,CAAM,IAElH6W,EAAgB7W,EAAO8W,WAAaC,SADpCD,KAAAA,EACuDjjB,EAAMmM,EAAO8W,UAAU,EAAIjjB,EACtF2iB,GAAWxW,EAAQ6W,EAAeG,GAAepE,EAAO5U,WAAS,SAAU6Y,CAAa,CAAC,CAC7F,CAUO,SAASI,GAAOjX,EAAQ1B,EAAM4Y,GACjC,IAAI5N,EAUI6N,EAAAA,EARmD,KAAvDnX,EAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiB5B,CAAAA,EAAO6B,aAKjE+F,EAAQ5H,EAAOuU,WACfvU,EAAOxB,QALX8K,EAAOtJ,EAAOqU,gBACJ6C,IAUN5N,GADA1B,EAAQA,EAAMa,QAAQ,MAAO,GAAG,GACnBA,QAAQnK,EAAM,EAAE,EAAI0B,EAAOqU,gBAC9BzM,EAAMa,QAAQnK,EAAM,EAAE,EAAI4Y,GAM5CV,GAAWxW,EAHA,CACPc,OAAQ,SAAUxC,KAAMA,EAAMgL,KAAMA,EAAM6N,QAASA,EAAStjB,KAAMmM,EAAO8D,SAAUsT,kBAAmBpX,EAAOoX,mBAExFC,GAAe/Y,CAAI,CAChD,CAcO,SAASwQ,GAAM9O,EAAQ1B,EAAMY,EAAOkC,EAAYkW,EAAgBC,EAAa9W,GAC5E5M,EAAO,CACPiN,OAAQwW,EAAgBhZ,KAAMA,EAAMkZ,WAAYxX,EAAO8D,SAAS,GAChE1C,WAAYA,EAAYlC,MAAOA,EAAOuY,YAAaF,EAAa1jB,KAAM4M,GAE1ET,EAAO0X,gBAAkBtW,EACzBoV,GAAWxW,EAAQnM,EAAM8jB,GAAcrZ,EAAMgZ,EAAgBlW,CAAU,CAC3E,CAWO,SAAS6T,GAAOjV,EAAQwJ,EAAOlL,EAAM0R,GAExCwG,GAAWxW,EADA,CAAEc,OAAQkP,EAAW1R,KAAMA,EAAMY,MAAOsK,EAAO3V,KAAMmM,EAAO8D,UAC9C8T,GAAetZ,CAAI,CAChD,CAYO,SAASuZ,GAAW7X,EAAQd,EAAOZ,EAAM0R,GAE5CwG,GAAWxW,EADA,CAAEc,OAAQkP,EAAW1R,KAAMA,EAAMY,MAAOA,EAAOrL,KAAMmM,EAAO8D,UAC9CgU,GAAgBxZ,EAAM0R,CAAS,CAC5D,CAOO,SAASnM,EAAiB7D,GAE7B,OADuD,GAAhCA,EAAO6C,eAAe1Q,QAAeiM,oBAAM4B,EAAOqI,aAAaC,GAAG,CAE7F,CASA,SAASyP,GAAalV,EAAgByG,GAElC,OADezG,EAAemV,KAAK,SAAUjV,GAAQ,OAAOA,EAAKuG,OAASA,EAAO,CAErF,CASA,SAAS2O,GAAcjY,EAAQ/B,GAI3B,OAHY+B,EAAO6C,eAAeqV,UAAU,SAAUnV,GAClD,MAAO,CAAC3E,oBAAM2E,CAAI,GAAKC,OAAOD,EAAK9E,EAAE,IAAM+E,OAAO/E,CAAE,EACvD,CAEL,CASA,SAASka,GAAWnY,EAAQ/B,GAExB,OADW+B,EAAO6C,eAAeC,OAAO,SAAUC,GAAQ,OAAOC,OAAOD,EAAK9E,EAAE,IAAM+E,OAAO/E,CAAE,EAAI,EAAE,EAExG,CASA,SAASma,GAAepY,EAAQ2C,GAE5B,OADW3C,EAAO6C,eAAeC,OAAO,SAAUC,GAAQ,OAAOC,OAAOD,EAAKJ,QAAQ,IAAMK,OAAOL,CAAQ,EAAI,CAElH,CAWA,SAAS0V,GAAcxkB,EAAM/B,EAAQ6kB,EAAU2B,GAC3C,IAESvmB,EAFLwmB,EAAU,GAEd,IAASxmB,KAAO8B,EACR9C,OAAOW,UAAUN,eAAeonB,KAAK3kB,EAAM9B,CAAG,IAC9CwmB,EAAQxmB,GAAO,MAGvB,IAAI0mB,EAAc,IAAI/P,KAClB+F,EAAazL,OAAOlR,EAAOmM,EAAE,IAAM+E,OAAO,CAAC,GAAM5E,oBAAMtM,EAAO6Q,QAAQ,EAA6C,KAAzC7Q,EAAOyiB,WAAaziB,EAAOwX,KAAO,KAkBhH,OAjBAvY,OAAO2nB,OAAOH,EAAS,CACnBI,YAAaF,EACbG,aAAcH,EACdlE,WAAY9F,EACZoK,SAAUP,CAAAA,CAAAA,GAASzkB,EAAKglB,SACxB5a,GAAI6a,SAAoB,OAAbnC,EAAoB9iB,EAAKyV,KAAOqN,CAAQ,EACnDrC,OAAQgE,CAAAA,CAAAA,GAASzkB,EAAKygB,OACtBhL,KAAmB,OAAbqN,EAAoB9iB,EAAKyV,KAAOqN,EACtChU,SAAU7Q,EAAOmM,GACjBnK,KAAMwkB,EAASzkB,EAAKC,KAAO,EAC3BL,KAAM6kB,EAASzkB,EAAKJ,KAAO,GAC9B,EACI2K,oBAAMtM,EAAOinB,QAAQ,GACtBhoB,OAAO2nB,OAAOH,EAAS,CACnBQ,SAAUjnB,EAAOinB,SAAWjnB,EAAOmM,GAAK,IAC3C,EAEEsa,CACX,CAWA,SAASS,GAAkBhZ,EAAQiP,EAASD,EAAMrH,GAC9C3H,EAAO6E,aAAe,CAClBiL,IAAK,KACL2F,QAAS,KACT3Q,MAAO,CACHkK,KAAMA,EACNC,QAASA,EACTC,WAAwB,MAAZvH,EAAmBA,EAAW,MAE9CvC,MAAO,KAEf,CAmFA,SAAS6T,GAAuBjZ,EAAQnM,EAAMgU,GACtCqR,EAAkB,CAClBnH,OAAQ,CAAA,EACRoF,QAASnZ,WAAS,UAAWnK,CAAI,EACjCiQ,SAAU9F,WAAS,OAAQnK,CAAI,EAC/ByK,KAAMN,WAAS,OAAQnK,CAAI,GAE/BmM,EAAO+H,QAAQ,eAAgBmR,EAAiB,SAAUtV,GACtD,IAMYuV,EACAC,EAPRxV,EAAKmO,OACLlK,EAAUkK,OAAS,CAAA,EAGnBlO,EAAiB7D,CAAM,IAClB+X,GAAa/X,EAAO6C,eAAgBe,EAAKuT,OAAO,GAQ7ClI,EAAU,gBAAkBrL,EAAKE,SAAS,GAAGwF,KAAO,KAAO1F,EAAKuT,QAAU,gCAC9E6B,GAAkBhZ,EAAQiP,EAAS,MAAO,IAAI,IAP1CmK,GADAD,EAAWhB,GAAWnY,EAAQ4D,EAAKE,SAAS,GAAG7F,EAAE,GAC9BqL,KACvB6P,EAAS7P,KAAO1F,EAAKuT,QAqBrC,SAASkC,EAAyBrZ,EAAQ2C,EAAUyW,EAASjC,GACzDnX,EAAO6C,eAAeM,QAAQ,SAAUJ,GACpC,IAEQ9C,EAFJ+C,OAAOD,EAAKJ,QAAQ,IAAMK,OAAOL,CAAQ,IACrCiN,EAAU7M,EAAKwR,WACftU,EAAU2P,EAAQnH,QAAQ2Q,EAAU,KAAMjC,EAAU,IAAI,EAC5DpU,EAAKwR,WAAatU,EAClBoZ,EAAyBrZ,EAAQ+C,EAAK9E,GAAImb,EAASjC,CAAO,GAEjE,CACL,EA7ByCnX,EAAQmZ,EAASlb,GAAImb,EAASxV,EAAKuT,OAAO,EACnEnX,EAAO6E,aAAaC,MAAQ,OAOvC,CACL,CA8BA,SAASwU,GAA2BtZ,EAAQnM,EAAMgU,GAC9C,IAAI0R,EAAgB,CAChBxH,OAAQ,CAAA,EACRjO,SAAU9F,WAAS,OAAQnK,CAAI,EAC/BykB,OAAqC,SAA7Bta,WAAS,SAAUnK,CAAI,EAC/ByK,KAAMN,WAAS,OAAQnK,CAAI,EAC3B2jB,WAAYxZ,WAAS,aAAcnK,CAAI,EACvCuN,WAAYpD,WAAS,aAAcnK,CAAI,GAE3CmM,EAAO+H,QAAQ,aAAcwR,EAAe,SAAU3V,GAClD,GAAIA,EAAKmO,OACLlK,EAAUkK,OAAS,CAAA,OAGvB,GAAIlO,EAAiB7D,CAAM,EAAG,CAC1B,IAQYwZ,EARRvK,EAAU,sBACVnO,EAAS9C,WAAS,SAAUnK,CAAI,EAChC4lB,EAAiBtD,GAAiBnW,EAAQ4D,EAAKE,SAAUhD,EAAQ,CAAA,CAAK,EACtE4Y,EAAiBvD,GAAiBnW,EAAQ,CAAC4D,EAAK4T,YAAa1W,EAAQ,CAAA,CAAI,EACzE6Y,EAAS,GAEb,GADA3Z,EAAOoQ,WAAa,GACG,KAAnBqJ,GAA4C,KAAnBC,EAAuB,CAChD,GAAI9V,EAAK0U,OACDkB,EAAmBpB,GAAepY,EAAQ4D,EAAK4T,WAAWvZ,EAAE,EAC5C2F,EAAKE,SACXX,QAAQ,SAAUW,GAC5B,IAGYuL,EAHR,CAAC0I,GAAayB,EAAkB1V,EAASwF,IAAI,GAA4C,EAAvCtL,WAAS,cAAenK,CAAI,EAAE1B,OACrC,EAAvC6L,WAAS,cAAenK,CAAI,EAAE1B,QAC1B+M,EAAQ4E,EAASwF,KAAKnC,MAAM,GAAG,EAC/BkI,EAASvL,EAASwF,KAAKoF,SAAS,GAAG,EAAIxP,EAAM,GAAK,IAAMc,EAAO4Z,kBAAoB,KAAO1a,EAAM,GAAKA,EAAM,GAAK,IAAMc,EAAO4Z,kBAAoB,IACrJC,GAAgB7Z,EAAQ8D,EAAUF,EAAK4T,WAAYnI,CAAM,EACzDrP,EAAO6E,aAAaC,MAAQ,KAC5B9E,EAAO4Z,iBAAiB,IAG5BC,GAAgB7Z,EAAQ8D,EAAUF,EAAK4T,WAAY,IAAI,EAGvDmC,EAAO1a,KAAK6E,EAASwF,IAAI,EAEhC,OAQL,IAFA,IAAIwQ,EAAWlW,EAAK4T,WAChBuC,EAAiB3B,GAAepY,EAAQ8Z,EAAS7b,EAAE,EAC9CzL,EAAI,EAAGA,EAAIoR,EAAKE,SAAS3R,OAAQK,CAAC,GAAI,CAC3C,IAYYwnB,EAKJb,EASIc,EA1BRC,EAAWtW,EAAKE,SAAStR,GACzB,CAACulB,GAAagC,EAAgBG,EAAS5Q,IAAI,GAA4C,EAAvCtL,WAAS,cAAenK,CAAI,EAAE1B,QACzE2nB,EAASjB,WACViB,EAASjB,SAAW,CAACqB,EAAS5F,OAGN,GAFpB6F,EAAana,EAAO6C,eACnBC,OAAO,SAAUC,GAAQ,OAAOC,OAAOD,EAAK9E,EAAE,IAAM+E,OAAO8W,EAAS7b,EAAE,EAAI,GAChE9L,SACXgoB,EAAW,GAAGtB,SAAWiB,EAASjB,WAGrCqB,EAAS5F,SAEN0F,EAAiC,IAAtBE,EAASvX,SAClByV,GAAepY,EAAQka,EAASvX,QAAQ,EAAI,GACnCwV,GAAWnY,EAAQka,EAASvX,QAAQ,EAC1CkW,SAA6B,EAAlBmB,EAAS7nB,QAE7BgnB,EAAWhB,GAAWnY,EAAQka,EAASjc,EAAE,EACF,EAAvCD,WAAS,cAAenK,CAAI,EAAE1B,SAC1B+M,EAAQgb,EAAS5Q,KAAKnC,MAAM,GAAG,EACnC+S,EAAS5Q,KAAO4Q,EAAS5Q,KAAKoF,SAAS,GAAG,EAAIxP,EAAM,GAAK,IAAMc,EAAO4Z,kBAAoB,KAAO1a,EAAM,GAAKA,EAAM,GAAK,IAAMc,EAAO4Z,kBAAoB,IACxJT,EAAS7P,KAAO4Q,EAAS5Q,KACzBtJ,EAAO6E,aAAaC,MAAQ,KAC5B9E,EAAO4Z,iBAAiB,GACxB5Z,EAAO2P,SAAWmK,EAClB9Z,EAAO7C,SAAWyG,EAAKtF,KACnB2b,EAAYrW,EAAKxC,WAAWqH,QAAQ,WAAY,EAAE,EAAEtB,MAAM,GAAG,EACjE2S,EAAW3B,GAAWnY,EAAQia,EAAUA,EAAU9nB,OAAS,EAAE,GAEjEgnB,EAASxW,SAAWmX,EAAS7b,GAC7Bkb,EAAS5E,WAA6B,IAAhBuF,EAAS7b,GAAW,KAAO6b,EAASvF,WAAauF,EAASxQ,KAAO,KAClFlL,oBAAM0b,EAASf,QAAQ,IACxBI,EAASJ,SAAWe,EAASf,SAAWe,EAAS7b,GAAK,KAErDic,EAAS5F,QA0UtC,SAAS8F,EAAwBpa,EAAQ8D,GACrC,IAAIuW,EAAajC,GAAepY,EAAQ8D,EAAS7F,EAAE,EACnDoc,EAAWlX,QAAQ,SAAUmX,GACzBA,EAAU/F,WAAazQ,EAASyQ,WAAazQ,EAASwF,KAAO,KACxDlL,oBAAM0F,EAASiV,QAAQ,IACxBuB,EAAUvB,SAAWjV,EAASiV,SAAWjV,EAAS7F,GAAK,KAEtDqc,EAAUhG,QACX8F,EAAwBpa,EAAQsa,CAAS,EAEhD,CACL,EApVoDta,EAAQmZ,CAAQ,GAI5CQ,EAAO1a,KAAKib,EAAS5Q,IAAI,EAGb,EAAhBqQ,EAAOxnB,QACP6mB,GAAkBhZ,EAAQiP,EAAS,MAAO0K,CAAM,IAI/D,CACL,CAmCA,SAASY,GAAoBva,EAAQnM,EAAMgU,GACvC,OAAQ7J,WAAS,SAAUnK,CAAI,GAC3B,IAAK,SAvQkBmM,EAwQGA,EAxQKnM,EAwQGA,EAxQGgU,EAwQGA,EAvQxC2S,EAAkB,CAClBC,WAAYzc,WAAS,OAAQnK,CAAI,EACjCke,OAAQ,CAAA,EACRzT,KAAMN,WAAS,OAAQnK,CAAI,EAC3B6mB,aAAc1c,WAAS,OAAQnK,CAAI,GAEvCmM,EAAO+H,QAAQ,qBAAsByS,EAAiB,SAAU5W,GAC5D,IAOY+W,EAPR/W,EAAKmO,OACLlK,EAAUkK,OAAS,CAAA,EAGnBlO,EAAiB7D,CAAM,IAClB+X,GAAa/X,EAAO6C,eAAgBe,EAAK6W,UAAU,GAMhDxL,EAAU,kCAAoCrL,EAAK6W,WAAa,mBACpEzB,GAAkBhZ,EAAQiP,EAAS,MAAO,IAAI,IAL1C0L,EAAYtC,GADZuC,EAAShX,EAAK8W,aAAa,GACOE,EAAQhX,EAAK6W,WAAY,CAAA,CAAK,EACpEza,EAAO6C,eAAe5D,KAAK0b,CAAS,IAO/C,EAkPO,MAEJ,IAAK,SAzOmB3a,EA0OGA,EA1OKnM,EA0OGA,EA1OGgU,EA0OGA,EAzOzCgT,EAAkB,CAClB9I,OAAQ,CAAA,EACRjO,SAAU9F,WAAS,OAAQnK,CAAI,EAC/ByK,KAAMN,WAAS,OAAQnK,CAAI,GAE/BmM,EAAO+H,QAAQ,eAAgB8S,EAAiB,SAAUjX,GAClDA,EAAKmO,OACLlK,EAAUkK,OAAS,CAAA,EAGnBlO,EAAiB7D,CAAM,GACvB4D,EAAKE,SAASX,QAAQ,SAAUW,GAC5B,IAAIgX,EAAQ7C,GAAcjY,EAAQ8D,EAAS7F,EAAE,EAC/B,CAAC,IAAX6c,GACA9a,EAAO6C,eAAekY,OAAOD,EAAO,CAAC,EAEpChX,EAASwQ,QACKtU,EAAO6C,eAAeC,OAAO,SAAUkY,GAAO,OAAOA,EAAIzG,WAAW7F,SAAS5K,EAASwF,IAAI,EAAI,EACpGnG,QAAQ,SAAU8X,GACnBH,EAAQ7C,GAAcjY,EAAQib,EAAQhd,EAAE,EAC9B,CAAC,IAAX6c,GACA9a,EAAO6C,eAAekY,OAAOD,EAAO,CAAC,EAE5C,EAER,EAER,EA+MO,MAEJ,IAAK,SACD7B,GAAuBjZ,EAAQnM,EAAMgU,CAAS,EAC9C,MAEJ,IAAK,OACL,IAAK,OACDyR,GAA2BtZ,EAAQnM,EAAMgU,CAAS,EAClD,MAEJ,IAAK,SA5CmB7H,EA6CGA,EA7CKnM,EA6CGA,EA7CGgU,EA6CGA,EA5CzCqT,EAAkB,CAClBC,cAAend,WAAS,OAAQnK,CAAI,EACpCke,OAAQ,CAAA,EACRzT,KAAMN,WAAS,OAAQnK,CAAI,EAC3BunB,WAAYpd,WAAS,eAAgBnK,CAAI,EACzC4P,cAAezF,WAAS,gBAAiBnK,CAAI,EAC7CmR,gBAAiBhH,WAAS,kBAAmBnK,CAAI,GAErDmM,EAAO+H,QAAQ,SAAUmT,EAAiB,SAAUtX,GAChDwI,WAAS,OAAQxI,EAAKuX,cAAetnB,CAAI,EACrC+P,EAAKmO,SACLlK,EAAUkK,OAAS,CAAA,GAE1B,EAdL,IAAgC/R,EAAQnM,EAAMgU,EACtCqT,EA3MwBlb,EAAc6H,EAlCf7H,EAAQnM,EAAMgU,CA6R7C,CAaA,SAAS2O,GAAWxW,EAAQnM,EAAMwnB,EAAIzI,EAAO5C,EAAW5O,GACpD,IAAIiH,EAAe,CACfC,IAAKtI,EAAOqI,aAAaC,IACzB7U,KAAM,OACN6nB,KAAM,CAAA,EACNC,SAAU,OACV3S,YAAa,mBACb/U,KAAMiV,KAAKC,UAAUlV,CAAI,EACzBmV,UAAW,KACXC,UAAW,KACXC,WAAY,MAEZrB,EAAY,CAAE/G,OAAQ9C,WAAS,SAAUnK,CAAI,EAAGwU,aAAcA,EAAc0J,OAAQ,CAAA,GACxFwI,GAAoBva,EAAQnM,EAAMgU,CAAS,EAC3C7H,EAAO+H,QAAQ,aAAcF,EAAW,SAAU2T,GAC9C,IA+CgB/F,EACAgG,EACAC,EACAC,EACArd,EAnDXkd,EAAezJ,SAChB/R,EAAOW,OAAOib,GAAsB,EAAE,EAClC/X,EAAiB7D,CAAM,GAGnBia,GAFqB,gBAAVrH,GAAqC,iBAAVA,GAAsC,sBAAVA,EAChE5U,WAAS,OAAQnK,CAAI,EAAImM,EAAO1B,MACbmK,QAAQ,WAAY,EAAE,EAAEtB,MAAM,GAAG,EACtD0U,EAAoB,sBAAVjJ,GAA4C,iBAAVA,GAA8D,IAAlC5U,WAAS,OAAQnK,CAAI,EAAE1B,QAAgBiM,oBAAM4B,EAAO8b,WAAW,EACrI9d,WAAS,OAAQnK,CAAI,EAAE,GAAGoK,GAAKgc,EAAUA,EAAU9nB,OAAS,GAE9D4pB,GAA8B,UAD9Bjb,EAAS9C,WAAS,SAAUnK,CAAI,IACmB,WAAXiN,GAAkC,SAAXA,GAAgC,WAAXA,GAAkC,WAAXA,IAAkC,eAAV8R,EACxH,SAAX9R,GAAgC,WAAXA,GAAiC,eAAV8R,GACxC3G,EAEU,EAFDjM,EAAO6C,eACfC,OAAO,SAAUC,GAAQ,OAAO3E,oBAAM2E,EAAKJ,QAAQ,EAAI,EACvDxQ,OACC6N,EAAO6C,eACJC,OAAO,SAAUC,GAAQ,OAAO3E,oBAAM2E,EAAKJ,QAAQ,EAAI,EAAE,GAAG1E,GAC/D,EACN+B,EAAO6E,aAAe,CAClBiL,IAAKqI,GAAWnY,EAAwB,MAAhBA,EAAO1B,MAA0B,gBAAVsU,GAAqC,sBAAVA,EAAgC3G,EAAS4P,CAAO,EAC1HpG,QAAS,KACT3Q,MAAO,KACPM,MAAOgT,GAAepY,EAAwB,MAAhBA,EAAO1B,MAA0B,gBAAVsU,GAAqC,sBAAVA,EAAgC3G,EAAS4P,CAAO,GAEhIzd,oBAAM4B,EAAO6E,aAAaiL,GAAG,GAE7BkJ,GAAkBhZ,EADJ,kDACqB,MAAO,IAAI,GAG7C+b,GAAiD,OAA9B/b,EAAO6E,aAAaC,OAEpB,KAApBhB,EADsB,WAAXhD,GAAkC,WAAXA,EAAsB9C,WAAS,OAAQnK,CAAI,EAAI,IACxE1B,SAEL2R,EADW,SAAXhD,EACWd,EAAOoQ,WAAW4L,IAAI,SAAUjZ,GAAQ,OAAOoV,GAAWnY,EAAQ+C,CAAI,EAAI,EAG1E/E,WAAS,OAAQnK,CAAI,EAAEmoB,IAAI,SAAUjZ,GAAQ,OAAOoV,GAAWnY,EAAQ+C,EAAK9E,EAAE,EAAI,GAGrG+B,EAAO6E,aAAe,CAClBiL,IAAK,KACL2F,QAAS,KACT3Q,MAAO,KACPM,MAAOtB,IAGuB,YAA7B9F,WAAS,SAAUnK,CAAI,IAExB4hB,GAAU3R,EADC9F,WAAS,OAAQnK,CAAI,GACb,GACnB4nB,EAAoC,EAAlB3X,EAAS3R,OAC3BupB,EAAY5X,EAASkY,IAAI,SAAUjZ,GAAQ,OAAOA,EAAKuG,KAAO,EAC9DqS,EAA8BM,GAAlBR,EAA0B3X,EAASoY,OAAO,SAAUC,EAAaC,GAAiB,OAAOD,GAAeC,EAActoB,MAAQ,IAAO,CAAC,EAAa2hB,EAAQ3hB,IAApB,EACnJwK,EAAQ0B,EAAOrB,UAAU+P,SAAS+G,EAAQnM,IAAI,GAAKmS,EAAkBzb,EAAOrB,UAAUyI,KAAK,GAAG,EAAIpH,EAAOrB,UAAUyI,KAAK,GAAG,EAAI,IAAMqO,EAAQnM,KACjJtJ,EAAO6E,aAAa4Q,QAAU1kB,OAAO2nB,OAAO,CACxC2D,SAAU/d,EACVge,cAAeb,EACfnS,KAAMoS,EAAUtU,KAAK,IAAI,EACzBtT,KAAM6nB,GACPF,EAAkB,GAAK,CACtBc,QAAS9G,EAAQkD,YACjBrE,OAAQmB,EAAQnB,OAChBkI,SAAU/G,EAAQmD,aAClBzD,WAAYM,EAAQN,WACvB,GAELsH,GAAqBzc,EAAQA,EAAO6E,aAAcwW,EAAIxnB,EAAM+e,EAAO5C,EAAW5O,EAAYoa,CAAc,GAGjG,IAAIkB,OAAK,CAChBpU,IAAKtK,WAAS,MAAOwd,EAAenT,YAAY,EAChD5U,KAAMuK,WAAS,OAAQwd,EAAenT,YAAY,EAClDiT,KAAMtd,WAAS,OAAQwd,EAAenT,YAAY,EAClDkT,SAAUvd,WAAS,WAAYwd,EAAenT,YAAY,EAC1DO,YAAa5K,WAAS,cAAewd,EAAenT,YAAY,EAChExU,KAAMmK,WAAS,OAAQwd,EAAenT,YAAY,EAClDa,WAAYlL,WAAS,aAAcwd,EAAenT,YAAY,EAC9DW,UAAW,SAAUgD,GACjB,IACQ2Q,EADJve,oBAAM4N,CAAM,GACR2Q,EAAW,CACX7X,MAAO,CACHoK,WAAY,KACZD,QAASxD,EAAczL,EAAQ,cAAc,EAAI,IAAMA,EAAOqI,aAAaC,IAC3E0G,KAAM,OAEV5J,MAAO,MAEXwX,GAAmB5c,EAAQwb,EAAgBH,EAAIsB,EAAU/J,EAAO5C,EAAW5O,CAAU,IAGjE,UAApB,WACA4K,EAASlD,KAAK+T,MAAM7Q,CAAM,GAE9ByQ,GAAqBzc,EAAQgM,EAAQqP,EAAIxnB,EAAM+e,EAAO5C,EAAW5O,EAAYoa,CAAc,IAE/FvS,UAAW,WACP,IAAI+C,EAAS,CACT5G,MAAO,KACPN,MAAO,CACHkK,KAAM,MACNC,QAASxD,EAAczL,EAAQ,eAAe,EAAI,IAAMA,EAAOqI,aAAaC,IAC5E4G,WAAY,OAGpB0N,GAAmB5c,EAAQwb,EAAgBH,EAAIrP,EAAQ4G,EAAO5C,EAAW5O,CAAU,GAE1F,EACI0b,QAEZ,CACL,CAQA,SAASb,GAAQnoB,GAGTipB,EADAjpB,EAAO,KACFA,EAAO,KAEPA,EAAO,SACNA,EAAO,MAAMkpB,QAAQ,CAAC,EAAI,MAE3BlpB,EAAO,YACNA,EAAO,KAAO,MAAMkpB,QAAQ,CAAC,EAAI,OAGjClpB,EAAO,KAAO,KAAO,MAAMkpB,QAAQ,CAAC,EAAI,MAElD,OAAOD,CACX,CAeA,SAASN,GAAqBzc,EAAQgM,EAAQqP,EAAIxnB,EAAM+e,EAAO5C,EAAW5O,EAAYoa,GAClFxb,EAAOW,OAAOsc,GAAqB,CAAEnc,OAAQ,UAAW,EACxD,IA4BQoc,EA5BJjf,EAAK+B,EAAO8Q,YAAiC9Q,EAAOvB,OAAOuB,EAAOvB,OAAOtM,OAAS,GAgBtF,GAfKiM,oBAAM4N,EAAO8D,GAAG,GAAmC,SAA7B9R,WAAS,SAAUnK,CAAI,IAC9CmY,EAAO8D,IAAIxG,KAAiC,IAAzBtJ,EAAOvB,OAAOtM,QAAiB6N,EAAOmd,eAAoCnR,EAAO8D,IAAIxG,KACxG8C,WAAS,SAAUnO,EAAI+N,EAAO8D,GAAG,EACjC1D,WAASnO,EAAI+N,EAAO8D,IAAK9P,EAAOI,QAAQ,EACnChC,oBAAM4N,EAAO5G,KAAK,GAA2B,QAAtB4G,EAAOlH,MAAMkK,QACtB,iBAAV4D,GAAsC,gBAAVA,GAAwD,IAA5B5S,EAAOrB,UAAUxM,SACtE0b,EAAO7P,WAASgC,EAAOvB,OAAO,GAAIuB,EAAOI,QAAQ,EACrDJ,EAAOrB,UAAU,GAAKX,WAAS,OAAQ6P,CAAI,EAC3C7N,EAAOxB,MAAQ,CAACJ,oBAAMJ,WAAS,KAAM6P,CAAI,CAAC,GAEhC,iBAAV+E,GACA7S,GAAaC,CAAM,GAI3B,CAAC5B,oBAAM4N,EAAO5G,KAAK,EAAG,CACtBiH,GAAcL,EAAO5G,KAAK,EAC1B,IAAK,IAAI5S,EAAI,EAAG2Z,EAAMH,EAAO5G,MAAMjT,OAAQK,EAAI2Z,EAAK3Z,CAAC,GAAI,CACrD,IAAIuQ,EAAOiJ,EAAO5G,MAAM5S,GACxB4Z,WAAS,gBAAiBrF,GAAShE,CAAI,EAAGA,CAAI,EAEjB,SAA7B/E,WAAS,SAAUnK,CAAI,IACvBkY,GAAUC,EAAQ/N,CAAE,EACpBmO,WAASnO,EAAI+N,EAAO5G,MAAOpF,EAAOgK,OAAO,GAG5C5L,oBAAM4N,EAAOyJ,OAAO,GAAMrX,oBAAM4B,EAAOmd,aAAa,IACjDD,EAAWld,EAAOmd,eAAiBnf,WAAS,OAAQgO,EAAOyJ,OAAO,EAClE2H,EAAapf,WAAS,WAAYgO,EAAOyJ,OAAO,EAAEhN,QAAQ,IAAI4U,OAAO,IAAK,GAAG,EAAG,IAAI,EAMhFD,GALwB,MAA3Bpf,WAAS,OAAQnK,CAAI,GAAemM,EAAOxB,OAAyD,IAAhDR,WAAS,OAAQnK,CAAI,EAAEypB,MAAM,MAAM,EAAEnrB,UACnD,IAAnC6L,WAAS,QAASnK,CAAI,EAAE1B,QACxBia,WAAS,OAAQ8Q,EAAUlR,EAAOyJ,OAAO,EAEZ,CAAC,IAA9B2H,EAAWlW,QAAQ,IAAI,GACVgW,EAOJE,EAAW3U,QAAQ2U,EAAW/P,UAAU,EAAG+P,EAAWlW,QAAQ,IAAI,CAAC,EAAGgW,CAAQ,EAE/F9Q,WAAS,WAAYgR,EAAYpR,EAAOyJ,OAAO,GAEnD4F,EAAGrb,EAAQgM,EAAQ4G,EAAO5C,EAAW5O,CAAU,EAC1ChD,oBAAM4N,EAAO5G,KAAK,GAAgB,iBAAVwN,GAAsC,iBAAVA,GAAsC,aAAVA,GAAkC,cAAVA,GACzG5S,EAAOW,OAAO4c,GAAyBvR,CAAM,EAEiB,YAA9D,OAAOhO,WAAS,YAAawd,EAAenT,YAAY,GACxDrK,WAAS,YAAawd,EAAenT,YAAY,GAEzD,CAWA,SAASwR,GAAgB7Z,EAAQnM,EAAM/B,EAAQ6kB,GAK3C,IAJA,IAAIgE,EAAYtC,GAAcxkB,EAAM/B,EAAQ6kB,EAAU,CAAA,CAAI,EAGtD6G,GAFJxd,EAAO6C,eAAe5D,KAAK0b,CAAS,EACpC3a,EAAOoQ,WAAWnR,KAAK0b,EAAU1c,EAAE,EACjBma,GAAepY,EAAQnM,EAAKoK,EAAE,GACvCzL,EAAI,EAAGA,EAAIgrB,EAAYrrB,OAAQK,CAAC,GACrCqnB,GAAgB7Z,EAAQwd,EAAYhrB,GAAImoB,EAAW,IAAI,CAE/D,CAkCA,SAASiC,GAAmB5c,EAAQwb,EAAgBH,EAAIrP,EAAQ4G,EAAO5C,EAAW5O,GAC9EpB,EAAOW,OAAOsc,GAAqB,CAAEnc,OAAQ,UAAW,EACxDua,EAAGrb,EAAQgM,EAAQ4G,EAAO5C,EAAW5O,CAAU,EACmB,YAA9D,OAAOpD,WAAS,YAAawd,EAAenT,YAAY,GACxDrK,WAAS,YAAawd,EAAenT,YAAY,GAEzD,CAUA,SAASoO,GAAYzW,EAAQgM,EAAQ4G,GACjC,IACSxU,oBAAM4N,EAAO5G,KAAK,GAOdhH,oBAAM4N,EAAOlH,KAAK,GAA2B,QAAtBkH,EAAOlH,MAAMkK,OACrChD,EAAO5G,MAAQ,GACfpF,EAAOW,OAAOiS,EAAO5G,CAAM,EAC3BhM,EAAOW,OAAO8c,EAAyB,EAAE,GAE7CxU,GAAUjJ,EAAQgM,EAAQ,MAAM,EAChChM,EAAO3B,cAAc,CAAEC,KAAM0B,EAAO4P,SAAW,CAAA,CAAI,EACnD5P,EAAOrB,UAAU+e,QAbjB1d,EAAOW,OAAOiS,EAAO5G,CAAM,EAC3BhM,EAAOW,OAAO8c,EAAyB,EAAE,EACrC7Z,EAAO,CAAE9C,OAAQ,OAAQkL,OAAQA,GACrChM,EAAO+H,QAAQ,UAAWnE,CAAI,GAatC,MAAOkB,GACH6Y,GAAiB3d,EAAQ8E,EAAO,MAAM,EACtC9E,EAAO3B,cAAc,CAAEC,KAAM0B,EAAO4P,SAAW,CAAA,CAAI,EACnD5P,EAAOrB,UAAU+e,MAErB,IAEY9Z,EAFR5D,EAAOwO,YAAcxO,EAAOyQ,YACS,IAAjCzQ,EAAOsQ,eAAene,SAClByR,EAAO,CAAEqE,YAAajI,EAAOsQ,gBACjCtQ,EAAO+H,QAAQ,cAAenE,CAAI,GAEtC5D,EAAOyQ,UAAYzQ,EAAOwO,WAAa,CAAA,EAE/C,CAWA,SAASwI,GAAchX,EAAQgM,EAAQ4G,EAAO9R,GAC1C,IACI,IAEQ8C,EAFHxF,oBAAM4N,EAAO5G,KAAK,EAMnB6D,GAAUjJ,EAAQgM,EAAQlL,CAAM,GALhCd,EAAOW,OAAOiS,EAAO5G,CAAM,EACvBpI,EAAO,CAAE9C,OAAQA,EAAQkL,OAAQA,GACrChM,EAAO+H,QAAQ,UAAWnE,CAAI,GAMtC,MAAOkB,GACH6Y,GAAiB3d,EAAQ8E,EAAOhE,CAAM,EAE9C,CAWA,SAAS8V,GAAc5W,EAAQgM,EAAQ2K,GACnC,IACI,IAoBgBlF,EACA3M,EAfR0V,EAMA5W,EAZHxF,oBAAM4N,EAAO5G,KAAK,EAkBO,QAAtB4G,EAAOlH,MAAMkK,MACThP,EAAOiW,WAAajW,EAAOiW,UAAU2H,SACjCnM,EAAMpH,SAAO,WAAYrK,EAAOiW,UAAUpX,OAAO,EACjDiG,EAAQ2G,EAAczL,EAAQ,6BAA6B,EAAEyI,QAAQ,MAAO,IAAMgJ,EAAI7P,MAAQ,GAAG,EACrG6P,EAAIqC,cAAc+J,mBAAmBrS,UAAY1G,GAWjDiK,EAAa/O,EAAQ,QARN,CACXoF,MAAO,KACPN,MAAO,CACHkK,KAAM,MACNC,QAASxD,EAAczL,EAAQ,6BAA6B,EAAEyI,QAAQ,MAAO,IAAMkO,EAAW,GAAG,EACjGzH,WAAY,MAGkB,EAEtCtL,EAAO,CAAE9C,OAAQ,SAAUgE,MAAOkH,EAAOlH,OAC7C9E,EAAO+H,QAAQ,UAAWnE,CAAI,IAG1B5D,EAAOiW,WAAajW,EAAOiW,UAAU2H,SACrC5d,EAAOiW,UAAUC,OAErBjN,GAAUjJ,EAAQgM,EAAQ,QAAQ,IAzClChM,EAAOiW,WAAajW,EAAOiW,UAAU2H,SACrC5d,EAAOiW,UAAUC,OAErBlW,EAAO8d,YAAcja,EAAiB7D,CAAM,EAAIgM,EAAO5G,MAAM4G,EAAO5G,MAAMjT,OAAS,GAAK6Z,EAAO5G,MAAM,GACrGpF,EAAO0B,oBAAoBC,UAAUC,MAAQ,GACzC4Y,EAAkB,CAClBC,WAAY9D,EACZrY,KAAM0B,EAAO1B,KACboc,aAAc1a,EAAO8D,UAEzB9D,EAAO+H,QAAQ,eAAgByS,CAAe,EAC1C5W,EAAO,CAAE9C,OAAQ,SAAUkL,OAAQA,GACvChM,EAAO+H,QAAQ,UAAWnE,CAAI,EAC9B5D,EAAO8D,SAAW,CAACmB,EAAcjF,CAAM,GACvC+D,EAAK/D,EAAQ+d,GAAkB/d,EAAO1B,IAAI,GA+BlD,MAAOwG,GACC9E,EAAOiW,WAAajW,EAAOiW,UAAU2H,SACrC5d,EAAOiW,UAAUC,OAErByH,GAAiB3d,EAAQ8E,EAAO,QAAQ,EAEhD,CAUA,SAASuS,GAAcrX,EAAQgM,GAC3B,IACI,IAiDYyF,EAEJ3M,EA/CAlB,EAGAsV,EAOI8E,EACAC,EAGAC,EAlBP9f,oBAAM4N,EAAO5G,KAAK,EAgDO,QAAtB4G,EAAOlH,MAAMkK,MAAkBhP,EAAOiW,WAAajW,EAAOiW,UAAU2H,SAChEnM,EAAMpH,SAAO,UAAWrK,EAAOiW,UAAUpX,OAAO,EAEpDiG,GAAQA,EADI2G,EAAczL,EAAQ,0BAA0B,EAAEyI,QAAQ,MAAO,IAAMzI,EAAOqU,gBAAkB,GAAG,GACjG5L,QAAQ,MAAO,IAAMgJ,EAAI7P,MAAQ,GAAG,EAClD6P,EAAIqC,cAAc+J,mBAAmBrS,UAAY1G,EAC7ClB,EAAO,CAAE9C,OAAQ,SAAUgE,MAAOkH,EAAOlH,OAC7C9E,EAAO+H,QAAQ,UAAWnE,CAAI,IAGzBxF,oBAAM4B,EAAOiW,SAAS,GACvBjW,EAAOiW,UAAUC,OAErBjN,GAAUjJ,EAAQgM,EAAQ,QAAQ,IA3DjC5N,oBAAM4B,EAAOiW,SAAS,GACvBjW,EAAOiW,UAAUC,OAEjBtS,EAAO,CAAE9C,OAAQ,SAAUkL,OAAQA,GACvChM,EAAO+H,QAAQ,UAAWnE,CAAI,EAC9B5D,EAAO8b,YAAc5qB,MAAMitB,QAAQnS,EAAO5G,KAAK,EAAI4G,EAAO5G,MAAM,GAAK4G,EAAO5G,MACxE8T,EAAkB,CAClB/B,QAASnX,EAAO8b,YAAYxS,KAC5BxF,SAAU,CAAC9D,EAAO8b,aAClBxd,KAAM0B,EAAO1B,MAEjB0B,EAAO+H,QAAQ,SAAUmR,CAAe,EACZ,mBAAxBlZ,EAAOmB,cACH6c,EAAa/Y,EAAcjF,CAAM,EACjCie,EAAYje,EAAOvB,OAAOuB,EAAOvB,OAAOtM,OAAS,GAAGgV,MAAM,GAAG,EAAEhV,OAAS,EAC5E6N,EAAOvB,OAAOif,MACd1d,EAAO8D,SAAW,CAAC9F,WAASgC,EAAOvB,OAAOuB,EAAOvB,OAAOtM,OAAS,GAAI6N,EAAOI,QAAQ,GAChF8d,EAAavP,GAAc3O,EAAQA,EAAO8b,WAAW,EACzD/X,EAAK/D,EAAQoe,GAAwBF,CAAU,EAC3C,CAAC9f,oBAAM4f,CAAU,GAA+B,EAA1Bhe,EAAOrB,UAAUxM,QAAc8rB,GAAaje,EAAOrB,UAAUxM,OAAS,IAC5F6N,EAAOrB,UAAUsf,GAAaje,EAAOqe,WAChCre,EAAOxB,OACRwB,EAAO3B,cAAc,CAAEC,KAAM,IAAM0B,EAAOrB,UAAUuE,MAAM,CAAC,EAAEkE,KAAK,GAAG,EAAI,KAAO,CAAA,CAAI,GAG5FpH,EAAO8D,SAAiE,EAAtD9D,EAAOP,qBAAqB6e,iBAAiBnsB,OACzD6N,EAAOP,qBAAqBC,QAAQC,YAAYK,EAAOP,qBAAqB6e,iBAAiB,EAAE,EAAIte,EAAO8D,SAChHC,EAAK/D,EAAQue,EAAoBve,EAAO1B,IAAI,EAC5C0B,EAAO8D,SAAS,GAAK9D,EAAO8b,YAC5B9b,EAAO8b,YAAc,OAGrB9b,EAAO8D,SAAW,CAACmB,EAAcjF,CAAM,GACY,KAA/CA,EAAO0B,oBAAoBC,UAAUC,MACrCmD,GAAO/E,EAAQwe,EAAkBxe,EAAO1B,KAAM0B,EAAO0D,WAAY1D,EAAOgF,gBAAiB,CAAChF,EAAOkE,eAAeQ,UAAU,EAGtH1E,EAAO6B,WACPiB,GAAO9C,EAAQwe,CAAgB,EAG/Bza,EAAK/D,EAAQwe,EAAkBxe,EAAO1B,IAAI,IAsB9D,MAAOwG,GACE1G,oBAAM4B,EAAOiW,SAAS,GACvBjW,EAAOiW,UAAUC,OAErByH,GAAiB3d,EAAQ8E,EAAO,QAAQ,EAEhD,CAYA,SAAS6S,GAAa3X,EAAQgM,EAAQ1N,EAAM0R,GACxC,IACI,IAAIyO,EAAsB,CACtB3a,SAAUkI,EAAO5G,MACjBkT,OAAsB,SAAdtI,EACR1R,KAAMA,EACNkZ,WAAYxX,EAAO8D,SAAS,GAC5B1C,WAAYpB,EAAO1B,MAEvB0B,EAAO+H,QAAQ,OAAQ0W,CAAmB,EACtCzS,EAAOlH,OAASkH,EAAOlH,MAAMoK,YAC7BlP,EAAO0e,WAAa,EACftgB,oBAAM4N,EAAO5G,KAAK,IACnBpF,EAAOwQ,aAAe,CAAA,EACtBT,GAAc/P,EAAQgQ,EAAWhE,CAAM,GAE3C2S,GAAgB3e,EAAQ,iBAAkBgM,EAAOlH,MAAMoK,UAAU,EACvC,QAAtBlD,EAAOlH,MAAMkK,MACbD,EAAa/O,EAAQ,QAASgM,CAAM,GAGlCA,EAAOlH,OAAU1G,oBAAM4N,EAAO5G,KAAK,EAIpC4G,EAAOlH,OAAS,CAAC1G,oBAAM4N,EAAO5G,KAAK,GACxCpF,EAAOwQ,aAAe,CAAA,EACtBT,GAAc/P,EAAQgQ,EAAWhE,CAAM,EACvC+C,EAAa/O,EAAQ,QAASgM,CAAM,GAGpC/C,GAAUjJ,EAAQgM,EAAQgE,CAAS,GATnChQ,EAAOwQ,aAAe,CAAA,EACtBT,GAAc/P,EAAQgQ,EAAWhE,CAAM,GAW/C,MAAOlH,GACH6Y,GAAiB3d,EAAQ8E,EAAOkL,CAAS,EAEjD,CAUA,SAAS4H,GAAc5X,EAAQgM,EAAQ1N,GACnC,IACI,IAaYsF,EAbRiX,EAAkB,CAClB/W,SAAUkI,EAAO5G,MACjB9G,KAAMA,GAEV0B,EAAO+H,QAAQ,SAAU8S,CAAe,EACnCzc,oBAAM4N,EAAO5G,KAAK,IACnBpF,EAAO3B,cAAc,CAAEC,KAAMA,GAAQ,CAAA,CAAI,EACzC0B,EAAO8D,SAAW,CAACmB,EAAcjF,CAAM,GACvC+D,EAAK/D,EAAQ4e,GAAkB5e,EAAO1B,IAAI,EACtC0N,EAAOlH,OACPmE,GAAUjJ,EAAQgM,EAAQ,QAAQ,GAG9BpI,EAAO,CAAE9C,OAAQ,SAAUkL,OAAQA,GACvChM,EAAO+H,QAAQ,UAAWnE,CAAI,GAO1C,MAAOkB,GACH6Y,GAAiB3d,EAAQ8E,EAAO,QAAQ,EAEhD,CAWA,SAASgT,GAET9X,EAAQgM,EAAQ1N,EAAM0R,GAClB,IACI,IAEQpM,EAFHxF,oBAAM4N,EAAOyJ,OAAO,EAMrBxM,GAAUjJ,EAAQgM,EAAQ,SAAS,GALnC+C,EAAa/O,EAAQgQ,EAAW,KAAMhE,EAAOyJ,OAAO,EAChD7R,EAAO,CAAE9C,OAAQ,UAAWkL,OAAQA,GACxChM,EAAO+H,QAAQ,UAAWnE,CAAI,GAMtC,MAAOkB,GACH6Y,GAAiB3d,EAAQ8E,EAAO,SAAS,EAEjD,CAUA,SAASmE,GAAUjJ,EAAQgM,EAAQlL,GAC/BiO,EAAa/O,EAAQ,QAASgM,CAAM,EAChCpI,EAAO,CAAE9C,OAAQA,EAAQgE,MAAOkH,EAAOlH,OAC3C9E,EAAO+H,QAAQ,UAAWnE,CAAI,CAClC,CAaO,SAASmB,GAAO/E,EAAQ4S,EAAOtU,EAAMugB,EAAc7Z,EAAiBvB,GAKvE+S,GAAWxW,EAJA,CACPc,OAAQ,SAAUxC,KAAMA,EAAMugB,aAAcA,EAAc7Z,gBAAiBA,EAAiBvB,cAAeA,EAC3G5P,KAAMmM,EAAO8D,UAEQgb,GAAelM,CAAK,CACjD,CAWA,SAASkM,GAAc9e,EAAQgM,EAAQ4G,GACnC,IACI,IAEQhP,EAFHxF,oBAAM4N,EAAO5G,KAAK,EAMnB6D,GAAUjJ,EAAQgM,EAAQ,QAAQ,GALlChM,EAAOW,OAAOiS,EAAO5G,CAAM,EACvBpI,EAAO,CAAE9C,OAAQ,SAAUkL,OAAQA,GACvChM,EAAO+H,QAAQ,UAAWnE,CAAI,GAMtC,MAAOkB,GACH6Y,GAAiB3d,EAAQ8E,EAAO,QAAQ,EAEhD,CAWO,SAASgQ,GAAS9U,EAAQ1B,EAAMkL,GACnC,IAAIuV,EAAc/e,EAAOqI,aAAa0W,aAAgD/e,EAAOqI,aAAaC,IACtGzU,EAAO,CAAEiN,OAAU,WAAYxC,KAAQA,EAAMY,MAASsK,EAAO3V,KAAQmM,EAAO8D,UAC5EuE,EAAe,CACfC,IAAKyW,EACLtrB,KAAM,OACNmV,YAAa,mBACbC,aAAc,OACdhV,KAAMiV,KAAKC,UAAUlV,CAAI,EACzBmV,UAAW,KACXC,UAAW,KACXC,WAAY,MAGhBlJ,EAAO+H,QAAQ,iBADC,CAAElU,KAAMA,EAAMke,OAAQ,CAAA,EAAOiN,YAAa,CAAA,EAAM3W,aAAcA,GAClC,SAAU4W,GAClD,GAAI,CAACA,EAAalN,OACd,GAAIkN,EAAaD,YAAa,CAC1B,IAAIE,EAAOlU,gBAAc,OAAQ,CAC7B/M,GAAI+B,EAAOnB,QAAQZ,GAAK,gBACxBkhB,MAAO,CAAEre,OAAQie,EAAaK,OAAQ,OAAQ9V,KAAM,eAAgB+V,SAAY,IACnF,EACGC,EAAQtU,gBAAc,QAAS,CAC/B/M,GAAI+B,EAAOnB,QAAQZ,GAAK,cACxBkhB,MAAO,CAAE7V,KAAM,gBAAiB1H,MAAOkH,KAAKC,UAAUkW,EAAaprB,IAAI,EAAGJ,KAAM,UACnF,EACDyrB,EAAK3T,YAAY+T,CAAK,EACtBtf,EAAOnB,QAAQ0M,YAAY2T,CAAI,EAC/BlO,SAASuO,MAAMC,UAAU,cAAc,EAAEC,SACzCzf,EAAOnB,QAAQ6gB,YAAYR,CAAI,OAG/B,IACI,IAAIS,EACAC,EACU,IAAIC,QAAM,CACpBvX,IAAKtK,WAAS,MAAOihB,EAAa5W,YAAY,EAC9C5U,KAAMuK,WAAS,OAAQihB,EAAa5W,YAAY,EAChDO,YAAa5K,WAAS,cAAeihB,EAAa5W,YAAY,EAC9DQ,aAAc7K,WAAS,eAAgBihB,EAAa5W,YAAY,EAChEa,WAAYlL,WAAS,aAAcihB,EAAa5W,YAAY,EAC5DyX,OAAQ,SAAUC,GACdJ,EAAuBI,EAAEC,QAAQC,IAAI,qBAAqB,EAItDL,EAHAD,GAEIO,GADAC,EAAgBR,EAAqBrC,MAAM,wCAAwC,IAC9C6C,EAAc,IACtBD,EAAkBzX,QAAQ,QAAS,EAAE,EAAImX,EAGpC,EAAzB5f,EAAO8D,SAAS3R,OAAa,YAAc6L,WAAS,SAAUgC,EAAO8D,SAAS,EAAE,EAAI9F,WAAS,OAAQgC,EAAO8D,SAAS,EAAE,EAAI9F,WAAS,OAAQgC,EAAO8D,SAAS,EAAE,EAAI,QAGvLkF,UAAW,SAAU+W,GACjB/f,EAAO+H,QAAQ,UAAWkX,CAAY,EACtC,IACImB,EAAUC,IAAIC,gBADPP,CAC2B,EAClCQ,EAAOvP,SAAShG,cAAc,GAAG,EACrCuV,EAAKC,KAAOJ,EACZG,EAAKlB,SAAWO,EAChB5O,SAASyP,KAAKlV,YAAYgV,CAAI,EAC9BA,EAAKzK,QACL9E,SAASyP,KAAKf,YAAYa,CAAI,GAElCtX,UAAW,SAAU8W,GACb/T,EAAS,CACTlH,MAAO,CACHkK,KAAM+Q,EAAEW,OAAOvgB,WACf8O,QAASxD,EAAczL,EAAQ,eAAe,EAAI,IAAMA,EAAOqI,aAAa0W,cAGpFhQ,EAAa/O,EAAQ,QAASgM,CAAM,EACpChM,EAAO+H,QAAQ,UAAWkX,CAAY,GAE7C,EACOnC,KAAKhU,KAAKC,UAAUkW,EAAaprB,IAAI,CAAC,EAElD,MAAOiR,GACH6Y,GAAiB3d,EAAQ8E,EAAO,UAAU,GAIzD,CACL,CAUA,SAAS6Y,GAAiB3d,EAAQ8E,EAAOhE,GAQrCmI,GAAUjJ,EAPQ,CACdoF,MAAO,KACPN,MAAO,CACHmK,QAASnK,EAAMmK,QACfC,WAAY,OAGWpO,CAAM,CACzC,CAQO,SAAS6f,GAAoB3gB,EAAQqI,GACxCrI,EAAOW,OAAOsc,GAAqB,CAAEnc,OAAQ,UAAW,EACpDuH,GAA+D,YAA/C,OAAOrK,WAAS,YAAaqK,CAAY,GACzDrK,WAAS,YAAaqK,CAAY,GAE1C,CASO,SAASuY,GAAoB5gB,EAAQqI,EAAc2D,GACtDhM,EAAOW,OAAOsc,GAAqB,CAAEnc,OAAQ,UAAW,EACxDiO,EAAa/O,EAAQ,QAASgM,CAAM,EACe,YAA/C,OAAOhO,WAAS,YAAaqK,CAAY,GACzCrK,WAAS,YAAaqK,CAAY,GAE1C,CC9zCO,SAAS0G,EAAa/O,EAAQjC,EAAMgiB,EAAGtK,GAC1C,IAAIoL,EA4gBR,SAAoB7gB,EAAQjC,EAAMgiB,EAAGtK,GACjC,IAOI1O,EACAsV,EAIAvB,EAZA+F,EAAU,CACVC,OAAQ,GAAIC,QAAS,GAAIC,QAAS,GAAIC,WAAY,GAQtDC,KAAe,WAAcC,GAAiBnhB,EAAQA,EAAOiW,UAAW4K,EAAQI,UAAU,GAC1FG,MAAgB,WAAcC,GAAkBrhB,EAAQA,EAAOiW,UAAW4K,EAAQI,UAAU,IAG5F,OAFAljB,EAAQ0X,GAAqC,CAAA,IAA1BA,EAAQ6G,cAA0B,sBAAwBve,GAGzE,IAAK,YACD8iB,EAAQI,WAAa,gBACrBJ,EAAQC,OAASrV,EAAczL,EAAQ,kBAAkB,EACzD6gB,EAAQE,QAAU,oFAClBF,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,eAAe,GAC9E8V,MAAO,SAAUiK,GACE,YAAXA,EAAEtsB,MAGN+tB,GAASxhB,CAAM,KAI3B6gB,EAAQK,KAzHpB,SAA4BlhB,GACxB,IAAIyR,EAAMpH,SAAO,WAAYrK,EAAOiW,UAAUpX,OAAO,EAChD4S,EAAIqC,cAAclU,UAAUC,SAAS,mBAAmB,GACzD4hB,GAAYhQ,EAAKhG,EAAczL,EAAQ,mBAAmB,CAAC,EAE/DyR,EAAIqC,cAAc+J,mBAAmBrS,UAAY,GACjDiG,EAAIiQ,QAAU,WACVC,GAAW3hB,EAAQyR,CAAG,GAE1BA,EAAImQ,QAAU,SAAU7B,GAEP,KADF8B,GAAW9B,CAAC,GAEnByB,GAASxhB,CAAM,GAzB3B,SAAoBA,GAChB,IAAIyR,EAAMpH,SAAO,WAAYrK,EAAOiW,UAAUpX,OAAO,EAGjDsN,GAFJsF,EAAIqQ,QACJrQ,EAAI7P,MAAQ,GACF6P,EAAI7P,MAAMzP,QACpBsf,EAAIsQ,kBAAkB,EAAG5V,CAAG,CAChC,EAsBenM,CAAM,EACjBmhB,GAAiBnhB,EAAQA,EAAOiW,UAAW,eAAe,CAC9D,EAwG8C+L,KAAKxwB,KAAMwO,CAAM,EACnD,MACJ,IAAK,SACD6gB,EAAQI,WAAa,SACa,EAA9BjhB,EAAO+B,cAAc5P,QACrB0uB,EAAQE,SAAW,QAAUtV,EAAczL,EAAQ,yBAAyB,EAAI,UAC3EyI,QAAQ,MAAOzI,EAAO+B,cAAc5P,OAAOgO,UAAU,EAC1D0gB,EAAQC,OAASrV,EAAczL,EAAQ,wBAAwB,IAG/D6gB,EAAQE,QAAU,QAAUtV,EAAczL,EAAQA,EAAOsU,OAAS,iBAAmB,uBAAuB,EAAI,SAChHuM,EAAQC,OAASrV,EAAczL,EAAQA,EAAOsU,OAAS,gBAAkB,sBAAsB,GAEnGuM,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,YAAY,GAC3E8V,MAAO,WA6P3B,IAAwB9V,GAAAA,EA5PeA,GA6P5BiW,UAAUC,OACjBlW,EAAOW,OAAOshB,GAAmB,EAAE,IA3PvB,CACIX,YAAa,CAAEP,QAAStV,EAAczL,EAAQ,WAAW,GACzD8V,MAAO,WACH9V,EAAOiW,UAAUC,UAI7B,MACJ,IAAK,SACD2K,EAAQI,WAAa,SACrBJ,EAAQC,OAASrV,EAAczL,EAAQ,eAAe,EACtD6gB,EAAQE,QAAU,gFAClBF,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,aAAa,GAC5E8V,MAAO,SAAUiK,GACE,YAAXA,EAAEtsB,MAGNyuB,GAAWliB,CAAM,KAI7B6gB,EAAQK,KA5IpB,SAA4BlhB,GACxB,IAAImiB,EAAW9X,SAAO,UAAWrK,EAAOiW,UAAUpX,OAAO,EACpDsjB,EAASrO,cAAclU,UAAUC,SAAS,mBAAmB,GAC9D4hB,GAAYU,EAAU1W,EAAczL,EAAQ,gBAAgB,CAAC,EAEjEmiB,EAASrO,cAAc+J,mBAAmBrS,UAAY,GACtD2W,EAAST,QAAU,WACfC,GAAW3hB,EAAQmiB,CAAQ,GAE/BA,EAASP,QAAU,SAAU7B,GAEZ,KADF8B,GAAW9B,CAAC,GAEnBmC,GAAWliB,CAAM,GAa7B,SAA4BA,EAAQmiB,GAChCA,EAASL,QACT,IAAIM,EAAM,GACV,CAAA,IACQtH,EACJsH,EAFApiB,CAAAA,EAAOsU,QAAWtU,EAAOoX,oBACrB0D,EAAQ9a,EAAOqU,gBAAgB/G,YAAY,GAAG,EACjC,CAAC,IAAXwN,GAGD9a,EAAOqU,gBAHmCrU,EAAOqU,gBAAgBhH,UAAU,EAAGyN,CAAK,EAK7FqH,EAASvgB,MAAQwgB,EACbpiB,EAAOsU,QAAUtU,EAAOoX,mBAAsD,CAAC,IAAjC+K,EAASvgB,MAAMsF,QAAQ,GAAG,EACxEib,EAASJ,kBAAkB,EAAGI,EAASvgB,MAAM0L,YAAY,GAAG,CAAC,EAG7D6U,EAASJ,kBAAkB,EAAGI,EAASvgB,MAAMzP,MAAM,CAE3D,EA3BuB6N,EAAQmiB,CAAQ,EACnChB,GAAiBnhB,EAAQA,EAAOiW,UAAW,QAAQ,CACvD,EA2H8C+L,KAAKxwB,KAAMwO,CAAM,EACnD,MACJ,IAAK,UACD6gB,EAAQI,WAAa,eACrBoB,EAAO,IAAIC,uBAAqBtiB,EAAOwM,MAAM,EAC7C+V,EAAkBF,EAAKG,WAAW,IAAI9Z,KAAK+M,EAAQ+G,QAAQ,EAAG,CAAE9oB,OAAQ,yBAA0B,EAClGyhB,EAAa,GACR/W,oBAAMqX,EAAQN,UAAU,IACzBA,EAAa,WAAa1J,EAAczL,EAAQ,YAAY,EAAI,mBAAqByiB,GAAY,MAC3FxO,GAAewB,EAAQN,UAAU,EAAI,cAE/C0L,EAAQC,OAASrL,EAAQnM,KACzBuX,EAAQE,QAAU,kBACDtV,EAAczL,EAAQ,MAAM,EAAI,mBAAqByiB,GAAY,aAC7EhN,EAAQnB,OAAS,OAAS,UAAY,MAAQmB,EAAQnB,OAAS,OAAS,UACzE,qBAAa7I,EAAczL,EAAQ,MAAM,EAAI,yBAA2ByiB,GAAY,aACpFhN,EAAQ3hB,KAAO,KAAO2hB,EAAQ3hB,KAC9B,4BAAa2X,EAAczL,EAAQ,UAAU,EAAI,mBAAqByiB,GAAY,YAClFhN,EAAQ4G,SAAW,KAAO5G,EAAQ4G,SAClC,qBAAa5Q,EAAczL,EAAQ,UAAU,EAAI,mBAAqByiB,GAAY,MAChFF,EAAkB,aAClBpN,EAAa,WACnB0L,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,WAAW,GAC1E8V,MAAO,WACH9V,EAAOiW,UAAUC,UAI7B,MACJ,IAAK,sBACD2K,EAAQI,WAAa,eAKH1K,KAAAA,KAJlBmM,EAAS1iB,EAAO8D,SAASkY,IAAI,SAAU2G,GAEnC,OAAkB,KADlB7H,EAAQ6H,EAAIrZ,KAAKpC,QAAQ,GAAG,EAAI,IACPyb,EAAIrO,OAAkC,IAAVwG,EAAe6H,EAAIrZ,KAAKsZ,OAAO9H,CAAK,EAAErS,QAAQ,IAAK,EAAE,EAAI,eAAtE,SAC3C,GACU,KACPia,EAASjN,EAAQnM,KAAKnC,MAAM,GAAG,EAAE6U,IAAI,SAAU2G,GAE3C,OAAkB,KADlB7H,EAAQ6H,EAAIzb,QAAQ,GAAG,EAAI,GACJ,SAAWyb,EAAIC,OAAO9H,CAAK,EAAErS,QAAQ,IAAK,EAAE,EACtE,GAEL1B,EAAW2b,EAAOG,MAAM,SAAUF,EAAKnwB,EAAGswB,GAAO,OAAOH,IAAQG,EAAI,GAAK,EACrD,WAAdJ,EAAO,GAAmB,SAAWA,EAAO,GAAGK,oBAAsB,QAAW,iBACtF1G,EAAW5G,EAAQ4G,SACnBwE,EAAQC,OAASrL,EAAQnM,KACzBuX,EAAQE,QAAU,kBAAoBtV,EAAczL,EAAQ,MAAM,EAC5D,oBAAsByiB,GAAY,KAAO1b,EAC3C,qBAAa0E,EAAczL,EAAQ,MAAM,EAAI,aAC7CyV,EAAQ3hB,KAAO,gBAAkB2uB,GAAY,aAAehN,EAAQ3hB,KAC1C,8BAAa2X,EAAczL,EAAQ,UAAU,EACvE,oBAAsByiB,GAAY,YAAcpG,EAAW,KACzDA,EAA0B,qBAChCwE,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,WAAW,GAC1E8V,MAAO,SAAUiK,GACE,YAAXA,EAAEtsB,MAGNuM,EAAOiW,UAAUC,UAI7B,MACJ,IAAK,QACDlW,EAAOW,OAAOqiB,GAAsB,EAAE,EACtCnC,EAAQI,WAAa,QACA,QAAjBlB,EAAEjb,MAAMkK,KACR6R,EAAQC,OAAS,oFACbrV,EAAczL,EAAQ,eAAe,EAAI,SAG7C6gB,EAAQC,OAASrV,EAAczL,EAAQ,OAAO,EAElD6gB,EAAQE,QAAU,eAAiBkC,GAAoB,KAAOlD,EAAEjb,MAAMmK,QAAU,SAChF4R,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,WAAW,GAC1E8V,MAAO,WACH9V,EAAOiW,UAAUC,UAMrC,OAAO2K,CACX,EA7qB6B7gB,EAAQjC,EAAMgiB,EAAGtK,CAAO,EAC7CrX,oBAAM4B,EAAOiW,SAAS,GACtBjW,EAAOiW,UAAY,IAAIiN,SAAO,CAC1BC,WAAYC,GAAcpB,KAAKxwB,KAAMwO,EAAQ6gB,EAAQI,UAAU,EAC/DoC,YAAa,SAAUzf,GACnB0f,GAAwBtjB,EAAQA,EAAOiW,UAAWrS,EAAMid,EAAQI,UAAU,GAE9EH,OAAQD,EAAQC,OAChBC,QAASF,EAAQE,QACjBC,QAASH,EAAQG,QACjBuC,kBAAmB,CAAEC,OAAQ,QAC7BC,cAAe,CAAA,EACfC,cAAe,CAAA,EACf9F,QAAS,CAAA,EACT+F,cAAe,CAAA,EACfC,QAAS,CAAA,EACT9xB,OAAQkO,EAAO6jB,aAAmC,IAAM7jB,EAAOnB,QAAQZ,GACvE4O,SAAUF,GAAY3M,EAAQA,EAAOgN,SAAW8W,GAAgBC,EAAc,EAC9EpwB,MAAO,QACPutB,KAAML,EAAQK,KACdE,MAAOP,EAAQO,MACf4C,UAAWhkB,EAAOgkB,UAClBC,oBAAqBjkB,EAAOikB,oBAC5BzX,OAAQxM,EAAOwM,OAClB,EACDxM,EAAOiW,UAAUiO,iBAAmB,CAAA,EACpClkB,EAAOiW,UAAUkO,SAAS,IAAMnkB,EAAOnB,QAAQZ,GAAKmmB,EAAa,GA4sBzE,SAAuBpkB,EAAQ6gB,GAC3B7gB,EAAOiW,UAAU6K,OAASD,EAAQC,OAClC9gB,EAAOiW,UAAU8K,QAAUF,EAAQE,QACnC/gB,EAAOiW,UAAU+K,QAAUH,EAAQG,QACnChhB,EAAOiW,UAAU+N,UAAYhkB,EAAOgkB,UACpChkB,EAAOiW,UAAUiL,KAAOL,EAAQK,KAChClhB,EAAOiW,UAAUmL,MAAQP,EAAQO,MACjCphB,EAAOiW,UAAUkN,WAAaC,GAAcpB,KAAKxwB,KAAMwO,EAAQ6gB,EAAQI,UAAU,EACjFjhB,EAAOiW,UAAUoN,YAAc,SAAUzf,GACrC0f,GAAwBtjB,EAAQA,EAAOiW,UAAWrS,EAAMid,EAAQI,UAAU,GAE9EjhB,EAAOiW,UAAUoO,WACjBrkB,EAAOiW,UAAUqO,MACrB,EAttBsBtkB,EAAQ6gB,CAAO,CAErC,CAUO,SAASlC,GAAgB3e,EAAQjC,EAAMwmB,EAActkB,GACxD,IAAIukB,EAmHR,SAAuBxkB,EAAQjC,EAAMwmB,EAActkB,GAC/C,IAGIwkB,EACA1hB,EACA+X,EALA+F,EAAU,CACVC,OAAQ,GAAIC,QAAS,GAAIC,QAAS,GAAIC,WAAY,GAKtDC,KAAe,WAAcC,GAAiBnhB,EAAQA,EAAO0kB,aAAc7D,EAAQI,UAAU,GAC7FG,MAAgB,WAAcC,GAAkBrhB,EAAQA,EAAO0kB,aAAc7D,EAAQI,UAAU,IAC/F,OAAQljB,GACJ,IAAK,YACD8iB,EAAQC,OAASrV,EAAczL,EAAQ,4BAA4B,EACnE6gB,EAAQE,QAAU,QAAUtV,EAAczL,EAAQ,6BAA6B,EAAI,SACnF6gB,EAAQG,QAAU,CAAC,CACXM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,YAAY,GAC3E8V,MAAO,WACH9V,EAAO0kB,aAAaxO,OACpBe,GAAOjX,EAAQC,EAASD,EAAOqe,UAAU,IAGjD,CACIiD,YAAa,CAAEP,QAAStV,EAAczL,EAAQ,WAAW,GACzD8V,MAAO,WACH9V,EAAO0kB,aAAaxO,OACpBlW,EAAOiW,UAAUC,UAG7B2K,EAAQI,WAAa,mBACrB,MACJ,IAAK,iBACDJ,EAAQI,WAAa,kBACrBjhB,EAAOukB,aAAeA,EACtBxhB,EAAO/C,EAAOukB,aAAavkB,EAAO0e,YAElC3b,EAAiB,CAAC,KADlB+X,EAAQ/X,EAAKuK,YAAY,GAAG,GACNvK,EAAOA,EAAKsK,UAAUyN,CAAK,EACjD+F,EAAQC,OAASrV,EAAczL,EAAQ,kBAAkB,EACzDykB,EAAmB,QAAUhZ,EAAczL,EAAQ,mBAAmB,EAAI,SAC1E6gB,EAAQE,QAAU,EAAmBtY,QAAQ,MAAO1F,CAAI,EACxD8d,EAAQO,MAAQ,WACZ,IACQxd,EADH5D,EAAOyQ,WAA8C,IAAjCzQ,EAAOmQ,eAAehe,SACvCyR,EAAO,CAAEqE,YAAajI,EAAOsQ,gBACjCtQ,EAAO+H,QAAQ,cAAenE,CAAI,EAClC5D,EAAOyQ,UAAYzQ,EAAOwO,WAAa,CAAA,GAE3C6S,GAAkBrhB,EAAQA,EAAO0kB,aAAc7D,EAAQI,UAAU,GAErEJ,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,YAAY,GAC3E8V,MAAO,WAIH,IASQ1U,EACA9C,EAEAwC,EAfRd,EAAOmQ,eAAelR,KAAKe,EAAOukB,aAAavkB,EAAO0e,WAAW,EACjE1e,EAAOuQ,iBAAiBtR,KAAKiS,GAAiBlR,EAAQA,EAAOukB,aAAavkB,EAAO0e,WAAW,CAAC,EAC7F1e,EAAO0e,UAAU,GACb6F,EAAavkB,EAAO0e,aAGpBiG,EAAsB,CAAC,KADnBC,GAAWD,EADF3kB,EAAOukB,aAAavkB,EAAO0e,aAClBpR,YAAY,GAAG,GACVqX,EAASA,EAAOtX,UAAUuX,CAAQ,EAC7D5kB,EAAO0kB,aAAa3D,QAAU,EAAmBtY,QAAQ,MAAOkc,CAAM,EACtE3kB,EAAO0kB,aAAaJ,SAGpBtkB,EAAO0kB,aAAaxO,OAChB9U,EAAapB,EAAOwO,WAAaxO,EAAOmP,SAAWnP,EAAOoB,WAC1D9C,EAAO0B,EAAOwO,WAAaxO,EAAO7C,SAAmC,KAAtB6C,EAAOyO,WAAqBzO,EAAO1B,KAClF0B,EAAOyO,WACP3N,EAASd,EAAOwO,WAAa,OAASxO,EAAO6G,WACjDiI,GAAM9O,EAAQoB,EAAYpB,EAAOmQ,eAAgB7R,EAAMwC,EAAQd,EAAOmQ,eAAgBnQ,EAAOuQ,gBAAgB,KAIzH,CACI+Q,YAAa,CAAEP,QAAStV,EAAczL,EAAQ,WAAW,GACzD8V,MAAO,WAEH,IAUYhV,EACAM,EACA9C,EAbZ0B,EAAO0e,UAAU,GACb6F,EAAavkB,EAAO0e,aAGpBmG,EAAiB,CAAC,KADdC,GAAMD,EADG7kB,EAAOukB,aAAavkB,EAAO0e,aACvBpR,YAAY,GAAG,GACVuX,EAASA,EAAOxX,UAAUyX,CAAG,EACnD9kB,EAAO0kB,aAAa3D,QAAU,EAAmBtY,QAAQ,MAAOoc,CAAM,EACtE7kB,EAAO0kB,aAAaJ,SAGpBtkB,EAAO0kB,aAAaxO,OACiB,IAAjClW,EAAOmQ,eAAehe,SAClB2O,EAASd,EAAOwO,WAAa,OAASxO,EAAO6G,WAC7CzF,EAAapB,EAAOwO,WAAaxO,EAAOmP,SAAWnP,EAAOoB,WAC1D9C,EAAO0B,EAAOwO,WAAaxO,EAAO7C,SAAmC,KAAtB6C,EAAOyO,WAAqBzO,EAAO1B,KAClF0B,EAAOyO,WACXK,GAAM9O,EAAQoB,EAAYpB,EAAOmQ,eAAgB7R,EAAMwC,EAAQd,EAAOmQ,eAAgBnQ,EAAOuQ,gBAAgB,OAMjI,MACJ,IAAK,cACDsQ,EAAQI,WAAa,eACrBJ,EAAQC,OAASrV,EAAczL,EAAQ,cAAc,EACrD6gB,EAAQE,QAAU/gB,EAAO+kB,WAAW,GAAGzb,KAAO,kCACzCmC,EAAczL,EAAQ,eAAgB,EAAI,SAC/C6gB,EAAQK,KA8GpB,SAAqBlhB,EAAQ4D,GACzB5D,EAAOglB,cAAgB,CAAA,EACvB,IAAIC,EAAYjnB,WAAS,UAAW4F,CAAI,EACpCshB,EAAY7a,SAAO,iBAAkB4a,CAAS,EAC9CE,EAAiBnlB,EAAOgL,cAAc,MAAO,CAC7CC,UAAW,iBACd,EACGma,EAAWplB,EAAOgL,cAAc,QAAS,CACzC/M,GAAI+B,EAAOnB,QAAQZ,GAAK,YAC3B,EACDknB,EAAe5Z,YAAY6Z,CAAQ,EACnCF,EAAU3Z,YAAY4Z,CAAc,EAClB,IAAIE,WAAS,CAC3BC,MAAO7Z,EAAczL,EAAQ,gBAAgB,EAC7CulB,OAAQ,SAAU3hB,GACd5D,EAAOwlB,YAAc5hB,EAAK6hB,SAEjC,EACWtB,SAAS,IAAMnkB,EAAOnB,QAAQZ,GAAK,WAAW,EAC1DkjB,GAAiBnhB,EAAQA,EAAO0kB,aAAc,cAAc,CAChE,EAlIuC1C,KAAKxwB,KAAMwO,CAAM,EAC5C6gB,EAAQO,MAAQ,WACZphB,EAAOglB,cAAgB,CAAA,EACvBU,GAAc1lB,CAAM,EACpBqhB,GAAkBrhB,EAAQA,EAAO0kB,aAAc7D,EAAQI,UAAU,GAErEJ,EAAQG,QAAU,CACd,CACIM,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,kBAAkB,GACjF8V,MAAO,WACH6P,GAAe3lB,EAAQ,CAAA,CAAI,IAGnC,CACIshB,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,gBAAgB,GAC/E8V,MAAO,WACH6P,GAAe3lB,EAAQ,CAAA,CAAK,IAGpC,CACIshB,YAAa,CAAEC,UAAW,CAAA,EAAMR,QAAStV,EAAczL,EAAQ,aAAa,GAC5E8V,MAAO,WACH,IAAIzF,EAAQ,EACRrQ,EAAOwlB,aACPnV,EAAQrQ,EAAO+kB,WAAW5yB,OAC1B6N,EAAO+kB,WAAa,GACpBW,GAAc1lB,CAAM,IAIpBA,EAAO+kB,WAAWhK,OAAO,EADzB1K,EAAQ,CACqB,EACI,IAA7BrQ,EAAO+kB,WAAW5yB,OAClBwsB,GAAgB3e,EAAQ,aAAa,EAGrC0lB,GAAc1lB,CAAM,GAG5BA,EAAOW,OAAOilB,GAAmB,CAAEvV,MAAOA,EAAO,KAMrE,OAAOwQ,CACX,EApQmC7gB,EAAQjC,EAAMwmB,EAActkB,CAAO,EAClED,EAAOwlB,YAAc,CAAA,EACjBpnB,oBAAM4B,EAAO0kB,YAAY,GACzB1kB,EAAO0kB,aAAe,IAAIxB,SAAO,CAC7BC,WAAY0C,GAAc7D,KAAKxwB,KAAMwO,EAAQwkB,EAAWvD,UAAU,EAClEoC,YAAa,SAAUzf,GACnB0f,GAAwBtjB,EAAQA,EAAO0kB,aAAc9gB,EAAM4gB,EAAWvD,UAAU,GAEpFF,QAASyD,EAAWzD,QACpBD,OAAQ0D,EAAW1D,OACnB4C,cAAe,CAAA,EACfC,cAAe,CAAA,EACfJ,kBAAmB,CAAEC,OAAQ,QAC7B1xB,OAAQkO,EAAO6jB,aAAmC,IAAM7jB,EAAOnB,QAAQZ,GACvE4O,SAAUF,GAAY3M,EAAQA,EAAOgN,SAAW8W,GAAgBC,EAAc,EAC9EC,UAAWhkB,EAAOgkB,UAClBP,cAAe,CAAA,EACfG,QAAS,CAAA,EACTjwB,MAAO,IACPqtB,QAASwD,EAAWxD,QACpBE,KAAMsD,EAAWtD,KACjBE,MAAOoD,EAAWpD,MAClB6C,oBAAqBjkB,EAAOikB,oBAC5BzX,OAAQxM,EAAOwM,OAClB,EACDxM,EAAO0kB,aAAaR,iBAAmB,CAAA,EACvClkB,EAAO0kB,aAAaP,SAAS,IAAMnkB,EAAOnB,QAAQZ,GAAK6nB,EAAkB,IAGzE9lB,EAAO0kB,aAAa5D,OAAS0D,EAAW1D,OACxC9gB,EAAO0kB,aAAatD,MAAQoD,EAAWpD,MACvCphB,EAAO0kB,aAAaxD,KAAOsD,EAAWtD,KACtClhB,EAAO0kB,aAAatD,MAAQoD,EAAWpD,MACvCphB,EAAO0kB,aAAa3D,QAAUyD,EAAWzD,QACzC/gB,EAAO0kB,aAAa1D,QAAUwD,EAAWxD,QACzChhB,EAAO0kB,aAAaV,UAAYhkB,EAAOgkB,UACvChkB,EAAO0kB,aAAalY,OAASxM,EAAOwM,OACpCxM,EAAO0kB,aAAavB,WAAa0C,GAAc7D,KAAKxwB,KAAMwO,EAAQwkB,EAAWvD,UAAU,EACvFjhB,EAAO0kB,aAAarB,YAAc,SAAUzf,GACxC0f,GAAwBtjB,EAAQA,EAAO0kB,aAAc9gB,EAAM4gB,EAAWvD,UAAU,GAEpFjhB,EAAO0kB,aAAaL,WACpBrkB,EAAO0kB,aAAaJ,OAE5B,CAUA,SAASyB,GAAuB/lB,EAAQgmB,EAAWpiB,EAAMqd,GACjDpZ,EAAY,CACZkK,OAAQnO,EAAKmO,OAAQkU,UAAWhF,EAAYiF,YAAaF,GAE7DhmB,EAAO+H,QAAQ,kBAAmBF,EAAW,SAAUse,GACnDviB,EAAKmO,OAASoU,EAAUpU,OAC3B,CACL,CAUA,SAASuR,GAAwBtjB,EAAQgmB,EAAWpiB,EAAMqd,GAClDpZ,EAAY,CACZkK,OAAQnO,EAAKmO,OAAQmU,YAAaF,EAAWC,UAAWhF,GAE5DjhB,EAAO+H,QAAQ,mBAAoBF,EAAW,SAAUse,GACpDviB,EAAKmO,OAASoU,EAAUpU,OACnBnO,EAAKmO,QAAUnO,CAAAA,EAAKwiB,cAAiC,WAAfnF,GAA4C,kBAAfA,GACpEjhB,EAAO+H,QAAQib,GAAsB,EAAE,EAE9C,CACL,CASA,SAAS7B,GAAiBnhB,EAAQgmB,EAAW/E,GACrCrd,EAAO,CAAEsiB,YAAaF,EAAWnnB,QAASmnB,EAAUnnB,QAASonB,UAAWhF,GAC5EjhB,EAAO+H,QAAQ,YAAanE,CAAI,CACpC,CASA,SAASyd,GAAkBrhB,EAAQgmB,EAAW/E,GACtCrd,EAAO,CAAEsiB,YAAaF,EAAWnnB,QAASmnB,EAAUnnB,QAASonB,UAAWhF,GAC5EjhB,EAAO+H,QAAQ,aAAcnE,CAAI,CACrC,CAmKA,SAAS+hB,GAAe3lB,EAAQqmB,GAC5B,GAAIrmB,EAAOwlB,YAAa,CACpB,GAAIa,EAmFR,IAlFQC,IAiFWtmB,EAjFGA,EAkFc,IAA7BA,EAAO+kB,WAAW5yB,QACrB6N,EAAOumB,UAAUtnB,KAAK,CAAE6B,OAAQ,WAAYkG,KAAMhH,EAAO+kB,WAAW,GAAI,EACxE/kB,EAAO0L,UAAU8a,MAAMxmB,EAAO+kB,WAAW,EAAE,EAC3C/kB,EAAO+kB,WAAWhK,OAAO,EAAG,CAAC,OAUjC,IA5FQ0L,IA2FUzmB,EA3FGA,EA4Fe,IAA7BA,EAAO+kB,WAAW5yB,QACrB6N,EAAOumB,UAAUtnB,KAAK,CAAE6B,OAAQ,UAAWkG,KAAMhH,EAAO+kB,WAAW,GAAI,EACvE/kB,EAAO0L,UAAU8a,MAAMxmB,EAAO+kB,WAAW,EAAE,EAC3C/kB,EAAO+kB,WAAWhK,OAAO,EAAG,CAAC,EA7F7B2K,GAAc1lB,CAAM,OAGpBA,EAAOumB,UAAUtnB,KAAK,CAClB6B,OAAQulB,EAAa,WAAa,UAClCrf,KAAMhH,EAAO+kB,WAAW,GAC3B,EACD/kB,EAAO0L,UAAU8a,MAAMxmB,EAAO+kB,WAAW,EAAE,EAC3C/kB,EAAO+kB,WAAWhK,OAAO,EAAG,CAAC,EACI,IAA7B/a,EAAO+kB,WAAW5yB,OAClBwsB,GAAgB3e,EAAQ,aAAa,EAGrC0lB,GAAc1lB,CAAM,CAGhC,CAOA,SAAS0lB,GAAc1lB,GACnB,IAAI0mB,EAAO,CAAA,EAOPjV,GANAzR,EAAOglB,cACPhlB,EAAOglB,cAAgB,CAAA,EAGvB0B,EAAO,CAAA,EAEDrc,SAAO,kBAAmBrK,EAAO0kB,aAAa7lB,OAAO,GAC3D4S,GACAnP,SAAOmP,CAAG,EAEViV,EACA1mB,EAAO0kB,aAAaxO,OAGpBlW,EAAO+kB,WAAa,EAE5B,CAoJA,SAAStD,GAAYhQ,EAAKkV,GACtBC,QAAMnF,YAAY,CACd5iB,QAAS4S,EACToV,WAAY,CACRF,YAAaA,GAEpB,CACL,CAoLA,SAASvD,GAAcpjB,EAAQihB,EAAYrd,GAEvCkjB,GADiBC,YAAU,SAAU/mB,EAAOiW,UAAUpX,OAAO,CACpC,EACzBknB,GAAuB/lB,EAAQA,EAAOiW,UAAWrS,EAAMqd,CAAU,CACrE,CASA,SAAS4E,GAAc7lB,EAAQgnB,EAASpjB,GAEpCkjB,GADiBC,YAAU,SAAU/mB,EAAO0kB,aAAa7lB,OAAO,CACvC,EACzBknB,GAAuB/lB,EAAQA,EAAO0kB,aAAc9gB,EAAMojB,CAAO,CACrE,CAOA,SAASF,GAAeG,GAapB,IAZA,IAYSC,EAAW,EAAGA,EAAWD,EAAW90B,OAAQ+0B,CAAQ,GACzDC,CAbU,SAAUD,GACpBD,EAAWC,GAAUE,UAAY,SAAUrH,GACrB,KAAdA,EAAEsH,SACFtH,EAAEuH,kBAGVL,EAAWC,GAAUtF,QAAU,SAAU7B,GACnB,KAAdA,EAAEsH,SACFJ,EAAWC,GAAUpR,UAKrBoR,CAAQ,CAExB,CA4BA,SAAS1F,GAASxhB,GACd,IAAIyR,EAAMpH,SAAO,WAAYrK,EAAOiW,UAAUpX,OAAO,EACrD0oB,GAAiBvnB,EAAQyR,CAAG,EAC2B,KAAnDA,EAAIqC,cAAc+J,mBAAmBrS,WAGzCkL,GAAa1W,EAAQyR,EAAI7P,KAAK,CAClC,CAQA,SAASsgB,GAAWliB,GAChB,IAyBQwnB,EAEAC,EATJxnB,EAlBAwR,EAAMpH,SAAO,UAAWrK,EAAOiW,UAAUpX,OAAO,EACpD0oB,GAAiBvnB,EAAQyR,CAAG,EAC2B,KAAnDA,EAAIqC,cAAc+J,mBAAmBrS,YAGrCzN,EAAO0T,EAAI7P,MACX8lB,EAAS1nB,EAAOqU,gBAAgB/G,YAAY,GAAG,EAC/CtN,EAAOsU,QAAU,CAACtU,EAAOoX,oBAEzBrZ,GADuB,CAAC,IAAZ2pB,EAAiB,GAAK1nB,EAAOqU,gBAAgBuO,OAAO8E,CAAM,GAG1E1nB,EAAOqe,WAAatgB,EAChBiC,EAAOqU,kBAAoBtW,EAC3BiC,EAAOiW,UAAUC,QAGjBjW,EAAU,GAEVA,EADwB,mBAAxBD,EAAOmB,aACGwN,GAAc3O,EAAQA,EAAO8D,SAAS,EAAE,EAGxC9D,EAAO1B,KAErB0B,EAAO2nB,UAAY3pB,WAAS,KAAMgC,EAAO8D,SAAS,EAAE,EAChD9D,EAAOsU,SACHkT,EAA2B,CAAC,IAAZE,EAAiB,GAAK1nB,EAAOqU,gBAAgBuO,OAAO8E,CAAM,EAE1ED,EAA2B,CAAC,KAD5BG,EAAS7pB,EAAKuP,YAAY,GAAG,GACI,GAAKvP,EAAK6kB,OAAOgF,CAAM,EACxD5nB,EAAOoX,oBAAqBoQ,IAAiBC,EAC7C9I,GAAgB3e,EAAQ,YAAa,KAAMC,CAAO,EAOtDgX,GAAOjX,EAAQC,EAASlC,CAAI,GAEpC,CAkBA,SAAS4jB,GAAW3hB,EAAQyR,GACpB,eAAeoW,KAAKpW,EAAI7P,KAAK,EAC7BkmB,GAAW9nB,EAAQyR,CAAG,EAEH,KAAdA,EAAI7P,MACT6P,EAAIqC,cAAc+J,mBAAmBrS,UAAYC,EAAczL,EAAQ,kBAAkB,EAGzFyR,EAAIqC,cAAc+J,mBAAmBrS,UAAY,EAEzD,CAQA,SAAS+b,GAAiBvnB,EAAQyR,GAC9BkQ,GAAW3hB,EAAQyR,CAAG,EACtB,IAAItF,EAAMsF,EAAI7P,MAAMzP,OAAS,EACX,KAAdsf,EAAI7P,OAAkB6P,EAAI7P,MAAM0L,YAAY,GAAG,IAAMnB,GAASsF,EAAI7P,MAAM0L,YAAY,GAAG,IAAMnB,GAC5FnM,CAAAA,EAAOoX,mBAAqD,CAAC,IAAhC3F,EAAI7P,MAAM0L,YAAY,GAAG,GAAuE,IAA3DmE,EAAI7P,MAAMyL,UAAUoE,EAAI7P,MAAMsF,QAAQ,GAAG,EAAI,CAAC,EAAE/U,QACnH21B,GAAW9nB,EAAQyR,CAAG,CAE9B,CAQA,SAASqW,GAAW9nB,EAAQyR,GACxB,IAAI3M,EAAQ2G,EAAczL,EAAQ,oBAAoB,EAAEyI,QAAQ,MAAO,IAAMgJ,EAAI7P,MAAQ,GAAG,EACxF5B,EAAOikB,oBACPxS,EAAIqC,cAAc+J,mBAAmBkK,YAAcjjB,EAGnD2M,EAAIqC,cAAc+J,mBAAmBrS,UAAY1G,CAEzD,CAOA,SAAS+c,GAAW9B,GAGZ/Q,EADA+Q,EAAEsH,SAGGtH,EAAEiI,OAIAjI,EAAEkI,SAEb,OAAOjZ,CACX,CASO,SAASkZ,GAAkBloB,EAAQ8gB,EAAQqH,GAC9C,IAMQC,EAsBAv0B,EA5BJktB,EAAU/V,gBAAc,MAAO,CAAEC,UAAW,eAAgB,EAC5Dkd,EAAUhgB,eACNkgB,EAAQrd,gBAAc,MAAO,CAAEC,UAAW,UAAWkU,MAAO,CAAEmJ,IAAKH,EAAUjgB,SAAUqgB,IAAKzH,GAAU,EAC1GC,EAAQxV,YAAY8c,CAAK,IAGrBD,EAAU,IAAIvI,QAAM,CACpBvX,IAAKtK,WAAS,MAAOmqB,EAAU9f,YAAY,EAC3C5U,KAAMuK,WAAS,OAAQmqB,EAAU9f,YAAY,EAC7CO,YAAa5K,WAAS,cAAemqB,EAAU9f,YAAY,EAC3DQ,aAAc7K,WAAS,eAAgBmqB,EAAU9f,YAAY,EAC7Da,WAAYlL,WAAS,aAAcmqB,EAAU9f,YAAY,EACzDW,UAAW,SAAU+W,GACbK,EAAUC,IAAIC,gBAAgBP,CAAC,EAC/BsI,EAAQrd,gBAAc,MAAO,CAAEC,UAAW,UAAWkU,MAAO,CAAEmJ,IAAKlI,EAASmI,IAAKzH,GAAU,EAC/FC,EAAQxV,YAAY8c,CAAK,EACzB1H,GAAoB3gB,EAAQmoB,EAAU9f,YAAY,GAEtDY,UAAW,SAAU8W,GACb/T,EAAS,CACTlH,MAAO,CACHkK,KAAM+Q,EAAEW,OAAOvgB,WACf8O,QAASxD,EAAczL,EAAQ,eAAe,EAAI,IAAMhC,WAAS,MAAOmqB,EAAU9f,YAAY,IAGtGuY,GAAoB5gB,EAAQmoB,EAAU9f,aAAc2D,CAAM,GAEjE,EACGnY,EAAOmK,WAAS,OAAQmqB,EAAU9f,YAAY,EAClD+f,EAAQtL,KAAKjpB,CAAI,GAEjBuK,oBAAM4B,EAAOwoB,SAAS,GACtBxoB,EAAOwoB,UAAY,IAAItF,SAAO,CAC1BpC,OAAQA,EACRC,QAASA,EACTwC,kBAAmB,CAAEC,OAAQ,QAC7BC,cAAe,CAAA,EACfC,cAAe,CAAA,EACf9F,QAAS,CAAA,EACTgG,QAAS,CAAA,EACTjwB,MAAO,QACP80B,OAAQ,QACR32B,OAAQkO,EAAO6jB,aAAmC,IAAM7jB,EAAOnB,QAAQZ,GACvE4O,SAAUF,GAAY3M,EAAQA,EAAOgN,SAAW8W,GAAgBC,EAAc,EAC9EvX,OAAQxM,EAAOwM,OACfkc,aAAc,CAAA,EACd/E,cAAe,CAAA,EACfM,oBAAqBjkB,EAAOikB,oBAC5B5Q,SAAU,CAAEsV,EAAG,SAAUC,EAAG,UAC5B5E,UAAWhkB,EAAOgkB,UAClB9C,KA6BZ,SAAmBlhB,GACf4T,WAAW,WACH5T,EAAOwoB,WACPxoB,EAAOwoB,UAAU3pB,QAAQijB,QAEhC,EACD+G,GAAY7oB,CAAM,EAClBmhB,GAAiBnhB,EAAQA,EAAOwoB,UAAW,eAAe,CAC9D,EArC4BxG,KAAKxwB,KAAMwO,CAAM,EACjCohB,MAAO,WAAcC,GAAkBrhB,EAAQA,EAAOwoB,UAAW,eAAe,GAChFrF,WAAY,SAAUvf,GAClBmiB,GAAuB/lB,EAAQA,EAAOwoB,UAAW5kB,EAAM,eAAe,GAE1Eyf,YAAa,SAAUzf,GACnB0f,GAAwBtjB,EAAQA,EAAOwoB,UAAW5kB,EAAM,eAAe,GAE3EklB,SAAUD,GAAY7G,KAAKxwB,KAAMwO,CAAM,EACvC+oB,WAAYF,GAAY7G,KAAKxwB,KAAMwO,CAAM,EAC5C,EACDA,EAAOwoB,UAAUtE,iBAAmB,CAAA,EACpClkB,EAAOwoB,UAAUrE,SAAS,IAAMnkB,EAAOnB,QAAQZ,GAAK+qB,EAAiB,IAGrEhpB,EAAOwoB,UAAUniB,UACjBrG,EAAOwoB,UAAU1H,OAASA,EAC1B9gB,EAAOwoB,UAAUzH,QAAUA,EAC3B/gB,EAAOwoB,UAAUxE,UAAYhkB,EAAOgkB,UACpChkB,EAAOwoB,UAAUnE,WACjBrkB,EAAOwoB,UAAUlE,OAEzB,CAsBA,SAASuE,GAAY7oB,GACjB,IAAI+gB,EAAU1W,SAAO,iBAAkBrK,EAAOwoB,UAAU3pB,OAAO,EAC3DoqB,EAAU5e,SAAO,gBAAiBrK,EAAOwoB,UAAU3pB,OAAO,EAC1DqqB,EAASjX,OAAOkX,iBAAiBpI,EAAS,IAAI,EAC9CqI,EAAeF,EAAU,EAAIG,WAAWH,EAAOI,YAAY,EAAK,GAChEC,EAAgBL,EAAU,EAAIG,WAAWH,EAAOM,aAAa,EAAK,GACtEP,EAAQrd,MAAMjY,MAASotB,EAAQ0I,YAAcL,EAAgB,KAC7DH,EAAQrd,MAAM6c,OAAU1H,EAAQtW,aAAe8e,EAAiB,IACpE,CC36BIG,EAAeh4B,UAAUi4B,OAAS,SAAU/lB,GAIxC,GAHApS,KAAKwO,OAAO4pB,YAAc,KAC1Bp4B,KAAKq4B,UAAY,KACjBC,cAAYt4B,KAAKwO,OAAOnB,OAAO,EACN,eAArBrN,KAAKwO,OAAO4F,KAAuB,CACnCpU,KAAKu4B,mBACLv4B,KAAKqN,QAAQmrB,aAAa,WAAY,GAAG,EACrCx4B,KAAKy4B,UACLz4B,KAAK04B,eACL14B,KAAK24B,uBAET34B,KAAKwO,OAAOW,OAAOypB,GAAmB,EAAE,EACxC,IAAIC,EAAYhgB,SAAO,IAAM7Y,KAAKwO,OAAOnB,QAAQZ,GAAKqsB,GAAkB94B,KAAKwO,OAAOnB,OAAO,EACvF0rB,EAAKlgB,SAAO,KAAMggB,CAAS,EA+D3BG,GA9DAD,GACAjoB,SAAOioB,CAAE,EAEb/4B,KAAKy4B,QAAU,CACXQ,eAAgB,CACZC,SAAU,SAAUC,SAAU,UAAWC,SAAU,GACnDC,cAAe,QAASC,YAAa,IAEzCC,SAAU,CAAA,EACVC,OAAQ,CAAEjtB,KAAM,OAAQktB,QAAS,WAAY/iB,SAAU,eAAgBgjB,gBAAiB,gBAAiBC,eAAgB,gBACzHzhB,UAAWlY,KAAKwO,OAAO0J,UACvB0hB,YAAa55B,KAAK65B,cAAcrJ,KAAKxwB,IAAI,EACzCyyB,oBAAqBzyB,KAAKwO,OAAOikB,qBAEjCzyB,KAAKwO,OAAOsrB,qBACZ95B,KAAKy4B,QAAQ32B,SAAW9B,KAAKwO,OAAOsrB,mBACpC95B,KAAKy4B,QAAQsB,WAAa/5B,KAAKwO,OAAOnB,QAAQZ,GAAK,uBAEvDzM,KAAKgY,MAAQ,GACbhY,KAAKgY,MAAQhY,KAAKg6B,WAAW5nB,CAAI,EAC7BpS,KAAKwO,OAAOyrB,cAAuC,SAAvBj6B,KAAKwO,OAAO4J,OACxCpY,KAAKgY,MAAQhY,KAAKkU,SAAWgmB,WAASC,KAAKn6B,KAAKgY,MAAOhY,KAAKwO,OAAO4J,OAAQpY,KAAKo6B,SAAS5J,KAAKxwB,IAAI,CAAC,EAGnGA,KAAKgY,MAAQhY,KAAKkU,SAAW6D,GAAc/X,KAAKwO,OAAQxO,KAAKgY,KAAK,EAEtE6gB,EAAUzqB,UAAU0C,OAAOupB,EAAgB,EACvCr6B,KAAKwO,OAAO8rB,sBAA+C,EAAvBt6B,KAAKkU,SAASvT,QAAc,CAACiM,oBAAM5M,KAAKwO,OAAO+rB,oBAAoB,GACvGv6B,KAAKwO,OAAO+rB,qBAAqBC,sBAErCx6B,KAAKy6B,aAAeC,WAASC,mBAAmBnhB,gBAAexZ,KAAKgY,MAAOhY,KAAKy4B,QAAS,KAAM,KAAMz4B,KAAKwO,MAAM,EAChHxO,KAAK46B,SAAWl7B,MAAMQ,UAAUwR,MAAMsV,KAAKuO,YAAU,IAAMvnB,EAAehO,KAAKy6B,YAAY,CAAC,EAC5Fz6B,KAAKqN,QAAQ0M,YAAY/Z,KAAKy6B,YAAY,EAC1Cz6B,KAAKwO,OAAOqsB,uBACsB,EAA9B76B,KAAK86B,kBAAkBx4B,MACvBtC,KAAK+6B,aAET/6B,KAAKy6B,aAAajC,aAAa,aAAc,SAAS,EACtDx4B,KAAKg7B,iBACLh7B,KAAKi7B,gBACwB,IAAzBj7B,KAAK46B,SAASj6B,QACVu6B,EAAYl7B,KAAKqN,QAAQgM,cAAc,IAAM8hB,EAAe,EAChEn7B,KAAKqN,QAAQ6gB,YAAYgN,CAAS,EAClCziB,GAAmBzY,KAAKwO,OAAQxO,KAAKqN,QAAS+E,CAAI,GAEpB,IAAzBpS,KAAK46B,SAASj6B,QAAgBX,KAAKqN,QAAQgM,cAAc,IAAMC,CAAS,GAC7EtZ,KAAKqN,QAAQ6gB,YAAYluB,KAAKqN,QAAQgM,cAAc,IAAMC,CAAS,CAAC,EAE1C,CAAA,IAA1BtZ,KAAKo7B,mBACLp7B,KAAKq7B,YAAYr7B,KAAKwO,OAAOoQ,UAAU,EACvC5e,KAAKo7B,iBAAmB,CAAA,GAGC,CAAA,IAAzBp7B,KAAKs7B,kBACLt7B,KAAKq7B,YAAYr7B,KAAKwO,OAAO2V,UAAU,EACvCnkB,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDvQ,KAAK6e,KAAK,GACN7e,KAAK6e,QAAU7e,KAAKwO,OAAO2V,WAAWxjB,UACtCX,KAAKs7B,gBAAkB,CAAA,EACvBt7B,KAAKwO,OAAO2V,WAAa,IAGjBnkB,KAAKqN,QAAQuD,iBAAiB,IAAM2qB,CAAU,GACrC,IAArBvC,EAAUr4B,SACVX,KAAKwO,OAAOmB,aAAe,kBAE/B,IAAK,IAAI3O,EAAI,EAAGA,EAAIg4B,EAAUr4B,OAAQK,CAAC,GACnCg4B,EAAUh4B,GAAGw3B,aAAa,gBAAiB,MAAM,EAErDx4B,KAAKqN,QAAQ+M,MAAMohB,UAAY,OAC/Bx7B,KAAKy7B,eACLz7B,KAAK07B,mBACL17B,KAAK27B,aACD37B,KAAKwO,OAAO8rB,sBAA+C,EAAvBt6B,KAAKkU,SAASvT,QAAc,CAACiM,oBAAM5M,KAAKwO,OAAO+rB,oBAAoB,IACvGv6B,KAAKwO,OAAO+rB,qBAAqBqB,qBACjC57B,KAAKwO,OAAO+rB,qBAAqBsB,gBAAgB,CAAA,CAAK,GAE1D77B,KAAK87B,WAAa,CAAA,EAClBC,cAAY/7B,KAAKwO,OAAOnB,OAAO,EAC3BrN,KAAKwO,OAAO+B,cAAc5P,QAC1BX,KAAKg8B,cAIjB9D,EAAeh4B,UAAU66B,WAAa,WAClC,IAAIkB,EAAQj8B,KACGA,KAAKwO,OAAOnB,QAAQuD,iBAAiB,aAAa,EACxDe,QAAQ,SAAUuqB,GACvB,IASIC,EATAC,EAAWF,EAAWxvB,aAAa,gBAAgB,EAClD0vB,IAGDH,EAAMI,cAAcC,IAAIF,CAAQ,GAChCF,EAAW1D,aAAa,MAAOyD,EAAMI,cAAc5N,IAAI2N,CAAQ,CAAC,EAChEF,EAAW9tB,UAAU0C,OAAO,YAAY,IAGxCqrB,EAAeF,EAAMnB,kBAAkBrM,IAAI2N,CAAQ,IAI3C,IAAI/N,QAAM,CAClBvX,IAAKtK,WAAS,MAAO2vB,EAAatlB,YAAY,EAC9C5U,KAAMuK,WAAS,OAAQ2vB,EAAatlB,YAAY,EAChDO,YAAa5K,WAAS,cAAe2vB,EAAatlB,YAAY,EAC9DQ,aAAc7K,WAAS,eAAgB2vB,EAAatlB,YAAY,EAChEa,WAAYlL,WAAS,aAAc2vB,EAAatlB,YAAY,EAC5DW,UAAW,SAAU+kB,GACb3N,EAAUC,IAAIC,gBAAgByN,CAAI,EACtCN,EAAMI,cAAcG,IAAIJ,EAAUxN,CAAO,EACzCsN,EAAW1D,aAAa,MAAO5J,CAAO,EACtCsN,EAAW9tB,UAAU0C,OAAO,YAAY,EACxCqe,GAAoB8M,EAAMztB,OAAQ2tB,EAAatlB,YAAY,GAE/DY,UAAW,SAAUglB,GACbjiB,EAAS,CACT5G,MAAO,KACPN,MAAO,CACHkK,KAAMif,EAASvN,OAASuN,EAASvN,OAAOvgB,WAAa,MACrD8O,QAASxD,EAAcgiB,EAAMztB,OAAQ,eAAe,EAAI,IAAMhC,WAAS,MAAO2vB,EAAatlB,YAAY,EACvG6G,WAAY,OAGpB0R,GAAoB6M,EAAMztB,OAAQ2tB,EAAatlB,aAAc2D,CAAM,GAE1E,EACK8Q,KAAK9e,WAAS,OAAQ2vB,EAAatlB,YAAY,CAAC,GACzD,GAELqhB,EAAeh4B,UAAUk6B,SAAW,SAAUsC,EAAGna,GAC7C,IACQoa,EAIR,MAL8B,eAA1B38B,KAAKwO,OAAO0J,YACRykB,EAAID,EACRA,EAAIna,EACJA,EAAIoa,GAED38B,KAAKwO,OAAOyrB,aAAayC,EAAGna,CAAC,GAExC2V,EAAeh4B,UAAU86B,eAAiB,WAEtC,IADA,IAAIh6B,EAAI,EACDA,EAAIhB,KAAK46B,SAASj6B,QACjBX,KAAK46B,SAAS55B,GAAGqY,cAAc,KAAK,IAEpCrZ,KAAK46B,SAAS55B,GAAG47B,YAAc,WAAc,MAAO,CAAA,IAExD57B,CAAC,IAGTk3B,EAAeh4B,UAAU+6B,cAAgB,WACrC,IAAIgB,EAAQj8B,KACRA,KAAKy4B,UACDz4B,KAAKwO,OAAO0S,kBACRlhB,KAAKihB,SACLjhB,KAAKihB,QAAQ1X,UAEjBvJ,KAAKihB,QAAU,IAAI4b,YAAU78B,KAAKy6B,aAAc,CAC5CqC,eAAgB,CAAA,EAChBC,SAAU,EACVC,iBAAkB,CAAA,EAClBC,WAAY,IAAMhsB,GAClBisB,OAAQl9B,KAAKm9B,WAAW3M,KAAKxwB,IAAI,EACjCo9B,SAAUp9B,KAAKwO,OAAO6uB,mBACtBC,SAAUt9B,KAAKwO,OAAOnB,QACtBkwB,SAAUld,GAAgBmQ,KAAKxwB,KAAMA,KAAKwO,MAAM,EAChDgvB,KAAMtb,GAAgBsO,KAAKxwB,KAAMA,KAAKwO,MAAM,EAC5CivB,MAAO,CAAA,EACPC,UAAW,SAAUtrB,GACjB4O,GAAiBib,EAAMztB,OAAQ4D,EAAM6pB,EAAMhb,OAAO,GAEzD,GAEIjhB,KAAKihB,SAAW,CAACjhB,KAAKwO,OAAO0S,kBAClClhB,KAAKihB,QAAQ1X,YAIzB2uB,EAAeh4B,UAAUi9B,WAAa,SAAU/qB,GACxC6qB,EAAa7qB,EAAKurB,OAAOr9B,OACzBs9B,EAAS5sB,UAAQisB,EAAY,cAAc,EAC/C,GAAI,CAACW,EACD,OAAO,KAEPA,GAAU,CAACA,EAAOxvB,UAAUC,SAAS,UAAU,GAC/CrO,KAAK69B,SAASD,CAAM,EAExB,IAAI5E,EAAYh5B,KAAKqN,QAAQuD,iBAAiB,IAAM2qB,CAAU,EAC9Dv7B,KAAKwO,OAAOgB,eAAiB,GAC7BxP,KAAKwO,OAAOsP,SAAW,GACvB,IAAK,IAAI9c,EAAI,EAAGA,EAAIg4B,EAAUr4B,OAAQK,CAAC,GACnChB,KAAKwO,OAAOsP,SAASrQ,KAAKzN,KAAK89B,cAAc9E,EAAUtqB,SAAS1N,EAAE2N,WAAY,EAAE,EAAE,CAAC,EACnF3O,KAAKwO,OAAOgB,eAAe/B,KAAKurB,EAAUh4B,EAAE,EAKhD,OAHA8O,GAAU9P,KAAKwO,OAAQovB,CAAM,EAC7B59B,KAAKwO,OAAOmP,SAAW3d,KAAKwO,OAAO1B,KACnC8S,GAAyB5f,KAAKwO,MAAM,EAC7BxO,KAAKwO,OAAO4R,oBAEvB8X,EAAeh4B,UAAU69B,WAAa,SAAU3rB,GAC5C,IAEQ4rB,EAFJh+B,KAAKwO,OAAOoG,eAAiB5U,KAAKi+B,kBAC9BC,EAASltB,UAAQoB,EAAK9R,OAAQ,cAAc,EAC5C09B,EAAUxxB,WAASxM,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAAIX,KAAKwO,OAAOI,QAAQ,EAC1FsvB,GACIC,EAAOn+B,KAAK89B,cAAcI,CAAM,EACpCl+B,KAAKwO,OAAO7C,SAAWwyB,EAAKrb,OAAS9iB,KAAKwO,OAAO1B,KAAO6K,GAAY3X,KAAKwO,OAAQ2vB,EAAMn+B,KAAKwO,OAAO1B,IAAI,EACvG9M,KAAKwO,OAAO2P,SAAWggB,EAAKrb,OAASkb,EAAUG,IAG/Cn+B,KAAKwO,OAAO7C,SAAW3L,KAAKwO,OAAO1B,KACnC9M,KAAKwO,OAAO2P,SAAW6f,KAUnC9F,EAAeh4B,UAAU+9B,cAAgB,WACrC,MAAO,kBAEX/F,EAAeh4B,UAAU25B,cAAgB,SAAUznB,GAC/CA,EAAKb,KAAK6sB,gBAAgB,YAAY,EACjCp+B,KAAKwO,OAAOsrB,qBACT,CAAC95B,KAAKwO,OAAOoX,mBAAqBpZ,WAAS,SAAU4F,EAAKisB,OAAO,IAC7DC,EAAUlsB,EAAKb,KAAK8H,cAAc,IAAMklB,EAAa,EACrD3N,EAAMpkB,WAAS,OAAQ4F,EAAKisB,OAAO,EACnCp8B,EAAOuK,WAAS,OAAQ4F,EAAKisB,OAAO,EACd,CAAC,IAAvBzN,EAAIlb,QAAQzT,CAAI,KAChBq8B,EAAQtkB,UAAY4W,EAAIQ,OAAO,EAAGR,EAAIjwB,OAASsB,EAAKtB,MAAM,GAGlEX,KAAKw+B,eAAepsB,CAAI,GAT5B,IAGYwe,EACA3uB,EAORoU,EAAY,CACZhJ,QAAS+E,EAAKb,KACdkF,YAAarE,EAAKisB,QAClB3iB,OAAQ,kBAEZ1b,KAAKwO,OAAO+H,QAAQ,WAAYF,CAAS,GAE7C6hB,EAAeh4B,UAAUs+B,eAAiB,SAAUpsB,GAChD,IAGIqsB,EAHCz+B,KAAKwO,OAAOkwB,sBAGbD,EAAeE,iBAAenlB,gBAAe,CAAA,EAAO,CACpDya,QAAS,CAAA,EACT5Y,SAAU,UACb,GACYmd,aAAa,OAAQ,UAAU,EAC5CiG,EAAajG,aAAa,eAAgB,OAAO,EACjDiG,EAAajG,aAAa,aAAc,UAAU,EAClDpmB,EAAKb,KAAKiR,kBAAkBoc,aAAaH,EAAcrsB,EAAKb,KAAKiR,kBAAkBqc,WAAW,EAAE,IAEpG3G,EAAeh4B,UAAU4+B,eAAiB,SAAU1sB,GAChD,GAAyB,eAArBpS,KAAKwO,OAAO4F,KAAuB,CAOnC,GANApU,KAAKuJ,UACDvJ,KAAKwO,OAAO8rB,sBACZt6B,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAEzDvQ,KAAKm4B,OAAO/lB,CAAI,EAEe,kBAA3B5F,WAAS,OAAQ4F,CAAI,GAAoD,SAA3BpS,KAAKwO,OAAO6G,YAC1DrV,KAAKwO,OAAOM,OAAS9O,KAAKwO,OAAOQ,eAAsD,IAArChP,KAAKwO,OAAOQ,cAAcrO,OAG5E,IAFA,IAAIo+B,EAAU/+B,KAAKg/B,WAAWh/B,KAAKwO,OAAOQ,aAAa,EACnDiwB,EAAW,EACRA,EAAWF,EAAQp+B,QACtBoP,GAAQ/P,KAAK46B,SAASmE,EAAQE,GAAU,EACxCA,CAAQ,GAIS,IADTj/B,KAAKqN,QAAQuD,iBAAiB,IAAM2qB,CAAU,EAChD56B,QACVX,KAAKqN,QAAQijB,QAEjBtwB,KAAKg8B,YACLh8B,KAAKwO,OAAOwD,eAAiB,CAAA,OAG7BhS,KAAKqN,QAAQmrB,aAAa,WAAY,IAAI,GAGlDN,EAAeh4B,UAAU87B,UAAY,WACjC,IAAIkD,EAAWl/B,KAAKqN,QAAQuD,iBAAiB,IAAM2qB,CAAU,EAC7D,GAAI2D,EAEA,IADA,IAAIC,EAAc,EACXA,EAAcD,EAASv+B,QAC1BX,KAAKo/B,WAAWF,EAASC,GAAc,CAAA,CAAI,EAC3CA,CAAW,IAIvBjH,EAAeh4B,UAAU85B,WAAa,SAAU5nB,GAG5C,IAFA,IAAIpR,EAAI,EACJgX,EAAQV,KAAK+T,MAAM/T,KAAKC,UAAUnF,EAAKwB,KAAK,CAAC,EAC1C5S,EAAIgX,EAAMrX,QAAQ,CACrB,IAUQg2B,EAMI0I,EAhBRC,EAAO/pB,GAASyC,EAAMhX,EAAE,EACxB6c,EAASrR,WAAS,OAAQwL,EAAMhX,EAAE,EAClCu+B,EAAW1f,GAAY7f,KAAKwO,OAAQwJ,EAAMhX,EAAE,EAC5CyY,EAAczZ,KAAKwO,OAAO+B,eACsB,CAAC,IAAjDvQ,KAAKwO,OAAO+B,cAAcmF,QAAQ6pB,CAAQ,EAC1CtuB,GAAiB,YAAcA,GAC9BgS,EAAcjL,EAAMhX,EAAE,IACvByY,GAAa,IAAMoK,GAAe7L,EAAMhX,EAAE,GAE1Cs+B,IAASzpB,IAAkB7V,KAAKwO,OAAOgxB,eAAiB1qB,GAAckD,EAAMhX,EAAE,GAC1E21B,EAAY1gB,GAAYjW,KAAKwO,OAAQwJ,EAAMhX,EAAE,GACnC2V,eACViE,WAAS,eAAgB+b,EAAUjgB,SAAUsB,EAAMhX,EAAE,EACrD4Z,WAAS,gBAAiB,CAAEmc,IAAKlZ,GAAU7F,EAAMhX,EAAE,IAInDhB,KAAK86B,kBAAkB0B,IADnB6C,EAAY,OAASxhB,EAAS,IAAM7c,EACF21B,CAAS,EAC/C/b,WAAS,eAAgB,GAAI5C,EAAMhX,EAAE,EACrC4Z,WAAS,gBAAiB,CAAEmc,IAAKlZ,EAAQ7b,MAAO,wBAAyBy9B,iBAAkBJ,GAAarnB,EAAMhX,EAAE,GAIpH4Z,WAAS,WAAY0kB,EAAMtnB,EAAMhX,EAAE,EAEvC4Z,WAAS,eAAgB,CAAE5Y,MAAOyX,EAAWimB,MAAO7hB,GAAU7F,EAAMhX,EAAE,EACtEA,CAAC,GAEL,OAAOgX,GAEXkgB,EAAeh4B,UAAUy/B,cAAgB,SAAUvtB,GAC/CpS,KAAKm4B,OAAO/lB,CAAI,GAEpB8lB,EAAeh4B,UAAU0/B,YAAc,SAAUxtB,GACpB,eAArBpS,KAAKwO,OAAO4F,OAGhBpU,KAAK8+B,eAAe1sB,CAAI,EACxBpS,KAAK6/B,cACL7/B,KAAKq7B,YAAY,CAAC7uB,WAASxM,KAAKwO,OAAOxB,MAAQ,KAAO,OAAQhN,KAAKwO,OAAO8d,WAAW,EAAE,EACvFtsB,KAAKwO,OAAO8d,YAAc,KAC1BtsB,KAAKwO,OAAOyF,qBAAqB5G,QAAQijB,QACzCtwB,KAAKwO,OAAOmB,aAAe,mBAE/BuoB,EAAeh4B,UAAU4/B,eAAiB,WACL,mBAA7B9/B,KAAKwO,OAAOmB,cACZ3P,KAAK+/B,sBAGb7H,EAAeh4B,UAAU8/B,aAAe,WACH,mBAA7BhgC,KAAKwO,OAAOmB,cACZ8T,GAAOzjB,KAAKwO,OAAQxO,KAAKwO,OAAO+B,cAAevQ,KAAKwO,OAAO1B,KAAM,QAAQ,GAIjForB,EAAeh4B,UAAU+/B,YAAc,SAAU7tB,GACpB,eAArBpS,KAAKwO,OAAO4F,OAGhBpU,KAAK8+B,eAAe1sB,CAAI,EACxBpS,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDvQ,KAAK6/B,gBAET3H,EAAeh4B,UAAUggC,aAAe,SAAU9tB,GACrB,eAArBpS,KAAKwO,OAAO4F,MAGhBpU,KAAK8+B,eAAe1sB,CAAI,GAE5B8lB,EAAeh4B,UAAUigC,aAAe,WACH,mBAA7BngC,KAAKwO,OAAOmB,cAA0E,IAArC3P,KAAKwO,OAAO+B,cAAc5P,QAC3EX,KAAKogC,oBAGblI,EAAeh4B,UAAUmgC,cAAgB,SAAUjuB,GAC/CpS,KAAKwO,OAAOM,MAAQ,CAAA,EAE4C,KAA5D9O,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,QAClDpQ,KAAKwO,OAAO8xB,cAAgB,IAEP,eAArBtgC,KAAKwO,OAAO4F,OACZrF,EAAW/O,KAAKwO,MAAM,EACtBxO,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDvQ,KAAK8+B,eAAe1sB,CAAI,EACpBpS,KAAKwO,OAAO8b,cAA4C,mBAA7BtqB,KAAKwO,OAAOmB,eACvC3P,KAAK6/B,cACL7/B,KAAKugC,aAAavgC,KAAKwO,OAAO8b,WAAW,IAIrD4N,EAAeh4B,UAAUsgC,WAAa,SAAUpuB,GACX,mBAA7BpS,KAAKwO,OAAOmB,cACZ3P,KAAKygC,aAAaruB,EAAK9R,MAAM,GAGrC43B,EAAeh4B,UAAUwgC,aAAe,WACX,eAArB1gC,KAAKwO,OAAO4F,MAAyBpU,KAAKqN,SAC1CrN,KAAKqN,QAAQe,UAAUqC,IAAI4pB,EAAgB,GAGnDnC,EAAeh4B,UAAUygC,gBAAkB,WACvC,IAEQC,EAFiB,eAArB5gC,KAAKwO,OAAO4F,OACZpU,KAAKq4B,UAAYr4B,KAAK6gC,eAClBD,EAAW5gC,KAAK8gC,cAEpB9gC,KAAK+gC,YAAYH,EADH,CAAEI,QAAS,CAAA,EAAMC,SAAU,CAAA,EACP,EAClCjhC,KAAKkhC,cAAgB,CAAA,EACrBlhC,KAAK40B,aAAe,CAAA,IAG5BsD,EAAeh4B,UAAUihC,eAAiB,WACb,eAArBnhC,KAAKwO,OAAO4F,OACZpU,KAAKohC,iBACLphC,KAAKkhC,cAAgB,CAAA,EACrBlhC,KAAK40B,aAAe,CAAA,IAG5BsD,EAAeh4B,UAAUmhC,gBAAkB,WACvCrhC,KAAK87B,WAAa,CAAA,GAEtB5D,EAAeh4B,UAAUohC,eAAiB,WACtCthC,KAAK87B,WAAa,CAAA,GAGtB5D,EAAeh4B,UAAUqhC,SAAW,SAAUnvB,GACjB,eAArBpS,KAAKwO,OAAO4F,OACZpU,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDvQ,KAAKwO,OAAOW,OAAO8c,EAAyB,EAAE,EAC9CjsB,KAAKwO,OAAO8xB,cAAgBluB,EAAKwB,MACjC5T,KAAK8+B,eAAe1sB,CAAI,IAGhC8lB,EAAeh4B,UAAUshC,gBAAkB,WACnCxhC,KAAKwO,OAAO4F,MAIpB8jB,EAAeh4B,UAAUuhC,sBAAwB,WACpB,eAArBzhC,KAAKwO,OAAO4F,MAGhBpU,KAAK+/B,sBAET7H,EAAeh4B,UAAUwhC,aAAe,WACX,eAArB1hC,KAAKwO,OAAO4F,MAA0BxH,oBAAM5M,KAAKy4B,OAAO,GACI,KAA5Dz4B,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBpQ,KAAKwO,OAAO6B,YACrD,eAAvBrQ,KAAKwO,OAAO4J,SACfpY,KAAKwO,OAAO4J,OAAS,OACrBpY,KAAKwO,OAAOW,OAAOwM,GAAqB,EAAE,IAGlDuc,EAAeh4B,UAAUy4B,oBAAsB,WACvC34B,KAAKwO,OAAOmzB,cAGhB3hC,KAAKwO,OAAOozB,IAAIzvB,GAAmBnS,KAAK0hC,YAAY,EACpD1hC,KAAKwO,OAAOozB,IAAIrlB,EAAoBvc,KAAK2/B,aAAa,EACtD3/B,KAAKwO,OAAOozB,IAAIrV,GAAkBvsB,KAAK4/B,WAAW,EAClD5/B,KAAKwO,OAAOozB,IAAIC,GAAqB7hC,KAAK8/B,cAAc,EACxD9/B,KAAKwO,OAAOozB,IAAInR,GAAmBzwB,KAAKggC,YAAY,EACpDhgC,KAAKwO,OAAOozB,IAAIxU,GAAkBptB,KAAKigC,WAAW,EAClDjgC,KAAKwO,OAAOozB,IAAI7sB,GAAmB/U,KAAKkgC,YAAY,EACpDlgC,KAAKwO,OAAOozB,IAAI7U,EAAoB/sB,KAAKqgC,aAAa,EACtDrgC,KAAKwO,OAAOozB,IAAIpvB,EAAqBxS,KAAK8+B,cAAc,EACxD9+B,KAAKwO,OAAOozB,IAAInvB,GAAezS,KAAKuhC,QAAQ,EAC5CvhC,KAAKwO,OAAOozB,IAAIE,GAAiB9hC,KAAKwgC,UAAU,EAChDxgC,KAAKwO,OAAOozB,IAAIzsB,GAAgBnV,KAAKqgC,aAAa,EAClDrgC,KAAKwO,OAAOozB,IAAIG,EAAqB/hC,KAAKgiC,iBAAiB,EAC3DhiC,KAAKwO,OAAOozB,IAAIK,GAAmBjiC,KAAKkiC,YAAY,EACpDliC,KAAKwO,OAAOozB,IAAIpQ,GAAsBxxB,KAAKmiC,eAAe,EAC1DniC,KAAKwO,OAAOozB,IAAIQ,GAAmBpiC,KAAKmgC,YAAY,EACpDngC,KAAKwO,OAAOozB,IAAI5U,EAAkBhtB,KAAKqgC,aAAa,EACpDrgC,KAAKwO,OAAOozB,IAAIhJ,GAAmB54B,KAAK0gC,YAAY,EACpD1gC,KAAKwO,OAAOozB,IAAIS,GAAsBriC,KAAK2gC,eAAe,EAC1D3gC,KAAKwO,OAAOozB,IAAIU,GAAqBtiC,KAAKmhC,cAAc,EACxDnhC,KAAKwO,OAAOozB,IAAIW,GAAqBviC,KAAKwiC,cAAc,EACxDxiC,KAAKwO,OAAOozB,IAAIxX,GAAsBpqB,KAAKqhC,eAAe,EAC1DrhC,KAAKwO,OAAOozB,IAAInW,GAAqBzrB,KAAKshC,cAAc,EACxDthC,KAAKwO,OAAOozB,IAAIa,GAAuBziC,KAAK0iC,qBAAqB,EACjE1iC,KAAKwO,OAAOozB,IAAIe,GAAkB3iC,KAAK4iC,aAAa,EACpD5iC,KAAKwO,OAAOozB,IAAIvkB,GAAkBrd,KAAK6iC,WAAW,EAClD7iC,KAAKwO,OAAOozB,IAAIxiB,GAAiBpf,KAAK8iC,UAAU,EAChD9iC,KAAKwO,OAAOozB,IAAInyB,GAAoBzP,KAAK+iC,aAAa,EACtD/iC,KAAKwO,OAAOozB,IAAI9gB,GAAiB9gB,KAAK+9B,UAAU,EAChD/9B,KAAKwO,OAAOozB,IAAIoB,EAAoBhjC,KAAKijC,aAAa,EACtDjjC,KAAKwO,OAAOozB,IAAIsB,GAAsBljC,KAAKwhC,eAAe,EAC1DxhC,KAAKwO,OAAOozB,IAAIniB,GAAiBzf,KAAKmjC,UAAU,EAChDnjC,KAAKwO,OAAOozB,IAAIwB,GAA4BpjC,KAAKyhC,qBAAqB,EACtEzhC,KAAKwO,OAAOozB,IAAIyB,GAAkBrjC,KAAKqgC,aAAa,IAExDnI,EAAeh4B,UAAUw7B,iBAAmB,WACxC17B,KAAKwO,OAAO80B,GAAGnxB,GAAmBnS,KAAK0hC,aAAc1hC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAG/mB,EAAoBvc,KAAK2/B,cAAe3/B,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAG/W,GAAkBvsB,KAAK4/B,YAAa5/B,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGvuB,GAAmB/U,KAAKkgC,aAAclgC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGzB,GAAqB7hC,KAAK8/B,eAAgB9/B,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAGvW,EAAoB/sB,KAAKqgC,cAAergC,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAG7S,GAAmBzwB,KAAKggC,aAAchgC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGjmB,GAAkBrd,KAAK6iC,YAAa7iC,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGlW,GAAkBptB,KAAKigC,YAAajgC,IAAI,EACvDA,KAAKwO,OAAO80B,GAAG9wB,EAAqBxS,KAAK8+B,eAAgB9+B,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAG7wB,GAAezS,KAAKuhC,SAAUvhC,IAAI,EACjDA,KAAKwO,OAAO80B,GAAGxB,GAAiB9hC,KAAKwgC,WAAYxgC,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGlB,GAAmBpiC,KAAKmgC,aAAcngC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGtW,EAAkBhtB,KAAKqgC,cAAergC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGnuB,GAAgBnV,KAAKqgC,cAAergC,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGvB,EAAqB/hC,KAAKgiC,kBAAmBhiC,IAAI,EAChEA,KAAKwO,OAAO80B,GAAGrB,GAAmBjiC,KAAKkiC,aAAcliC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAG9R,GAAsBxxB,KAAKmiC,gBAAiBniC,IAAI,EAC/DA,KAAKwO,OAAO80B,GAAG1K,GAAmB54B,KAAK0gC,aAAc1gC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGjB,GAAsBriC,KAAK2gC,gBAAiB3gC,IAAI,EAC/DA,KAAKwO,OAAO80B,GAAGhB,GAAqBtiC,KAAKmhC,eAAgBnhC,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAGf,GAAqBviC,KAAKwiC,eAAgBxiC,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAGlZ,GAAsBpqB,KAAKqhC,gBAAiBrhC,IAAI,EAC/DA,KAAKwO,OAAO80B,GAAG7X,GAAqBzrB,KAAKshC,eAAgBthC,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAGxiB,GAAiB9gB,KAAK+9B,WAAY/9B,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGN,EAAoBhjC,KAAKijC,cAAejjC,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAGb,GAAuBziC,KAAK0iC,sBAAuB1iC,IAAI,EACtEA,KAAKwO,OAAO80B,GAAGX,GAAkB3iC,KAAK4iC,cAAe5iC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGlkB,GAAiBpf,KAAK8iC,WAAY9iC,IAAI,EACrDA,KAAKwO,OAAO80B,GAAG7zB,GAAoBzP,KAAK+iC,cAAe/iC,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAGJ,GAAsBljC,KAAKwhC,gBAAiBxhC,IAAI,EAC/DA,KAAKwO,OAAO80B,GAAG7jB,GAAiBzf,KAAKmjC,WAAYnjC,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGF,GAA4BpjC,KAAKyhC,sBAAuBzhC,IAAI,EAC3EA,KAAKwO,OAAO80B,GAAGD,GAAkBrjC,KAAKqgC,cAAergC,IAAI,GAE7Dk4B,EAAeh4B,UAAUiiC,gBAAkB,WAAcniC,KAAKkhC,cAAgB,CAAA,EAAMlhC,KAAK40B,aAAe,CAAA,GACxGsD,EAAeh4B,UAAUsiC,eAAiB,SAAUpwB,GAC5CpS,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,kBAC9Bhe,EAAMjP,UAAQoB,EAAK9R,OAAQ,IAAI,EACnCN,KAAKwO,OAAO8D,SAAW,CAACtS,KAAK89B,cAAc7d,CAAG,KAGtDiY,EAAeh4B,UAAU+iC,cAAgB,WACjCjjC,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,kBACO,IAArCj+B,KAAKwO,OAAO+B,cAAc5P,OAC1BX,KAAK+/B,qBAGL//B,KAAKwO,OAAO8D,SAAW,CAAC9F,WAASxM,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAAIX,KAAKwO,OAAOI,QAAQ,KAIpHspB,EAAeh4B,UAAU2iC,YAAc,WAC/B7iC,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,kBAClCj+B,KAAKwO,OAAO8D,SAAuC,KAA3BtS,KAAKwO,OAAOyO,WAAqB,CAACxJ,EAAczT,KAAKwO,MAAM,GAC/E,CAACxO,KAAK89B,cAAcjlB,SAAO,YAAa7Y,KAAKqN,OAAO,CAAC,KAGjE6qB,EAAeh4B,UAAU6iC,cAAgB,WACrC,GAAI/iC,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,gBAAiB,CACnD,IAAIjF,EAAYh5B,KAAKqN,QAAQuD,iBAAiB,IAAM2qB,CAAU,EAC9Dv7B,KAAKwO,OAAOyB,cAAgB,GAC5BjQ,KAAKwO,OAAOgB,eAAiB,GAC7B,IAAK,IAAIxO,EAAI,EAAGA,EAAIg4B,EAAUr4B,OAAQK,CAAC,GACnChB,KAAKwO,OAAOgB,eAAe/B,KAAKurB,EAAUh4B,EAAE,EAC5ChB,KAAKwO,OAAOyB,cAAcxC,KAAKzN,KAAK89B,cAAc9E,EAAUh4B,EAAE,CAAC,IAI3Ek3B,EAAeh4B,UAAU4iC,WAAa,SAAU1wB,GACnB,eAArBpS,KAAKwO,OAAO4F,OACZpU,KAAKo7B,iBAAmB,CAAA,EACpBp7B,KAAKwO,OAAO1B,OAAS9M,KAAKwO,OAAO0X,iBACjClmB,KAAKwO,OAAO1B,OAASuR,GAAiBre,KAAKwO,OAAQ4D,CAAI,GAAKpS,CAAAA,KAAKwO,OAAOxB,OACxEhN,KAAKqgC,cAAcjuB,CAAI,IAInC8lB,EAAeh4B,UAAUijC,WAAa,SAAU/wB,GACnB,eAArBpS,KAAKwO,OAAO4F,OACZpU,KAAKo7B,iBAAmB,CAAA,EACxBp7B,KAAKqgC,cAAcjuB,CAAI,IAG/B8lB,EAAeh4B,UAAU8hC,kBAAoB,SAAUzT,GACnD,IAAIgV,EACJ,GAAIhV,EAAE7S,SAAW1b,KAAKi+B,iBAAgC,WAAb1P,EAAE7S,OAG3C,IAAK,IAAI8nB,EAAK,EAAGC,EAAKlkC,OAAOojB,KAAK4L,EAAEmV,OAAO,EAAGF,EAAKC,EAAG9iC,OAAQ6iC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,mBACDxjC,KAAKi7B,gBACL,MACJ,IAAK,gBACDj7B,KAAKkhC,cAAgB,CAAA,EACrBlhC,KAAK40B,aAAe,CAAA,EACpB2O,EAAkB32B,oBAAM5M,KAAKwO,OAAO+B,aAAa,EAAI,GAAKvQ,KAAKwO,OAAO+B,cAAcmB,MAAM,CAAC,EAC3F6xB,EAAkBvjC,KAAKwO,OAAOm1B,oBAAsBJ,EAChDA,EAAgB7xB,MAAM6xB,EAAgB5iC,OAAS,CAAC,EACpDX,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDvQ,KAAKmhC,iBACDoC,EAAgB5iC,QAChBX,KAAKq7B,YAAYkI,CAAe,EAEpCvjC,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAevQ,KAAKwO,OAAO+B,eAAiB,CAAA,CAAI,EAC5EvQ,KAAKkhC,cAAgB,CAAA,EACrBlhC,KAAK40B,aAAe,CAAA,EACpB,MACJ,IAAK,gBACD/f,GAAQ7U,KAAKwO,MAAM,EACnB,MACJ,IAAK,oBAGL,IAAK,kBACD+D,EAAKvS,KAAKwO,OAAQue,EAAoB/sB,KAAKwO,OAAO1B,IAAI,EACtD,MACJ,IAAK,sBACL,IAAK,qBACwB,eAArB9M,KAAKwO,OAAO4F,MAGhBS,GAAQ7U,KAAKwO,MAAM,EACnB,MACJ,IAAK,OACD2F,GAAanU,KAAKwO,OAAQ,YAAY,IAKtD0pB,EAAeh4B,UAAUqJ,QAAU,WAC3BvJ,KAAKwO,OAAOmzB,cAGhB3hC,KAAK24B,sBACD34B,KAAKy4B,SACLz4B,KAAK04B,eAET14B,KAAKq4B,UAAY,KACjBr4B,KAAKy6B,aAAe,OAExBvC,EAAeh4B,UAAUy7B,WAAa,WAClC37B,KAAK4jC,eAAe,CAAA,CAAI,EACxB5jC,KAAK6jC,eAAiB,IAAIC,iBAAe9jC,KAAKqN,QAAS,CACnD02B,UAAW/jC,KAAKgkC,iBAAiBxT,KAAKxwB,IAAI,EAC1CikC,WAAYjkC,KAAKikC,WACjB3nB,UAAW,QACd,EACDtc,KAAKkkC,mBAAqB,IAAIJ,iBAAe9jC,KAAKqN,QAAS,CACvD02B,UAAW/jC,KAAKmkC,qBAAqB3T,KAAKxwB,IAAI,EAC9CikC,WAAYjkC,KAAKikC,WACjB3nB,UAAW,UACd,EACD8nB,eAAa3zB,IAAIzQ,KAAKqN,QAAS,YAAarN,KAAKqkC,YAAarkC,IAAI,GAEtEk4B,EAAeh4B,UAAUw4B,aAAe,WACpC14B,KAAK4jC,eAAe,CAAA,CAAK,EACzBQ,eAAatzB,OAAO9Q,KAAKqN,QAAS,YAAarN,KAAKqkC,WAAW,EAC/DrkC,KAAK6jC,eAAet6B,UACpBvJ,KAAKkkC,mBAAmB36B,WAG5B2uB,EAAeh4B,UAAUmkC,YAAc,SAAU9V,GACzC+V,EAAYtzB,UAAQud,EAAEjuB,OAAQ,cAAc,EAChDyO,EAAW/O,KAAKwO,OAAQ,OAAO,EACb,OAAd81B,GACAA,EAAUl2B,UAAUqC,IAAII,EAAS,GAGzCqnB,EAAeh4B,UAAU0jC,eAAiB,SAAUW,GAChD,IAAItI,EAAQj8B,KACRukC,EACAvkC,KAAKwkC,SAAW,IAAIC,QAAMzkC,KAAKqN,QAAS,CACpCq3B,IAAK,SAAUC,GACP1I,EAAMztB,OAAOo2B,UACb3I,EAAM4I,SAAWF,EAAIE,SACrB5I,EAAM6I,SAAWH,EACjBviB,WAAW,WACc,EAAjB6Z,EAAM4I,UACN5I,EAAM8I,YAAY9I,EAAM6I,QAAQ,EAEpC7I,EAAM4I,SAAW,GAClB,GAAG,GAGe,IAAjBF,EAAIE,UAA8C,IAA5BF,EAAIK,cAAcxO,MACxCyF,EAAMgJ,gBAAgBN,CAAG,EAGzB1I,EAAMiJ,aAAaP,CAAG,GAIlCQ,QAAS,SAAU5W,GACX0N,EAAMztB,OAAOo2B,WACb3I,EAAMmJ,YAAcnJ,CAAAA,CAAAA,EAAMztB,OAAOm1B,oBAC7B1H,EAAMztB,OAAOm1B,qBACb0B,WAAS,CAACpJ,EAAMztB,OAAOnB,SAAUi4B,EAAgB,EAErDrJ,EAAMiJ,aAAa3W,CAAC,IAG/B,EAGGvuB,KAAKwkC,UACLxkC,KAAKwkC,SAASj7B,WAI1B2uB,EAAeh4B,UAAU6kC,YAAc,SAAUJ,GAC7C,IAAIrkC,EAASqkC,EAAIK,cAAc1kC,OAC3BiR,EAAOP,UAAQ1Q,EAAQ,IAAM0N,CAAa,EAC1ChO,KAAKolC,aAAe9kC,EAAO8N,UAAUC,SAAS8sB,EAAe,GAAKvuB,oBAAM2E,CAAI,EAC5EvR,KAAKklC,aAAaP,CAAG,GAGrB3kC,KAAKwO,OAAOsU,OAAS,CAAA,EACrB9iB,KAAKulC,WAAWh0B,CAAI,EACfvR,KAAKwO,OAAOsU,OAGS,IAAjB6hB,EAAIE,UACT7kC,KAAKklC,aAAaP,CAAG,EACrB3kC,KAAKilC,gBAAgBN,CAAG,GAGxB3kC,KAAKklC,aAAaP,CAAG,EAPrB3kC,KAAKilC,gBAAgBN,CAAG,IAWpCzM,EAAeh4B,UAAUglC,aAAe,SAAU3W,GAC9C,IAAIjuB,EAASiuB,EAAEyW,cAAc1kC,OAC7ByO,EAAW/O,KAAKwO,OAAQ,OAAO,EAC/BxO,KAAK+gC,YAAYzgC,EAAQiuB,EAAEyW,aAAa,EACxChlC,KAAKwO,OAAOmB,aAAe,kBAS/BuoB,EAAeh4B,UAAU6gC,YAAc,SAAUzgC,EAAQiuB,GACrD,IAAIyS,EAAUhhC,KAAKwO,OAAOg3B,MAAQjX,EAAEkX,QAAUlX,EAAEyS,QAC5C0E,EAAkB1lC,KAAKwO,OAAOg3B,OAASjX,EAAEyS,SAAWzS,EAAE0S,SACtD1vB,EAAOP,UAAQ1Q,EAAQ,IAAM0N,CAAa,EAC1C23B,EAAQrlC,EAAO8N,UAEfkB,GADJtP,KAAKwO,OAAOsU,OAAS,CAAA,EACR,UACb,GAAiB,IAAZyL,EAAEiI,OAAekP,CAAAA,GAAqB94B,oBAAM2E,CAAI,GAAKA,CAAAA,EAAKnD,UAAUC,SAASktB,CAAU,EAA5F,CAKK,GAAK3uB,oBAAM2E,CAAI,EAsDZvR,KAAKwO,OAAO+B,cAAc5P,SAAWX,KAAK46B,SAASj6B,SACnDX,KAAK4lC,kBAAoB,CAAA,GAE7B5lC,KAAKohC,sBAhDL,GARIphC,KAAKwO,OAAOm1B,qBAAuBpyB,EAAKnD,UAAUC,SAASktB,CAAU,IACjEyF,GAAW1gC,EAAO8N,UAAUC,SAASw3B,EAAS,KAClDv2B,EAAS,YAET0xB,GAAWzS,EAAE0S,UAAY,CAACyE,IAC1B1lC,KAAK4lC,kBAAoB,CAAA,GAGI,CAAA,IADT5lC,KAAK8lC,iBAAiBx2B,EAAQiC,CAAI,EACpCgP,OAAiB,CAMnC,GALMvgB,KAAKwO,OAAOm1B,sBAAyB3jC,KAAKolC,aAAgB7W,CAAAA,GAAMyS,IAC9D2E,EAAMt3B,SAAS03B,EAAS,IAC5B/lC,KAAKulC,WAAWh0B,CAAI,EACpBvR,KAAK6/B,eAEL7/B,KAAKwO,OAAOm1B,qBAAuBpV,EAAE0S,UAAY,CAACyE,EAAiB,CAC7DnX,GAAKyS,GACPhhC,KAAK6/B,cAEJ7/B,KAAKq4B,YACNr4B,KAAKq4B,UAAY9mB,GAErB,IAAIy0B,EAAahmC,KAAK46B,SAASllB,QAAQ1V,KAAKq4B,SAAS,EACjD4N,EAAWjmC,KAAK46B,SAASllB,QAAQnE,CAAI,EACzC,GAAiB00B,EAAbD,EACA,IAAK,IAAIhlC,EAAIglC,EAAiBC,GAALjlC,EAAeA,CAAC,GACrChB,KAAKkmC,UAAUlmC,KAAK46B,SAAS55B,EAAE,OAInC,IAASA,EAAIglC,EAAYhlC,GAAKilC,EAAUjlC,CAAC,GACrChB,KAAKkmC,UAAUlmC,KAAK46B,SAAS55B,EAAE,EAGvChB,KAAKmmC,SAASnmC,KAAK46B,SAASqL,EAAS,OAGrCjmC,KAAKq4B,UAAY9mB,EACbvR,KAAKwO,OAAOm1B,qBAAuBpyB,EAAKnD,UAAUC,SAASktB,CAAU,EACrEv7B,KAAK6O,aAAa0C,CAAI,EAGtBvR,KAAKkmC,UAAU30B,CAAI,EAEvBvR,KAAKmmC,SAAS50B,CAAI,EAEmB,IAArCvR,KAAKwO,OAAO+B,cAAc5P,QAC1BX,KAAKu4B,mBAETv4B,KAAKwO,OAAOW,OAAO8c,EAAyB,EAAE,EAC9CjsB,KAAKomC,cAAc92B,EAAQiC,CAAI,EASlC3E,oBAAM2E,CAAI,IACXvR,KAAK4lC,kBAAoB,CAAA,EACzB5lC,KAAKulC,WAAWh0B,CAAI,QAjEpBvR,KAAKkmC,UAAU30B,CAAI,EACnBvR,KAAKulC,WAAWh0B,CAAI,GAmE5B2mB,EAAeh4B,UAAU+kC,gBAAkB,SAAU1W,GACjDvuB,KAAKwO,OAAOmB,aAAe,iBACvBrP,EAASiuB,EAAEyW,cAAc1kC,OAC7BN,KAAKygC,aAAangC,CAAM,GAE5B43B,EAAeh4B,UAAUkhC,eAAiB,WACtCphC,KAAK6/B,cACL7/B,KAAKu4B,mBACLv4B,KAAKwO,OAAOW,OAAO8c,EAAyB,EAAE,GAElDiM,EAAeh4B,UAAUq4B,iBAAmB,WACxCv4B,KAAKolC,YAAc,CAAA,EACnBiB,cAAY,CAACrmC,KAAKwO,OAAOnB,SAAUi4B,EAAgB,GAEvDpN,EAAeh4B,UAAUugC,aAAe,SAAUngC,GAC9C,IAQQgmC,EARJrK,EAAQj8B,KACR4M,oBAAMtM,CAAM,IAGZiR,EAAOP,UAAQ1Q,EAAQ,IAAM0N,CAAa,EAC9ChO,KAAKwO,OAAOsU,OAAS,CAAA,EAChBlW,oBAAM2E,CAAI,KACXvR,KAAKulC,WAAWh0B,CAAI,EAEfuD,GADDwxB,EAAYtmC,KAAK89B,cAAcvsB,CAAI,CACX,EAK5BvR,KAAKwO,OAAO+H,QAAQ,WADJ,CAAEgK,OAAQ,CAAA,EAAO9J,YAAa6vB,EAAW5qB,OAAQ,kBACtB,SAAU6qB,GACjD,IAOgB93B,EAPX83B,EAAahmB,SACVhU,EAAOC,WAAS,OAAQ85B,CAAS,EAChCrK,EAAMztB,OAAOsU,OAmBHvN,GAAS+wB,CAAS,IAChBzwB,KACL8gB,EAAY1gB,GAAYgmB,EAAMztB,OAAQ83B,CAAS,EACnD5P,GAAkBuF,EAAMztB,OAAQjC,EAAMoqB,CAAS,IApBvC,KADFsF,EAAMztB,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAC1C6rB,EAAMztB,OAAO6B,WAW5BoM,GAAiBwf,EAAMztB,OAAQ83B,CAAS,GAVpC75B,EAAKD,WAAS,KAAM85B,CAAS,EACjCrK,EAAMztB,OAAO4P,QAAU6d,EAAMztB,OAAO1B,KAChC2B,EAAUwtB,EAAMztB,OAAO1B,MAAQF,oBAAMH,CAAE,EAAIF,EAAOE,GAAM,IAC5DwvB,EAAMztB,OAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EAClDwtB,EAAMztB,OAAOrB,UAAUM,KAAKlB,CAAI,EAChC0vB,EAAMztB,OAAOvB,OAAOQ,KAAKjB,WAAS,SAAU85B,CAAS,CAAC,EACtDrK,EAAMztB,OAAO8D,SAAW,CAACg0B,GACzBpxB,GAAW+mB,EAAMztB,MAAM,GAK3BytB,EAAMztB,OAAO6B,WAAa,CAAA,EAC1B4rB,EAAMztB,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,IAUjE,EAjCGyE,EAAmBhV,KAAKwO,OAAQ83B,EAAWrxB,EAAqB,IAoC5EijB,EAAeh4B,UAAUqlC,WAAa,SAAUh0B,GAC5CvR,KAAKwO,OAAOsU,OAAStW,WAAS,SAAUxM,KAAK89B,cAAcvsB,CAAI,CAAC,GAGpE2mB,EAAeh4B,UAAUikC,qBAAuB,SAAU5V,GACtD,GAAKvuB,KAAK87B,WAGV,OAAQvN,EAAEjf,QACN,IAAK,MACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,MACL,IAAK,MACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,KACL,IAAK,QACDif,EAAEuH,mBAOdoC,EAAeh4B,UAAU8jC,iBAAmB,SAAUzV,GAClD,IAAI0N,EAAQj8B,KACZ,GAAKA,KAAK87B,WAAV,CAGA,IAAI0K,EAAQxmC,KAAKymC,iBACbC,EAAY1mC,KAAK6gC,eACjBD,EAAW5gC,KAAK8gC,cACpB,OAAQvS,EAAEjf,QACN,IAAK,MACGtP,KAAKwO,OAAO8rB,sBACZt6B,KAAK6/B,cACL7/B,KAAKqN,QAAQmV,kBAAkBmkB,SAAS,EAAG3mC,KAAKqN,QAAQmV,kBAAkBokB,YAAY,EACtFxkB,WAAW,WACP6Z,EAAM4K,aAAa5K,EAAMrB,SAASqB,EAAMrB,SAASj6B,OAAS,EAAE,GAC7D,EAAE,GAGLX,KAAK6mC,aAAajG,CAAQ,EAE9B,MACJ,IAAK,OACG5gC,KAAKwO,OAAO8rB,sBACZt6B,KAAK6/B,cACL7/B,KAAKqN,QAAQmV,kBAAkBskB,UAAY,EAC3C1kB,WAAW,WACP6Z,EAAM4K,aAAa5K,EAAMrB,SAAS,EAAE,GACrC,EAAE,GAGL56B,KAAK6mC,aAAaH,CAAS,EAE/B,MACJ,IAAK,MACI95B,oBAAM45B,CAAK,EAGN55B,oBAAM85B,CAAS,GACrB1mC,KAAKmmC,SAASO,CAAS,EAHvB1mC,KAAKmmC,SAASK,CAAK,EAKvB,MACJ,IAAK,WACDxmC,KAAK+mC,aAAaP,EAAO,CAAA,CAAI,EAC7B,MACJ,IAAK,WACDxmC,KAAKgnC,cAAcR,EAAO,CAAA,CAAK,EAC/B,MACJ,IAAK,YACDxmC,KAAKgnC,cAAcR,EAAO,CAAA,CAAI,EAC9B,MACJ,IAAK,SACDxmC,KAAK+mC,aAAaP,EAAO,CAAA,CAAK,EAC9B,MACJ,IAAK,UACL,IAAK,WACL,IAAK,QACDxmC,KAAKinC,SAASrG,EAAUrS,CAAC,EACzB,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDvuB,KAAKknC,UAAUR,EAAWnY,CAAC,EAC3B,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDvuB,KAAKmnC,UAAUX,EAAOjY,CAAC,EACvB,MACJ,IAAK,WACL,IAAK,YACL,IAAK,SACDvuB,KAAKonC,UAAUZ,EAAOjY,CAAC,EACvB,MACJ,IAAK,YACL,IAAK,aACL,IAAK,UACDvuB,KAAKqnC,WAAWb,EAAOjY,CAAC,EACxB,MACJ,IAAK,SACL,IAAK,UACL,IAAK,OACDvuB,KAAKsnC,QAAQd,EAAOjY,CAAC,EACrB,MACJ,IAAK,QACDvuB,KAAKunC,SAASf,CAAK,EACnB,MACJ,IAAK,YACL,IAAK,aACL,IAAK,UACI55B,oBAAM45B,CAAK,GACZxmC,KAAK+gC,YAAYyF,EAAOjY,CAAC,EAE7B,MACJ,IAAK,QACDvuB,KAAKwnC,SAASd,EAAW9F,CAAQ,EACjC,MACJ,IAAK,QACD5gC,KAAKygC,aAAazgC,KAAKwO,OAAO4pB,aAAwCp4B,KAAKynC,gBAAgB,EAC3F,MACJ,IAAK,WACDznC,KAAKwO,OAAOW,OAAO6zB,EAAoB,EAAE,EACzC3c,GAAWrmB,KAAKwO,OAAQxO,KAAKwO,OAAO+B,cAAevQ,KAAKwO,OAAO1B,KAAM,SAAS,EAC9E,MACJ,IAAK,MACD+B,GAAa7O,KAAKwO,MAAM,EACxB,MACJ,IAAK,MACL,IAAK,WACDxO,KAAK0nC,gBACL,MACJ,IAAK,QACDtyB,GAAUpV,KAAKwO,MAAM,EACrB,MACJ,IAAK,QACDxO,KAAKwO,OAAOyO,WAAa,GACzBF,GAAa/c,KAAKwO,MAAM,EACxB,MACJ,IAAK,QACD8G,GAAStV,KAAKwO,MAAM,EACpB,MACJ,IAAK,KACDxO,KAAK2nC,gBACL,MACJ,IAAK,QACD3nC,KAAKmjB,aACL,MACJ,IAAK,OACDnjB,KAAKwO,OAAOo5B,sBAIxB1P,EAAeh4B,UAAUijB,WAAa,WAClCnjB,KAAK+/B,qBACL5c,GAAWnjB,KAAKwO,MAAM,GAE1B0pB,EAAeh4B,UAAUwnC,cAAgB,WACrC,GAAI1nC,KAAKwO,OAAO+B,eAAoD,EAAnCvQ,KAAKwO,OAAO+B,cAAc5P,OAAY,CACnEX,KAAK+/B,qBAEL,IADA,IAAI19B,EAAOrC,KAAKwO,OAAO8D,SACdtR,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC9B,GAAI,CAACiiB,EAAc5gB,EAAKrB,EAAE,EAEtB,OADAgU,KAAAA,EAAmBhV,KAAKwO,OAAQnM,EAAKrB,GAAIkiB,CAAqB,EAItE3F,EAAavd,KAAKwO,OAAQ,QAAQ,IAG1C0pB,EAAeh4B,UAAUynC,cAAgB,WACI,IAArC3nC,KAAKwO,OAAO+B,cAAc5P,SAC1BX,KAAKogC,mBACLpd,GAAShjB,KAAKwO,MAAM,IAG5B0pB,EAAeh4B,UAAUkgC,iBAAmB,WACxC,IAAI7uB,EAAOsH,SAAO,IAAM7K,EAAgB,IAAMutB,EAAYv7B,KAAKqN,OAAO,EAClEhL,EAAOrC,KAAK89B,cAAcvsB,CAAI,EAClCqR,GAAmB5iB,KAAKwO,OAAQnM,CAAI,GAExC61B,EAAeh4B,UAAUunC,eAAiB,WACtC,IAAIl2B,EAAOvR,KAAKwO,OAAO+B,cAAcvQ,KAAKwO,OAAO+B,cAAc5P,OAAS,GACpEo+B,EAAU/+B,KAAKg/B,WAAW,CAACztB,GAAOvR,KAAKwO,OAAOxB,KAAK,EACvD,OAAOhN,KAAK46B,SAASmE,EAAQ,KAEjC7G,EAAeh4B,UAAUumC,eAAiB,WACtC,OAAO5tB,SAAO,IAAM7K,EAAgB,IAAM65B,GAAW7nC,KAAKqN,OAAO,GAErE6qB,EAAeh4B,UAAU4nC,cAAgB,WACrC,OAAOjvB,SAAO,IAAM7K,EAAgB,IAAMutB,EAAYv7B,KAAKqN,OAAO,GAEtE6qB,EAAeh4B,UAAU2gC,aAAe,WACpC,OAAO7gC,KAAK46B,SAAS,IAEzB1C,EAAeh4B,UAAU4gC,YAAc,WACnC,OAAO9gC,KAAK46B,SAAS56B,KAAK46B,SAASj6B,OAAS,IAEhDu3B,EAAeh4B,UAAU2mC,aAAe,SAAUt1B,GAC9CvR,KAAK69B,SAAStsB,CAAI,GAEtB2mB,EAAeh4B,UAAU6mC,aAAe,SAAUP,EAAOuB,GACjDC,EAAQhoC,KAAKioC,YAAYzB,EAAOuB,EAAW/nC,KAAKkoC,MAAM,EAC1DloC,KAAK69B,SAASmK,CAAK,GAEvB9P,EAAeh4B,UAAU8mC,cAAgB,SAAUR,EAAOuB,GAClDC,EAAQhoC,KAAKioC,YAAYzB,EAAOuB,CAAS,EAC7C/nC,KAAK69B,SAASmK,CAAK,GAEvB9P,EAAeh4B,UAAU+nC,YAAc,SAAUE,EAAIJ,EAAWG,GAC5D,GAAIt7B,oBAAMu7B,CAAE,EACR,OAAOnoC,KAAKymC,kBAAoBzmC,KAAK8nC,iBAAmB9nC,KAAK6gC,eAEjE,IAAIvX,EAAQtpB,KAAK46B,SAASllB,QAAQyyB,CAAE,EAEpC,EAAG,CAQC,IAGQvB,EATJtd,EADAye,EACQG,EAAS5e,EAAQ4e,EAAS5e,EAAQ,EAGlC4e,EAAS5e,EAAQ4e,EAAS5e,EAAQ,EAE9C8e,EAAWpoC,KAAK46B,SAAStR,GAOzB,GANItpB,KAAKwO,OAAO8rB,sBAAwB1tB,oBAAMw7B,CAAQ,IAC9CC,EAAc35B,SAAS+R,OAAOkX,iBAAiB33B,KAAK46B,SAAS,EAAE,EAAE0N,iBAAiB,YAAY,EAAG,EAAE,EACnG55B,SAAS+R,OAAOkX,iBAAiB33B,KAAK46B,SAAS,EAAE,EAAE0N,iBAAiB,eAAe,EAAG,EAAE,EACxF1B,EAAe5mC,KAAK46B,SAAS,GAAG7Y,wBAAwBkV,OAASoR,EACrEroC,KAAKqN,QAAQmV,kBAAkBmkB,SAAS3mC,KAAKqN,QAAQmV,kBAAkBskB,UAAW9mC,KAAKqN,QAAQmV,kBAAkBskB,UAAYF,CAAY,GAEzIh6B,oBAAMw7B,CAAQ,EACd,OAAOD,QAEN,CAACI,YAAUH,CAAQ,GAC5B,OAAOA,GAEXlQ,EAAeh4B,UAAU29B,SAAW,SAAUuK,GACrCx7B,oBAAMw7B,CAAQ,GAEkB,CAAA,IADTpoC,KAAK8lC,iBAAiB,SAAUsC,CAAQ,EAC1C7nB,SAClBvgB,KAAKq4B,UAAY+P,EACjBpoC,KAAK6/B,cACL7/B,KAAKkmC,UAAUkC,CAAQ,EACvBpoC,KAAKmmC,SAASiC,CAAQ,EACtBpoC,KAAKwO,OAAOW,OAAO8c,EAAyB,EAAE,EAC9CjsB,KAAKomC,cAAc,SAAUgC,CAAQ,IAIjDlQ,EAAeh4B,UAAUqnC,SAAW,SAAUf,GACrC55B,oBAAM45B,CAAK,GAAMA,EAAMp4B,UAAUC,SAASktB,CAAU,GAEpB,CAAA,IADTv7B,KAAK8lC,iBAAiB,SAAUU,CAAK,EACvCjmB,SAClBvgB,KAAKkmC,UAAUM,CAAK,EACpBxmC,KAAKwO,OAAOW,OAAO8c,EAAyB,EAAE,EAC9CjsB,KAAKomC,cAAc,SAAUI,CAAK,IAI9CtO,EAAeh4B,UAAUsnC,SAAW,SAAUd,EAAW9F,GACrD,IAIQ4H,EACAC,EALJzoC,KAAKwO,OAAOm1B,qBAAuB,CAAC/2B,oBAAM85B,CAAS,IACnD1mC,KAAKq4B,UAAYqO,EAGb8B,GADAE,EAAW1oC,KAAKqN,QAAQgM,cAAc,IAAM8hB,EAAe,GACvC2L,UACpB2B,EAAoBzoC,KAAKymC,iBAC7BzmC,KAAK+gC,YAAYH,EAJH,CAAEI,QAAS,CAAA,EAAMC,SAAU,CAAA,EAIP,EAClCyH,EAAS5B,UAAY0B,EAChB57B,oBAAM67B,CAAiB,GACxBzoC,KAAKmmC,SAASsC,CAAiB,IAI3CvQ,EAAeh4B,UAAU+mC,SAAW,SAAUrG,EAAUrS,GAC/CvuB,KAAKwO,OAAOm1B,oBAGP/2B,oBAAMg0B,CAAQ,IACH,YAAbrS,EAAEjf,OACFtP,KAAKmmC,SAASvF,CAAQ,EAGtB5gC,KAAK+gC,YAAYH,EAAUrS,CAAC,GAPhCvuB,KAAK6mC,aAAajG,CAAQ,GAWlC1I,EAAeh4B,UAAUgnC,UAAY,SAAUR,EAAWnY,GACjDvuB,KAAKwO,OAAOm1B,oBAGP/2B,oBAAM85B,CAAS,IACJ,aAAbnY,EAAEjf,OACFtP,KAAKmmC,SAASO,CAAS,EAGvB1mC,KAAK+gC,YAAY2F,EAAWnY,CAAC,GAPjCvuB,KAAK6mC,aAAaH,CAAS,GAWnCxO,EAAeh4B,UAAUinC,UAAY,SAAUX,EAAOjY,GAClD,IAIQoa,EAJH3oC,KAAKwO,OAAOm1B,qBAITgF,EAAQ3oC,KAAKioC,YAAYzB,EAAO,CAAA,EAAMxmC,KAAKkoC,MAAM,EAChDt7B,oBAAM+7B,CAAK,IACK,aAAbpa,EAAEjf,OACFtP,KAAKmmC,SAASwC,CAAK,EAGnB3oC,KAAK+gC,YAAY4H,EAAOpa,CAAC,IATjCvuB,KAAK+mC,aAAaP,EAAO,CAAA,CAAI,GAcrCtO,EAAeh4B,UAAUknC,UAAY,SAAUZ,EAAOjY,GAClD,IAIQqa,EAJH5oC,KAAKwO,OAAOm1B,qBAITiF,EAAQ5oC,KAAKioC,YAAYzB,EAAO,CAAA,CAAK,EACpC55B,oBAAMg8B,CAAK,IACK,aAAbra,EAAEjf,OACFtP,KAAKmmC,SAASyC,CAAK,EAGnB5oC,KAAK+gC,YAAY6H,EAAOra,CAAC,IATjCvuB,KAAKgnC,cAAcR,EAAO,CAAA,CAAK,GAcvCtO,EAAeh4B,UAAUmnC,WAAa,SAAUb,EAAOjY,GACnD,IAIQsa,EAJH7oC,KAAKwO,OAAOm1B,qBAITkF,EAAQ7oC,KAAKioC,YAAYzB,EAAO,CAAA,CAAI,EACnC55B,oBAAMi8B,CAAK,IACK,cAAbta,EAAEjf,OACFtP,KAAKmmC,SAAS0C,CAAK,EAGnB7oC,KAAK+gC,YAAY8H,EAAOta,CAAC,IATjCvuB,KAAKgnC,cAAcR,EAAO,CAAA,CAAI,GActCtO,EAAeh4B,UAAUonC,QAAU,SAAUd,EAAOjY,GAChD,IAIQua,EAJH9oC,KAAKwO,OAAOm1B,qBAITmF,EAAQ9oC,KAAKioC,YAAYzB,EAAO,CAAA,EAAOxmC,KAAKkoC,MAAM,EACjDt7B,oBAAMk8B,CAAK,IACK,WAAbva,EAAEjf,OACFtP,KAAKmmC,SAAS2C,CAAK,EAGnB9oC,KAAK+gC,YAAY+H,EAAOva,CAAC,IATjCvuB,KAAK+mC,aAAaP,EAAO,CAAA,CAAK,GActCtO,EAAeh4B,UAAUgmC,UAAY,SAAUkC,GACtCx7B,oBAAMw7B,CAAQ,IACVA,EAASh6B,UAAUC,SAASktB,CAAU,IACvCv7B,KAAKwO,OAAO+B,cAAc9C,KAAKzN,KAAK+oC,YAAYX,CAAQ,CAAC,EACzDpoC,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAevQ,KAAKwO,OAAO+B,eAAiB,CAAA,CAAI,EAC5E80B,WAAS,CAAC+C,GAAW,CAAC7M,EAAW,EACjC6M,EAAS5P,aAAa,gBAAiB,MAAM,EAC7Cx4B,KAAKo/B,WAAWgJ,EAAU,CAAA,CAAI,GAElCpoC,KAAKwO,OAAO4pB,YAAcgQ,IAGlClQ,EAAeh4B,UAAU2O,aAAe,SAAUm6B,GACzCp8B,oBAAMo8B,CAAO,IACd3C,cAAY,CAAC2C,GAAU,CAACzN,EAAW,EAC/Bv7B,KAAKwO,OAAOm1B,oBACZqF,EAAQxQ,aAAa,gBAAiB,OAAO,EAG7CwQ,EAAQ5K,gBAAgB,eAAe,EAE3Cp+B,KAAKo/B,WAAW4J,EAAS,CAAA,CAAK,EAElB,CAAC,GADT1f,EAAQtpB,KAAKwO,OAAO+B,cAAcmF,QAAQ1V,KAAK+oC,YAAYC,CAAO,CAAC,KAEnEhpC,KAAKwO,OAAO+B,cAAcgZ,OAAOD,EAAO,CAAC,EACzCtpB,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAevQ,KAAKwO,OAAO+B,eAAiB,CAAA,CAAI,GAEhFvQ,KAAKwO,OAAO4pB,YAAc,OAGlCF,EAAeh4B,UAAU6oC,YAAc,SAAUx3B,GACzClP,EAAOrC,KAAK89B,cAAcvsB,CAAI,EAClC,OAAOsO,GAAY7f,KAAKwO,OAAQnM,CAAI,GAExC61B,EAAeh4B,UAAUimC,SAAW,SAAU50B,GAC1CvR,KAAKqN,QAAQmrB,aAAa,WAAY,IAAI,EAC1C,IAAIgO,EAAQxmC,KAAKymC,iBACbD,IACAA,EAAMpI,gBAAgB,UAAU,EAChCiI,cAAY,CAACG,GAAQ,CAACqB,GAAU,GAEpCxC,WAAS,CAAC9zB,GAAO,CAACs2B,GAAU,EAC5Bt2B,EAAKinB,aAAa,WAAY,GAAG,EACjCjnB,EAAK+e,SAET4H,EAAeh4B,UAAUk/B,WAAa,SAAU7tB,EAAM03B,GAC7CjpC,KAAKwO,OAAOkwB,qBAGbQ,EAAWrmB,SAAO,IAAMktB,GAAWx0B,CAAI,EACvC3E,oBAAMsyB,CAAQ,IAGd+J,EACK/J,EAAS9wB,UAAUC,SAASw3B,EAAS,IACtCR,WAAS,CAACnG,GAAW2G,EAAS,EAC9B70B,UAAQkuB,EAAU,IAAMgK,EAAW,EAAE1Q,aAAa,eAAgB,MAAM,GAIxE0G,EAAS9wB,UAAUC,SAASw3B,EAAS,IACrCQ,cAAY,CAACnH,GAAW2G,EAAS,EACjC70B,UAAQkuB,EAAU,IAAMgK,EAAW,EAAE1Q,aAAa,eAAgB,OAAO,MAIrFN,EAAeh4B,UAAU2/B,YAAc,WACnC,IAAIsJ,EAAOzpC,MAAMQ,UAAUwR,MAAMsV,KAAKuO,YAAU,IAAMgG,EAAYv7B,KAAKy6B,YAAY,CAAC,EAEpF,GAAoB,IAAhB0O,EAAKxoC,OAAc,CAEnB,GAAiC,CAAA,IADbX,KAAK8lC,iBAAiB,WAAYqD,EAAK,EAAE,EACvC5oB,OAClB,IAAK,IAAIvf,EAAI,EAAG2Z,EAAMwuB,EAAKxoC,OAAQK,EAAI2Z,EAAK3Z,CAAC,GACzChB,KAAK6O,aAAas6B,EAAKnoC,EAAE,EAGjChB,KAAKomC,cAAc,WAAY+C,EAAK,EAAE,IAG9CjR,EAAeh4B,UAAU0iC,cAAgB,WACrC5iC,KAAKy7B,gBAETvD,EAAeh4B,UAAUwiC,sBAAwB,WAC7C1iC,KAAKy7B,gBAETvD,EAAeh4B,UAAUu7B,aAAe,WACpC,IAAIyM,EAAS,EACb,GAAIloC,KAAK46B,SACL,IAAK,IAAI55B,EAAI,EAAG2Z,EAAM3a,KAAK46B,SAASj6B,OAAS,EAAGK,EAAI2Z,GAC5C3a,KAAK46B,SAAS55B,GAAG+gB,wBAAwB7I,MAAQlZ,KAAK46B,SAAS55B,EAAI,GAAG+gB,wBAAwB7I,IAD7ClY,CAAC,GAElDknC,CAAM,GAOlBloC,KAAKkoC,OAASA,GAElBhQ,EAAeh4B,UAAU4lC,iBAAmB,SAAUx2B,EAAQiC,GAC1D,IAAIlP,EAAO,GACX,GAAIrC,KAAK4lC,kBACL,IAAK,IAAI5kC,EAAI,EAAG2Z,EAAM3a,KAAK46B,SAASj6B,OAAQK,EAAI2Z,EAAK3Z,CAAC,GAClDqB,EAAKrB,GAAKhB,KAAK89B,cAAc99B,KAAK46B,SAAS55B,EAAE,OAIjDqB,EAAK,GAAKrC,KAAK89B,cAAcvsB,CAAI,EAEjC8E,EAAY,CAAE/G,OAAQA,EAAQmH,YAA2B,EAAdpU,EAAK1B,OAC1C0B,EAAOA,EAAK,GAAIuyB,aAAc50B,KAAKkhC,cAAe3gB,OAAQ,CAAA,EAAOjgB,OAAQN,KAAK4lC,kBAAoB,KAClGr0B,GAIV,OAFAvR,KAAKwO,OAAO+H,QAAQ,gBAAiBF,CAAS,EAC9CrW,KAAKkhC,cAAgB,CAAA,EACd7qB,GAEX6hB,EAAeh4B,UAAUkmC,cAAgB,SAAU92B,EAAQiC,GACvD,IAAIlP,EAAO,GACX,GAAIrC,KAAK4lC,kBAAmB,CACxB,IAAK,IAAI5kC,EAAI,EAAG2Z,EAAM3a,KAAK46B,SAASj6B,OAAQK,EAAI2Z,EAAK3Z,CAAC,GAClDqB,EAAKrB,GAAKhB,KAAK89B,cAAc99B,KAAK46B,SAAS55B,EAAE,EAEjDhB,KAAK4lC,kBAAoB,CAAA,OAGzBvjC,EAAK,GAAKrC,KAAK89B,cAAcvsB,CAAI,EAErCvR,KAAKwO,OAAO46B,YAA4B,EAAd/mC,EAAK1B,OAAa0B,EAAKA,EAAK1B,OAAS,GAAK0B,EAAK,GACrEgU,EAAY,CAAE/G,OAAQA,EAAQmH,YAA2B,EAAdpU,EAAK1B,OAC1C0B,EACAA,EAAK,GAAIuyB,aAAc50B,KAAK40B,cACtC50B,KAAKwO,OAAO+H,QAAQ,aAAcF,CAAS,EAC3CrW,KAAK40B,aAAe,CAAA,GAExBsD,EAAeh4B,UAAUm7B,YAAc,SAAUrjB,GAE7C,IADA,IAAI+mB,EAAU/+B,KAAKg/B,WAAWhnB,EAAOhY,KAAKwO,OAAOxB,KAAK,EAC7Cq8B,EAAI,EAAG1uB,EAAMokB,EAAQp+B,OAAQ0oC,EAAI1uB,EAAK0uB,CAAC,GAE5CrpC,KAAK+gC,YAAY/gC,KAAK46B,SAASmE,EAAQsK,IADzB,CAAErI,QAAS,CAAA,EAAMC,SAAU,CAAA,EACU,GAG3D/I,EAAeh4B,UAAU8+B,WAAa,SAAUhnB,EAAOsxB,GAGnD,IAFA,IAAIvK,EAAU,GACVztB,EAASg4B,EAAO,KAAO,OAClBtoC,EAAI,EAAG2Z,EAAM3a,KAAKgY,MAAMrX,OAAQK,EAAI2Z,EAAK3Z,CAAC,GACQ,CAAC,IAApDgX,EAAMtC,QAAQlJ,WAAS8E,EAAQtR,KAAKgY,MAAMhX,EAAE,CAAC,GAC7C+9B,EAAQtxB,KAAKzM,CAAC,EAGtB,OAAO+9B,GAEX7G,EAAeh4B,UAAU49B,cAAgB,SAAUvsB,GAC3C+X,EAAQtpB,KAAK46B,SAASllB,QAAQnE,CAAI,EACtC,OAAOvR,KAAKgY,MAAMsR,IAEtB4O,EAAeh4B,UAAUqgC,aAAe,SAAUl+B,GAC9C,IAAIknC,EAAa,GACbvpC,KAAKwO,OAAOxB,MACZu8B,EAAa,IAAIz2B,cAAY9S,KAAKgY,KAAK,EACnCjF,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAASjT,KAAKwO,OAAO2nB,UAAW,CAAA,CAAK,CAAC,EAK1D,GAFjBqT,EAAU,IAAI12B,cAAY9S,KAAKgY,KAAK,EACpCjF,cAAa,IAAIC,SAAQC,MAAM,OAAQ,QAASzG,WAAS,OAAQnK,CAAI,EAAG,CAAA,CAAK,CAAC,GACtE1B,SACR4oC,EAAa,IAAIz2B,cAAY02B,CAAO,EAChCz2B,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASjT,KAAKwO,OAAOuU,WAAY,CAAA,CAAK,CAAC,GAGxE,EAApBwmB,EAAW5oC,SACP2oB,EAAQtpB,KAAKgY,MAAMtC,QAAQ6zB,EAAW,EAAE,EAE5CvpC,KAAK+gC,YAAY/gC,KAAK46B,SAAStR,GADjB,CAAE0X,QAAS,CAAA,EAAMC,SAAU,CAAA,EACK,IAGtD/I,EAAeh4B,UAAU6/B,mBAAqB,WAG1C,IAFA,IAAI19B,EAAO,GACP2V,EAAQud,YAAU,IAAMvnB,EAAgB,IAAMutB,EAAYv7B,KAAKqN,OAAO,EACjErM,EAAI,EAAGA,EAAIgX,EAAMrX,OAAQK,CAAC,GAC/BqB,EAAKrB,GAAKhB,KAAK89B,cAAc9lB,EAAMhX,EAAE,EAEzChB,KAAKwO,OAAO8D,SAAWjQ,GAE3B61B,EAAeh4B,UAAUgiC,aAAe,SAAU9vB,GAC9C,GAAyB,eAArBpS,KAAKwO,OAAO4F,KAIhB,OADa5H,WAAS,SAAU4F,CAAI,GAEhC,IAAK,cACDpS,KAAKypC,YAAYj9B,WAAS,MAAO4F,CAAI,CAAC,EACtC,MACJ,IAAK,gBACDpS,KAAK0pC,cAAcl9B,WAAS,MAAO4F,CAAI,CAAC,EACxC,MACJ,IAAK,WACDpS,KAAK2pC,SAASn9B,WAAS,KAAM4F,CAAI,CAAC,EAClC,MACJ,IAAK,aACDpS,KAAKkhC,cAAgB,CAAA,EACrBlhC,KAAK40B,aAAe,CAAA,EACpB50B,KAAK4pC,WAAWp9B,WAAS,KAAM4F,CAAI,EAAG5F,WAAS,UAAW4F,CAAI,CAAC,EAC/D,MACJ,IAAK,eACDpS,KAAKkhC,cAAgB,CAAA,EACrBlhC,KAAK40B,aAAe,CAAA,EACpB,MACJ,IAAK,iBACD50B,KAAKkhC,cAAgB,CAAA,EACrBlhC,KAAK40B,aAAe,CAAA,EACpB50B,KAAKmhC,iBACL,MACJ,IAAK,YACDnhC,KAAKkhC,cAAgB,CAAA,EACrBlhC,KAAK40B,aAAe,CAAA,EACpB50B,KAAK2gC,oBAIjBzI,EAAeh4B,UAAU2pC,cAAgB,SAAU7xB,GAC/C,IAAI+mB,EAAU,GACV+K,EAAW,EAA6D,KAA5D9pC,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgBpQ,CAAAA,KAAKwO,OAAO6B,YAC1F05B,EAAa/pC,KAAKwO,OAAOxB,MAAQ,KAAO,OAC5C,GAAIhN,KAAKwO,OAAOxB,OAAS,CAAC88B,EACtB,IAAK,IAAI9oC,EAAI,EAAG2Z,EAAM3a,KAAKgY,MAAMrX,OAAQK,EAAI2Z,EAAK3Z,CAAC,GACY,CAAC,IAAxDgX,EAAMtC,QAAQlJ,WAASu9B,EAAY/pC,KAAKgY,MAAMhX,EAAE,CAAC,GACjD+9B,EAAQtxB,KAAKzM,CAAC,OAKtB,IAASA,EAAI,EAAG2Z,EAAM3a,KAAKgY,MAAMrX,OAAQK,EAAI2Z,EAAK3Z,CAAC,GAAI,CACnD,IAAIgpC,EAASx9B,WAAS,aAAcxM,KAAKgY,MAAMhX,EAAE,EAAIwL,WAAS,OAAQxM,KAAKgY,MAAMhX,EAAE,EACpD,CAAC,IAA3BgX,EAAMtC,QAAQs0B,CAAM,GAAqE,CAAC,IAAxDhyB,EAAMtC,QAAQlJ,WAASu9B,EAAY/pC,KAAKgY,MAAMhX,EAAE,CAAC,GACpF+9B,EAAQtxB,KAAKzM,CAAC,EAI1B,OAAO+9B,GAEX7G,EAAeh4B,UAAUupC,YAAc,SAAUj8B,GAE7C,GADAxN,KAAKwO,OAAOmB,aAAe,iBACvB/C,oBAAMY,CAAG,EACTxN,KAAK0nC,oBADT,CAIA,IAAI3I,EAAU/+B,KAAK6pC,cAAcr8B,CAAG,EACpC,GAAuB,IAAnBuxB,EAAQp+B,OAAZ,CAKA,IAFA,IAAI0B,EAAO,GACPmhB,EAAS,GACJxiB,EAAI,EAAGA,EAAI+9B,EAAQp+B,OAAQK,CAAC,GACjCqB,EAAKrB,GAAKhB,KAAKgY,MAAM+mB,EAAQ/9B,IAC7BwiB,EAAOxiB,GAAK6e,GAAY7f,KAAKwO,OAAQnM,EAAKrB,EAAE,EAEhDuiB,GAAcvjB,KAAKwO,OAAQnM,EAAMmhB,CAAM,KAE3C0U,EAAeh4B,UAAUwpC,cAAgB,SAAUl8B,GAC/C,GAAIZ,oBAAMY,CAAG,EACTxN,KAAKmjB,iBADT,CAIA,IAAImG,EAAQtpB,KAAK6pC,cAAcr8B,CAAG,EAClC,GAAqB,IAAjB8b,EAAM3oB,OAAV,CAKA,IAFA,IAAI0B,EAAO,GACPmhB,EAAS,GACJxiB,EAAI,EAAGA,EAAIsoB,EAAM3oB,OAAQK,CAAC,GAC/BqB,EAAKrB,GAAKhB,KAAKgY,MAAMsR,EAAMtoB,IAC3BwiB,EAAOxiB,GAAK6e,GAAY7f,KAAKwO,OAAQnM,EAAKrB,EAAE,EAEhD0iB,GAAgB1jB,KAAKwO,OAAQnM,EAAMmhB,CAAM,KAE7C0U,EAAeh4B,UAAUypC,SAAW,SAAUl9B,GACtCG,oBAAMH,CAAE,GAIS,GADjBsyB,EAAU/+B,KAAK6pC,cAAc,CAACp9B,EAAG,GACzB9L,QACRX,KAAKygC,aAAazgC,KAAK46B,SAASmE,EAAQ,GAAG,GAGnD7G,EAAeh4B,UAAU0pC,WAAa,SAAUn9B,EAAIqL,GAChD9X,KAAKwO,OAAOmB,aAAe,iBACvB/C,oBAAMH,CAAE,EACRzM,KAAK2nC,gBAIY,GADjB5I,EAAU/+B,KAAK6pC,cAAc,CAACp9B,EAAG,GACzB9L,SACRiiB,GAAmB5iB,KAAKwO,OAAQxO,KAAKgY,MAAM+mB,EAAQ,GAAG,EAClDnyB,oBAAMkL,CAAI,EACVkL,GAAShjB,KAAKwO,MAAM,EAGfyU,EAAcjjB,KAAKwO,OAAO8D,SAAS,EAAE,EAItCmT,GAAOzlB,KAAKwO,OAAQxO,KAAKwO,OAAO1B,KAAMgL,CAAI,EAH1C9C,EAAmBhV,KAAKwO,OAAQxO,KAAKwO,OAAO8D,SAAS,GAAI4Q,CAAqB,QAxmD9FgV,GAgnDOA,EAzmDP,SAASA,EAAe1pB,GACpBxO,KAAKkhC,cAAgB,CAAA,EACrBlhC,KAAKs7B,gBAAkB,CAAA,EACvBt7B,KAAK6e,MAAQ,EACb7e,KAAK87B,WAAa,CAAA,EAClB97B,KAAK6kC,SAAW,EAChB7kC,KAAK4lC,kBAAoB,CAAA,EACzB5lC,KAAKo7B,iBAAmB,CAAA,EACxBp7B,KAAK40B,aAAe,CAAA,EACpB50B,KAAK86B,kBAAoB,IAAImP,IAC7BjqC,KAAKq8B,cAAgB,IAAI4N,IACzBjqC,KAAKwO,OAASA,EACdxO,KAAKqN,QAAUwL,SAAO,IAAM7Y,KAAKwO,OAAOnB,QAAQZ,GAAKqsB,GAAkB94B,KAAKwO,OAAOnB,OAAO,EAC1Fg4B,WAAS,CAACrlC,KAAKqN,SAAUsH,EAAe,EACxC3U,KAAK07B,mBACL17B,KAAKikC,WAAa,CACdiG,IAAK,MACLC,KAAM,OACNC,IAAK,MACLC,SAAU,YACVC,SAAU,YACVC,UAAW,aACXC,OAAQ,UACRC,QAAS,WACTC,SAAU,YACVC,SAAU,iBACVC,SAAU,iBACVC,UAAW,kBACXC,OAAQ,eACRC,SAAU,YACVC,UAAW,aACXC,UAAW,kBACXC,UAAW,kBACXC,WAAY,mBACZC,QAAS,gBACTC,MAAO,iBACPC,OAAQ,kBACRC,OAAQ,uBACRC,OAAQ,uBACRC,QAAS,wBACTC,KAAM,qBACNC,MAAO,QACPC,UAAW,aACXC,WAAY,cACZC,QAAS,mBACTC,MAAO,SACPC,MAAO,QACPC,SAAU,YACVC,IAAK,SACLC,IAAK,SACLC,MAAOpsC,KAAKwO,OAAOg3B,MAAQ,QAAU,SACrC6G,MAAOrsC,KAAKwO,OAAOg3B,MAAQ,QAAU,SACrC8G,MAAOtsC,KAAKwO,OAAOg3B,MAAQ,QAAU,SACrC+G,GAAI,KACJC,SAAU,eACVC,KAAM,YACNC,MAAO,UCrDfC,EAAczsC,UAAU8hC,kBAAoB,SAAUzT,GAClD,GAAIA,EAAE7S,SAAW1b,KAAKi+B,iBAAgC,WAAb1P,EAAE7S,OAG3C,IAAK,IAAI8nB,EAAK,EAAGC,EAAKlkC,OAAOojB,KAAK4L,EAAEmV,OAAO,EAAGF,EAAKC,EAAG9iC,OAAQ6iC,CAAE,GAAI,CAChE,IAAIoJ,EAAOnJ,EAAGD,GACVpzB,EAAQme,EAAEmV,QAAQhxB,eAEb,mBADDk6B,IAEKz0B,oBAAkB/H,EAAMy8B,mBAAmB,GAC5C7sC,KAAK8sC,gBAAgB18B,EAAMy8B,mBAAmB,EAE9C7sC,CAAAA,KAAKwO,OAAO0B,oBAAoBC,UAAUC,OAA6D,KAApDpQ,KAAKwO,OAAO0B,oBAAoBC,UAAUC,OAC1F+H,CAAAA,oBAAkB/H,EAAMy8B,mBAAmB,GAAK10B,oBAAkB/H,EAAMuC,UAAU,GACjFwF,oBAAkB/H,EAAM8C,UAAU,GACtCnB,GAAkB/R,KAAKwO,OAAQxO,KAAKwO,OAAO0B,oBAAoBC,UAAUC,MAAO,CAAA,CAAK,KAMzGu8B,EAAczsC,UAAUi4B,OAAS,WAC7Bn4B,KAAK07B,oBAETiR,EAAczsC,UAAU6sC,aAAe,WACnC,IAAI5/B,EAAYnN,KAAKwO,OAAOrB,UACxB6/B,EAAQhtC,KAAKwO,OAAO1B,KAAK6I,MAAM,GAAG,EAClCs3B,EAAejtC,KAAKwO,OAAOgL,cAAc,KAAM,CAAEC,UAAW,kBAAmB,EAC/EyzB,EAAe,KACfC,EAAehgC,EAAUxM,OAC7B,GAAuB,EAAnBwM,EAAUxM,OAAY,CAEtB,IADA,IAAI8L,EAAK,GACAzL,EAAI,EAAGA,EAAImsC,EAAcnsC,CAAC,GAAI,CAGnC,IAFA,IAOQs+B,EAPJ8N,EAAc,KAClBF,EAAeltC,KAAKwO,OAAOgL,cAAc,KAAM,CAAEC,UAAW,sBAAuB,EAC1E4vB,EAAI,EAAGA,GAAKroC,EAAGqoC,CAAC,GACrB58B,EAAKA,EAAKugC,EAAM3D,GAAK,IAEzB6D,EAAa1U,aAAa,aAAc/rB,CAAE,EAChC,IAANzL,IACIs+B,EAAO9lB,gBAAc,OAAQ,CAAEC,UAAW4zB,GAAW,EACzDH,EAAanzB,YAAYulB,CAAI,GAE7B6N,EAAensC,GAAM,GACrBosC,EAAc5zB,gBAAc,IAAK,CAAEC,UAAW8kB,GAAe,EAC7D2O,EAAa1U,aAAa,WAAY,GAAG,GAGzC4U,EAAc5zB,gBAAc,OAAQ,CAAEC,UAAW8kB,GAAe,EAEpE9xB,EAAK,GACL2gC,EAAYE,UAAYngC,EAAUnM,GAClCksC,EAAanzB,YAAYqzB,CAAW,EACpCH,EAAalzB,YAAYmzB,CAAY,EAEzC,IAAIK,EAAYvtC,KAAKwO,OAAOg/B,wBAAwBn0B,cAAc,kBAAkB,EAOhFo0B,GANCt1B,oBAAkBo1B,CAAS,IACvBp1B,oBAAkBnY,KAAK0tC,UAAU,GAClC1tC,KAAK0tC,WAAWnkC,UAEpBuH,SAAOy8B,CAAS,GAEHvtC,KAAKwO,OAAOg/B,wBAAwBn0B,cAAc,gBAAgB,GAC9Eo0B,EAIDztC,KAAKwO,OAAOg/B,wBAAwBzzB,YAAYkzB,CAAY,EAH5DjtC,KAAKwO,OAAOg/B,wBAAwB5O,aAAaqO,EAAcQ,CAAU,EAK7EztC,KAAK2tC,oBAAoBV,CAAY,IAI7CN,EAAczsC,UAAUytC,oBAAsB,SAAUC,GAUpD,IATA,IAAIC,EAAaD,EAAYh9B,iBAAiB,IAAI,EAC9C28B,EAAYvtC,KAAKwO,OAAOg/B,wBAAwBn0B,cAAc,kBAAkB,EAChFe,EAAQqG,OAAOkX,iBAAiB4V,EAAW,IAAI,EAC/CO,EAASjW,WAAWzd,EAAMkuB,iBAAiB,eAAe,CAAC,EAC3DyF,EAAQlW,WAAWzd,EAAMkuB,iBAAiB,cAAc,CAAC,EACzD0F,EAAqBT,EAAUtV,YAAc6V,EAASC,EACtDd,EAAejtC,KAAKwO,OAAOgL,cAAc,KAAM,CAAEC,UAAW,kBAAmB,EAC/Ew0B,EAAkB,EAClBC,EAAmB,GACdltC,EAAI,EAAGA,EAAI6sC,EAAWltC,OAAQK,CAAC,GAAI,CACxC,IAAImB,EAAQ0rC,EAAW7sC,GAAGmtC,YAC1BD,EAAiBzgC,KAAKtL,CAAK,EAC3B8rC,GAAoC9rC,EAEnCgW,oBAAkBo1B,CAAS,GAC5Bz8B,SAAOy8B,CAAS,EAEpB,IAAIa,EAAkBpuC,KAAKwO,OAAOgL,cAAc,KAAK,EAEjD/M,GADJ2hC,EAAgB5V,aAAa,QAAS,eAAe,EAC5Cx4B,KAAKwO,OAAOnB,QAAQZ,GAAK4hC,IAC9BC,EAAc90B,gBAAc,QAAS,CAAE/M,GAAIA,EAC3CkhB,MAAO,CAAE4gB,aAAc,MAAOC,aAAcv0B,EAAcja,KAAKwO,OAAQ,QAAQ,GAAK,EAEpFigC,GADJL,EAAgBr0B,YAAYu0B,CAAW,EACvBtuC,KAAKwO,OAAOg/B,wBAAwBn0B,cAAc,yBAAyB,GAmBvFo0B,GAlBAt1B,oBAAkBs2B,CAAS,IAC3BzuC,KAAKwO,OAAOg/B,wBAAwBzzB,YAAYq0B,CAAe,EAC3DM,EAAOl1B,gBAAc,OAAQ,CAAEC,UAAW,sBAAuB,EACrE2qB,eAAa3zB,IAAIi+B,EAAM,QAAS1uC,KAAK2uC,YAAa3uC,IAAI,EACtDsuC,EAAYhsB,cAAcsc,aAAa8P,EAAMJ,CAAW,EACxDtuC,KAAKmQ,UAAY,IAAIy+B,UAAQ,CACzBx+B,MAAO,GACPy+B,gBAAiB,CAAA,EACjB1Z,YAAalb,EAAcja,KAAKwO,OAAQ,QAAQ,EAChD8hB,MAAOtwB,KAAK8uC,QAAQte,KAAKxwB,IAAI,EAC7B+uC,KAAM/uC,KAAKgvC,OAAOxe,KAAKxwB,IAAI,EAC9B,EACDA,KAAKmQ,UAAUwiB,SAAS,IAAM3yB,KAAKwO,OAAOnB,QAAQZ,GAAK4hC,EAAa,EACpEruC,KAAK8sC,gBAAgB9sC,KAAKwO,OAAOkE,eAAem6B,mBAAmB,EAC/DhjC,EAAS7J,KAAKmQ,UAAU9C,QAAQgf,mBACpC+X,eAAa3zB,IAAI5G,EAAQ,YAAa7J,KAAKivC,oBAAoBze,KAAKxwB,IAAI,EAAGA,IAAI,EAC/EokC,eAAa3zB,IAAIzQ,KAAKmQ,UAAU9C,QAAS,QAASrN,KAAKkvC,QAAQ1e,KAAKxwB,IAAI,EAAGA,IAAI,GAElEA,KAAKwO,OAAOg/B,wBAAwBn0B,cAAc,gBAAgB,GAEnF,IADA20B,GAA2ChuC,KAAKmvC,iBAAyC1B,EAAWxV,aAChGgW,EAAsC,CAEtC,IADIjtC,EAAI6sC,EAAWltC,OACZK,CAAC,IAAI,CACR,IAAIouC,EAAOpB,EAAqBE,EAAiBltC,GACjD,GAAIouC,EAAO,GAAPA,GAIC,CAED,IADA,IAAIp3B,EAAQ,GACHqxB,EAAI,EAAGA,GAAKroC,EAAGqoC,CAAC,GAAI,CACzB,IAAIgG,EAAYxB,EAAWxE,GAC3BrxB,EAAMvK,KAAK,CACPlB,KAAM8iC,EAAU/B,UAChBgC,MAAOD,EAAU3iC,aAAa,YAAY,EAC7C,EAEL,IAAI6iC,EAAYvvC,KAAKwO,OAAOgL,cAAc,KAAM,CAAEC,UAAW,oBAAqB,EAE9E+1B,EAAcxvC,KAAKwO,OAAOgL,cAAc,SAD3B,CAAEC,UAAW,uBACkC,EAChE81B,EAAUx1B,YAAYy1B,CAAW,EACjCvC,EAAarO,aAAa2Q,EAAWtC,EAAa5zB,cAAc,IAAI,CAAC,EACrErZ,KAAK0tC,WAAa,IAAI+B,iBAAe,CACjCz3B,MAAOA,EACPqD,SAAU,yBACVoe,QAASiW,GACTC,aAAc,MACdld,oBAAqBzyB,KAAKwO,OAAOikB,oBACjCmd,iBAAkB5vC,KAAK6vC,qBAAqBrf,KAAKxwB,IAAI,EACrD6Y,OAAQ7Y,KAAK8vC,wBAAwBtf,KAAKxwB,IAAI,EACjD,EACDA,KAAK0tC,WAAWhb,iBAAmB,CAAA,EACnC1yB,KAAK0tC,WAAW/a,SAAS6c,CAAW,EACpC,MA5BAvC,EAAarO,aAAaiP,EAAW7sC,GAAIisC,EAAa5zB,cAAc,IAAI,CAAC,EACzE20B,EAAqBoB,EA8B7BpvC,KAAKwO,OAAOg/B,wBAAwB5O,aAAaqO,EAAcQ,CAAU,OAGzEztC,KAAKwO,OAAOg/B,wBAAwB5O,aAAagP,EAAaH,CAAU,GAIhFd,EAAczsC,UAAU4uC,QAAU,WACnB99B,UAAQhR,KAAKmQ,UAAU9C,QAAS,gBAAgB,EACtDe,UAAUqC,IAAI,SAAS,GAGhCk8B,EAAczsC,UAAUgvC,QAAU,WAC9BlvC,KAAKwO,OAAOW,OAAOgD,GAAmB,CAAEC,KAAMpS,KAAKwO,OAAQ,GAG/Dm+B,EAAczsC,UAAU8uC,OAAS,WAClBh+B,UAAQhR,KAAKmQ,UAAU9C,QAAS,gBAAgB,EACtDe,UAAU0C,OAAO,SAAS,GAGnC67B,EAAczsC,UAAU4vC,wBAA0B,SAAU1uB,GACpDhP,EAAO,CAAE9R,OAAQ8gB,EAAM/T,SAC3BrN,KAAK+vC,wBAAwB39B,CAAI,GAGrCu6B,EAAczsC,UAAU2vC,qBAAuB,SAAUz9B,GACrDA,EAAK/E,QAAQmrB,aAAa,aAAchsB,WAAS,QAAS4F,EAAKb,IAAI,CAAC,EACpE,IAAIy+B,EAAShwC,KAAKwO,OAAOgL,cAAc,IAAK,CAAEC,UAAW,cAAe,EACxErH,EAAK/E,QAAQ0M,YAAYi2B,CAAM,GAEnCrD,EAAczsC,UAAU4sC,gBAAkB,SAAUmD,GAC5CA,GACAjwC,KAAKmQ,UAAU2d,MAAQ9tB,KAAKivC,oBAAoBze,KAAKxwB,IAAI,EACzDA,KAAKmQ,UAAU4jB,OAAS,OAGxB/zB,KAAKmQ,UAAU4jB,OAAS/zB,KAAKivC,oBAAoBze,KAAKxwB,IAAI,EAC1DA,KAAKmQ,UAAU2d,MAAQ,OAG/B6e,EAAczsC,UAAU+uC,oBAAsB,SAAU78B,GACpD,IAAI6pB,EAAQj8B,KACPmY,oBAAkB/F,EAAKhC,KAAK,IAC7BpQ,KAAKwO,OAAO6B,WAAa,CAAA,EACrBrQ,KAAKwO,OAAOkE,eAAem6B,qBAC3BpsB,OAAOC,aAAa1gB,KAAKkwC,WAAW,EACpClwC,KAAKkwC,YAAczvB,OAAO2B,WAAW,WAAcrQ,GAAkBkqB,EAAMztB,OAAQ4D,EAAKhC,MAAO,CAAA,CAAK,GAAM,GAAG,GAG7G2B,GAAkB/R,KAAKwO,OAAQ4D,EAAKhC,MAAO,CAAA,CAAK,IAI5Du8B,EAAczsC,UAAU6vC,wBAA0B,SAAUxhB,GACxD,IAAI4Z,EAAK5Z,EAAEjuB,OACS,OAAhB6nC,EAAGgI,UAAqC,MAAhBhI,EAAGgI,WACvB9jC,EAAuB,OAAhB87B,EAAGgI,SAAoBhI,EAAG/2B,SAAS,GAAK+2B,EAC9ChwB,oBAAkB9L,CAAI,KACvBrM,KAAKwO,OAAO6B,WAAa,CAAA,EACrB+/B,EAAcpwC,KAAKoM,WAAWC,CAAI,EACtCrM,KAAKwO,OAAO8D,SAAW,CAAC9F,WAASxM,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAAIX,KAAKwO,OAAOI,QAAQ,GACxG5O,KAAKqwC,gBAAgBrwC,KAAKwO,OAAO8D,SAAS,EAAE,EAC5CC,EAAKvS,KAAKwO,OAAQue,EAAoBqjB,CAAW,EAC7CE,EAAatwC,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAChEX,KAAKwO,OAAOW,OAAOohC,GAA4B,CAAE70B,OAAQ,WAAYoB,aAAcwzB,EAAY,IAI3G3D,EAAczsC,UAAUmwC,gBAAkB,SAAUhuC,GAC5CgU,EAAY,CAAEkK,OAAQ,CAAA,EAAO9J,YAAapU,EAAMqZ,OAAQ,iBAC5D,OAAOrF,EAAUkK,OACjBvgB,KAAKwO,OAAO+H,QAAQ,WAAYF,CAAS,GAG7Cs2B,EAAczsC,UAAUyuC,YAAc,WAClC,IAMYlB,EANRztC,KAAKwO,OAAOgN,WACRxb,KAAKwO,OAAOnB,QAAQe,UAAUC,SAASmiC,EAAU,GACjDnK,cAAY,CAACrmC,KAAKwO,OAAOnB,SAAUmjC,EAAU,EAC7CxwC,KAAKmvC,gBAAkB,OAGnB1B,EAAaztC,KAAKwO,OAAOg/B,wBAAwBn0B,cAAc,gBAAgB,EACnFrZ,KAAKmvC,gBAAkB1B,EAAWxV,YAClCoN,WAAS,CAACrlC,KAAKwO,OAAOnB,SAAUmjC,EAAU,EAC1CxwC,KAAKmQ,UAAU9C,QAAQijB,WAInCqc,EAAczsC,UAAUkM,WAAa,SAAUqkC,GAU3C,IATA,IACIC,EADK1/B,UAAQy/B,EAAM,IAAI,EACN/jC,aAAa,YAAY,EAE1CqiB,GADJ/uB,KAAK2wC,eAAiBD,EACX1wC,KAAK2wC,eAAeh7B,MAAM,GAAG,GACpCnI,EAAMxN,KAAKwO,OAAOvB,OAClBS,EAAQ1N,KAAKwO,OAAOrB,UAGpByjC,GAFJ5wC,KAAKwO,OAAOvB,OAAS,GACrBjN,KAAKwO,OAAOrB,UAAY,GACV,IACLnM,EAAI,EAAG2Z,EAAMoU,EAAKpuB,OAAS,EAAGK,EAAI2Z,EAAK3Z,CAAC,GAC7ChB,KAAKwO,OAAOvB,OAAOQ,KAAKD,EAAIxM,EAAE,EAC9BhB,KAAKwO,OAAOrB,UAAUM,KAAKC,EAAM1M,EAAE,EACnC4vC,GAAW7hB,EAAK/tB,GAAK,IAGzB,OADAhB,KAAKwO,OAAO3B,cAAc,CAAEC,KAAM8jC,GAAW,CAAA,CAAI,EAC1CA,GAEXjE,EAAczsC,UAAU2wC,aAAe,WACnC7wC,KAAK+sC,eACL/sC,KAAK8wC,qBAETnE,EAAczsC,UAAU0/B,YAAc,WAClC5/B,KAAK+sC,gBAETJ,EAAczsC,UAAU6wC,YAAc,WAClC/wC,KAAK+sC,gBAGTJ,EAAczsC,UAAU+/B,YAAc,WAClCjgC,KAAK6wC,gBAGTlE,EAAczsC,UAAU4wC,kBAAoB,WACxC9wC,KAAKwO,OAAO6B,WAAa,CAAA,EACrBrQ,CAAAA,KAAKmQ,WAAuC,KAAzBnQ,KAAKmQ,UAAUC,OAAiD,KAAjCpQ,KAAKmQ,UAAU9C,QAAQ+C,QACzEpQ,KAAKmQ,UAAUC,MAAQ,GACvBpQ,KAAKmQ,UAAU9C,QAAQ+C,MAAQ,GAC/BpQ,KAAKmQ,UAAU0iB,aAGvB8Z,EAAczsC,UAAU8wC,SAAW,WAC/BhxC,KAAK+sC,gBAETJ,EAAczsC,UAAU+wC,WAAa,WACjCjxC,KAAK+sC,gBAETJ,EAAczsC,UAAUw7B,iBAAmB,WACvC17B,KAAK6jC,eAAiB,IAAIC,iBAAe9jC,KAAKwO,OAAOg/B,wBAAyB,CAC1EzJ,UAAW/jC,KAAKgkC,iBAAiBxT,KAAKxwB,IAAI,EAC1CikC,WAAYjkC,KAAKikC,WACjB3nB,UAAW,UACd,EACDtc,KAAKwO,OAAO80B,GAAGvB,EAAqB/hC,KAAKgiC,kBAAmBhiC,IAAI,EAChEokC,eAAa3zB,IAAIzQ,KAAKwO,OAAOg/B,wBAAyB,QAASxtC,KAAK+vC,wBAAyB/vC,IAAI,EACjGA,KAAKwO,OAAO80B,GAAG4N,GAAgBlxC,KAAKuJ,QAASvJ,IAAI,EACjDA,KAAKwO,OAAO80B,GAAGvW,EAAoB/sB,KAAK6wC,aAAc7wC,IAAI,EAC1DA,KAAKwO,OAAO80B,GAAG/mB,EAAoBvc,KAAK6wC,aAAc7wC,IAAI,EAC1DA,KAAKwO,OAAO80B,GAAGvuB,GAAmB/U,KAAK6wC,aAAc7wC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGnuB,GAAgBnV,KAAK6wC,aAAc7wC,IAAI,EACtDA,KAAKwO,OAAO80B,GAAG/W,GAAkBvsB,KAAK4/B,YAAa5/B,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGtW,EAAkBhtB,KAAK+wC,YAAa/wC,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGlW,GAAkBptB,KAAKigC,YAAajgC,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGb,GAAuBziC,KAAKgxC,SAAUhxC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGlkB,GAAiBpf,KAAKixC,WAAYjxC,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGX,GAAkB3iC,KAAKgxC,SAAUhxC,IAAI,EACpDA,KAAKwO,OAAO80B,GAAGvX,GAAyB/rB,KAAKmxC,mBAAoBnxC,IAAI,EACrEA,KAAKwO,OAAO80B,GAAGxiB,GAAiB9gB,KAAK+9B,WAAY/9B,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGJ,GAAsBljC,KAAKgxC,SAAUhxC,IAAI,EACxDA,KAAKwO,OAAO80B,GAAG7jB,GAAiBzf,KAAK+sC,aAAc/sC,IAAI,GAE3D2sC,EAAczsC,UAAU8jC,iBAAmB,SAAUzV,GAExC,UADDA,EAAEjf,QAEFtP,KAAK+vC,wBAAwBxhB,CAAC,GAI1Coe,EAAczsC,UAAUy4B,oBAAsB,WAC1C34B,KAAK6jC,eAAet6B,UACpBvJ,KAAKwO,OAAOozB,IAAI7U,EAAoB/sB,KAAK6wC,YAAY,EACrD7wC,KAAKwO,OAAOozB,IAAIrlB,EAAoBvc,KAAK6wC,YAAY,EACrD7wC,KAAKwO,OAAOozB,IAAI7sB,GAAmB/U,KAAK6wC,YAAY,EACpD7wC,KAAKwO,OAAOozB,IAAIzsB,GAAgBnV,KAAK6wC,YAAY,EACjD7wC,KAAKwO,OAAOozB,IAAIxiB,GAAiBpf,KAAKixC,UAAU,EAChDjxC,KAAKwO,OAAOozB,IAAIrV,GAAkBvsB,KAAK4/B,WAAW,EAClD5/B,KAAKwO,OAAOozB,IAAI5U,EAAkBhtB,KAAK+wC,WAAW,EAClD/wC,KAAKwO,OAAOozB,IAAIxU,GAAkBptB,KAAKigC,WAAW,EAClDjgC,KAAKwO,OAAOozB,IAAIa,GAAuBziC,KAAKgxC,QAAQ,EACpDhxC,KAAKwO,OAAOozB,IAAIe,GAAkB3iC,KAAKgxC,QAAQ,EAC/ChxC,KAAKwO,OAAOozB,IAAI7V,GAAyB/rB,KAAKmxC,kBAAkB,EAChEnxC,KAAKwO,OAAOozB,IAAI9gB,GAAiB9gB,KAAK+9B,UAAU,EAChD/9B,KAAKwO,OAAOozB,IAAIsB,GAAsBljC,KAAKgxC,QAAQ,EACnDhxC,KAAKwO,OAAOozB,IAAIniB,GAAiBzf,KAAK+sC,YAAY,GAGtDJ,EAAczsC,UAAU69B,WAAa,SAAU3rB,GACvCpS,KAAKwO,OAAOoG,eAAiB5U,KAAKi+B,kBAC9BmT,EAAQh/B,EAAK9R,OAAO0Q,QAAQ,IAAI,EACpChR,KAAKwO,OAAO7C,SAAW3L,KAAKoM,WAAYglC,EAAMhgC,SAAS,IACvDpR,KAAKwO,OAAO2P,SAAW3R,WAASxM,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAAIX,KAAKwO,OAAOI,QAAQ,EACvG5O,KAAKqwC,gBAAgBrwC,KAAKwO,OAAO2P,QAAQ,EACrCmyB,EAAatwC,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAChEX,KAAKwO,OAAOW,OAAOohC,GAA4B,CAAE70B,OAAQ,WAAYoB,aAAcwzB,EAAY,IASvG3D,EAAczsC,UAAU+9B,cAAgB,WACpC,MAAO,iBAEX0O,EAAczsC,UAAUqJ,QAAU,WAC1BvJ,KAAKwO,OAAOmzB,cAGhB3hC,KAAK24B,sBAEAxgB,oBAAkBnY,KAAK0tC,UAAU,GAClC1tC,KAAK0tC,WAAWnkC,UAEf4O,oBAAkBnY,KAAKmQ,SAAS,IACjCnQ,KAAKmQ,UAAU5G,WAGvBojC,EAAczsC,UAAUixC,mBAAqB,SAAU/+B,GACnDpS,KAAKmQ,UAAU9C,QAAQ8nB,YAAyD,MAA1Cn1B,KAAKwO,OAAOkE,eAAeyiB,YAAuBn1B,KAAKwO,OAAOkE,eAAeyiB,YAAclb,EAAcja,KAAKwO,OAAQ,QAAQ,EAAI,IAAMyL,EAAcja,KAAKwO,OAAQ4D,EAAKkM,IAAIxG,KAAKnJ,UAAU,OAxYrOg+B,GA0YOA,EAjYP,SAASA,EAAcn+B,GACnBxO,KAAKqxC,YAAc,GACnBrxC,KAAK2wC,eAAiB,GACtB3wC,KAAKkwC,YAAc,KACnBlwC,KAAKmvC,gBAAkB,KACvBnvC,KAAKwO,OAASA,EACdxO,KAAKikC,WAAa,CACd+H,MAAO,SAEXhsC,KAAKm4B,SCDTmZ,EAAYpxC,UAAUi4B,OAAS,WAC3Bn4B,KAAKikC,WAAa,CACdsN,UAAW,YACXC,QAAS,YAEbxxC,KAAKyxC,YAAc,IAAIC,cAAK,CACxBlf,UAAWxyB,KAAKwO,OAAOgkB,UACvBxX,OAAQhb,KAAKwO,OAAOwM,OACpB1a,OAAQ,IAAMN,KAAKwO,OAAOnB,QAAQZ,GAClCgmB,oBAAqBzyB,KAAKwO,OAAOikB,oBACjCmd,iBAAkB5vC,KAAK2xC,mBAAmBnhB,KAAKxwB,IAAI,EACnD6Y,OAAQ7Y,KAAK4xC,SAASphB,KAAKxwB,IAAI,EAC/B2xB,WAAY3xB,KAAK6xC,aAAarhB,KAAKxwB,IAAI,EACvC6xB,YAAa7xB,KAAK8xC,cAActhB,KAAKxwB,IAAI,EACzCqb,SAAUF,GAAYnb,KAAKwO,OAAQ+jB,EAAc,EACpD,EACDvyB,KAAKyxC,YAAY/e,iBAAmB,CAAA,EACpC1yB,KAAKyxC,YAAY9e,SAAS,IAAM3yB,KAAKwO,OAAOnB,QAAQZ,GAAKslC,EAAmB,EAC5E/xC,KAAK07B,oBAGT4V,EAAYpxC,UAAUyxC,mBAAqB,SAAUv/B,GACjD,IAOQ4/B,EACA3kC,EARJ+E,EAAKb,KAAK9E,KAAOzM,KAAKiyC,UAAU,gBAAgB,IAC5CD,EAAWx4B,gBAAc,MAAM,GAEnCnM,EADc+E,EAAK/E,SACXuxB,aAAaoT,EAA+B,eAArBhyC,KAAKwO,OAAO4F,KAAwB/G,EAAQwxB,WAAW,GAAKxxB,EAAQwxB,WAAW,EAAE,EAChHmT,EAASxZ,aAAa,QAAS0Z,GAAiB,IAAMC,EAAa,GAEnE//B,EAAKb,KAAK9E,KAAOzM,KAAKiyC,UAAU,aAAa,IACzCD,EAAWx4B,gBAAc,MAAM,GAEnCnM,EADc+E,EAAK/E,SACXuxB,aAAaoT,EAA+B,YAArBhyC,KAAKwO,OAAO4F,KAAqB/G,EAAQwxB,WAAW,GAAKxxB,EAAQwxB,WAAW,EAAE,EAC7GmT,EAASxZ,aAAa,QAAS4Z,GAAgB,IAAMD,EAAa,GAElE//B,EAAKb,KAAK9E,KAAOzM,KAAKiyC,UAAU,YAAY,GAC5CjyC,KAAKqyC,sBAAsBjgC,EAAMkgC,GAAe,CAACtyC,KAAKwO,OAAO0L,UAAUq4B,eAAe,EAEtFngC,EAAKb,KAAK9E,KAAOzM,KAAKiyC,UAAU,cAAc,GAC9CjyC,KAAKqyC,sBAAsBjgC,EAAMogC,GAAiBxyC,KAAKwO,OAAO0L,UAAUq4B,eAAe,GAG/FjB,EAAYpxC,UAAUmyC,sBAAwB,SAAUI,EAAUC,EAAgBC,GAC9E,IAAIX,EAAWx4B,gBAAc,MAAM,EAC/BnM,EAAUolC,EAASplC,QACvBA,EAAQuxB,aAAaoT,EAAUW,EAActlC,EAAQwxB,WAAW,GAAKxxB,EAAQwxB,WAAW,EAAE,EAC1FmT,EAASxZ,aAAa,QAASka,EAAiB,IAAMP,EAAa,GAEvEb,EAAYpxC,UAAU4xC,cAAgB,SAAU1/B,GAC5C,IAAIiE,EAAY,CACZkK,OAAQ,CAAA,EACRlT,QAAS+E,EAAK/E,QACd+T,MAAOhP,EAAKgP,MACZwxB,UAAWxgC,EAAKwgC,UAChBn8B,YAAa,CAACzW,KAAKwK,cACnBwN,MAAO5F,EAAK4F,MACZ66B,WAAYzgC,EAAKygC,WACjBC,SAAU9yC,KAAK8yC,UASnB,GAPA9yC,KAAKwO,OAAO+H,QAAQ,YAAaF,EAAW,SAAU08B,GAC9CA,EAAcxyB,SACdnO,EAAKmO,OAASwyB,EAAcxyB,QAGnC,EACDvgB,KAAKgzC,WAAa,KACd,CAAChzC,KAAKizC,mBAAiD,EAA5BjzC,KAAKwO,OAAOvB,OAAOtM,QAA2C,mBAA7BX,KAAKwO,OAAOmB,aAAmC,CAC3G3P,KAAKwO,OAAOvB,OAAOif,MAGnB,IAFA,IAAIgnB,EAAY,GAEP1P,EAAK,EAAG2P,EADF5zC,OAAOojB,KAAK3iB,KAAKwO,OAAOI,QAAQ,EACP40B,EAAK2P,EAAWxyC,OAAQ6iC,CAAE,GAAI,CAClE,IAAIjyB,EAAO4hC,EAAW3P,GAElBlxB,EAAW9F,WAAS+E,EAAMvR,KAAKwO,OAAOI,QAAQ,EACG,CAAC,IAAlD5O,KAAKwO,OAAOrB,UAAUuI,QAAQpD,EAASwF,IAAI,GAC3Co7B,EAAUzlC,KAAK6E,EAAS8gC,MAAM,EAGtCpzC,KAAKwO,OAAOvB,OAAOQ,KAAKylC,EAAUA,EAAUvyC,OAAS,EAAE,EACvDX,KAAKwO,OAAOP,qBAAqBC,QAAQrB,cAAc,CAAEmC,cAAe,CAAChP,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,IAAK,EAEjIX,KAAKizC,kBAAoB,CAAA,GAG7B3B,EAAYpxC,UAAU2xC,aAAe,SAAUz/B,GAC3C,IAEIihC,EAFApX,EAAQj8B,KACRu/B,EAAW,CAAA,EAGX+T,EAAa,CAAA,EACbhzC,EAAS8R,EAAKgP,MAAM9gB,OAWpB8T,GAVJpU,KAAKgzC,WAAahzC,KAAKuzC,kBAAoBjzC,EAC3CN,KAAKwzC,eAAiBphC,EAAK/E,QACvB/M,EAAO8N,UAAUC,SAAS,gBAAgB,IAC1C/N,EAASN,KAAKwO,OAAOP,qBAAqBwlC,WAAWC,uBAAuBC,EAAW,EAAE,GACzF3zC,KAAKgzC,WAAahzC,KAAKuzC,kBAAoBjzC,GAE/CN,KAAK4zC,cAAqC,YAArB5zC,KAAKwO,OAAO4F,KAAqBpD,UAAQ1Q,EAAQ,UAAU,EAAIA,EAChFN,KAAKwO,OAAO8rB,uBAAyBh6B,EAAO8N,UAAUC,SAAS,kBAAkB,GAAK/N,EAAO8N,UAAUC,SAAS,gBAAgB,KAChI/N,EAASA,EAAOgiB,cAActR,QAAQ,KAAK,GAEpChR,KAAK6zC,cAAcvzC,CAAM,GAGpC,GAFAN,KAAK8zC,qBAEDxzC,EAAO8N,UAAUC,SAASC,EAAa,GAAK0C,UAAQ1Q,EAAQ,IAAI,GAC/D0Q,UAAQ1Q,EAAQ,IAAMN,KAAKwO,OAAOnB,QAAQZ,GAAKuM,EAAqB,GACpEhI,UAAQ1Q,EAAQ,IAAMN,KAAKwO,OAAOnB,QAAQZ,GAAKsnC,EAAe,EAC/D3hC,EAAKmO,OAAS,CAAA,OAEb,GAA2B,eAArBvgB,KAAKwO,OAAO4F,MAA0BpU,KAAK4zC,eAClD5zC,KAAK4zC,cAAcxlC,UAAUC,SAAS,YAAY,EAClDrO,KAAKg0C,cAAc1zC,CAAM,OAGxB,GAAI0Q,UAAQ1Q,EAAQ,IAAMgZ,CAAS,EACpCtZ,KAAKg0C,cAAc1zC,CAAM,OAExB,GAAI,CAACA,EAAO8N,UAAUC,SAAS4lC,EAAa,GAC7C,CAAC3zC,EAAO8N,UAAUC,SAAS8jC,EAAa,GAAK,CAAC7xC,EAAO8N,UAAUC,SAAS6lC,EAAgB,EA4BxF,GA1ByB,eAArBl0C,KAAKwO,OAAO4F,MAA0BxH,oBAAMoE,UAAQ1Q,EAAQ,IAAI,CAAC,GAAM0Q,UAAQ1Q,EAAQ,IAAMN,KAAKwO,OAAOnB,QAAQZ,GAAK0nC,EAAW,EAQ3HvnC,oBAAMoE,UAAQ1Q,EAAQ,UAAU,CAAC,EAUlC0Q,UAAQ1Q,EAAQ,IAAMN,KAAKwO,OAAOnB,QAAQZ,GAAK0nC,EAAW,IAC/Dd,EAAMriC,UAAQ1Q,EAAQ,IAAI,EAAEoM,aAAa,UAAU,EAC9CE,oBAAMymC,CAAG,IACVrzC,KAAKo0C,OAASf,GAElBC,EAAa,CAAA,IAdbD,EAAMrzC,KAAK4zC,cAAclnC,aAAa,UAAU,EAChDrK,EAAOrC,KAAKwO,OAAOsF,kBAAkBC,QAAQsgC,oBAAoBhB,CAAG,EAAEhxC,KAClEuK,oBAAM5M,KAAK4zC,cAAclnC,aAAa,eAAe,CAAC,GAEtD1M,KAAKwO,OAAOsF,kBAAkBC,QAAQugC,WAAW,CAAC5lC,SAAS1O,KAAK4zC,cAAclnC,aAAa,eAAe,EAAG,EAAE,EAAI,EAAE,EAEzH6yB,EAAW,CAAA,IAbNvuB,UAAQ1Q,EAAQ,IAAI,EAAE8N,UAAUC,SAAS,UAAU,GACpDrO,KAAKwO,OAAOyF,qBAAqB8sB,YAAYzgC,EAFnC,CAAE0gC,QAAS,CAAA,EAAMC,SAAU,CAAA,EAEuB,EAEhE5+B,EAAOrC,KAAKwO,OAAO46B,YACnB7J,EAAW,CAAA,GAoBXA,EACiC,CAAA,IAA7B/yB,WAAS,SAAUnK,CAAI,EACvBrC,KAAKu0C,cAGLv0C,KAAKw0C,cAAc,CAAA,CAAK,OAI3B,GAAIlB,EAEL,GADAtzC,KAAKw0C,cAAc,CAAA,CAAI,EACnBnB,IAAQrzC,KAAKwO,OAAOvB,OAAO,GAC3BjN,KAAKy0C,cAAchnC,KAAK,SAAU,SAAU,MAAO,MAAM,OAIzD,IADA,IAAIinC,EAAgB,CAAC,SAAU,SAAU,MAAO,QACvC1zC,EAAI,EAAGA,EAAIhB,KAAKy0C,cAAc9zC,OAAQK,CAAC,GAAI,CAChD,IAAIuQ,EAAOvR,KAAKy0C,cAAczzC,GACM,CAAC,IAAjC0zC,EAAch/B,QAAQnE,CAAI,IAC1BvR,KAAKy0C,cAAclrB,OAAOvoB,EAAG,CAAC,EAC9BA,CAAC,QAMC,aAAToT,GAAgC,aAATA,GAAgC,cAATA,EACnDpU,KAAKg0C,cAAc1zC,CAAM,EAIzB8R,EAAKmO,OAAS,CAAA,EAGtB,IAQQo0B,EAUJC,EAlBAC,EAAWh8B,SAAO,IAAM7Y,KAAKiyC,UAAU,OAAO,EAAGjyC,KAAKyxC,YAAYpkC,OAAO,EACxE+E,EAAKmO,QAAWvgB,KAAKwO,OAAOU,aAC7B2lC,CAAAA,GAAaA,EAASzmC,UAAUC,SAAS,YAAY,EAOlC,CAAC,KADhBsmC,EAAa30C,KAAKy0C,cAAc/+B,QAAQ,OAAO,IAE/C1V,KAAKy0C,cAAclrB,OAAOorB,EAAY,CAAC,EAPC,CAAC,IAAzC30C,KAAKy0C,cAAc/+B,QAAQ,OAAO,GAClC1V,KAAKy0C,cAAchnC,KAAK,OAAO,EASnC2E,EAAKmO,OACLvgB,KAAKgzC,WAAahzC,KAAKwzC,eAAiB,MAG5CxzC,KAAKyxC,YAAY5e,WACb+hB,EAAY,CAAA,GACZt0C,EAAO8N,UAAUC,SAAS4lC,EAAa,GACvC3zC,EAAO8N,UAAUC,SAAS8jC,EAAa,GAAK7xC,EAAO8N,UAAUC,SAAS6lC,EAAgB,KACtFU,EAAY,CAAA,GAEhB50C,KAAKwK,aAAeoqC,EAAY50C,KAAKwK,aAAexK,KAAK80C,kBACrDz+B,EAAY,CACZI,YAAa,CAACzW,KAAKwK,cACnB6C,QAAS+E,EAAK/E,QACd/M,OAAQA,EACR0X,OAAO48B,EAAYxiC,EAAapS,KAAKyxC,aAAbz5B,MACxB+8B,WAAY/0C,KAAKyxC,YACjBlxB,OAAQ,CAAA,EACRuyB,SAAU9yC,KAAK8yC,SACf8B,UAAWA,GAEf50C,KAAKg1C,aAAe3+B,EAAU2B,MAC9BhY,KAAKwO,OAAO+H,QAAQ,WAAYF,EAAW,SAAU4+B,GAC5CL,IACD3Y,EAAMwV,YAAY5e,WAClBoJ,EAAMwV,YAAYz5B,MAAQi9B,EAAaj9B,MACvCikB,EAAMwV,YAAY5e,YAEtBoJ,EAAMiZ,YAAYjZ,EAAMwY,cAAe,CAAA,EAAO,CAAA,CAAI,EAClDriC,EAAKmO,OAAS00B,EAAa10B,OACvB00B,EAAa10B,SACb0b,EAAM+W,WAAa/W,EAAMsX,kBAAoBtX,EAAMuX,eAAiB,MAE3E,IAELlC,EAAYpxC,UAAU4zC,mBAAqB,WACvC9zC,KAAKwO,OAAOmB,aAAeqB,UAAQhR,KAAKgzC,WAAY,IAAMhzC,KAAKwO,OAAOnB,QAAQZ,GAAK0nC,EAAW,EAC1F,iBAAmBnjC,UAAQhR,KAAKgzC,WAAY,IAAMhzC,KAAKwO,OAAOnB,QAAQZ,GAAK0oC,EAAW,EACtF,cAAgBnkC,UAAQhR,KAAKgzC,WAAY,IAAMhzC,KAAKwO,OAAOnB,QAAQZ,GAAKqsB,EAAgB,EACxF,iBAAmB94B,KAAKwO,OAAOmB,cASvC2hC,EAAYpxC,UAAU2zC,cAAgB,SAAUvzC,GAC5C,OAAOA,EAAO8N,UAAUC,SAASC,EAAa,EAC1C,WAAahO,EAAO8N,UAAUC,SAASyL,EAAa,EACpD,WAAaxZ,EAAO8N,UAAUC,SAAS+mC,EAAa,GACtC90C,EAAO8N,UAAUC,SAASsG,EAAe,EACvD,YAAc,IAEtB28B,EAAYpxC,UAAUm1C,aAAe,SAAU9jC,GAE3C,IADA,IAAI+jC,EAASt1C,KAAKiyC,UAAU1gC,CAAI,EACvBvQ,EAAI,EAAGA,EAAIhB,KAAKg1C,aAAar0C,OAAQK,CAAC,GAC3C,GAAKhB,KAAKg1C,aAAah0C,GAAGyL,KAAO6oC,GAAYt1C,KAAKg1C,aAAah0C,GAAGyL,KAAO8E,EACrE,OAAOvQ,EAGf,MAAO,CAAC,GAEZswC,EAAYpxC,UAAUq1C,YAAc,SAAUv9B,GACrB,IAAjBA,EAAMrX,SACNX,KAAKy0C,cAAgBz0C,KAAKy0C,cAAc3iC,OAAOkG,CAAK,IAG5Ds5B,EAAYpxC,UAAUg1C,YAAc,SAAUl9B,EAAOw9B,EAAQC,GACrDD,IACAx1C,KAAKy0C,cAAgBz0C,KAAKy0C,cAAcnjC,OAAO,SAAUC,GAAQ,MAA+B,CAAC,IAAzByG,EAAMtC,QAAQnE,CAAI,EAAW,GAEzG,IAAK,IAAIvQ,EAAI,EAAGA,EAAIgX,EAAMrX,OAAQK,CAAC,GAAI,CACnC,IAAI00C,EAAY11C,KAAK21C,eAAe39B,EAAMhX,EAAE,EAC1B,IAAd00C,EACA11C,KAAKyxC,YAAYyD,YAAY,CAACl1C,KAAKiyC,UAAUj6B,EAAMhX,EAAE,GAAIw0C,EAAQC,CAAU,EAExD,IAAdC,GACL11C,KAAKyxC,YAAYyD,YAAY,CAACl9B,EAAMhX,IAAKw0C,EAAQC,CAAU,IAIvEnE,EAAYpxC,UAAUs0C,cAAgB,SAAUoB,GAI5C,IAqBYC,EAxBZ71C,KAAK8yC,SAAW,SAChB9yC,KAAKyxC,YAAYz5B,MAAQhY,KAAK81C,YAAY91C,KAAKwO,OAAOunC,oBAAoBC,OAAOxrB,IAAI,SAAUjZ,GAAQ,OAAOA,EAAK0kC,OAAS,CAAC,EAC7Hj2C,KAAKyxC,YAAY5e,WACb+iB,GACIM,EAAmBr9B,SAAO,cAAgB7Y,KAAKo0C,OAAS,KAAMp0C,KAAKwO,OAAOP,qBAAqBC,QAAQb,OAAO,EAC7GT,oBAAMspC,CAAgB,GACvBl2C,KAAKwO,OAAOrB,UAAUnN,KAAKwO,OAAOrB,UAAUxM,OAAS,KAAOu1C,EAAiB78B,cAAc,cAAc,EAAEW,WAA0C,mBAA7Bha,KAAKwO,OAAOmB,aAK9G,CAAC,KADnBwmC,EAAgBn2C,KAAKy0C,cAAc/+B,QAAQ,MAAM,IAEjD1V,KAAKy0C,cAAclrB,OAAO4sB,EAAe,CAAC,EAL9Cn2C,KAAKy0C,cAAchnC,KAAK,MAAM,EAQO,IAArCzN,KAAKwO,OAAO+B,cAAc5P,QAEN,CAAC,KAAjBk1C,EADc71C,KAAKy0C,cAAc/+B,QAAQ,QAAQ,IAEjD1V,KAAKy0C,cAAclrB,OAAOssB,EAAa,CAAC,GAId,mBAA7B71C,KAAKwO,OAAOmB,eACwB,IAArC3P,KAAKwO,OAAO+B,cAAc5P,OAEN,CAAC,KAAjBk1C,EADc71C,KAAKy0C,cAAc/+B,QAAQ,QAAQ,IAEjD1V,KAAKy0C,cAAclrB,OAAOssB,EAAa,CAAC,EAI5C71C,KAAKy0C,cAAchnC,KAAK,SAAU,OAAO,IAIrD6jC,EAAYpxC,UAAUq0C,YAAc,WAIhC,IACQsB,EAJR71C,KAAK8yC,SAAW,OAChB9yC,KAAKyxC,YAAYz5B,MAAQhY,KAAK81C,YAAY91C,KAAKwO,OAAOunC,oBAAoBvgC,KAAKgV,IAAI,SAAUjZ,GAAQ,OAAOA,EAAK0kC,OAAS,CAAC,EAC3Hj2C,KAAKyxC,YAAY5e,WACwB,IAArC7yB,KAAKwO,OAAO+B,cAAc5P,OAEN,CAAC,KADjBk1C,EAAc71C,KAAKy0C,cAAc/+B,QAAQ,QAAQ,IAEjD1V,KAAKy0C,cAAclrB,OAAOssB,EAAa,CAAC,EAI5C71C,KAAKy0C,cAAchnC,KAAK,QAAQ,GAGxC6jC,EAAYpxC,UAAU8zC,cAAgB,SAAU1zC,GAC5CN,KAAK8yC,SAAW,SAChB9yC,KAAKyxC,YAAYz5B,MAAQhY,KAAK81C,YAAY91C,KAAKwO,OAAOunC,oBAAoBK,OAAO5rB,IAAI,SAAUjZ,GAAQ,OAAOA,EAAK0kC,OAAS,CAAC,EAC7Hj2C,KAAKyxC,YAAY5e,WACb,CAAC7yB,KAAKwO,OAAOm1B,qBAA8C,eAArB3jC,KAAKwO,OAAO4F,MAC6D,IAA9GpD,UAAQ1Q,EAAQ,IAAMN,KAAKwO,OAAOnB,QAAQZ,GAAKqsB,EAAgB,EAAE4a,uBAAuBp6B,CAAS,EAAE3Y,QAC3E,YAArBX,KAAKwO,OAAO4F,MAC8F,IAAzGpD,UAAQ1Q,EAAQ,IAAMN,KAAKwO,OAAOnB,QAAQZ,GAAK0oC,EAAW,EAAEzB,uBAAuBp6B,CAAS,EAAE3Y,OACnGX,KAAKy0C,cAAchnC,KAAK,WAAW,EAGnCzN,KAAKy0C,cAAgBz0C,KAAKy0C,cAAcnjC,OAAO,SAAUC,GAAQ,MAAgB,cAATA,EAAuB,EAE1D,IAArCvR,KAAKwO,OAAOQ,cAAcrO,QACkB,CAAC,IAAzCX,KAAKy0C,cAAc/+B,QAAQ,OAAO,GAClC1V,KAAKy0C,cAAchnC,KAAK,OAAO,EAGvCzN,KAAKyxC,YAAY5e,YAErBye,EAAYpxC,UAAUy1C,eAAiB,SAAUU,GAC7C,GAAI,CAACzpC,oBAAM5M,KAAKwzC,cAAc,EAAG,CAC7B,GAAK5mC,CAAAA,oBAAMiM,SAAO,IAAM7Y,KAAKiyC,UAAUoE,CAAO,EAAGr2C,KAAKwzC,cAAc,CAAC,EACjE,OAAO,EAEN,GAAI,CAAC5mC,oBAAMiM,SAAO,IAAMw9B,EAASr2C,KAAKwzC,cAAc,CAAC,EACtD,OAAO,EAGf,MAAO,CAAC,GAEZlC,EAAYpxC,UAAU40C,gBAAkB,WACpC,IAIQ1iC,EAJR,MAAsB,WAAlBpS,KAAK8yC,SACEr/B,EAAczT,KAAKwO,MAAM,GAG5B4D,EAAO,CAAE9R,OAAQN,KAAKgzC,YAC1BhzC,KAAKwO,OAAOW,OAAOozB,GAAqBnwB,CAAI,EACrCpS,KAAKwO,OAAO8D,SAAS,KAIpCg/B,EAAYpxC,UAAU0xC,SAAW,SAAUx/B,GACvC,IAIIgnB,EACAnV,EAcA5N,EAnBA4lB,EAAQj8B,KACR4M,CAAAA,oBAAMwF,EAAKb,IAAI,GAAMa,EAAKb,KAAK9E,KAKlB,aAFb2sB,EAAWhnB,EAAKb,KAAK9E,GAAG2kB,QAAQpxB,KAAKwO,OAAOnB,QAAQZ,GAAK,QAAQ9L,MAAM,IAEhC,cAAby4B,GAAyC,eAAbA,GAA0C,iBAAbA,GACnFnV,EAAU,CAACxQ,EAAczT,KAAKwO,MAAM,GACpCxO,KAAKwO,OAAO8D,SAAW2R,IAGvBjkB,KAAKwO,OAAOW,OAAO0yB,GAAqB,EAAE,EAEtC5d,EAD6B,mBAA7BjkB,KAAKwO,OAAOmB,cAAkD,SAAbypB,EACvC,CAACp5B,KAAKwK,cAGNxK,KAAKwO,OAAO8D,UAG1B+D,EAAY,CACZkK,OAAQ,CAAA,EACRlT,QAAS+E,EAAK/E,QACdoJ,YAAawN,EACb1S,KAAMa,EAAKb,MAEfvR,KAAKwO,OAAO+H,QAAQ,YAAaF,EAAW,SAAUigC,GAClD,IAAIC,EACJ,GAAI,CAACD,EAAc/1B,OAIf,OAHiB,QAAb6Y,GAAmC,SAAbA,IACtB6C,EAAMgX,kBAAoB,CAAA,GAEtB7Z,GACJ,IAAK,MACD9jB,GAAS2mB,EAAMztB,MAAM,EACrB,MACJ,IAAK,OACD4G,GAAU6mB,EAAMztB,MAAM,EACtB,MACJ,IAAK,QACsB,WAAnBytB,EAAM6W,SAC4B,mBAA9B7W,EAAMztB,OAAOmB,cACbssB,EAAMztB,OAAOP,qBAAqBuoC,2BAA2BxlC,UAAQirB,EAAMsX,kBAAmB,IAAI,CAAC,EACnGtX,EAAMztB,OAAOyO,WAAagf,EAAMztB,OAAO1B,MAGvCmvB,EAAMztB,OAAOyO,WAAatF,GAAYskB,EAAMztB,OAAQytB,EAAMzxB,aAAcyxB,EAAMztB,OAAO1B,IAAI,EAI7FmvB,EAAMztB,OAAOyO,WAAa,GAE9BF,GAAakf,EAAMztB,MAAM,EACzB,MACJ,IAAK,SACD,IAAK,IAAI66B,EAAI,EAAGA,EAAIplB,EAAQtjB,OAAQ0oC,CAAC,GACjC,GAAI,CAACpmB,EAAcgB,EAAQolB,EAAE,EAEzB,OADAr0B,KAAAA,EAAmBinB,EAAMztB,OAAQyV,EAAQolB,GAAInmB,CAAqB,EAI1E3F,EAAa0e,EAAMztB,OAAQ,QAAQ,EACnC,MAEJ,IAAK,WACD,IAAK,IAAIxN,EAAI,EAAGA,EAAIijB,EAAQtjB,OAAQK,CAAC,GACjC,GAAI,CAACoiB,GAAkBa,EAAQjjB,EAAE,EAE7B,OADAgU,KAAAA,EAAmBinB,EAAMztB,OAAQyV,EAAQjjB,GAAIqiB,EAAyB,EAI5C,mBAA9B4Y,EAAMztB,OAAOmB,aACbssB,EAAMztB,OAAOW,OAAOsnC,GAAqB,EAAE,EAEF,EAApCxa,EAAMztB,OAAO+B,cAAc5P,QAChC2iB,GAAS2Y,EAAMztB,OAAQytB,EAAMztB,OAAO1B,KAAMmvB,EAAMztB,OAAO+B,aAAa,EAExE,MACJ,IAAK,SACI0S,EAAcgB,EAAQ,EAAE,GAIzBgY,EAAMztB,OAAOW,OAAOizB,GAAmB,EAAE,EACzC7kB,EAAa0e,EAAMztB,OAAQ,QAAQ,GAJnCwG,EAAmBinB,EAAMztB,OAAQyV,EAAQ,GAAIf,CAAqB,EAMtE,MACJ,IAAK,YAED+Y,EAAMztB,OAAOW,OAAOkzB,GAAsB,EAAE,EAC5C,MACJ,IAAK,UACDxtB,GAAQonB,EAAMztB,MAAM,EACpB,MACJ,IAAK,OACGytB,EAAMztB,OAAO4pB,aAA6C,mBAA9B6D,EAAMztB,OAAOmB,aACzCssB,EAAMztB,OAAOW,OAAO2yB,GAAiB,CAAExhC,OAAQ27B,EAAMztB,OAAO4pB,YAAa,EAEtC,mBAA9B6D,EAAMztB,OAAOmB,eACdssB,EAAMztB,OAAO4pB,aACb6D,EAAMztB,OAAOW,OAAO2yB,GAAiB,CAAExhC,OAAQ27B,EAAMztB,OAAO4pB,YAAa,EAE7E6D,EAAMztB,OAAOP,qBAAqBuoC,2BAA2BxlC,UAAQirB,EAAMsX,kBAAmB,IAAI,CAAC,GAEvG,MACJ,IAAK,UACDtX,EAAMztB,OAAOW,OAAO6zB,EAAoB,EAAE,EAC1CuT,EAASta,EAAMztB,OAAO+B,cACY,mBAA9B0rB,EAAMztB,OAAOmB,eACb4mC,EAAS,GACTta,EAAMztB,OAAOP,qBAAqBuoC,2BAA2BxlC,UAAQirB,EAAMsX,kBAAmB,IAAI,CAAC,GAEvGltB,GAAW4V,EAAMztB,OAAQ+nC,EAAQta,EAAMztB,OAAO1B,KAAM,SAAS,EAC7D,MACJ,IAAK,YACDkX,GAAgBiY,EAAMztB,MAAM,EAC5B,MACJ,IAAK,OACL,IAAK,OACL,IAAK,OACL,IAAK,YACL,IAAK,aAKL,IAAK,OAED8M,GAAmB2gB,EAAMztB,OAAQ4D,CAAI,EACrC,MAEJ,IAAK,iBACD+B,GAAa8nB,EAAMztB,OAAQ,YAAY,EACvC,MAEJ,IAAK,cACD2F,GAAa8nB,EAAMztB,OAAQ,SAAS,EACpC,MACJ,IAAK,aACL,IAAK,eACDytB,EAAMztB,OAAO3B,cAAc,CAAE6pC,eAAgB,CAAEnE,gBAA8B,eAAbnZ,GAA4C,EAC5G6C,EAAMztB,OAAOqkB,WACb1O,GAAW8X,EAAMztB,MAAM,GAItC,IAEL8iC,EAAYpxC,UAAU8hC,kBAAoB,SAAUzT,GAChD,GAAIA,EAAE7S,SAAW1b,KAAKi+B,iBAAgC,WAAb1P,EAAE7S,OAI3C,IAAK,IAAI8nB,EAAK,EAAGC,EAAKlkC,OAAOojB,KAAK4L,EAAEmV,OAAO,EAAGF,EAAKC,EAAG9iC,OAAQ6iC,CAAE,GAGnD,aAFEC,EAAGD,KAGNxjC,KAAKyxC,YAAYp2B,SAAWF,GAAYnb,KAAKwO,OAAQ+jB,EAAc,IAKnF+e,EAAYpxC,UAAUw7B,iBAAmB,WACrC17B,KAAKwO,OAAO80B,GAAG4N,GAAgBlxC,KAAKuJ,QAASvJ,IAAI,EACjDA,KAAKwO,OAAO80B,GAAGvB,EAAqB/hC,KAAKgiC,kBAAmBhiC,IAAI,EAChEA,KAAK6jC,eAAiB,IAAIC,iBAAe9jC,KAAKyxC,YAAYpkC,QAAS,CAC/D02B,UAAW/jC,KAAKgkC,iBAAiBxT,KAAKxwB,IAAI,EAC1CikC,WAAYjkC,KAAKikC,WACjB3nB,UAAW,UACd,GAELg1B,EAAYpxC,UAAUy4B,oBAAsB,WACxC34B,KAAKwO,OAAOozB,IAAIsP,GAAgBlxC,KAAKuJ,OAAO,EAC5CvJ,KAAKwO,OAAOozB,IAAIG,EAAqB/hC,KAAKgiC,iBAAiB,EAC3DhiC,KAAK6jC,eAAet6B,WAExB+nC,EAAYpxC,UAAU8jC,iBAAmB,SAAUzV,GAC/C,OAAQA,EAAEjf,QACN,IAAK,UACL,IAAK,YACDif,EAAEuH,mBASdwb,EAAYpxC,UAAU+9B,cAAgB,WAClC,MAAO,eAEXqT,EAAYpxC,UAAUqJ,QAAU,WACxBvJ,KAAKwO,OAAOmzB,cAGhB3hC,KAAK24B,sBACL34B,KAAKyxC,YAAYloC,UACjBvJ,KAAK4zC,cAAgB,OAGzBtC,EAAYpxC,UAAU41C,YAAc,SAAUzzC,GAE1C,IADA,IAAI2V,EAAQ,GACHhX,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAAI,CAClC,IAAIuQ,EAAO,KAAA,EACP+jC,EAASt1C,KAAKiyC,UAAU5vC,EAAKrB,EAAE,EAC/Bo4B,EAAWnf,EAAcja,KAAKwO,OAAQnM,EAAKrB,EAAE,EACjD,OAAQqB,EAAKrB,IACT,IAAK,IACDuQ,EAAO,CAAEolC,UAAW,CAAA,GACpB,MACJ,IAAK,OACDplC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAASmd,IAC9C,MACJ,IAAK,SACDrlC,EAAO,CACH9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAASod,GACrC7+B,MAAO,CACH,CACIvL,GAAIzM,KAAKiyC,UAAU,cAAc,EAAG1lC,KAAM0N,EAAcja,KAAKwO,OAAQ,QAAQ,EAC7EirB,QAAUz5B,KAAKwO,OAAO0L,UAAUq4B,gBAAyBuE,EAAP,MAEtD,CACIrqC,GAAIzM,KAAKiyC,UAAU,YAAY,EAAG1lC,KAAM0N,EAAcja,KAAKwO,OAAQ,MAAM,EACzEirB,QAASz5B,KAAKwO,OAAO0L,UAAUq4B,gBAAkB,KAAOuE,KAIpE,MACJ,IAAK,MACDvlC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAASsd,IAC9C,MACJ,IAAK,OACDxlC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAASud,IAC9C,MACJ,IAAK,QACDzlC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAASwd,IAC9C,MACJ,IAAK,SACD1lC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAASyd,IAC9C,MACJ,IAAK,SACD3lC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAAS0d,IAC9C,MACJ,IAAK,YACD5lC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAAS2d,IAC9C,MACJ,IAAK,UACD7lC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAAS4d,IAC9C,MACJ,IAAK,SACD9lC,EAAO,CACH9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAAS6d,GACrCt/B,MAAO,CACH,CACIvL,GAAIzM,KAAKiyC,UAAU,MAAM,EAAG1lC,KAAM0N,EAAcja,KAAKwO,OAAQ,MAAM,EACnEirB,QAAgC,SAAvBz5B,KAAKwO,OAAO4J,OAAoBm/B,GAAoB,MAEjE,CACI9qC,GAAIzM,KAAKiyC,UAAU,MAAM,EAAG1lC,KAAM0N,EAAcja,KAAKwO,OAAQ,MAAM,EACnEirB,QAAgC,SAAvBz5B,KAAKwO,OAAO4J,OAAoBm/B,GAAoB,MAEjE,CACI9qC,GAAIzM,KAAKiyC,UAAU,MAAM,EAAG1lC,KAAM0N,EAAcja,KAAKwO,OAAQ,cAAc,EAC3EirB,QAAgC,iBAAvBz5B,KAAKwO,OAAO4J,OAA4Bm/B,GAAoB,MAEzE,CAAEZ,UAAW,CAAA,GACb,CACIlqC,GAAIzM,KAAKiyC,UAAU,WAAW,EAAG1lC,KAAM0N,EAAcja,KAAKwO,OAAQ,WAAW,EAC7EirB,QAAmC,cAA1Bz5B,KAAKwO,OAAO0J,UAA4B4+B,EAAqB,MAE1E,CACIrqC,GAAIzM,KAAKiyC,UAAU,YAAY,EAAG1lC,KAAM0N,EAAcja,KAAKwO,OAAQ,YAAY,EAC/EirB,QAAmC,eAA1Bz5B,KAAKwO,OAAO0J,UAA6B4+B,EAAqB,MAE3E,CACIrqC,GAAIzM,KAAKiyC,UAAU,MAAM,EAAG1lC,KAAM0N,EAAcja,KAAKwO,OAAQ,MAAM,EACnEirB,QAAmC,SAA1Bz5B,KAAKwO,OAAO0J,UAAuB4+B,EAAqB,QAI7E,MAEJ,IAAK,OACDvlC,EAAO,CACH9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAA8B,YAArBz5B,KAAKwO,OAAO4F,KAAqBg+B,GAAgBF,GACtFl6B,MAAO,CACH,CACIvL,GAAIzM,KAAKiyC,UAAU,gBAAgB,EAAG1lC,KAAM0N,EAAcja,KAAKwO,OAAQ,iBAAiB,EACxFirB,QAA8B,YAArBz5B,KAAKwO,OAAO4F,KAAqB,KAAO0iC,GAErD,CACIrqC,GAAIzM,KAAKiyC,UAAU,aAAa,EAAG1lC,KAAM0N,EAAcja,KAAKwO,OAAQ,cAAc,EAClFirB,QAA8B,YAArBz5B,KAAKwO,OAAO4F,KAAqB0iC,EAAqB,QAI3E,MACJ,IAAK,UACDvlC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAAS+d,IAC9C,MACJ,IAAK,YACDjmC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAASge,IAC9C,MAEJ,IAAK,WACDlmC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAUK,QAASie,IAC9C,MAEJ,QACInmC,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,GAGnCphB,EAAMvK,KAAK8D,CAAI,EAEnB,OAAOyG,GAEXs5B,EAAYpxC,UAAU+xC,UAAY,SAAUxlC,GACxC,OAAOzM,KAAKwO,OAAOnB,QAAQZ,GAAK,OAASA,EAAGkJ,MAAM,GAAG,EAAEC,KAAK,EAAE,EAAExC,mBA3rBpEk+B,GA6rBOA,EAtrBP,SAASA,EAAY9iC,GACjBxO,KAAKizC,kBAAoB,CAAA,EACzBjzC,KAAKg1C,aAAe,GACpBh1C,KAAKwzC,eAAiB,KACtBxzC,KAAKy0C,cAAgB,GACrBz0C,KAAKwO,OAASA,EACdxO,KAAKm4B,SCvBN,ICFC/4B,GAqDmCS,GAi1CnC83C,GDp4CGC,GAAgB,CACvBC,UAAa,aACbC,OAAU,SACVr0B,OAAU,SACVs0B,OAAU,SACVz0B,SAAY,WACZ00B,IAAO,MACPC,KAAQ,OACRC,MAAS,QACTC,OAAU,UACVC,QAAW,UACXC,iBAAkB,gBAClBC,kBAAmB,iBACnBC,KAAQ,OACRC,QAAW,UACXC,UAAa,aACbC,KAAQ,OACRC,oBAAqB,aACrBC,iBAAkB,SAClBC,iBAAkB,SAClBC,iBAAkB,SAClBC,mBAAoB,WACpBC,cAAe,MACfC,eAAgB,OAChBC,gBAAiB,QACjBC,iBAAkB,UAClBC,kBAAmB,UACnBC,oBAAqB,kBACrBC,eAAgB,OAChBC,kBAAmB,UACnBC,oBAAqB,aACrBC,KAAQ,OACRC,KAAQ,OACRC,aAAgB,WAChBC,YAAe,eACfC,KAAQ,OACRC,SAAY,WACZC,QAAW,UACXC,SAAY,WACZC,KAAQ,OACRC,WAAc,aACdC,UAAa,YACbC,WAAc,aACdC,KAAQ,OACRC,kBAAmB,cACnBC,eAAgB,UAChBC,KAAQ,OACRC,OAAU,SACVlnC,OAAU,SACVmnC,YAAa,KACbC,gBAAiB,SACjBC,aAAc,MACdC,YAAa,KACbC,gBAAiB,SACjBC,cAAe,OACfC,mBAAoB,SACpBC,oBAAqB,yBACrBC,gBAAiB,SACjBC,iBAAkB,sBAClBC,6BAA8B,sBAC9BC,8BAA+B,2GAE/BC,gBAAiB,cACjBC,iBAAkB,6CAClBC,uBAAwB,gBACxBC,wBAAyB,+CACzBC,yBAA0B,wBAC1BC,0BAA2B,mDAC3BC,mBAAoB,qBACpBC,oBAAqB,uDACrBC,gBAAiB,eACjBC,MAAS,QACTC,mBAAoB,2CACpBC,qBAAsB,kNAGtBC,8BAA+B,qDAC/BC,2BAA4B,wDAC5BC,eAAgB,uBAChBC,cAAe,4BACfC,eAAgB,mBAChBC,aAAc,8BACdC,eAAgB,mBAChBC,aAAc,4BACdC,mBAAoB,gEACpBC,oBAAqB,2DACrBC,gBAAiB,gBACjBC,iBAAkB,mDAClBC,eAAgB,sBAChBC,gBAAiB,kFACjBC,mBAAoB,YACpBC,iBAAkB,UAClBC,cAAe,OACfC,iBAAkB,gCAClBC,GAAM,KACNC,iBAAkB,wEAClBC,8BAA+B,wEAC/BC,4BAA6B,wEAC7BC,gBAAiB,iEACjBC,eAAgB,oCACpB,ECvGI39C,GACIV,GAAgB,SAAUC,EAAGC,GAI7B,OAHAF,GAAgBG,OAAOC,iBAClB,CAAEC,UAAW,cAAgBC,MAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,GACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,CAAC,IAAGN,EAAEM,GAAKL,EAAEK,OACpDN,EAAGC,CAAC,GAEtB,SAAUD,EAAGC,GAEhB,SAASS,IAAOC,KAAKC,YAAcZ,EADnCD,GAAcC,EAAGC,CAAC,EAElBD,EAAEa,UAAkB,OAANZ,EAAaC,OAAOY,OAAOb,CAAC,GAAKS,EAAGG,UAAYZ,EAAEY,UAAW,IAAIH,KAGnFK,EAA0C,SAAUC,EAAYC,EAAQC,EAAKC,GAC7E,IAA2HnB,EAAvHoB,EAAIC,UAAUC,OAAQC,EAAIH,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAOjB,OAAOsB,yBAAyBP,EAAQC,CAAG,EAAIC,EACrH,GAAuB,UAAnB,OAAOM,SAAoD,YAA5B,OAAOA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASV,EAAYC,EAAQC,EAAKC,CAAI,OACxH,IAAK,IAAIQ,EAAIX,EAAWM,OAAS,EAAQ,GAALK,EAAQA,CAAC,IAAQ3B,EAAIgB,EAAWW,MAAIJ,GAAKH,EAAI,EAAIpB,EAAEuB,CAAC,EAAQ,EAAJH,EAAQpB,EAAEiB,EAAQC,EAAKK,CAAC,EAAIvB,EAAEiB,EAAQC,CAAG,IAAMK,GAChJ,OAAW,EAAJH,GAASG,GAAKrB,OAAO0B,eAAeX,EAAQC,EAAKK,CAAC,EAAGA,CAChE,EAoCI88C,GAAuC79C,GA4hDzC89C,YA3hDE79C,EAAU49C,EAAa79C,EAAM,GAyD7B83C,GAAgB+F,GAOJx9C,UAAU+9B,cAAgB,WAClC,MAAO,eAOXyf,EAAYx9C,UAAU09C,UAAY,WAC1BhxC,CAAAA,oBAAM5M,KAAKqN,QAAQZ,EAAE,GAAyB,KAApBzM,KAAKqN,QAAQZ,IACvCzM,KAAKqN,QAAQmrB,aAAa,KAAMqlB,cAAY,aAAa,CAAC,EAE9D79C,KAAK89C,aACL99C,KAAK4O,SAAW,GAChB5O,KAAKwY,QAAU,GACfulC,oBAAQ/9C,KAAKqN,QAAS,CAAElL,MAAS67C,aAAWh+C,KAAKmC,KAAK,EAAG80B,OAAU+mB,aAAWh+C,KAAKi3B,MAAM,EAAG,EAC5Fj3B,KAAK4kC,SAAWqZ,UAAQrZ,SACxB5kC,KAAKwb,SAAWxb,KAAKk+C,cACjBl+C,KAAKwb,UACLxb,KAAK6M,cAAc,CAAEsxC,uBAAwB,CAAE/xB,QAAS,CAAA,IAAW,CAAA,CAAI,EAE3E,IAAInM,EAAMjP,UAAQhR,KAAKqN,QAAS,WAAW,EAC3CrN,KAAKo+C,SAAWn+B,CAAAA,CAAAA,EAChBjgB,KAAK2P,aAA8B,eAAd3P,KAAKoU,KAAyB,iBAAmB,cACtEiqC,gBAAc,CAAE/9C,OAAQN,KAAKqN,SAAWmM,eAAa,EACrDxZ,KAAKs+C,aACLt+C,KAAKikC,WAAa,CACdsa,KAAM,QACNC,GAAI,KACJC,WAAY,eACZC,WAAY,eACZC,MAAO,UAEX3+C,KAAKib,UAAY,IAAI2jC,OAAK5+C,KAAKi+B,gBAAiB2Z,GAAe53C,KAAKgb,MAAM,GAQ9E0iC,EAAYx9C,UAAU2+C,eAAiB,WAEnC,OAAO7+C,KAAK8+C,aADI,CAAC,OAAQ,OAAQ,gBACC,GAQtCpB,EAAYx9C,UAAU6+C,gBAAkB,WACpC,IAAIC,EAAU,GA4Cd,OA3CAA,EAAQvxC,KAAK,CACTwxC,OAAQ,gBACR7sC,KAAM,CAACpS,MACV,EACDg/C,EAAQvxC,KAAK,CACTwxC,OAAQ,iBACR7sC,KAAM,CAACpS,MACV,EACGA,KAAKk/C,gBAAgB9yB,SACrB4yB,EAAQvxC,KAAK,CACTwxC,OAAQ,UACR7sC,KAAM,CAACpS,MACP8X,KAAM,UACT,EAED9X,KAAKm+C,uBAAuB/xB,SAC5B4yB,EAAQvxC,KAAK,CACTwxC,OAAQ,iBACR7sC,KAAM,CAACpS,MACP8X,KAAM,iBACT,EAED9X,KAAKoU,MACL4qC,EAAQvxC,KAAK,CACTwxC,OAAQ,cACR7sC,KAAM,CAACpS,MACP8X,KAAM,cACT,EAED9X,KAAK+1C,oBAAoB3pB,SAAW,CAACpsB,KAAK4kC,UAC1Coa,EAAQvxC,KAAK,CACTwxC,OAAQ,cACR7sC,KAAM,CAACpS,MACP8X,KAAM,cACT,EAED9X,KAAKs6B,sBACL0kB,EAAQvxC,KAAK,CACTwxC,OAAQ,iBACR7sC,KAAM,CAACpS,MACP8X,KAAM,iBACT,EAEEknC,GAQXtB,EAAYx9C,UAAUi4B,OAAS,WAC3Bn4B,KAAKm/C,aACL,IAAIC,EAAUxyC,oBAAM5M,KAAKuQ,aAAa,EAAI,GACtCvQ,KAAK2jC,oBAAsB3jC,KAAKuQ,cAAgBvQ,KAAKuQ,cAAcmB,MAAM1R,KAAKuQ,cAAc5P,OAAS,CAAC,EAC1GX,KAAK6M,cAAc,CAAE0D,cAAe6uC,GAAW,CAAA,CAAI,EACnDp/C,KAAKq/C,SAAWr/C,KAAKoU,KACrBpU,KAAKwlC,MAA2D,GAAnD8Z,UAAUC,SAASC,cAAc9pC,QAAQ,KAAK,EAC3D1V,KAAKy/C,OAAOz/C,KAAKwyB,SAAS,EAC1BxyB,KAAK0/C,oBACLntC,EAAKvS,KAAOA,KAAK8M,OAAS9M,KAAKoc,aAAgBI,GAAoBD,EAAoBvc,KAAK8M,IAAI,EAC1E,YAAlB9M,KAAKq/C,UACLr/C,KAAKiU,qBAAqB5G,QAAQe,UAAUqC,IAAI4pB,EAAgB,EAEpEr6B,KAAK2/C,eACD/yC,oBAAM5M,KAAKiO,oBAAoB,IAC/BjO,KAAK4/C,YAAYC,SAAS7/C,KAAKwyB,UAAY,EAAI,CAAC,EACtC3Z,SAAO,IAAMinC,GAAe9/C,KAAKqN,OAAO,EAC9Ce,UAAUqC,IAAI4pB,EAAgB,GAEtCr6B,KAAK27B,aACL37B,KAAK+/C,kBAETrC,EAAYx9C,UAAU49C,WAAa,WAC/B,IAAI1N,EAAcpwC,KAAK8M,KAQnBkgC,IANAoD,EADAxjC,oBAAMwjC,CAAW,EACH,IAEdA,GAAYt0B,YAAY,GAAG,IAAOs0B,EAAYzvC,OAAS,IACvDyvC,GAA4B,MAEhCpwC,KAAKoc,aAAeg0B,GACIz6B,MAAM,GAAG,GACjC3V,KAAK6M,cAAc,CAAEC,KAAMkgC,EAAM,GAAK,KAAO,CAAA,CAAI,EACjDhtC,KAAKmN,UAAY,GACjBnN,KAAKiN,OAAS,CAAC,WACfjN,KAAKsS,SAAW,IAEpBorC,EAAYx9C,UAAUi/C,WAAa,WAC3Bn/C,KAAKwb,UACL6pB,WAAS,CAACrlC,KAAKqN,SAAU2yC,EAAU,EAEnChgD,KAAK2jC,qBACL0B,WAAS,CAACrlC,KAAKqN,SAAU4yC,EAAgB,EAE7CjgD,KAAKkgD,YAAY,KAAMlgD,KAAKqb,QAAQ,EACpCrb,KAAKmgD,oBAETzC,EAAYx9C,UAAUo+C,WAAa,WAC/B,IAAI8B,EAAapgD,KAAKwZ,cAAc,MAAO,CAAE/M,GAAIzM,KAAKqN,QAAQZ,GAAKsnC,GAAgB,EAE/EsM,GADJrgD,KAAKqN,QAAQ0M,YAAYqmC,CAAU,EAClBpgD,KAAKwZ,cAAc,MAAO,CACvC/M,GAAIzM,KAAKqN,QAAQZ,GAAKqM,GAAeW,UAAW6mC,GACnD,GAEGC,GADJvgD,KAAKqN,QAAQ0M,YAAYsmC,CAAU,EACdrgD,KAAKwZ,cAAc,MAAO,CAC3C/M,GAAIzM,KAAKqN,QAAQZ,GAAK+zC,GAAmB/mC,UAAWgnC,GACvD,GACGC,EAAW1gD,KAAKwZ,cAAc,MAAO,CACrC/M,GAAIzM,KAAKqN,QAAQZ,GAAK0nC,GACzB,EAEGwM,GADJJ,EAAexmC,YAAY2mC,CAAQ,EACjB1gD,KAAKwZ,cAAc,MAAO,CACxC/M,GAAIzM,KAAKqN,QAAQZ,GAAKmU,GAAgBnH,UAAWmnC,GACpD,GAMGC,GALJ7gD,KAAKwtC,wBAA0BxtC,KAAKwZ,cAAc,MAAO,CACrD/M,GAAIzM,KAAKqN,QAAQZ,GAAKuM,GACtBS,UAAWqnC,GACd,EACDH,EAAY5mC,YAAY/Z,KAAKwtC,uBAAuB,EACrCxtC,KAAKwZ,cAAc,MAAO,CACrC/M,GAAIzM,KAAKqN,QAAQZ,GAAK0oC,GACzB,GAEG4L,GADJJ,EAAY5mC,YAAY8mC,CAAQ,EACZ7gD,KAAKwZ,cAAc,MAAO,CAC1C/M,GAAIzM,KAAKqN,QAAQZ,GAAKqsB,GACtBrf,UAAW9E,GAAiBgZ,MAAO,CAAEqzB,KAAQ,SAChD,GAEGC,GADJN,EAAY5mC,YAAYgnC,CAAa,EACvB/gD,KAAKwZ,cAAc,OAAQ,CAAEC,UAAWynC,GAAa,GAkC/DC,GAjCJR,EAAY5mC,YAAYknC,CAAO,EAgB3BG,EAdCphD,KAAKwyB,WAYN6tB,EAAWtmC,YAAY4mC,CAAW,EAClCN,EAAWtmC,YAAYwmC,CAAc,EACtB,CACX,CAAEj+C,KAAM,MAAO++C,IAAK,SACpB,CACI/+C,KAAM,MAAO++C,IAAKrhD,KAAKm+C,uBAAuBt8C,SAAS8M,WACvD2yC,IAAKthD,KAAKm+C,uBAAuBoD,SAAS5yC,eAjBlD0xC,EAAWtmC,YAAYwmC,CAAc,EACrCF,EAAWtmC,YAAY4mC,CAAW,EACnB,CACX,CACIr+C,KAAM,MAAO++C,IAAKrhD,KAAKm+C,uBAAuBt8C,SAAS8M,WACvD2yC,IAAKthD,KAAKm+C,uBAAuBoD,SAAS5yC,YAE9C,CAAErM,KAAM,MAAO++C,IAAK,WAc5BrhD,KAAK4/C,YAAc,IAAI4B,WAAS,CAC5BJ,aAAcA,EACdj/C,MAAO,OACPqwB,UAAW,CAAA,EACXC,oBAAqBzyB,KAAKyyB,oBAC1B6E,SAAUt3B,KAAKqJ,eAAemnB,KAAKxwB,IAAI,EAC1C,EACDA,KAAK4/C,YAAYltB,iBAAmB,CAAA,EACpC1yB,KAAK4/C,YAAYjtB,SAAS0tB,CAAU,EACnBrgD,KAAKwZ,cAAc,MAAO,CAAE/M,GAAIzM,KAAKqN,QAAQZ,GAAKmmB,GAAe,GAE9E6uB,GADJzhD,KAAKqN,QAAQ0M,YAAYonC,CAAU,EACpBnhD,KAAKwZ,cAAc,KAAM,CAAE/M,GAAIzM,KAAKqN,QAAQZ,GAAKslC,GAAqB,GAEjF2P,GADJ1hD,KAAKqN,QAAQ0M,YAAY0nC,CAAQ,EACbzhD,KAAKwZ,cAAc,MAAO,CAAE/M,GAAIzM,KAAKqN,QAAQZ,GAAK+qB,GAAmB,GAErFmqB,GADJ3hD,KAAKqN,QAAQ0M,YAAY2nC,CAAa,EACjB1hD,KAAKwZ,cAAc,MAAO,CAAE/M,GAAIzM,KAAKqN,QAAQZ,GAAK6nB,GAAoB,GAEvFstB,GADJ5hD,KAAKqN,QAAQ0M,YAAY4nC,CAAc,EAChB3hD,KAAKwZ,cAAc,MAAO,CAAE/M,GAAIzM,KAAKqN,QAAQZ,GAAKo1C,GAAsB,GAC/F7hD,KAAKqN,QAAQ0M,YAAY6nC,CAAgB,GAE7ClE,EAAYx9C,UAAUy/C,aAAe,WACjC,IAAImC,EAAUjpC,SAAO,IAAM7Y,KAAKqN,QAAQZ,GAAKsnC,GAAgB/zC,KAAKqN,OAAO,EACrE00C,EAAgBD,EAAUA,EAAQ7oC,aAAe,EACjDjZ,KAAK4/C,cACL5/C,KAAK4/C,YAAY3oB,QAAUj3B,KAAKqN,QAAQ2U,aAAe+/B,GAAepzC,WACtE3O,KAAK4/C,YAAY/sB,aAIzB6qB,EAAYx9C,UAAUmJ,eAAiB,WACnCrJ,KAAKmP,OAAOszB,GAAuB,EAAE,GAEzCib,EAAYx9C,UAAU8hD,eAAiB,WACnC,IAAIC,EAAMppC,SAAO,IAAMinC,GAAe9/C,KAAKqN,OAAO,EAC9CrN,KAAKm+C,uBAAuB/xB,SAC5BpsB,KAAK4/C,YAAYsC,OAAOliD,KAAKwyB,UAAY,EAAI,CAAC,EAC9CyvB,EAAI7zC,UAAU0C,OAAOupB,EAAgB,IAGrCr6B,KAAK4/C,YAAYC,SAAS7/C,KAAKwyB,UAAY,EAAI,CAAC,EAChDyvB,EAAI7zC,UAAUqC,IAAI4pB,EAAgB,IAG1CqjB,EAAYx9C,UAAUggD,YAAc,SAAUiC,EAAQC,GAC7Cx1C,oBAAMu1C,CAAM,GAAgB,KAAXA,GAClB9b,cAAY,CAACrmC,KAAKqN,SAAU80C,EAAOxsC,MAAM,GAAG,CAAC,EAE5C/I,oBAAMw1C,CAAM,GAAgB,KAAXA,GAClB/c,WAAS,CAACrlC,KAAKqN,SAAU+0C,EAAOzsC,MAAM,GAAG,CAAC,GAGlD+nC,EAAYx9C,UAAUo4B,YAAc,WAChCA,cAAYt4B,KAAKqN,OAAO,GAE5BqwC,EAAYx9C,UAAU67B,YAAc,WAChCA,cAAY/7B,KAAKqN,OAAO,GAE5BqwC,EAAYx9C,UAAUmiD,cAAgB,SAAU9zB,GAC5CA,EAAEuH,kBAEN4nB,EAAYx9C,UAAUg+C,YAAc,WAChC,MAAQ,kFAAkF7nB,KAAK4nB,UAAQqE,UAAUlvC,aAAa,GACvH,UAAUijB,KAAK4nB,UAAQqE,UAAUlvC,aAAa,GAEzDsqC,EAAYx9C,UAAUigD,iBAAmB,WACrC,IAAI1zC,EAAKzM,KAAKqN,QAAQZ,GAAK4X,GACvBk+B,EAAYviD,KAAKwZ,cAAc,QAAS,CAAE/M,GAAIA,EAAIkhB,MAAO,CAAE7V,KAAM,cAAe7V,KAAM,QAAU,EACpGjC,KAAKqN,QAAQ0M,YAAYwoC,CAAS,EAClCviD,KAAKwiD,gBAAkB,IAAI9wB,SAAO,CAC9BpC,OAAQrV,EAAcja,KAAM,eAAe,EAC3CuvB,QAASgzB,EACTxwB,kBAAmB,CAAEC,OAAQ,QAC7BC,cAAe,CAAA,EACfC,cAAe,CAAA,EACf9F,QAAS,CAAA,EACTgG,QAAS,CAAA,EACTjwB,MAAO,QACP7B,OAAQN,KAAKqyB,aAAiC,IAAMryB,KAAKqN,QAAQZ,GACjE4O,SAAUF,GAAYnb,KAAMA,KAAKwb,SAAW8W,GAAgBC,EAAc,EAC1EvX,OAAQhb,KAAKgb,OACbmX,cAAe,CAAA,EACftQ,SAAU,CAAEsV,EAAG,SAAUC,EAAG,UAC5B5E,UAAWxyB,KAAKwyB,UAChBC,oBAAqBzyB,KAAKyyB,oBAC1B/C,KAAM1vB,KAAKyiD,OAAOjyB,KAAKxwB,IAAI,EAC3B4vB,MAAO5vB,KAAK0iD,QAAQlyB,KAAKxwB,IAAI,EAC7B2xB,WAAY3xB,KAAK6xC,aAAarhB,KAAKxwB,IAAI,EACvC6xB,YAAa7xB,KAAK8xC,cAActhB,KAAKxwB,IAAI,EAC5C,EACDA,KAAKwiD,gBAAgB7vB,SAAS,IAAM3yB,KAAKqN,QAAQZ,GAAKo1C,EAAoB,EAC1E7hD,KAAK2iD,mBAETjF,EAAYx9C,UAAUyiD,gBAAkB,WACpC,IAAIC,EAAY5iD,KAAK6W,aAAa+rC,WAA0C5iD,KAAK6W,aAAaC,IAC9F9W,KAAKka,UAAY,IAAI2oC,WAAS,CAC1B1oC,SAAUtB,SAAO,IAAM7Y,KAAKqN,QAAQZ,GAAKmU,GAAgB5gB,KAAKqN,OAAO,EACrEy1C,cAAe,CACXC,QAASH,EACTI,UAAWJ,EACXK,UAAWjjD,KAAK02C,eAAeuM,UAC/BC,WAAY,GAEhBloC,OAAQhb,KAAKgb,OACbwX,UAAWxyB,KAAKwyB,UAChB2wB,UAAWnjD,KAAKojD,YAAY5yB,KAAKxwB,IAAI,EACrCqjD,eAAgBrjD,KAAKsjD,iBAAiB9yB,KAAKxwB,IAAI,EAC/CujD,SAAUvjD,KAAKwjD,WAAWhzB,KAAKxwB,IAAI,EACnCyjD,UAAWzjD,KAAK0jD,SAASlzB,KAAKxwB,IAAI,EAClC2jD,SAAU3jD,KAAK4jD,WAAWpzB,KAAKxwB,IAAI,EACnCu/B,SAAUv/B,KAAK6jD,WAAWrzB,KAAKxwB,IAAI,EACnC8jD,QAAS9jD,KAAK+jD,gBAAgBvzB,KAAKxwB,IAAI,EACvCgkD,QAAShkD,KAAKikD,gBAAgBzzB,KAAKxwB,IAAI,EACvCkkD,WAAYlkD,KAAK02C,eAAewN,WAChCC,YAAankD,KAAK02C,eAAeyN,YACjCC,YAAapkD,KAAK02C,eAAe0N,YACjCC,kBAAmBrkD,KAAK02C,eAAe2N,kBACvC9R,gBAAiBvyC,KAAK02C,eAAenE,gBACrC+R,iBAAkBtkD,KAAK02C,eAAe4N,iBACtCC,kBAAmBvkD,KAAKwkD,iBAAiBh0B,KAAKxwB,IAAI,EACrD,EACDA,KAAKka,UAAUyY,SAAS,IAAM3yB,KAAKqN,QAAQZ,GAAK4X,EAAa,GAEjEq5B,EAAYx9C,UAAUskD,iBAAmB,SAAUpyC,GAC/CpS,KAAKuW,QAAQ,mBAAoBnE,CAAI,GAEzCsrC,EAAYx9C,UAAUukD,eAAiB,WACnCzkD,KAAKka,UAAUgqC,WAAalkD,KAAK02C,eAAewN,WAChDlkD,KAAKka,UAAUiqC,YAAcnkD,KAAK02C,eAAeyN,YACjDnkD,KAAKka,UAAUkqC,YAAcpkD,KAAK02C,eAAe0N,YACjDpkD,KAAKka,UAAUmqC,kBAAoBrkD,KAAK02C,eAAe2N,kBACvDrkD,KAAKka,UAAUq4B,gBAAkBvyC,KAAK02C,eAAenE,gBACrDvyC,KAAKka,UAAU2Y,YAEnB6qB,EAAYx9C,UAAU2xC,aAAe,SAAUz/B,GAC3C,IAAIiE,EAAY,CACZkK,OAAQnO,EAAKmO,OAAQkU,UAAW,SAAUC,YAAa10B,KAAKwiD,iBAEhExiD,KAAKuW,QAAQ,kBAAmBF,EAAW,SAAUse,GACjDviB,EAAKmO,OAASoU,EAAUpU,OAC3B,GAELm9B,EAAYx9C,UAAU4xC,cAAgB,SAAU1/B,GAC5C,IAAIiE,EAAY,CACZkK,OAAQnO,EAAKmO,OAAQkU,UAAW,SAAUC,YAAa10B,KAAKwiD,iBAEhExiD,KAAKuW,QAAQ,mBAAoBF,EAAW,SAAUse,GAClDviB,EAAKmO,OAASoU,EAAUpU,OAC3B,GAELm9B,EAAYx9C,UAAUuiD,OAAS,WAC3BziD,KAAK0kD,SAAW,CAAA,EAChB1kD,KAAKwiD,gBAAgBn1C,QAAQijB,QAC7B,IAAIle,EAAO,CACPsiB,YAAa10B,KAAKwiD,gBAAiB/tB,UAAW,SAC9CpnB,QAASrN,KAAKwiD,gBAAgBn1C,SAElCrN,KAAKuW,QAAQ,YAAanE,CAAI,GAElCsrC,EAAYx9C,UAAUwiD,QAAU,WAC5B1iD,KAAK0kD,SAAW,CAAA,EAChB1kD,KAAKka,UAAUyqC,WACf,IAAIvyC,EAAO,CACPsiB,YAAa10B,KAAKwiD,gBAAiB/tB,UAAW,SAC9CpnB,QAASrN,KAAKwiD,gBAAgBn1C,SAElCrN,KAAKuW,QAAQ,aAAcnE,CAAI,GAGnCsrC,EAAYx9C,UAAUojD,iBAAmB,SAAUlxC,GAC/C,IAAI9C,EAAS,OACb,GAA+B,IAA1BtP,KAAK+0B,UAAUp0B,OAChB,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAK+0B,UAAUp0B,OAAQK,CAAC,GACpCoR,EAAKuV,SAAS7P,OAAS9X,KAAK+0B,UAAU/zB,GAAGwU,KAAKsC,OAC9CxI,EAAStP,KAAK+0B,UAAU/zB,GAAGsO,QAIvC,IAAIjN,EAAOiV,KAAKC,UAAU/K,WAASxM,KAAKiN,OAAOjN,KAAKiN,OAAOtM,OAAS,GAAIX,KAAK4O,QAAQ,CAAC,EACtFwD,EAAKwyC,eAAiB,CAAC,CAAE93C,KAAQ9M,KAAK8M,MAAQ,CAAExK,KAAQ8P,EAAKuV,SAASrlB,MAAQ,CAAEgN,OAAUA,GAAU,CAAEjN,KAAQA,GAAQ,CAAEwiD,SAAYzyC,EAAKuV,SAAS7P,QAGtJ4lC,EAAYx9C,UAAUkjD,YAAc,SAAUhxC,GAC1C,IAAI9C,EAAS,OACb,GAA+B,IAA1BtP,KAAK+0B,UAAUp0B,OAChB,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAK+0B,UAAUp0B,OAAQK,CAAC,GACpCoR,EAAKuV,SAAS7P,OAAS9X,KAAK+0B,UAAU/zB,GAAGwU,KAAKsC,OAC9CxI,EAAStP,KAAK+0B,UAAU/zB,GAAGsO,OACW,IAAlCtP,KAAK02C,eAAeuM,aACpBjjD,KAAK+0B,UAAUxL,OAAOvoB,EAAG,CAAC,EAC1BA,EAAIhB,KAAK+0B,UAAUp0B,QAKnC,IAAI0B,EAAOiV,KAAKC,UAAU/K,WAASxM,KAAKiN,OAAOjN,KAAKiN,OAAOtM,OAAS,GAAIX,KAAK4O,QAAQ,CAAC,EACtFwD,EAAKwyC,eAAiB,CAAC,CAAE93C,KAAQ9M,KAAK8M,MAAQ,CAAExK,KAAQ8P,EAAKuV,SAASrlB,MAAQ,CAAEgN,OAAUA,GAAU,CAAEjN,KAAQA,GAAQ,CAAEwiD,SAAYzyC,EAAKuV,SAAS7P,OAE9IjB,EAAe,CACfC,IAFY9W,KAAK6W,aAAa+rC,WAA0C5iD,KAAK6W,aAAaC,IAG1F7U,KAAM,OACN6nB,KAAM,CAAA,EACNC,SAAU,KACV3S,YAAa,KACb/U,KAAMiV,KAAKC,UAAUnF,EAAKwyC,cAAc,EACxCptC,UAAW,KACXC,UAAW,KACXC,WAAY,MAEhB1X,KAAK8kD,gBAAkB,CAAEx1C,OAAQ,SAAUuH,aAAcA,EAAc0J,OAAQ,CAAA,GAC/EvgB,KAAKuW,QAAQ,aAAcvW,KAAK8kD,gBAAiB,SAAUA,GACvD1yC,EAAKwyC,eAAiBttC,KAAK+T,MAAM7e,WAAS,OAAQs4C,EAAgBjuC,YAAY,CAAC,EAC/EzE,EAAKmO,OAASukC,EAAgBvkC,OAC9B,IAAIlK,EAAY,CACZkK,OAAQ,CAAA,EACRwkC,YAAa3yC,EAAK4yC,gBAE8C,YAAhE,OAAOx4C,WAAS,aAAcs4C,EAAgBjuC,YAAY,IAC1DrK,WAAS,aAAcs4C,EAAgBjuC,YAAY,EAAER,CAAS,EAC1D7J,WAAS,SAAU6J,CAAS,KAC5BjE,EAAKmO,OAAS/T,WAAS,SAAU6J,CAAS,GAGrD,GAELqnC,EAAYx9C,UAAUsjD,WAAa,WAC/BxjD,KAAKilD,oBAAoB,CAAEpmC,MAAO,EAAG,EACQ,IAAzC7e,KAAKka,UAAUgrC,eAAevkD,QAC9BX,KAAKwiD,gBAAgB99B,QAI7Bg5B,EAAYx9C,UAAUwjD,SAAW,SAAUtxC,GACvC,IAAI/P,EAAOiV,KAAKC,UAAU/K,WAASxM,KAAKiN,OAAOjN,KAAKiN,OAAOtM,OAAS,GAAIX,KAAK4O,QAAQ,CAAC,EACtFwD,EAAKwyC,eAAiB,CAAC,CAAE93C,KAAQ9M,KAAK8M,MAAQ,CAAEwC,OAAU,UAAY,CAAEjN,KAAQA,KAGpFq7C,EAAYx9C,UAAU0jD,WAAa,WAC3B5jD,KAAK0kD,UACL1kD,KAAKwiD,gBAAgB99B,QAI7Bg5B,EAAYx9C,UAAU2jD,WAAa,SAAUzxC,GACzC,IAKI6R,EAL0B,IAA1B7R,EAAK+yC,UAAUxkD,SAGnBX,KAAKolD,eAAiBhzC,EAAK+yC,UAAUxkD,OACrCX,KAAKqlD,cAAgB,EAEhBthC,CAAAA,GADDE,EAAUxQ,EAAczT,IAAI,CACJ,GAKxBA,KAAKslD,kBAAkBlzC,EAAM6R,CAAO,GAJpC7R,EAAKmO,OAAS,CAAA,EACdvL,EAAmBhV,KAAMikB,EAASM,EAAuB,GAQ7DvkB,KAAKwiD,gBAAgB1vB,SAEzB4qB,EAAYx9C,UAAUolD,kBAAoB,SAAUlzC,EAAMmzC,GACtD,IAIIC,EAJA7hC,EAAanX,WAAS,aAAc+4C,CAAa,EACrD,MAAA,EAAI34C,oBAAMwF,CAAI,GAAKxF,oBAAM+W,CAAU,GAAK/W,oBAAMJ,WAAS,sBAAuBmX,CAAU,CAAC,IAGrF6hC,EAAYpzC,EAAK+yC,UAAU3+B,KAAK,SAAUi/B,GACtC3tC,EAAQlL,oBAAM64C,EAAE3tC,IAAI,EAAa,GAAT2tC,EAAE3tC,KAC9B,OAAOA,EAAKoF,SAAS,GAAG,GAAKpF,EAAKoF,SAAS,IAAI,EAClD,EACGwoC,EAAUtzC,EAAK+yC,UAAU3+B,KAAK,SAAUi/B,GACpC3tC,EAAQlL,oBAAM64C,EAAE3tC,IAAI,EAAa,GAAT2tC,EAAE3tC,KAC9B,MAAO,EAAEA,EAAKoF,SAAS,GAAG,GAAKpF,EAAKoF,SAAS,IAAI,GACpD,EACD,EAAIsoC,GAA6D,IAAhDh5C,WAAS,sBAAuBmX,CAAU,GAGvD+hC,GAA2D,IAAhDl5C,WAAS,sBAAuBmX,CAAU,MAK7D+5B,EAAYx9C,UAAU+kD,oBAAsB,SAAU7yC,GAClDpS,KAAKqlD,cAAgBrlD,KAAKqlD,cAAgBjzC,EAAKyM,MAC3C7e,KAAK02C,eAAeiP,WAAc3lD,KAAKolD,iBAAmBplD,KAAKqlD,eAC/DrlD,KAAKwiD,gBAAgB99B,QAG7Bg5B,EAAYx9C,UAAU0lD,sBAAwB,SAAUhyC,GACpD,GAA+B,IAA1B5T,KAAK+0B,UAAUp0B,OAChB,IAAK,IAAIK,EAAI,EAAGA,EAAIhB,KAAK+0B,UAAUp0B,OAAQK,CAAC,IACtBmX,oBAAkBvE,CAAK,EAAmC,GAA/BpH,WAAS,OAAQoH,CAAK,EAAEkE,QAClD9X,KAAK+0B,UAAU/zB,GAAGwU,KAAKsC,OACtC9X,KAAK+0B,UAAUxL,OAAOvoB,EAAG,CAAC,EAC1BA,EAAIhB,KAAK+0B,UAAUp0B,SAMnC+8C,EAAYx9C,UAAU6jD,gBAAkB,SAAUnwC,GACV,EAAhC5T,KAAK02C,eAAeuM,WACpBjjD,KAAK4lD,sBAAsBhyC,CAAK,EAGpC5T,KAAKuW,QAAQ,UADF,CAAEjH,OAAQ,SAAUkL,OAAQ5G,EACX,EAC5B5T,KAAKsS,SAAW,CAAC9F,WAASxM,KAAKiN,OAAOjN,KAAKiN,OAAOtM,OAAS,GAAIX,KAAK4O,QAAQ,GAC5E2D,EAAKvS,KAAM+sB,EAAoB/sB,KAAK8M,IAAI,EACxC9M,KAAKilD,oBAAoB,CAAEpmC,MAAO,EAAG,EACmC,YAApE,OAAOrS,WAAS,YAAaxM,KAAK8kD,gBAAgBjuC,YAAY,GAC9DrK,WAAS,YAAaxM,KAAK8kD,gBAAgBjuC,YAAY,KAI/D6mC,EAAYx9C,UAAU+jD,gBAAkB,SAAUrwC,GACV,EAAhC5T,KAAK02C,eAAeuM,WACpBjjD,KAAK4lD,sBAAsBhyC,CAAK,EAEpC,IAAI6oB,EAAWjwB,WAAS,WAAYoH,CAAK,EACrCiyC,EAAar5C,WAAS,aAAciwB,CAAQ,EAC7B,KAAfopB,GACAjrC,WAAS,aAAcirC,EAAYjyC,CAAK,EAG5C5T,KAAKuW,QAAQ,UADF,CAAEjH,OAAQ,SAAUgE,MAAOM,EACV,EACa,MAArCpH,WAAS,aAAciwB,CAAQ,IAC/Bz8B,KAAKuzB,WAAW9lB,KAAKjB,WAAS,OAAQoH,CAAK,CAAC,EACvC5T,KAAKwzB,eACNrG,GAAgBntB,KAAM,aAAa,GAG6B,YAApE,OAAOwM,WAAS,YAAaxM,KAAK8kD,gBAAgBjuC,YAAY,GAC9DrK,WAAS,YAAaxM,KAAK8kD,gBAAgBjuC,YAAY,KAG/D6mC,EAAYx9C,UAAU4lD,aAAe,WACjC7pC,GAAYjc,KAAMA,KAAK8M,IAAI,GAE/B4wC,EAAYx9C,UAAUw/C,kBAAoB,WACtC1/C,KAAKsjC,GAAGlZ,GAAsBpqB,KAAKs4B,YAAat4B,IAAI,EACpDA,KAAKsjC,GAAG7X,GAAqBzrB,KAAK+7B,YAAa/7B,IAAI,EACnDA,KAAKsjC,GAAG9mB,GAAmBxc,KAAK8lD,aAAc9lD,IAAI,EAClDA,KAAKsjC,GAAGN,EAAoBhjC,KAAKijC,cAAejjC,IAAI,EACpDA,KAAKsjC,GAAGlP,GAAmBp0B,KAAKilD,oBAAqBjlD,IAAI,EACzDokC,eAAa3zB,IAAIzQ,KAAKqN,QAAS,cAAerN,KAAKqiD,cAAeriD,IAAI,GAE1E09C,EAAYx9C,UAAU6lD,qBAAuB,WACrC/lD,KAAK2hC,cAGT3hC,KAAK4hC,IAAIxX,GAAsBpqB,KAAKs4B,WAAW,EAC/Ct4B,KAAK4hC,IAAInW,GAAqBzrB,KAAK+7B,WAAW,EAC9C/7B,KAAK4hC,IAAIplB,GAAmBxc,KAAK8lD,YAAY,EAC7C9lD,KAAK4hC,IAAIoB,EAAoBhjC,KAAKijC,aAAa,EAC/CjjC,KAAK4hC,IAAIxN,GAAmBp0B,KAAKilD,mBAAmB,EACpD7gB,eAAatzB,OAAO9Q,KAAKqN,QAAS,cAAerN,KAAKqiD,aAAa,IAEvE3E,EAAYx9C,UAAU+iC,cAAgB,WAC9Br2B,oBAAM5M,KAAK2P,YAAY,IACvB3P,KAAKsS,SAAW,CAAC9F,WAASxM,KAAKiN,OAAOjN,KAAKiN,OAAOtM,OAAS,GAAIX,KAAK4O,QAAQ,KAGpF8uC,EAAYx9C,UAAU0iC,cAAgB,WAClC5iC,KAAK2/C,eACL3/C,KAAKmP,OAAOwzB,GAAkB,EAAE,GAEpC+a,EAAYx9C,UAAU8jC,iBAAmB,SAAUzV,GAE/C,OAAQA,EAAEjf,QACN,IAAK,OACDif,EAAEuH,iBACF91B,KAAKsS,SAAW,CAACmB,EAAczT,IAAI,GAC9B8jB,GAAiB9jB,KAAKsS,SAAS,EAAE,EAIlCiL,EAAavd,KAAM,WAAW,EAH9BgV,EAAmBhV,KAAMA,KAAKsS,SAAS,GAAI4R,EAA6B,EAK5E,MACJ,IAAK,KACDqK,EAAEuH,iBACFjhB,GAAQ7U,IAAI,EACZ,MAEJ,IAAK,aACDuuB,EAAEuH,iBACF91B,KAAKq/C,SAAW,UAChBr/C,KAAK6M,cAAc,CAAEuH,KAAM,WAAa,CAAA,CAAI,EAC5CkkB,cAAYt4B,KAAKqN,OAAO,EACxB8G,GAAanU,KAAM,SAAS,EAC5B,MAEJ,IAAK,aACDuuB,EAAEuH,iBACF91B,KAAKq/C,SAAW,aAChBr/C,KAAK6M,cAAc,CAAEuH,KAAM,cAAgB,CAAA,CAAI,EAC/CkkB,cAAYt4B,KAAKqN,OAAO,EACxB8G,GAAanU,KAAM,YAAY,EAC/B,MACJ,IAAK,QACDuuB,EAAEuH,iBACmD,CAAC,IAAlD91B,KAAKk/C,gBAAgBlnC,MAAMtC,QAAQ,QAAQ,GAC/BmD,SAAO,IAAM7Y,KAAKqN,QAAQZ,GAAK4X,GAAerkB,KAAKqN,OAAO,EAC5DiX,UAK1Bo5B,EAAYx9C,UAAU8lD,sBAAwB,SAAUC,GAChDr5C,oBAAM5M,KAAKoU,IAAI,IAGf6xC,IACAjmD,KAAKkmD,SAAyB,eAAdlmD,KAAKoU,KAAwBpU,KAAKiU,qBAAqB5G,QAAUrN,KAAKqN,QAAQgM,cAAc,gBAAgB,GAE5H4sC,EACIjmD,KAAK2jC,sBACL3jC,KAAKsjC,GAAG9wB,EAAqBxS,KAAK8+B,eAAgB9+B,IAAI,EACtDA,KAAKsjC,GAAGrX,EAAyBjsB,KAAK8+B,eAAgB9+B,IAAI,IAI9DA,KAAK4hC,IAAIpvB,EAAqBxS,KAAK8+B,cAAc,EACjD9+B,KAAK4hC,IAAI3V,EAAyBjsB,KAAK8+B,cAAc,GAErD9+B,KAAKkmD,WACDD,GAAUjmD,KAAK2jC,oBACfS,eAAa3zB,IAAIzQ,KAAKkmD,SAAU,YAAalmD,KAAKmmD,YAAanmD,IAAI,EAGnEokC,eAAatzB,OAAO9Q,KAAKkmD,SAAU,YAAalmD,KAAKmmD,WAAW,KAI5EzI,EAAYx9C,UAAUy7B,WAAa,WAC3B37B,KAAKomD,sBACLpmD,KAAKgmD,sBAAsB,CAAA,CAAI,EAEnC5hB,eAAa3zB,IAAIgQ,OAAQ,SAAUzgB,KAAK4iC,cAAe5iC,IAAI,EACvDA,KAAK+1C,oBAAoB3pB,SACzBpsB,KAAKqN,QAAQquB,iBAAiB,SAAU17B,KAAKqmD,gBAAiB,CAAA,CAAI,EAEtErmD,KAAK6jC,eAAiB,IAAIC,iBAAe9jC,KAAKqN,QAAS,CACnD02B,UAAW/jC,KAAKgkC,iBAAiBxT,KAAKxwB,IAAI,EAC1CikC,WAAYjkC,KAAKikC,WACjB3nB,UAAW,UACd,GAELohC,EAAYx9C,UAAUw4B,aAAe,WACjC14B,KAAKgmD,sBAAsB,CAAA,CAAK,EAChC5hB,eAAatzB,OAAO2P,OAAQ,SAAUzgB,KAAK4iC,aAAa,EACpD5iC,KAAK+1C,oBAAoB3pB,SACzBpsB,KAAKqN,QAAQsrB,oBAAoB,SAAU34B,KAAKqmD,gBAAiB,CAAA,CAAI,EAEzErmD,KAAK6jC,eAAet6B,WAExBm0C,EAAYx9C,UAAUimD,YAAc,SAAU/kC,GAC1C,GAAIphB,KAAKkmD,SAAU,CACf,GAAIlmD,KAAKkhB,iBAEL,GADoBlQ,UAAQoQ,EAAM9gB,OAAQN,KAAKkmD,SAAS93C,UAAUC,SAAS,eAAe,EAAI,eAAiB,YAAY,EAEvH,OAGR+S,EAAM0U,iBACN91B,KAAKsmD,MAAQllC,EAAMmlC,MACnBvmD,KAAKwmD,MAAQplC,EAAMqlC,MACdzmD,KAAK0mD,oBACN1mD,KAAK0mD,kBAAoBltC,gBAAc,MAAO,CAC1C/M,GAAIzM,KAAKqN,QAAQZ,GAAK,QACtBgN,UAAW,8BACXktC,OAAQ,SAAW3mD,KAAKsmD,MAAQ,WAAatmD,KAAKwmD,MAAQ,MAC7D,EACDhnC,SAASyP,KAAK23B,OAAO5mD,KAAK0mD,iBAAiB,GAE/CtiB,eAAa3zB,IAAI+O,SAAU,UAAWxf,KAAK6mD,WAAY7mD,IAAI,EAC3DokC,eAAa3zB,IAAIzQ,KAAKkmD,SAAU,YAAalmD,KAAK8mD,OAAQ9mD,IAAI,EAC9DokC,eAAa3zB,IAAIzQ,KAAK0mD,kBAAmB,YAAa1mD,KAAK8mD,OAAQ9mD,IAAI,IAG/E09C,EAAYx9C,UAAU4mD,OAAS,SAAU1lC,GAErC,IACQ2lC,EAFR3lC,EAAM4lC,kBACFhnD,KAAK0mD,mBACDK,EAAQ3lC,EAAMmlC,MAAQvmD,KAAKsmD,MAC3BW,EAAQ7lC,EAAMqlC,MAAQzmD,KAAKwmD,MAC/BU,oBAAkBlnD,KAAK0mD,kBAAmB,CACtCS,KAAQJ,EAAQ,EAAI/mD,KAAKsmD,MAAQS,EAAQ,KAAO/mD,KAAKsmD,MAAQ,KAAMptC,IAAO+tC,EAAQ,EAAIjnD,KAAKwmD,MAAQS,EAAQ,KAAOjnD,KAAKwmD,MAAQ,KAC/HvvB,OAAUmwB,KAAKC,IAAIJ,CAAK,EAAI,KAAM9kD,MAASilD,KAAKC,IAAIN,CAAK,EAAI,KAChE,EACD/mD,KAAKq7B,eAGL+I,eAAatzB,OAAO9Q,KAAKkmD,SAAU,YAAalmD,KAAK8mD,MAAM,GAGnEpJ,EAAYx9C,UAAU2mD,WAAa,WAC3B7mD,KAAKkmD,WACL9hB,eAAatzB,OAAO0O,SAAU,UAAWxf,KAAK6mD,UAAU,EACxDziB,eAAatzB,OAAO9Q,KAAKkmD,SAAU,YAAalmD,KAAK8mD,MAAM,GAE3D9mD,KAAK0mD,oBACLtiB,eAAatzB,OAAO9Q,KAAK0mD,kBAAmB,YAAa1mD,KAAK8mD,MAAM,EAC1B,EAAtC9mD,KAAK0mD,kBAAkB1kC,cAAyD,EAArChiB,KAAK0mD,kBAAkBvY,aAClEnuC,KAAK6M,cAAc,CAAE0D,cAAevQ,KAAKsnD,kBAAmB,EAEhEtnD,KAAKsnD,kBAAoB,GACzBzmC,SAAO7gB,KAAK0mD,iBAAiB,EAC7B1mD,KAAK0mD,kBAAoB,OAGjChJ,EAAYx9C,UAAUm7B,YAAc,WAChC,IAAIksB,EAAWvnD,KAAK0mD,kBAAkB3kC,wBAChB,EAAlBwlC,EAAStwB,QAA+B,EAAjBswB,EAASplD,QAChCnC,KAAKsnD,kBAAoB,GACzBjhB,cAAY9Q,YAAU,YAAav1B,KAAKkmD,QAAQ,EAAG,CAAC,WAAY,UAAU,EAC1E7f,cAAY9Q,YAAU,WAAYv1B,KAAKkmD,QAAQ,EAAG,CAAC,UAAU,GAGjE,IAPA,IAOS1iB,EAAK,EAAGgkB,EADFjyB,YAAUv1B,KAAKkmD,SAAS93C,UAAUC,SAAS,eAAe,EAAI,eAAiB,SAAUrO,KAAKkmD,QAAQ,EAC7E1iB,EAAKgkB,EAAW7mD,OAAQ6iC,CAAE,GAAI,CAClE,IAAIjyB,EAAOi2C,EAAWhkB,GAClBikB,EAAWl2C,EAAKwQ,wBAChB,EAAEwlC,EAASG,MAAQD,EAASN,MAAQI,EAASJ,KAAOM,EAASC,OAC1DH,EAASI,OAASF,EAASvuC,KAAOquC,EAASruC,IAAMuuC,EAASE,SACvC,EAAlBJ,EAAStwB,QAA+B,EAAjBswB,EAASplD,QAChCnC,KAAKkmD,SAAS93C,UAAUC,SAAS,eAAe,GAChDkD,EAAKnD,UAAUqC,IAAI,UAAU,EAC7BzQ,KAAKsnD,kBAAkB75C,KAAK8D,EAAK7E,aAAa,OAAO,CAAC,IAGtD24B,WAAS9P,YAAU,aAAchkB,CAAI,EAAG,CAAC,WAAW,EACpDvR,KAAKsnD,kBAAkB75C,KAAK8D,EAAK8H,cAAc,cAAc,EAAEkd,WAAW,GAE1Ev2B,KAAK0+B,qBACDntB,EAAK8H,cAAc,UAAU,GAC7B9H,EAAK8H,cAAc,UAAU,EAAEjL,UAAUqC,IAAI,SAAS,IAM1EitC,EAAYx9C,UAAU4+B,eAAiB,WAC/B9+B,KAAKomD,uBACLpmD,KAAK04B,eACL14B,KAAK27B,eAGb+hB,EAAYx9C,UAAU0nD,QAAU,WAC5B5nD,KAAK6M,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAC9CvQ,KAAK89C,aACL99C,KAAKmP,OAAO0N,GAAsB,CAAEC,aAAc9c,KAAKiN,OAAO,GAAI,EAClEsF,EAAKvS,KAAOA,KAAK8M,OAAS9M,KAAKoc,aAAgBI,GAAoBD,EAAoBvc,KAAK8M,IAAI,GAWpG4wC,EAAYx9C,UAAU8hC,kBAAoB,SAAU0B,EAASmkB,GAIzD,IAHA,IAAI5rB,EAAQj8B,KAER8nD,EAAkB,CAAA,EACbtkB,EAAK,EAAGC,EAAKlkC,OAAOojB,KAAK+gB,CAAO,EAAGF,EAAKC,EAAG9iC,OAAQ6iC,CAAE,GAE1D,OADWC,EAAGD,IAEV,IAAK,eACDxjC,KAAK+nD,oBAAoBrkB,CAAO,EAChC,MACJ,IAAK,mBACD1jC,KAAKkhB,iBAAmBwiB,EAAQxiB,iBAChClhB,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,SAAUgoB,QAASA,EAASmkB,QAASA,EAAS,EACzF,MACJ,IAAK,qBACD7nD,KAAK0+B,mBAAqBgF,EAAQhF,mBAClC1+B,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,SAAUgoB,QAASA,EAASmkB,QAASA,EAAS,EACzF,MACJ,IAAK,uBACD7nD,KAAKs6B,qBAAuBoJ,EAAQpJ,qBACpCwtB,EAAkB,CAAA,EAClB,MACJ,IAAK,sBACG9nD,KAAK2jC,oBACL0B,WAAS,CAACrlC,KAAKqN,SAAU4yC,EAAgB,GAGT,EAA5BjgD,KAAKuQ,cAAc5P,QACnBX,KAAK6M,cAAc,CAAE0D,cAAevQ,KAAKuQ,cAAcmB,MAAM1R,KAAKuQ,cAAc5P,OAAS,CAAC,GAAK,CAAA,CAAI,EAEvG0lC,cAAY,CAACrmC,KAAKqN,SAAU4yC,EAAgB,GAEhDjgD,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,SAAUgoB,QAASA,EAASmkB,QAASA,EAAS,EACzF,MACJ,IAAK,WACD7nD,KAAKkgD,YAAY2H,EAAQxsC,SAAUqoB,EAAQroB,QAAQ,EACnDrb,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,SAAUgoB,QAASA,EAASmkB,QAASA,EAAS,EACzF,MACJ,IAAK,sBACD7nD,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,cAAegoB,QAASA,EAASmkB,QAASA,EAAS,EAC9F,MACJ,IAAK,uBACD7nD,KAAKgmD,sBAAsB,CAAA,CAAK,EAC5BtiB,EAAQ0iB,sBACRpmD,KAAKgmD,sBAAsB,CAAA,CAAI,EAEnC,MACJ,IAAK,YACDhmD,KAAKwyB,UAAYkR,EAAQlR,UACzBs1B,EAAkB,CAAA,EAClB,MACJ,IAAK,gBACD9nD,KAAK2rB,cAAgB+X,EAAQ/X,cAC7Bm8B,EAAkB,CAAA,EAClB,MACJ,IAAK,SACD7wB,EAAUrqB,oBAAM82B,EAAQzM,MAAM,EAAiCyM,EAAQzM,OAArC+mB,aAAWta,EAAQzM,MAAM,EAC3D8mB,oBAAQ/9C,KAAKqN,QAAS,CAAE4pB,OAAUA,EAAQ,EAC1Cj3B,KAAK2/C,eACL3/C,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,SAAUgoB,QAASA,EAASmkB,QAASA,EAAS,EACzF,MACJ,IAAK,SACIj7C,oBAAM82B,EAAQlR,SAAS,GACxBxyB,KAAK6M,cAAc,CAAE2lB,UAAWkR,EAAQlR,WAAa,CAAA,CAAI,EAE7DxyB,KAAKgoD,qBAAqBtkB,CAAO,EACjC,MACJ,IAAK,yBACD1jC,KAAKgiD,iBACLhiD,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,iBAAkBgoB,QAASA,EAASmkB,QAASA,EAAS,EACjG,MACJ,IAAK,OACD7nD,KAAKoe,QAAUypC,EAAQ/6C,KACvB9M,KAAK4nD,UACL,MACJ,IAAK,iBACIzvC,oBAAkBurB,EAAQhxB,eAAem6B,mBAAmB,GAC7D7sC,KAAK6M,cAAc,CAAE6F,eAAgB,CAAEm6B,oBAAqBnJ,EAAQhxB,eAAem6B,sBAAyB,CAAA,CAAI,EAEhH10B,oBAAkBurB,EAAQhxB,eAAeQ,UAAU,GACnDlT,KAAK6M,cAAc,CAAE6F,eAAgB,CAAEQ,WAAYwwB,EAAQhxB,eAAeQ,aAAgB,CAAA,CAAI,EAE9FiF,oBAAkBurB,EAAQhxB,eAAeC,UAAU,GACnD3S,KAAK6M,cAAc,CAAE6F,eAAgB,CAAEC,WAAY+wB,EAAQhxB,eAAeC,aAAgB,CAAA,CAAI,EAElG3S,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,gBAAiBgoB,QAASA,EAASmkB,QAASA,EAAS,EAChG,MACJ,IAAK,gBACiB,YAAd7nD,KAAKoU,KACLpU,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,cAAegoB,QAASA,EAASmkB,QAASA,EAAS,EAE3E,eAAd7nD,KAAKoU,MACVpU,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,iBAAkBgoB,QAASA,EAASmkB,QAASA,EAAS,EAErG,MACJ,IAAK,oBAGL,IAAK,kBACD7nD,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,SAAUgoB,QAASA,EAASmkB,QAASA,EAAS,EACzF,MACJ,IAAK,gBACD7nD,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,iBAAkBgoB,QAASA,EAASmkB,QAASA,EAAS,EACjG,MACJ,IAAK,kBACL,IAAK,eACD7nD,KAAK2/C,eACL3/C,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,UAAWgoB,QAASA,EAASmkB,QAASA,EAAS,EAC1F,MACJ,IAAK,iBACD7nD,KAAKykD,iBACL,MACJ,IAAK,OACoB,YAAjB/gB,EAAQtvB,KACRpU,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,cAAegoB,QAASA,EAASmkB,QAASA,EAAS,EAExE,eAAjBnkB,EAAQtvB,MACbpU,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,iBAAkBgoB,QAASA,EAASmkB,QAASA,EAAS,EAErG,MACJ,IAAK,QACD9J,oBAAQ/9C,KAAKqN,QAAS,CAAElL,MAAUyK,oBAAM82B,EAAQvhC,KAAK,EAAgCuhC,EAAQvhC,MAApC67C,aAAWta,EAAQvhC,KAAK,EAAmB,EACpGnC,KAAKmP,OAAO4yB,EAAqB,CAAErmB,OAAQ,SAAUgoB,QAASA,EAASmkB,QAASA,EAAS,EACzF,MACJ,IAAK,YACDhzC,GAAQ7U,IAAI,EACZA,KAAKmP,OAAOwM,GAAqB,EAAE,EACnC,MACJ,IAAK,SACD,GAAkB,YAAd3b,KAAKoU,KAAoB,CACzB,IAAI4H,EAAUhc,KAAK+b,oBAAoBC,QAGvC,GAAI,EAFmB,CAAC7D,oBAAkB6D,CAAO,GACgC,CAAC,IAA9EA,EAAQ0K,UAAU,SAAUuhC,GAAO,OAAOA,EAAItmD,QAAUs6B,EAAM7jB,OAAS,GAEvE,OAEJvD,GAAQ7U,IAAI,EACZA,KAAKmP,OAAOwM,GAAqB,EAAE,EACnC3b,KAAKmP,OAAOsM,GAAmB,EAAE,OAGjC5G,GAAQ7U,IAAI,EACZA,KAAKmP,OAAOwM,GAAqB,EAAE,EAEvC,MACJ,IAAK,cACG3b,KAAKwiD,kBACLxiD,KAAKwiD,gBAAgBliD,OAASojC,EAAQrR,aAEtCryB,KAAKykB,YACLzkB,KAAKykB,UAAUnkB,OAASojC,EAAQrR,aAEhCryB,KAAKkzB,eACLlzB,KAAKkzB,aAAa5yB,OAASojC,EAAQrR,aAEnCryB,KAAKg3B,YACLh3B,KAAKg3B,UAAU12B,OAASojC,EAAQrR,aAEpC,MACJ,IAAK,iBACDryB,KAAKqR,eAAiBqyB,EAAQryB,eAC9By2C,EAAkB,CAAA,EAClB,MACJ,IAAK,yBACD9nD,KAAKkoD,uBAAyBxkB,EAAQwkB,uBACtCJ,EAAkB,CAAA,EAClB,MACJ,IAAK,qBACD9nD,KAAK85B,mBAAqB4J,EAAQ5J,mBAClCguB,EAAkB,CAAA,EAI1BA,GACA9nD,KAAK6U,WAIb6oC,EAAYx9C,UAAU6nD,oBAAsB,SAAUrkB,GAC7CvrB,oBAAkBurB,EAAQ7sB,aAAaC,GAAG,GAC3C9W,KAAK6M,cAAc,CAAEgK,aAAc,CAAEC,IAAK4sB,EAAQ7sB,aAAaC,MAAS,CAAA,CAAI,EAE3EqB,oBAAkBurB,EAAQ7sB,aAAa+rC,SAAS,GACjD5iD,KAAK6M,cAAc,CAAEgK,aAAc,CAAE+rC,UAAWlf,EAAQ7sB,aAAa+rC,YAAe,CAAA,CAAI,EAEvFzqC,oBAAkBurB,EAAQ7sB,aAAa0W,WAAW,GACnDvtB,KAAK6M,cAAc,CAAEgK,aAAc,CAAE0W,YAAamW,EAAQ7sB,aAAa0W,cAAiB,CAAA,CAAI,EAE3FpV,oBAAkBurB,EAAQ7sB,aAAaZ,WAAW,GACnDjW,KAAK6M,cAAc,CAAEgK,aAAc,CAAEZ,YAAaytB,EAAQ7sB,aAAaZ,cAAiB,CAAA,CAAI,EAEhGjW,KAAK6M,cAAc,CAAEC,KAAM,KAAO,CAAA,CAAI,EACtC9M,KAAK6M,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAC9C1Q,GAAOK,UAAU2U,QAAQmS,KAAKhnB,IAAI,GAGtC09C,EAAYx9C,UAAU8nD,qBAAuB,SAAUtkB,GACnD1jC,KAAKka,UAAUc,OAAS0oB,EAAQ1oB,OAChCnb,GAAOK,UAAU2U,QAAQmS,KAAKhnB,IAAI,GAOtC09C,EAAYx9C,UAAUqJ,QAAU,WACxBvJ,KAAK2hC,cAGJ3hC,KAAKmoD,YACNnoD,KAAKmP,OAAO+hC,GAAgB,EAAE,EAElClxC,KAAKka,UAAU3Q,UACfvJ,KAAKka,UAAY,KACjBla,KAAKwiD,gBAAgBj5C,UACrBvJ,KAAKwiD,gBAAkB,KACvBxiD,KAAK4/C,YAAYr2C,UACjBvJ,KAAK4/C,YAAc,KACf5/C,KAAKykB,YACLzkB,KAAKykB,UAAUlb,UACfvJ,KAAKykB,UAAY,MAEjBzkB,KAAKg3B,YACLh3B,KAAKg3B,UAAUztB,UACfvJ,KAAKg3B,UAAY,MAEjBh3B,KAAKkzB,eACLlzB,KAAKkzB,aAAa3pB,UAClBvJ,KAAKkzB,aAAe,MAExBlzB,KAAKqN,QAAQ+wB,gBAAgB,OAAO,EACpCp+B,KAAKqN,QAAQ+wB,gBAAgB,UAAU,EACvCp+B,KAAK+lD,uBACL/lD,KAAK04B,eACL14B,KAAKkgD,YAAYlgD,KAAKqb,SAAU,IAAI,EACpCgrB,cAAY,CAACrmC,KAAKqN,SAAU,CAAC+6C,GAASpI,GAAYC,GAAiB,EACnEjgD,KAAKqN,QAAQ2M,UAAY,GACzBha,KAAKwtC,wBAA0B,KAC/BxtC,KAAKwP,eAAiB,KACtBxP,KAAKogB,mBAAqB,KAC1BpgB,KAAKo4B,YAAc,KACnBv4B,GAAOK,UAAUqJ,QAAQyd,KAAKhnB,IAAI,EAClCA,KAAKu6B,qBAAuB,KAC5Bv6B,KAAKiO,qBAAuB,KAC5BjO,KAAKqoD,cAAgB,KACrBroD,KAAKsoD,kBAAoB,KACzBtoD,KAAKiU,qBAAuB,KAC5BjU,KAAK8T,kBAAoB,KACzB9T,KAAKkQ,oBAAsB,KAC3BlQ,KAAKkmD,SAAW,KAChBlmD,KAAK0mD,kBAAoB,KACzB1mD,KAAKsnD,kBAAoB,OAS7B5J,EAAYx9C,UAAUglB,aAAe,SAAUpN,GAC3C9X,KAAKmP,OAAO8yB,GAAmB,CAAE3yB,OAAQ,eAAgB,EACzD,IAAI2U,EAAU,CAACxQ,EAAczT,IAAI,GACjCA,KAAKsS,SAAW2R,EACZnM,EACI,eAAeue,KAAKve,CAAI,EASxByF,EAAavd,KAAM,QARN,CACT4T,MAAO,KACPN,MAAO,CACHkK,KAAM,MACNC,QAASxD,EAAcja,KAAM,oBAAoB,EAAEiX,QAAQ,MAAO,IAAMa,EAAO,GAAG,EAClF4F,WAAY,MAGc,EAG7BoG,GAAiBG,EAAQ,EAAE,EAI5BiB,GAAallB,KAAM8X,CAAI,EAHvB9C,EAAmBhV,KAAMikB,EAAQ,GAAIC,EAA6B,EAQ1EF,GAAgBhkB,IAAI,GAa5B09C,EAAYx9C,UAAUupC,YAAc,SAAUj8B,GAC1CxN,KAAKmP,OAAO8yB,GAAmB,CAAE3yB,OAAQ,cAAe9B,IAAKA,EAAK,GAQtEkwC,EAAYx9C,UAAUqoD,oBAAsB,SAAUvwC,GAC9C,CAACpL,oBAAMoL,CAAK,GAAKhY,KAAKqoD,eACtBroD,KAAKqoD,cAAcnT,YAAYl9B,EAAO,CAAA,CAAK,GAanD0lC,EAAYx9C,UAAUwpC,cAAgB,SAAUl8B,GAC5CxN,KAAKmP,OAAO8yB,GAAmB,CAAE3yB,OAAQ,gBAAiB9B,IAAKA,EAAK,GAQxEkwC,EAAYx9C,UAAUsoD,mBAAqB,SAAUxwC,GAC7C,CAACpL,oBAAMoL,CAAK,GAAKhY,KAAKqoD,eACtBroD,KAAKqoD,cAAcnT,YAAYl9B,EAAO,CAAA,CAAI,GASlD0lC,EAAYx9C,UAAUuoD,gBAAkB,SAAUzwC,GACzCpL,oBAAMoL,CAAK,GAAMpL,oBAAM5M,KAAKsoD,iBAAiB,GAAM17C,oBAAM5M,KAAKsoD,kBAAkB7W,WAAW,GAC5FzxC,KAAKsoD,kBAAkBpT,YAAYl9B,EAAO,CAAA,EAAM,CAAA,CAAI,GAS5D0lC,EAAYx9C,UAAUwoD,iBAAmB,SAAU1wC,GAC1CpL,oBAAMoL,CAAK,GAAMpL,oBAAM5M,KAAKsoD,iBAAiB,GAAM17C,oBAAM5M,KAAKsoD,kBAAkB7W,WAAW,GAC5FzxC,KAAKsoD,kBAAkB/S,YAAYv9B,CAAK,GAShD0lC,EAAYx9C,UAAUyoD,iBAAmB,SAAUp3C,GAC/C,OAAIvR,KAAKsoD,kBACEtoD,KAAKsoD,kBAAkBjT,aAAa9jC,CAAI,EAGxC,CAAC,GAShBmsC,EAAYx9C,UAAU0oD,oBAAsB,SAAUr3C,GAClD,OAAIvR,KAAKqoD,cACEroD,KAAKqoD,cAAchT,aAAa9jC,CAAI,EAGpC,CAAC,GAWhBmsC,EAAYx9C,UAAU2oD,YAAc,SAAUvjC,GAC1CtlB,KAAKslB,WAAaA,GAA0B,KAC5CtlB,KAAK6M,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAC9CvQ,KAAKmP,OAAO8c,EAAyB,EAAE,EACvCjsB,KAAKqQ,WAAa,CAAA,EACuC,KAArDrQ,KAAKkQ,oBAAoBC,UAAU9C,QAAQ+C,QAC3CpQ,KAAKkQ,oBAAoBC,UAAU9C,QAAQ+C,MAAQ,IAEvDkB,GAAOtR,KAAMqjC,EAAgB,GAOjCqa,EAAYx9C,UAAU4oD,iBAAmB,WAErC,OADA9oD,KAAKmP,OAAOi0B,GAA4B,EAAE,EACnCpjC,KAAKsS,UAWhBorC,EAAYx9C,UAAUypC,SAAW,SAAUl9B,GACvCzM,KAAKmP,OAAO8yB,GAAmB,CAAE3yB,OAAQ,WAAY7C,GAAIA,EAAI,GAOjEixC,EAAYx9C,UAAU6oD,aAAe,WACjCl0C,GAAQ7U,IAAI,GAOhB09C,EAAYx9C,UAAU8oD,cAAgB,WAClChpD,KAAK2/C,eACL3/C,KAAKmP,OAAO+zB,GAAsB,EAAE,GAOxCwa,EAAYx9C,UAAUq1B,UAAY,WAC9Bv1B,KAAKmP,OAAO8yB,GAAmB,CAAE3yB,OAAQ,YAAa,GAO1DouC,EAAYx9C,UAAU0nC,iBAAmB,WACrC,IAOQ0I,EAPoB,EAAxBtwC,KAAKmN,UAAUxM,QAAmE,KAArDX,KAAKkQ,oBAAoBC,UAAU9C,QAAQ+C,OAAgB,CAACpQ,KAAKqQ,aAC9FrQ,KAAKiN,OAAOif,MACZlsB,KAAKmN,UAAU+e,MACXzd,EAAUzO,KAAKmN,UAAUuE,MAAM,CAAC,EAAEkE,KAAK,GAAG,EAE9C5V,KAAK6M,cAAc,CAAEC,KAAM2B,EADL,KAAZA,EAAiB,IAAM,IAAMA,EAAU,KACX,CAAA,CAAI,EAC1C8D,EAAKvS,KAAM+sB,EAAoB/sB,KAAK8M,IAAI,EACpCwjC,EAAatwC,KAAKiN,OAAOjN,KAAKiN,OAAOtM,OAAS,GAClDX,KAAKmP,OAAOohC,GAA4B,CAAE70B,OAAQ,WAAYoB,aAAcwzB,EAAY,IAQhGoN,EAAYx9C,UAAUkhC,eAAiB,WACnCphC,KAAKmP,OAAO8yB,GAAmB,CAAE3yB,OAAQ,iBAAkB,GAe/DouC,EAAYx9C,UAAU0pC,WAAa,SAAUn9B,EAAIqL,GAC7C9X,KAAKmP,OAAO8yB,GAAmB,CAAE3yB,OAAQ,aAAc7C,GAAIA,EAAIkZ,QAAS7N,EAAM,GAOlF4lC,EAAYx9C,UAAU+oD,YAAc,WAChC,IAAIhlC,EAAU,CAACxQ,EAAczT,IAAI,GACjCA,KAAKsS,SAAW2R,EAChBE,GAAWnkB,IAAI,GAOnB09C,EAAYx9C,UAAUgpD,YAAc,WAChC1kC,GAAWxkB,IAAI,GAQnB09C,EAAYx9C,UAAUu/C,OAAS,SAAU0J,GACjCA,EACAnpD,KAAKkgD,YAAY,KAAMkI,EAAO,EAG9BpoD,KAAKkgD,YAAYkI,GAAS,IAAI,EAE9BpoD,KAAKka,YACLla,KAAKwiD,gBAAgBhwB,UAAY22B,EACjCnpD,KAAKka,UAAUsY,UAAY22B,IAInC/oD,EAAW,CACPgpD,UAAQ,GAAIloD,CAAY,GACzBw8C,EAAYx9C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,EAAE,GACZs8C,EAAYx9C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfs8C,EAAYx9C,UAAW,mBAAoB,KAAA,CAAM,EACpDE,EAAW,CACPgB,cACDs8C,EAAYx9C,UAAW,yBAA0B,KAAA,CAAM,EAC1DE,EAAW,CACPgB,cACDs8C,EAAYx9C,UAAW,qBAAsB,KAAA,CAAM,EACtDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACds8C,EAAYx9C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACds8C,EAAYx9C,UAAW,qBAAsB,KAAA,CAAM,EACtDE,EAAW,CACPgpD,UAAQ,GAAIzmD,EAAmB,GAChC+6C,EAAYx9C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,EAAE,GACZs8C,EAAYx9C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPgpD,UAAQ,GAAI7mD,EAAmB,GAChCm7C,EAAYx9C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACds8C,EAAYx9C,UAAW,sBAAuB,KAAA,CAAM,EACvDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfs8C,EAAYx9C,UAAW,oBAAqB,KAAA,CAAM,EACrDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfs8C,EAAYx9C,UAAW,uBAAwB,KAAA,CAAM,EACxDE,EAAW,CACPgB,WAAS,OAAO,GACjBs8C,EAAYx9C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPgB,WAAS,YAAY,GACtBs8C,EAAYx9C,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgpD,UAAQ,GAAIxmD,EAAsB,GACnC86C,EAAYx9C,UAAW,yBAA0B,KAAA,CAAM,EAC1DE,EAAW,CACPgB,WAAS,GAAG,GACbs8C,EAAYx9C,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPgB,WAAS,IAAI,GACds8C,EAAYx9C,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPgpD,UAAQ,GAAI3nD,CAAc,GAC3Bi8C,EAAYx9C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,cACDs8C,EAAYx9C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACds8C,EAAYx9C,UAAW,oBAAqB,KAAA,CAAM,EACrDE,EAAW,CACPgB,WAAS,IAAI,GACds8C,EAAYx9C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfs8C,EAAYx9C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACPgB,WAAS,CAAA,CAAI,GACds8C,EAAYx9C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPgB,WAAS,WAAW,GACrBs8C,EAAYx9C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPgB,WAAS,MAAM,GAChBs8C,EAAYx9C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPgB,WAAS,IAAI,GACds8C,EAAYx9C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPgB,WAAS,CAAA,CAAK,GACfs8C,EAAYx9C,UAAW,uBAAwB,KAAA,CAAM,EACxDE,EAAW,CACPgpD,UAAQ,GAAI7nD,CAAe,GAC5Bm8C,EAAYx9C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACPipD,aAAW,GAAI7nD,CAAW,GAC3Bk8C,EAAYx9C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPgpD,UAAQ,GAAIvmD,EAAc,GAC3B66C,EAAYx9C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPgB,WAAS,MAAM,GAChBs8C,EAAYx9C,UAAW,QAAS,KAAA,CAAM,EACzCE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,iBAAkB,KAAA,CAAM,EAClDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,mBAAoB,KAAA,CAAM,EACpDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,kBAAmB,KAAA,CAAM,EACnDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,qBAAsB,KAAA,CAAM,EACtDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,OAAQ,KAAA,CAAM,EACxCE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,SAAU,KAAA,CAAM,EAC1CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,cAAe,KAAA,CAAM,EAC/CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,WAAY,KAAA,CAAM,EAC5CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,aAAc,KAAA,CAAM,EAC9CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,YAAa,KAAA,CAAM,EAC7CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,UAAW,KAAA,CAAM,EAC3CE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,eAAgB,KAAA,CAAM,EAChDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,gBAAiB,KAAA,CAAM,EACjDE,EAAW,CACPkpD,WACD5L,EAAYx9C,UAAW,mBAAoB,KAAA,CAAM,EACtCy3C,GAAgBv3C,EAAW,CACrCmpD,yBACD7L,CAAW,GAxhDd,SAASA,EAAYruB,EAAShiB,GAC1B,IAAI4uB,EAAQp8B,GAAOmnB,KAAKhnB,KAAMqvB,EAAShiB,CAAO,GAAKrN,KAqDnD,OApDAi8B,EAAM3W,WAAa,KACnB2W,EAAMjtB,cAAgB,GACtBitB,EAAMtd,eAAiB,GACvBsd,EAAMld,iBAAmB,GACzBkd,EAAMutB,aAAe,GACrBvtB,EAAMwtB,SAAW,GACjBxtB,EAAM7T,kBAAoB,EAC1B6T,EAAMjqB,eAAiB,CAAA,EACvBiqB,EAAM5nB,oBAAsB,GAC5B4nB,EAAM9F,UAAY,KAClB8F,EAAM9X,WAAa,GACnB8X,EAAMytB,cAAgB,GACtBztB,EAAMnZ,OAAS,CAAA,EACfmZ,EAAMntB,MAAQ,CAAA,EACdmtB,EAAM1sB,YAAc,CAAA,EACpB0sB,EAAM/c,aAAe,CAAA,EACrB+c,EAAMjd,aAAe,CAAA,EACrBid,EAAMhf,WAAa,GACnBgf,EAAM0tB,aAAe,CAAA,EACrB1tB,EAAM5rB,WAAa,CAAA,EAEnB4rB,EAAMtoB,gBAAkB,CAAA,EACxBsoB,EAAM/sB,YAAc,CAAA,EACpB+sB,EAAM2tB,YAAc,CAAA,EACpB3tB,EAAMlH,UAAY,GAClBkH,EAAMyoB,SAAW,CAAA,EACjBzoB,EAAMzI,cAAgB,CAAA,EACtByI,EAAM9c,WAAa,CAAA,EACnB8c,EAAMqE,cAAgB,GACtBrE,EAAM1I,WAAa,GACnB0I,EAAMjI,YAAc,CAAA,EACpBiI,EAAMne,SAAW,GACjBme,EAAMje,UAAY,GAClBie,EAAMte,SAAW,GACjBse,EAAMtwB,SAAW,GACjBswB,EAAMjf,WAAa,CAAA,EACnBif,EAAMzb,gBAAkB,KACxByb,EAAMoB,mBAAqB,CAAE8pB,KAAM,GAAIjuC,IAAK,IAC5C+iB,EAAMhd,UAAY,CAAA,EAClBgd,EAAMlb,UAAY,EAClBkb,EAAMnd,eAAiB,GACvBmd,EAAMmpB,eAAiB,EACvBnpB,EAAMopB,cAAgB,EAEtBppB,EAAMuJ,MAAQ,CAAA,EACdvJ,EAAMqrB,kBAAoB,GAC1BrrB,EAAMoqB,gBAAkB,WACfz5C,oBAAMqvB,EAAMqsB,iBAAiB,GAAM17C,oBAAMqvB,EAAMqsB,kBAAkB7W,WAAW,GAC7ExV,EAAMqsB,kBAAkB7W,YAAY7hB,SAG5C+nB,GAAckS,OAAOld,GAAezU,GAAgBoZ,EAAW,EACxDrV,EC9EX6tB,EAAQ5pD,UAAUi4B,OAAS,WACvB,IAAI8D,EAAQj8B,KAERqW,GADJrW,KAAKgY,MAAQhY,KAAK+pD,gBAAgB/pD,KAAKgqD,SAAShqD,KAAKwO,OAAO0wC,gBAAgBlnC,MAAMwS,IAAI,SAAUjZ,GAAQ,OAAOA,EAAK0kC,OAAS,CAAC,CAAC,EAC/G,CAAEj+B,MAAOhY,KAAKgY,QAC9BhY,KAAKwO,OAAO+H,QAAQ,gBAAiBF,EAAW,SAAU4zC,GACtDhuB,EAAMjkB,MAAQiyC,EAAkBjyC,MAChCikB,EAAMiuB,WAAa,IAAIC,UAAY,CAC/BnyC,MAAOikB,EAAMjkB,MACb+S,QAASkR,EAAMmuB,qBAAqB55B,KAAKyL,CAAK,EAC9CouB,aAAc,QACdC,QAASruB,EAAMsuB,UAAU/5B,KAAKyL,CAAK,EACnCxJ,oBAAqBwJ,EAAMztB,OAAOikB,oBAClCD,UAAWyJ,EAAMztB,OAAOgkB,UAC3B,EACDyJ,EAAMiuB,WAAWx3B,iBAAmB,CAAA,EACpCuJ,EAAMiuB,WAAW7tC,KAAO4f,EAAMztB,OAAO6N,MAA2B4f,EAAMztB,OACtEytB,EAAMiuB,WAAWv3B,SAAS,IAAMsJ,EAAMztB,OAAOnB,QAAQZ,GAAKsnC,EAAc,EAC3E,GAEL+V,EAAQ5pD,UAAUm1C,aAAe,SAAU9jC,GAEvC,IADA,IAAI+jC,EAASt1C,KAAKwqD,MAAMj5C,CAAI,EACnBvQ,EAAI,EAAGA,EAAIhB,KAAKgY,MAAMrX,OAAQK,CAAC,GACpC,GAAIhB,KAAKgY,MAAMhX,GAAGyL,KAAO6oC,EACrB,OAAOt0C,EAGf,MAAO,CAAC,GAEZ8oD,EAAQ5pD,UAAU8pD,SAAW,SAAUhyC,GAC/ByyC,EAAYzyC,EAAMtG,QAOtB,OANI1R,KAAKwO,OAAOo2B,UAAY5kC,KAAKwO,OAAOm1B,qBACpC8mB,EAAUh9C,KAAK,WAAW,EAG1Bg9C,EADkC,EAAlCzqD,KAAKwO,OAAOk8C,aAAa/pD,OACbX,KAAKwO,OAAOk8C,aAAalgC,IAAI,SAAUjZ,GAAQ,OAAOA,EAAKuG,KAAO,EAE3E2yC,GAGXX,EAAQ5pD,UAAUqqD,UAAY,SAAUn4C,GACpC,IAIIu4C,EACA1mC,EASA5N,EAdA4lB,EAAQj8B,KACR4M,CAAAA,oBAAMwF,EAAKb,IAAI,GAAMa,EAAKb,KAAK9E,KAKtB,aAFTk+C,EAAOv4C,EAAKb,KAAK9E,GAAG2kB,QAAQpxB,KAAKwO,OAAOnB,QAAQZ,GAAK,QAAQ9L,MAAM,IAEpC,cAATgqD,GAAiC,WAATA,GAC9C1mC,EAAU,CAACxQ,EAAczT,KAAKwO,MAAM,GACpCxO,KAAKwO,OAAO8D,SAAW2R,IAGvBjkB,KAAKwO,OAAOW,OAAO0yB,GAAqB,EAAE,EAC1C5d,EAAUjkB,KAAKwO,OAAO8D,UAEtB+D,EAAY,CAAEkK,OAAQ,CAAA,EAAO9J,YAAawN,EAAS1S,KAAMa,EAAKb,MAClEvR,KAAKwO,OAAO+H,QAAQ,eAAgBF,EAAW,SAAUu0C,GACrD,IACItqD,EACJ,GAAI,CAACsqD,EAAiBrqC,OAClB,OAAQoqC,GACJ,IAAK,UACDrqD,EAAS0Q,UAAQoB,EAAK4yB,cAAc1kC,OAAQ,IAAMuqD,EAAW,IAC/CvqD,EAAO8N,UAAUC,SAAS,iBAAiB,IACrD+D,EAAKmO,OAAS,CAAA,GAElB,MACJ,IAAK,YACDyD,GAAgBiY,EAAMztB,MAAM,EAC5B,MACJ,IAAK,MACD8G,GAAS2mB,EAAMztB,MAAM,EACrB,MACJ,IAAK,OACD4G,GAAU6mB,EAAMztB,MAAM,EACtB,MACJ,IAAK,SACD,IAAK,IAAIxN,EAAI,EAAGA,EAAIijB,EAAQtjB,OAAQK,CAAC,GACjC,GAAI,CAACiiB,EAAcgB,EAAQjjB,EAAE,EAEzB,OADAgU,KAAAA,EAAmBinB,EAAMztB,OAAQyV,EAAQjjB,GAAIkiB,CAAqB,EAI1E3F,EAAa0e,EAAMztB,OAAQ,QAAQ,EACnC,MACJ,IAAK,UACDytB,EAAMztB,OAAOW,OAAO6zB,EAAoB,EAAE,EAC1CuT,EAASta,EAAMztB,OAAO+B,cACY,mBAA9B0rB,EAAMztB,OAAOmB,eACb4mC,EAAS,IAEblwB,GAAW4V,EAAMztB,OAAQ+nC,EAAQta,EAAMztB,OAAO1B,KAAM,SAAS,EAC7D,MACJ,IAAK,QACDmvB,EAAMztB,OAAOyO,WAAa,GAC1BF,GAAakf,EAAMztB,MAAM,EACzB,MACJ,IAAK,UACDqG,GAAQonB,EAAMztB,MAAM,EACpB,MACJ,IAAK,WACD2U,GAAW8Y,EAAMztB,MAAM,EACvB,MACJ,IAAK,SACIyU,EAAcgB,EAAQ,EAAE,GAIzBgY,EAAMztB,OAAOW,OAAOizB,GAAmB,EAAE,EACzC7kB,EAAa0e,EAAMztB,OAAQ,QAAQ,GAJnCwG,EAAmBinB,EAAMztB,OAAQyV,EAAQ,GAAIf,CAAqB,EAMtE,MACJ,IAAK,SACDiB,GAAW8X,EAAMztB,MAAM,EACvB,MACJ,IAAK,YACDytB,EAAMztB,OAAOW,OAAOkzB,GAAsB,EAAE,EAC5C,MACJ,IAAK,YACDpG,EAAMztB,OAAOW,OAAOmzB,GAAqB,EAAE,GAI1D,IAELwnB,EAAQ5pD,UAAUkqD,qBAAuB,WAgFrC,IA/EA,IA6BQ1nD,EA7BJu5B,EAAQj8B,KAiERy1B,GAhEC7oB,oBAAMiM,SAAO,IAAM7Y,KAAKwqD,MAAM,QAAQ,EAAGxqD,KAAKwO,OAAOnB,OAAO,CAAC,IAC1D2K,EAAQ,CACR,CAAEvL,GAAIzM,KAAK8qD,WAAW,MAAM,EAAGv+C,KAAM0N,EAAcja,KAAKwO,OAAQ,MAAM,EAClEirB,QAAgC,SAAvBz5B,KAAKwO,OAAO4J,OAAoBm/B,GAAoB,IACjE,CAAE9qC,GAAIzM,KAAK8qD,WAAW,MAAM,EAAGv+C,KAAM0N,EAAcja,KAAKwO,OAAQ,MAAM,EAClEirB,QAAgC,SAAvBz5B,KAAKwO,OAAO4J,OAAoBm/B,GAAoB,IACjE,CAAE9qC,GAAIzM,KAAK8qD,WAAW,MAAM,EAAGv+C,KAAM0N,EAAcja,KAAKwO,OAAQ,cAAc,EAC1EirB,QAAgC,iBAAvBz5B,KAAKwO,OAAO4J,OAA4Bm/B,GAAoB,IACzE,CAAEZ,UAAW,CAAA,GACb,CAAElqC,GAAIzM,KAAK8qD,WAAW,WAAW,EAAGv+C,KAAM0N,EAAcja,KAAKwO,OAAQ,WAAW,EAC5EirB,QAAmC,cAA1Bz5B,KAAKwO,OAAO0J,UAA4B4+B,EAAqB,IAC1E,CAAErqC,GAAIzM,KAAK8qD,WAAW,YAAY,EAAGv+C,KAAM0N,EAAcja,KAAKwO,OAAQ,YAAY,EAC9EirB,QAAmC,eAA1Bz5B,KAAKwO,OAAO0J,UAA6B4+B,EAAqB,IAC3E,CAAErqC,GAAIzM,KAAK8qD,WAAW,MAAM,EAAGv+C,KAAM0N,EAAcja,KAAKwO,OAAQ,MAAM,EAClEirB,QAAmC,SAA1Bz5B,KAAKwO,OAAO0J,UAAuB4+B,EAAqB,KAEzE92C,KAAK+qD,UAAY,IAAItb,iBAAe,CAChCz3B,MAAOA,EAAOqD,SAAUF,GAAYnb,KAAKwO,OAAQ+jB,EAAc,EAC/D1Z,OAAQyC,GAAmBkV,KAAKxwB,KAAMA,KAAKwO,MAAM,EACjDikB,oBAAqBzyB,KAAKwO,OAAOikB,oBACjCD,UAAWxyB,KAAKwO,OAAOgkB,UAAWiH,QAAS6d,GAC9C,EACDt3C,KAAK+qD,UAAUr4B,iBAAmB,CAAA,EAClC1yB,KAAK+qD,UAAUp4B,SAAS,IAAM3yB,KAAKwqD,MAAM,QAAQ,CAAC,GAEjD59C,oBAAMiM,SAAO,IAAM7Y,KAAKwqD,MAAM,MAAM,EAAGxqD,KAAKwO,OAAOnB,OAAO,CAAC,IAGxD3K,EAAc,CACd,CACI+J,GAAIzM,KAAK8qD,WAAW,OAAO,EAAGv+C,KAAM0N,EAAcja,KAAKwO,OAAQ,iBAAiB,EAChFirB,QAA8B,YAArBz5B,KAAKwO,OAAO4F,KAAqB,GAAK0iC,GAEnD,CACIrqC,GAAIzM,KAAK8qD,WAAW,SAAS,EAAGv+C,KAAM0N,EAAcja,KAAKwO,OAAQ,cAAc,EAC/EirB,QAA8B,YAArBz5B,KAAKwO,OAAO4F,KAAqB0iC,EAAqB,KAGvE92C,KAAKgrD,aAAe,IAAIvb,iBAAe,CACnChW,QAA8B,YAArBz5B,KAAKwO,OAAO4F,KAAqBg+B,GAAgBF,GAC1D72B,SAAUF,GAAYnb,KAAKwO,OAAQ,gBAAkB+jB,EAAc,EACnEva,MAAOtV,EAAamW,OAAQ7Y,KAAKoK,aAAaomB,KAAKxwB,IAAI,EACvDwyB,UAAWxyB,KAAKwO,OAAOgkB,UACvBjD,QAAS,iCAAmCtV,EAAcja,KAAKwO,OAAQ,MAAM,EAAI,UACjFohC,iBAAkB,SAAUx9B,GACxB,IAAI64C,EAAW74C,EAAKb,KAAKkoB,QACrByxB,EAAW94C,EAAKb,KAAKhF,OAAS0N,EAAcgiB,EAAMztB,OAAQ,iBAAiB,EAG3EkgC,GADJt8B,EAAK/E,QAAQ2M,UAAY,iBADTixC,EAAW,gBAAkBA,EAAW,IACD,aAAeC,EArBxD,uDADL,uDAsBwG94C,EAAKb,KAAKhF,KAChH6F,EAAK/E,QAAQ89C,YACpBzc,GAA2B,KAAnBA,EAAKj1B,WACbrH,EAAK/E,QAAQ6gB,YAAYwgB,CAAI,GAGxC,EACD1uC,KAAKgrD,aAAat4B,iBAAmB,CAAA,EACrC1yB,KAAKgrD,aAAar4B,SAAS,IAAM3yB,KAAKwqD,MAAM,MAAM,CAAC,GAEvDxqD,KAAKorD,UAAUprD,KAAKqrD,QAAS,CAAA,CAAI,EACjCrrD,KAAKsrD,aACDtrD,KAAKwO,OAAO+8C,SAAWvrD,KAAKkqD,WAAWqB,UACvCvrD,KAAKwO,OAAO+8C,QAAUvrD,KAAKwO,OAAO+8C,QAAQz5C,OAAO9R,KAAKkqD,WAAWqB,OAAO,EACxEvrD,KAAKwO,OAA6B,wBAErB+mB,YAAU,SAAUv1B,KAAKkqD,WAAW78C,OAAO,GAcnDqoB,EAAW,EAAGA,EAAWD,EAAW90B,OAAQ+0B,CAAQ,GACzDC,CAdU,SAAUD,GAEpBD,EAAWC,GAAUE,UAAY,SAAUrH,GACrB,KAAdA,EAAEsH,SAAmBtH,EAAEjuB,OAAO8N,UAAUC,SAAS,YAAY,GAC7DkgB,EAAEuH,kBAGVL,EAAWC,GAAUtF,QAAU,SAAU7B,GACnB,KAAdA,EAAEsH,SAAmBtH,EAAEjuB,OAAO8N,UAAUC,SAAS,YAAY,GAC7DonB,EAAWC,GAAUpR,UAKrBoR,CAAQ,EAEpB11B,KAAKwO,OAAOw6C,iBAEhBc,EAAQ5pD,UAAUsrD,mBAAqB,WACnC,GAAIxrD,KAAK+qD,UAEL,IADA,IAAI/yC,EAAQhY,KAAK+qD,UAAU/yC,MAClByzC,EAAY,EAAGA,EAAYzzC,EAAMrX,OAAQ8qD,CAAS,GACnDzzC,EAAMyzC,GAAWh/C,KAAOzM,KAAK8qD,WAAW,MAAM,EAC9C9yC,EAAMyzC,GAAWhyB,QAAiC,SAAvBz5B,KAAKwO,OAAO4J,OAAoBm/B,GAAoB,GAE1Ev/B,EAAMyzC,GAAWh/C,KAAOzM,KAAK8qD,WAAW,MAAM,EACnD9yC,EAAMyzC,GAAWhyB,QAAiC,SAAvBz5B,KAAKwO,OAAO4J,OAAoBm/B,GAAoB,GAE1Ev/B,EAAMyzC,GAAWh/C,KAAOzM,KAAK8qD,WAAW,MAAM,EACxB,iBAAvB9qD,KAAKwO,OAAO4J,QAAoD,gBAAvBpY,KAAKwO,OAAO4J,OACrDJ,EAAMyzC,GAAWhyB,QAAUz5B,KAAKwO,OAAO4J,QAAWpY,KAAKwO,OAAO4J,OAASm/B,GAAoB,GAG3Fv/B,EAAMyzC,GAAWhyB,QAAiC,iBAAvBz5B,KAAKwO,OAAO4J,OAA4Bm/B,GAAoB,GAGtFv/B,EAAMyzC,GAAWh/C,KAAOzM,KAAK8qD,WAAW,WAAW,EACxD9yC,EAAMyzC,GAAWhyB,QAAoC,cAA1Bz5B,KAAKwO,OAAO0J,UAA4B4+B,EAAqB,GAEnF9+B,EAAMyzC,GAAWh/C,KAAOzM,KAAK8qD,WAAW,YAAY,EACzD9yC,EAAMyzC,GAAWhyB,QAAoC,eAA1Bz5B,KAAKwO,OAAO0J,UAA6B4+B,EAAqB,GAEpF9+B,EAAMyzC,GAAWh/C,KAAOzM,KAAK8qD,WAAW,MAAM,IACnD9yC,EAAMyzC,GAAWhyB,QAAoC,SAA1Bz5B,KAAKwO,OAAO0J,UAAuB4+B,EAAqB,KAKnGgT,EAAQ5pD,UAAU4qD,WAAa,SAAUr+C,GACrC,OAAOzM,KAAKwO,OAAOnB,QAAQZ,GAAK,QAAUA,EAAG2G,eAEjD02C,EAAQ5pD,UAAUkK,aAAe,SAAUgI,GACd,YAArBpS,KAAKwO,OAAO4F,KACRhC,EAAKb,KAAK9E,KAAOzM,KAAK8qD,WAAW,OAAO,GACxC32C,GAAanU,KAAKwO,OAAQ,YAAY,EAItC4D,EAAKb,KAAK9E,KAAOzM,KAAK8qD,WAAW,SAAS,GAC1C32C,GAAanU,KAAKwO,OAAQ,SAAS,GAI/Cs7C,EAAQ5pD,UAAU6pD,gBAAkB,SAAU1nD,GAC1C,IAAI45B,EAAQj8B,KACRgY,EAAQ,GACR8R,EAAO,OACP9pB,KAAKwO,OAAOgN,WACZsO,EAAO,YAEX,IAAK,IAAI9oB,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAAI,CAClC,IAsFQ0qD,EAtFJn6C,EAAO,KAAA,EACPo6C,EAAW,KAAA,EAIXrW,GAHkC,EAAlCt1C,KAAKwO,OAAOk8C,aAAa/pD,SACzBgrD,EAAW3rD,KAAK4rD,aAAa5rD,KAAKwO,OAAOk8C,aAAah8C,SAAS1N,EAAE2N,WAAY,EAAE,EAAE,GAExE3O,KAAKwqD,MAAMnoD,EAAKrB,EAAE,GAC3Bo4B,EAAWnf,EAAcja,KAAKwO,OAAQnM,EAAKrB,EAAE,EAC7C6qD,EAAc5xC,EAAcja,KAAKwO,OAAQ,WAAanM,EAAKrB,EAAE,EACjE,OAAQqB,EAAKrB,IACT,IAAK,IACDuQ,EAAO,CAAEtP,KAAM,aACf,MACJ,IAAK,SACDsP,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaE,WAAYlV,GAAiBmV,WAAYliC,GACxG,MACJ,IAAK,SACD,IAAImiC,EAAc,iDAAmD7yB,EAAW,UAIhF7nB,EAAO,CACH9E,GAAI6oC,EAAQwW,YAAaD,EACzB/pD,SAAU,eAAiBwzC,EAAS,kDAJpC2W,EADAN,GAAYA,EAASp/C,KACP,iDAAmDo/C,EAASp/C,KAAO,UAIM0/C,GAAc,aAEzG,MAEJ,IAAK,UACD16C,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaE,WAAYvU,GAAkBwU,WAAYliC,GACzG,MACJ,IAAK,YACDvY,EAAO,CACH9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaK,WAAYC,GAAgBC,SAAU,OAC5FC,MAAO,SAEX,MACJ,IAAK,OACGnB,EAAW,KAAA,EAEXA,EADAS,GAAYA,EAASp/C,KACVo/C,EAASp/C,KAGT0N,EAAcja,KAAKwO,OAAQ,MAAM,EAEhD+C,EAAO,CACH9E,GAAI6oC,EAAQwW,YAAaD,EAAaE,WAAiC,YAArB/rD,KAAKwO,OAAO4F,KAAqBg+B,GAAgBF,GACnGka,SAAU,OAAQC,MAAO,QAAS9/C,KAAM6sB,EAAU4yB,WAAY,WAC9DlqD,SAAU,eAAiBwzC,EAAS,4DAChC4V,EAAW,cAEnB,MAEJ,IAAK,UACD35C,EAAO,CACH9E,GAAI6oC,EAAQwW,YAAaD,EAAaE,WAAY1U,GAAkB+U,SAAU,OAAQC,MAAO,QAC7F9/C,KAAM6sB,EAAU4yB,WAAY,YAEhC,MACJ,IAAK,YACDz6C,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaE,WAAY3U,GAAoB4U,WAAYliC,GAC3G,MACJ,IAAK,MACDvY,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaE,WAAYhV,GAAciV,WAAYliC,GACrG,MACJ,IAAK,OACDvY,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaE,WAAY/U,GAAegV,WAAYliC,GACtG,MACJ,IAAK,QACDvY,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaE,WAAY9U,GAAgB+U,WAAYliC,GACvG,MACJ,IAAK,SACDvY,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaE,WAAY7U,GAAiB8U,WAAYliC,GACxG,MACJ,IAAK,SACDvY,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaE,WAAY5U,GAAiB6U,WAAYliC,GACxG,MACJ,IAAK,WACDvY,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaE,WAAYrU,GAAmBsU,WAAYliC,GAC1G,MACJ,IAAK,YACDvY,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAaE,WAAYtU,GAAoBuU,WAAYliC,GAC3G,MACJ,QACIvY,EAAO,CAAE9E,GAAI6oC,EAAQ/oC,KAAM6sB,EAAU0yB,YAAaD,EAAa/pD,SAAU,IAG3C,EAAlC9B,KAAKwO,OAAOk8C,aAAa/pD,QAAcgrD,GACnCD,EAAcnsD,OAAO2nB,OAAO,GAAI3V,EAAMo6C,CAAQ,EAClD3zC,EAAMvK,KAAKi+C,CAAW,GAGtB1zC,EAAMvK,KAAK8D,CAAI,EAGvB,IAAK,IAGOzP,EAHH0hC,EAAK,EAAGC,EAAKzrB,EAAOwrB,EAAKC,EAAG9iC,OAAQ6iC,CAAE,GAEvB,UAAhB,OAAOjyB,EADAkyB,EAAGD,KAC2B,OAATjyB,GAA0C,UAAzB,OAAOA,EAAKzP,WACrDA,EAAWyP,EAAKzP,SACpByP,EAAKzP,SAAWA,EAASmV,QAAQ,wGAAyG,SAAUq1C,EAAQ/rD,GAAO,MAAO,IAAM0Z,EAAcgiB,EAAMztB,OAAQjO,CAAG,EAAI,IAAM,GAGjO,OAAOyX,GAEX8xC,EAAQ5pD,UAAU0rD,aAAe,SAAUD,GACvC,IAAIp6C,EAAO,GAoDX,OAnDIo6C,EAASl/C,KACT8E,EAAK9E,GAAKk/C,EAASl/C,IAEnBk/C,EAASp/C,OACTgF,EAAKhF,KAAOo/C,EAASp/C,MAErBo/C,EAASG,cACTv6C,EAAKu6C,YAAcH,EAASG,aAE5BH,EAASI,aACTx6C,EAAKw6C,WAAaJ,EAASI,YAE3BJ,EAAStwC,WACT9J,EAAK8J,SAAWswC,EAAStwC,UAED,SAAxBswC,EAASK,aACTz6C,EAAKy6C,WAAaL,EAASK,YAE3BL,EAAS7pD,WACTyP,EAAKzP,SAAW6pD,EAAS7pD,UAEzB6pD,EAASY,WACTh7C,EAAKg7C,SAAWZ,EAASY,UAEN,SAAnBZ,EAASxpD,QACToP,EAAKpP,MAAQwpD,EAASxpD,OAEtBwpD,EAASO,aACT36C,EAAK26C,WAAaP,EAASO,YAER,SAAnBP,EAASU,QACT96C,EAAK86C,MAAQV,EAASU,OAEA,SAAtBV,EAASS,WACT76C,EAAK66C,SAAWT,EAASS,UAEzBT,EAAShyB,iBACTpoB,EAAKooB,eAAiBgyB,EAAShyB,gBAEb,WAAlBgyB,EAAS1pD,OACTsP,EAAKtP,KAAO0pD,EAAS1pD,MAEA,CAAA,IAArB0pD,EAASv/B,UACT7a,EAAK6a,QAAUu/B,EAASv/B,SAExBu/B,EAASa,oBACTj7C,EAAKi7C,kBAAoBb,EAASa,mBAEZ,CAAC,IAAvBb,EAASc,WACTl7C,EAAKk7C,SAAWd,EAASc,UAEtBl7C,GAEXu4C,EAAQ5pD,UAAUsqD,MAAQ,SAAU/9C,GAChC,OAAOzM,KAAKwO,OAAOnB,QAAQZ,GAAK,OAASA,EAAG2G,eAEhD02C,EAAQ5pD,UAAUw7B,iBAAmB,WACjC17B,KAAKwO,OAAO80B,GAAGvB,EAAqB/hC,KAAKgiC,kBAAmBhiC,IAAI,EAChEA,KAAKwO,OAAO80B,GAAGrX,EAAyBjsB,KAAK0sD,mBAAoB1sD,IAAI,EACrEA,KAAKwO,OAAO80B,GAAG9wB,EAAqBxS,KAAK8+B,eAAgB9+B,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAGtzB,GAAkBhQ,KAAK4K,UAAW5K,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGl0B,GAAkBpP,KAAK6K,UAAW7K,IAAI,EACrDA,KAAKwO,OAAO80B,GAAG4N,GAAgBlxC,KAAKuJ,QAASvJ,IAAI,EACjDA,KAAKwO,OAAO80B,GAAG3nB,GAAqB3b,KAAKwrD,mBAAoBxrD,IAAI,GAErE8pD,EAAQ5pD,UAAUysD,gBAAkB,SAAUp+B,GAC1C,IAAI0N,EAAQj8B,KACR4sD,EAAiB,GACiB,EAAlC5sD,KAAKwO,OAAOk8C,aAAa/pD,OACzBisD,EAAiB5sD,KAAKwO,OAAOk8C,aAAalgC,IAAI,SAAUjZ,GACpD,OAAOA,EAAKuG,KACf,EAEwCiN,KAAAA,IAApCwJ,EAAEmV,QAAQwb,gBAAgBlnC,QAC/B40C,EAAiBr+B,EAAEmV,QAAQwb,gBAAgBlnC,MAAMwS,IAAI,SAAUjZ,GAC3D,OAAOA,EAAK0kC,OACf,GAEuB,EAAxB2W,EAAejsD,SACfX,KAAKgY,MAAQhY,KAAK+pD,gBAAgB/pD,KAAKgqD,SAAS4C,CAAc,CAAC,EAC3Dv2C,EAAY,CAAE2B,MAAOhY,KAAKgY,OAC9BhY,KAAKwO,OAAO+H,QAAQ,gBAAiBF,EAAW,SAAU4zC,GAClDhuB,EAAM8uB,WACN9uB,EAAM8uB,UAAUxhD,UAEhB0yB,EAAM+uB,cACN/uB,EAAM+uB,aAAazhD,UAEvB0yB,EAAMjkB,MAAQiyC,EAAkBjyC,MAChCikB,EAAMiuB,WAAWlyC,MAAQikB,EAAMjkB,MAC/BikB,EAAMiuB,WAAWr3B,WACjBoJ,EAAMmuB,uBACT,IAGTN,EAAQ5pD,UAAUwsD,mBAAqB,WACnC1sD,KAAKsrD,aACLtrD,KAAKorD,UAAUprD,KAAK6sD,OAAQ,CAAA,CAAI,EAChC7sD,KAAKorD,UAAUprD,KAAK8sD,UAAW,CAAA,CAAK,EACK,IAArC9sD,KAAKwO,OAAO+B,cAAc5P,QAC1BX,KAAKorD,UAAUprD,KAAK6sD,OAAQ,CAAA,CAAK,EACjC7sD,KAAKorD,UAAUprD,KAAK8sD,UAAW,CAAA,CAAI,GAEK,EAAnC9sD,KAAKwO,OAAO+B,cAAc5P,SAC/BX,KAAKorD,UAAUprD,KAAK+sD,SAAU,CAAA,CAAK,EACnC/sD,KAAKorD,UAAUprD,KAAK8sD,UAAW,CAAA,CAAI,GAEvC,IAIQl8B,EAJJ3Q,EAAMpH,SAAO,IAAM7Y,KAAKwqD,MAAM,WAAW,EAAGxqD,KAAKkqD,WAAW78C,OAAO,EAChC,EAAnCrN,KAAKwO,OAAO+B,cAAc5P,QAAcsf,GAAO,CAACjgB,KAAKwO,OAAO8rB,uBACxD1J,EAAM,KAAA,EAENA,EADqC,IAArC5wB,KAAKwO,OAAO+B,cAAc5P,OACpBX,KAAKwO,OAAO+B,cAAc5P,OAAS,IAAMsZ,EAAcja,KAAKwO,OAAQ,gBAAgB,EAGpFxO,KAAKwO,OAAO+B,cAAc5P,OAAS,IAAMsZ,EAAcja,KAAKwO,OAAQ,iBAAiB,EAE/FqK,SAAO,mBAAoBoH,CAAG,EAAEsW,YAAc3F,EAC9C5wB,KAAKkqD,WAAW8C,SAAS/sC,EAAIqC,cAAe,CAAA,CAAK,IAGzDwnC,EAAQ5pD,UAAUkrD,UAAY,SAAU6B,EAAOC,GAC3C,IAAK,IAAIlsD,EAAI,EAAGA,EAAIisD,EAAMtsD,OAAQK,CAAC,GAAI,CACnC,IAAIif,EAAMpH,SAAO,IAAM7Y,KAAKwqD,MAAMyC,EAAMjsD,EAAE,EAAGhB,KAAKwO,OAAOnB,OAAO,EAC5D4S,GACAjgB,KAAKkqD,WAAW8C,SAAS/sC,EAAIqC,cAAe4qC,CAAM,IAI9DpD,EAAQ5pD,UAAUorD,WAAa,WAC3B,IAAIrrC,EAAMpH,SAAO,IAAM7Y,KAAKwqD,MAAM,WAAW,EAAGxqD,KAAKkqD,WAAW78C,OAAO,EACnE4S,GACAjgB,KAAKkqD,WAAW8C,SAAS/sC,EAAIqC,cAAe,CAAA,CAAI,GAGxDwnC,EAAQ5pD,UAAU0K,UAAY,WAC1B5K,KAAKorD,UAAU,CAAC,SAAU,CAAA,CAAK,GAEnCtB,EAAQ5pD,UAAU2K,UAAY,WAC1B7K,KAAKorD,UAAU,CAAC,SAAU,CAAA,CAAI,GAElCtB,EAAQ5pD,UAAU4+B,eAAiB,WAC/B,GAAI9+B,KAAKgrD,aAAc,CACnBhrD,KAAKgrD,aAAavxB,QAA+B,YAArBz5B,KAAKwO,OAAO4F,KAAqBg+B,GAAgBF,GAE7E,IADA,IAAIl6B,EAAQhY,KAAKgrD,aAAahzC,MACrByzC,EAAY,EAAGA,EAAYzzC,EAAMrX,OAAQ8qD,CAAS,GACnDzzC,EAAMyzC,GAAWh/C,KAAOzM,KAAK8qD,WAAW,OAAO,EAC/C9yC,EAAMyzC,GAAWhyB,QAA+B,eAArBz5B,KAAKwO,OAAO4F,KAAwB0iC,EAAqB,GAE/E9+B,EAAMyzC,GAAWh/C,KAAOzM,KAAK8qD,WAAW,SAAS,IACtD9yC,EAAMyzC,GAAWhyB,QAA+B,YAArBz5B,KAAKwO,OAAO4F,KAAqB0iC,EAAqB,MAKjGgT,EAAQ5pD,UAAUy4B,oBAAsB,WACpC34B,KAAKwO,OAAOozB,IAAIG,EAAqB/hC,KAAKgiC,iBAAiB,EAC3DhiC,KAAKwO,OAAOozB,IAAI3V,EAAyBjsB,KAAK0sD,kBAAkB,EAChE1sD,KAAKwO,OAAOozB,IAAIpvB,EAAqBxS,KAAK8+B,cAAc,EACxD9+B,KAAKwO,OAAOozB,IAAI5xB,GAAkBhQ,KAAK4K,SAAS,EAChD5K,KAAKwO,OAAOozB,IAAIxyB,GAAkBpP,KAAK6K,SAAS,EAChD7K,KAAKwO,OAAOozB,IAAIsP,GAAgBlxC,KAAKuJ,OAAO,EAC5CvJ,KAAKwO,OAAOozB,IAAIjmB,GAAqB3b,KAAKwrD,kBAAkB,GAQhE1B,EAAQ5pD,UAAU+9B,cAAgB,WAC9B,MAAO,WAEX6rB,EAAQ5pD,UAAU8hC,kBAAoB,SAAUzT,GAC5C,GAAIA,EAAE7S,SAAW1b,KAAKi+B,iBAAgC,WAAb1P,EAAE7S,OAI3C,IAAK,IAAI8nB,EAAK,EAAGC,EAAKlkC,OAAOojB,KAAK4L,EAAEmV,OAAO,EAAGF,EAAKC,EAAG9iC,OAAQ6iC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,WACGxjC,KAAK+qD,YACL/qD,KAAK+qD,UAAU1vC,SAAWF,GAAYnb,KAAKwO,OAAQ+jB,EAAc,GAEjEvyB,KAAKgrD,eACLhrD,KAAKgrD,aAAa3vC,SAAWF,GAAYnb,KAAKwO,OAAQ,gBAAkB+jB,EAAc,GAE1F,MACJ,IAAK,SACL,IAAK,QACDvyB,KAAKkqD,WAAWiD,kBAChB,MACJ,IAAK,kBACL,IAAK,eACDntD,KAAK2sD,gBAAgBp+B,CAAC,IAKtCu7B,EAAQ5pD,UAAUqJ,QAAU,WACpBvJ,KAAKwO,OAAOmzB,cAGhB3hC,KAAK24B,sBACD34B,KAAK+qD,WACL/qD,KAAK+qD,UAAUxhD,UAEfvJ,KAAKgrD,cACLhrD,KAAKgrD,aAAazhD,UAEtBvJ,KAAKkqD,WAAW3gD,UAChBvJ,KAAKwO,OAAOw6C,kBAEhBc,EAAQ5pD,UAAUg1C,YAAc,SAAUl9B,EAAOo1C,GAC7C,IAAK,IAAIpsD,EAAI,EAAGA,EAAIgX,EAAMrX,OAAQK,CAAC,GAAI,CACnC,IAAIif,EAAMpH,SAAO,IAAM7Y,KAAKwqD,MAAMxyC,EAAMhX,EAAE,EAAGhB,KAAKwO,OAAOnB,OAAO,EAC5D4S,GACAjgB,KAAKkqD,WAAWhV,YAAYj1B,EAAIqC,cAAe8qC,CAAQ,IAxlBnEtD,EA4lBOA,EAplBP,SAASA,EAAQt7C,GACbxO,KAAKqrD,QAAU,CAAC,SAAU,SAAU,WAAY,MAAO,OAAQ,SAC/DrrD,KAAK6sD,OAAS,CAAC,SAAU,SAAU,WAAY,MAAO,QACtD7sD,KAAK+sD,SAAW,CAAC,SAAU,WAAY,MAAO,OAAQ,WACtD/sD,KAAK8sD,UAAY,CAAC,YAAa,SAAU,SAAU,WACnD9sD,KAAKwO,OAASA,EACdxO,KAAKm4B,SACLn4B,KAAK07B,mBChBT2xB,GAAentD,UAAUs6B,oBAAsB,WAE3C,IAAI8yB,EAAmBttD,KAAKutD,kBAAkBv1C,MAE1C0uB,EAAY4mB,EAAiB57C,MAAM,EAAG,CAAC,EAEvC+oB,EAAeC,WAASC,mBAAmBnhB,gBAAektB,EAAW1mC,KAAKutD,kBAAkB90B,OAAO,EAEvGz4B,KAAK46B,SAAWl7B,MAAMQ,UAAUwR,MAAMsV,KAAKuO,YAAU,IAAMvnB,EAAeysB,CAAY,CAAC,EAEvFz6B,KAAKutD,kBAAkBlgD,QAAQ0M,YAAY0gB,CAAY,EAC1B,IAAzBz6B,KAAK46B,SAASj6B,QAAgBX,KAAKutD,kBAAkBlgD,QAAQgM,cAAc,IAAMC,CAAS,GAC1FtZ,KAAKutD,kBAAkBlgD,QAAQ6gB,YAAYluB,KAAKutD,kBAAkBlgD,QAAQgM,cAAc,IAAMC,CAAS,CAAC,EAG5GtZ,KAAKyrD,UAAYzrD,KAAKy7B,aAAal8B,OAAOojB,KAAK3iB,KAAKutD,kBAAkBr5C,QAAQ,EAAEvT,MAAM,EAEtFX,KAAKutD,kBAAkBlgD,QAAQ89C,WAAWr6C,SAE1C9Q,KAAKutD,kBAAkBv1C,MAAQs1C,EAAiB57C,MAAM,EAAG1R,KAAKyrD,SAAS,GAQ3E4B,GAAentD,UAAU07B,mBAAqB,WAE1C57B,KAAKwtD,cAAgBxtD,KAAKutD,kBAAkBr5C,SAASvT,OAASX,KAAKyrD,WAAazrD,KAAKytD,cAChFztD,KAAKutD,kBAAkBr5C,SAASvT,OAASX,KAAKyrD,WAAazrD,KAAKytD,aAAeztD,KAAKytD,aAEzFztD,KAAK0tD,WAAa1tD,KAAK2tD,oBAAoBn0C,cAAc,KAAK,EAC9DxZ,KAAK0tD,WAAWt/C,UAAUqC,IAAI,eAAe,EAC7CzQ,KAAKutD,kBAAkBlgD,QAAQmV,kBAAkBoc,aAAa5+B,KAAK0tD,WAAY1tD,KAAKutD,kBAAkBlgD,QAAQmV,kBAAkB2oC,UAAU,EAC1InrD,KAAK4tD,cAAgB5tD,KAAK2tD,oBAAoBn0C,cAAc,KAAK,EACjExZ,KAAK4tD,cAAcx/C,UAAUqC,IAAI,kBAAkB,EACnDzQ,KAAKutD,kBAAkBlgD,QAAQmV,kBAAkBoc,aAAa5+B,KAAK4tD,cAAe,IAAI,EAEtF,IAAIvlB,EAAc35B,SAAS+R,OAAOkX,iBAAiB33B,KAAKutD,kBAAkB3yB,SAAS,EAAE,EAAE0N,iBAAiB,YAAY,EAAG,EAAE,EACrH55B,SAAS+R,OAAOkX,iBAAiB33B,KAAKutD,kBAAkB3yB,SAAS,EAAE,EAAE0N,iBAAiB,eAAe,EAAG,EAAE,EAE9GtoC,KAAK6tD,eAAiB7tD,KAAKutD,kBAAkB3yB,SAAS,GAAG7Y,wBAAwBkV,OAASoR,EAE1FroC,KAAK8tD,YAAevuD,OAAOojB,KAAK3iB,KAAKutD,kBAAkBr5C,QAAQ,EAAEvT,OAASX,KAAKytD,aAAgBztD,KAAK6tD,eAEpG7tD,KAAK0tD,WAAWtzC,MAAM6c,OAAS,MAC/Bj3B,KAAK4tD,cAAcxzC,MAAM6c,OAASj3B,KAAK8tD,YAAc,KAErD9tD,KAAK+tD,iBAAmB,EACxB/tD,KAAKguD,oBAAsBhuD,KAAK8tD,YAEhC9tD,KAAKiuD,SAAW,EAEhBjuD,KAAKkuD,cAAgBluD,KAAKyrD,WAQ9B4B,GAAentD,UAAUu7B,aAAe,SAAU0yB,GAE9C,IAAIC,EAAc1/C,SAAS+R,OAAOkX,iBAAiB33B,KAAK46B,SAAS,EAAE,EAAE0N,iBAAiB,cAAc,EAAG,EAAE,EACrG55B,SAAS+R,OAAOkX,iBAAiB33B,KAAK46B,SAAS,EAAE,EAAE0N,iBAAiB,aAAa,EAAG,EAAE,EAMtFmjB,GAJJzrD,KAAKytD,aACDrG,KAAKiH,MAAMx2B,WAAWmmB,aAAWh+C,KAAKutD,kBAAkBlgD,QAAQmV,kBAAkB2rB,WAAW,CAAC,GACzFnuC,KAAK46B,SAAS,GAAG3C,YAAcm2B,EAAY,EAEpCpuD,KAAKytD,aAChBrG,KAAKkH,MAAMz2B,WAAWmmB,aAAWh+C,KAAKutD,kBAAkBlgD,QAAQ2U,YAAY,CAAC,EAAIhiB,KAAK46B,SAAS,GAAG3hB,YAAa,GAKpH,OAFIwyC,EADY0C,EAAZ1C,GAA8C,IAAdA,EACpB0C,EAET1C,GAQX4B,GAAentD,UAAU27B,gBAAkB,SAAUtyB,GAC5CA,EAMD66B,eAAatzB,OAAO9Q,KAAKutD,kBAAkBlgD,QAAQmV,kBAAmB,SAAUxiB,KAAKuuD,iBAAiB,EAJtGnqB,eAAa3zB,IAAIzQ,KAAKutD,kBAAkBlgD,QAAQmV,kBAAmB,SAAUxiB,KAAKuuD,kBAAmBvuD,IAAI,GAcjHqtD,GAAentD,UAAUquD,kBAAoB,WAKzCvuD,KAAKwuD,eAAiBr2C,oBAAkBnY,KAAKwuD,cAAc,EAAI,EAAIxuD,KAAKwuD,eAJxE,IAAI/qB,EA0BQwqB,EArBRQ,EAASzuD,KAAK0uD,kBAHG,CAG6B,EAElD1uD,KAAK+tD,iBAAmB/tD,KAAK6tD,eAAiBzG,KAAKiH,MAAMI,EAASzuD,KAAK6tD,cAAc,EAErF7tD,KAAKguD,oBAAsBhuD,KAAK8tD,YAAc9tD,KAAK+tD,iBAGnDtqB,EAAKgrB,GAAUzuD,KAAK8tD,YAChB,CAAC9tD,KAAK+tD,iBAAkB/tD,KAAKguD,qBAAuB,CAAChuD,KAAK8tD,YAAa,GAAI9tD,KAAK+tD,iBAAmBtqB,EAAG,GAAIzjC,KAAKguD,oBAAsBvqB,EAAG,GAExIzjC,KAAK+tD,mBAAqBl2B,WAAW73B,KAAK0tD,WAAWtzC,MAAM6c,MAAM,IACjEj3B,KAAK0tD,WAAWtzC,MAAM6c,OAASj3B,KAAK+tD,iBAAmB,KACvD/tD,KAAK4tD,cAAcxzC,MAAM6c,OAASj3B,KAAKguD,oBAAsB,KAEzDS,EAASzuD,KAAKwuD,gBAEVP,EAAW7G,KAAKkH,MAAQtuD,KAAK+tD,iBAAmB/tD,KAAK6tD,eAAkB7tD,KAAKiuD,UAChFjuD,KAAK2uD,eAAeV,EAAU,CAAA,CAAI,IAI9BA,EAAW7G,KAAKkH,MAAOtuD,KAAKiuD,SAAYjuD,KAAK+tD,iBAAmB/tD,KAAK6tD,gBACzE7tD,KAAK2uD,eAAeV,EAAU,CAAA,CAAK,IAI3CjuD,KAAKiuD,SAAW7G,KAAKkH,MAAMtuD,KAAK+tD,iBAAmB/tD,KAAK6tD,cAAc,EACtE7tD,KAAKwuD,eAAiBC,EAEtBzuD,KAAKutD,kBAAkB3yB,SAAWl7B,MAAMQ,UAAUwR,MAAMsV,KAAKuO,YAAU,IAAMvnB,EAAehO,KAAKutD,kBAAkBlgD,OAAO,CAAC,EAC3HrN,KAAKyrD,UAAYzrD,KAAKyrD,YAAczrD,KAAKutD,kBAAkB3yB,SAASj6B,OAChEX,KAAKutD,kBAAkB3yB,SAASj6B,OAASX,KAAKyrD,UAClDzrD,KAAKutD,kBAAkBv1C,MAAQhY,KAAKutD,kBAAkBr5C,SAASxC,MAAM1R,KAAKkuD,cACtEluD,KAAKyrD,UAAWzrD,KAAKkuD,aAAa,GAS1Cb,GAAentD,UAAUwuD,kBAAoB,SAAUE,GAGnD,OAAS5uD,KAAKutD,kBAAkBlgD,QAAQmV,kBAAkBskB,UAAY8nB,GAAmB,EAAK,EACzF5uD,KAAKutD,kBAAkBlgD,QAAQmV,kBAAkBskB,UAAY8nB,GAUtEvB,GAAentD,UAAUyuD,eAAiB,SAAUV,EAAUY,GAE1D,IAAK,IAAI7tD,EAAI,EAAGA,EAAIitD,EAAUjtD,CAAC,GAC3BhB,KAAK8uD,SAASD,CAAe,GAUrCxB,GAAentD,UAAU4uD,SAAW,SAAUD,GAC1C,IAAI5yB,EAAQj8B,KACZ,GAAI6uD,GAIA,GAFA7uD,KAAKgY,MAAQhY,KAAKutD,kBAAkBr5C,SAASxC,MAAM1R,KAAKkuD,cAAeluD,KAAKkuD,cAAgBluD,KAAKytD,YAAY,EAErF,EAApBztD,KAAKgY,MAAMrX,OAAY,CACvB,IAAI85B,EAAeC,WAASC,mBAAmBnhB,gBAAexZ,KAAKgY,MAAOhY,KAAKutD,kBAAkB90B,OAAO,EACxGz4B,KAAK46B,SAAWl7B,MAAMQ,UAAUwR,MAAMsV,KAAKuO,YAAU,IAAMvnB,EAAeysB,CAAY,CAAC,EACvFz6B,KAAK46B,SAASjpB,QAAQ,SAAUy/B,GAC5BnV,EAAMsxB,kBAAkBlgD,QAAQmV,kBAAkBoc,aAAawS,EAAOnV,EAAM2xB,aAAa,EAC5F,EAED5tD,KAAKkuD,cAAiBluD,KAAKutD,kBAAkBr5C,SAASvT,QAAUX,KAAKkuD,cAAgBluD,KAAKytD,aACtFztD,KAAKkuD,cAAgBluD,KAAKytD,aAAeztD,KAAKkuD,cAAgBluD,KAAKwtD,aAEvE,IAAK,IAAIxsD,EAAI,EAAGA,EAAIhB,KAAKytD,aAAczsD,CAAC,GACpC6f,SAAO7gB,KAAK0tD,WAAWrhC,kBAAkB,OAIhD,CAED,IAAI0iC,EAAgB,KAAA,EAChBC,EAAgB,KAAA,EAkBhBC,GAjBAjvD,KAAKkuD,gBAAkBluD,KAAKutD,kBAAkBr5C,SAASvT,QAEvDouD,EAAgB/uD,KAAKkuD,eAAiBluD,KAAKyrD,UAAYzrD,KAAKytD,aAAeztD,KAAKwtD,cAEhFxtD,KAAKkuD,cAAkBluD,KAAKkuD,cAAgBluD,KAAKwtD,aAAgBxtD,KAAKyrD,UAClEzrD,KAAKyrD,UAAazrD,KAAKkuD,cAAgBluD,KAAKwtD,aAEhDwB,EAAgB,CAAA,IAIhBD,EAAgB/uD,KAAKkuD,cAAgBluD,KAAKyrD,UAE1CzrD,KAAKkuD,cAAkBluD,KAAKkuD,cAAgBluD,KAAKytD,aAAgBztD,KAAKyrD,UAClEzrD,KAAKyrD,UAAazrD,KAAKkuD,cAAgBluD,KAAKytD,cAGM,EAApCsB,EAAgB/uD,KAAKytD,aAAoBsB,EAAgB/uD,KAAKytD,aAAe,GAGnG,GADAztD,KAAKgY,MAAQhY,KAAKutD,kBAAkBr5C,SAASxC,MAAMu9C,EAAgBF,CAAa,EACxD,EAApB/uD,KAAKgY,MAAMrX,OAAY,CAEnB85B,EAAeC,WAASC,mBAAmBnhB,gBAAexZ,KAAKgY,MAAOhY,KAAKutD,kBAAkB90B,OAAO,EAExGz4B,KAAK46B,SAAWl7B,MAAMQ,UAAUwR,MAAMsV,KAAKuO,YAAU,IAAMvnB,EAAeysB,CAAY,CAAC,EAEvF,IAAK,IAAI9f,EAAM3a,KAAK46B,SAASj6B,OAAc,EAANga,EAASA,CAAG,GAC7C3a,KAAKutD,kBAAkBlgD,QAAQmV,kBAAkBoc,aAAa5+B,KAAK46B,SAASjgB,EAAM,GAAI3a,KAAK0tD,WAAWrhC,kBAAkB,EAG5H,IAASrrB,EAAI,EAAGA,GAAK,EAAkBhB,KAAKwtD,aAAextD,KAAKytD,cAAezsD,CAAC,GAC5E6f,SAAO7gB,KAAK4tD,cAAcsB,sBAAsB,KAWhE7B,GAAentD,UAAU+9B,cAAgB,WACrC,MAAO,kBAOXovB,GAAentD,UAAUqJ,QAAU,WAE3BvJ,KAAK2tD,oBAAoBhsB,aAIxBxpB,oBAAkBnY,KAAKutD,kBAAkBlgD,QAAQmV,iBAAiB,GACnExiB,KAAK67B,gBAAgB,CAAA,CAAI,OA7QjCwxB,GAgROA,GA/QP,SAASA,GAAe/gD,GACpBtM,KAAK2tD,oBAAsBrhD,EAC3BtM,KAAKutD,kBAAoBjhD,EAAS2H,qBCP1C,IAAIk7C,GAAsC,WAStC,OARAA,GAAW5vD,OAAO2nB,QAAU,SAASkoC,GACjC,IAAK,IAAIC,EAAGruD,EAAI,EAAGsuD,EAAI5uD,UAAUC,OAAQK,EAAIsuD,EAAGtuD,CAAC,GAE7C,IAAK,IAAIrB,KADT0vD,EAAI3uD,UAAUM,GACOzB,OAAOW,UAAUN,eAAeonB,KAAKqoC,EAAG1vD,CAAC,IAC1DyvD,EAAEzvD,GAAK0vD,EAAE1vD,IAEjB,OAAOyvD,IAEK/tD,MAAMrB,KAAMU,SAAS,CACzC,EAgBI6uD,IAsCAA,EAAervD,UAAUsvD,OAAS,WAC9B,IAGIC,EAEAC,EACAjjD,EANCG,oBAAM5M,KAAKkO,OAAO,IAGnBuhD,EAAWjjD,WAASxM,KAAKwO,OAAOvB,OAAO,GAAIjN,KAAKwO,OAAOI,QAAQ,EACnEgM,WAAS,WAAY,cAAe60C,CAAQ,EACxCC,EAAO,GACPjjD,EAAKD,WAAS,KAAMijD,CAAQ,EAC3B7iD,oBAAMH,CAAE,GACTmO,WAAS,UAAWnO,EAAIijD,CAAI,EAE3BzsC,EAAcwsC,CAAQ,GACvB70C,WAAS,QAASiJ,GAAe4rC,CAAQ,EAAGC,CAAI,EAE/C9iD,oBAAM8iD,CAAI,GACX90C,WAAS,eAAgB80C,EAAMD,CAAQ,EAE3CzvD,KAAKkO,QAAU,IAAIyhD,WAAa,CAC5Bn2B,OAAQ21B,GAAS,CAAEn7C,WAAY,CAACy7C,GAAWhjD,GAAI,SAAUmjD,SAAU,UAAWC,SAAU,eAAgBtwB,SAAU,eAAgBhzB,KAAM,OAAQujD,YAAa,YAAeljD,oBAAM5M,KAAKwO,OAAO05C,sBAAsB,GAAK,CAAEzuB,QAAS,YAAe,CAAEE,eAAgB,eAAgBo2B,QAAS,OAAQ,EACtSt9B,oBAAqBzyB,KAAKwO,OAAOikB,oBACjCva,UAAWlY,KAAKwO,OAAO2vC,uBAAuBjmC,UAC9C83C,cAAehwD,KAAKiwD,gBAAgBz/B,KAAKxwB,IAAI,EAC7CkwD,aAAclwD,KAAKmwD,eAAe3/B,KAAKxwB,IAAI,EAC3CowD,cAAepwD,KAAKqwD,aAAa7/B,KAAKxwB,IAAI,EAC1CswD,YAAatwD,KAAKuwD,cAAc//B,KAAKxwB,IAAI,EACzCwwD,aAAc,CAAA,EACdC,YAAazwD,KAAK0wD,cAAclgC,KAAKxwB,IAAI,EACzC2wD,SAAU3wD,KAAK4wD,WAAWpgC,KAAKxwB,IAAI,EACnCwyB,UAAWxyB,KAAKwO,OAAOgkB,UACvBq+B,UAAW7wD,KAAK8wD,YAAYtgC,KAAKxwB,IAAI,EACrC+wD,aAAc/wD,KAAKwO,OAAO05C,uBAC7B,EACDloD,KAAKkO,QAAQwkB,iBAAmB,CAAA,EAChC1yB,KAAKkO,QAAQykB,SAAS,IAAM3yB,KAAKwO,OAAOnB,QAAQZ,GAAK0nC,EAAW,EAChEn0C,KAAK27B,eAET4zB,EAAervD,UAAU4wD,YAAc,WACnC,IAAI70B,EAAQj8B,KACR,CAACA,KAAKwO,OAAOgN,UAAYxb,KAAKkO,UAC1BlO,KAAKwO,OAAO0S,kBAAoBtU,oBAAM5M,KAAKihB,OAAO,EAClDjhB,KAAKihB,QAAU,IAAI4b,YAAU78B,KAAKkO,QAAQb,QAAS,CAC/C+vB,SAAUp9B,KAAKwO,OAAO6uB,mBACtBJ,WAAY,IAAM0W,GAAc,KAAOqd,GACvCj0B,SAAU,EACVO,SAAUt9B,KAAKwO,OAAOnB,QACtBmwB,KAAMtb,GAAgBsO,KAAKxwB,KAAMA,KAAKwO,MAAM,EAC5CkvB,UAAW,SAAUtrB,GACjB4O,GAAiBib,EAAMztB,OAAQ4D,EAAM6pB,EAAMhb,OAAO,GAEtDsc,SAAUld,GAAgBmQ,KAAKxwB,KAAMA,KAAKwO,MAAM,EAChDsuB,eAAgB,CAAA,EAChBE,iBAAkB,CAAA,EAClBE,OAAQl9B,KAAKm9B,WAAW3M,KAAKxwB,IAAI,EACpC,EAEI,CAACA,KAAKwO,OAAO0S,kBAAoBlhB,KAAKihB,UAC3CjhB,KAAKihB,QAAQ1X,UACbvJ,KAAKihB,QAAU,QAI3BsuC,EAAervD,UAAUi9B,WAAa,SAAU/qB,GAC5C,IAAI6qB,EAAa7qB,EAAKurB,OAAOr9B,OAC7B,OAAK28B,EAAW7uB,UAAUC,SAASslC,EAAW,GAAM1W,EAAW7uB,UAAUC,SAAS2iD,EAAgB,GAG9FpzB,EAAS5sB,UAAQisB,EAAY,IAAI,EACrCj9B,KAAKwO,OAAOmP,SAAW,GACvB3d,KAAKwO,OAAOsP,SAAW,GACvB9d,KAAKwO,OAAOgB,eAAiB,GAC7BxP,KAAKwO,OAAOgB,eAAiB,CAACouB,GAC9B59B,KAAKwO,OAAOwP,UAAY,GACxBlO,GAAU9P,KAAKwO,OAAQovB,CAAM,EAC7B59B,KAAKwO,OAAOsP,SAAW9d,KAAKmO,YAAYyvB,CAAM,EAC9C59B,KAAKwO,OAAOmP,SAAW3d,KAAKixD,YAAYrzB,EAAQ59B,KAAKwO,OAAOsP,SAAS,GAAGhG,IAAI,EAC5E9X,KAAKwO,OAAOwP,UAAUvQ,KAAKzN,KAAKwO,OAAOsP,SAAS,GAAGhG,IAAI,EACvD8H,GAAyB5f,KAAKwO,MAAM,EAC7BxO,KAAKwO,OAAO4R,oBAbR,MAefmvC,EAAervD,UAAU+wD,YAAc,SAAUrzB,EAAQrxB,GAErD,OAAOsD,GADI7P,KAAKkxD,YAAYtzB,EAAQrxB,CAAI,CACf,GAE7BgjD,EAAervD,UAAUgxD,YAAc,SAAU7kD,EAAME,GACnD,IAAIE,EAAKJ,EAAKK,aAAa,SAAS,EAEpC,OAAOK,GAAQV,EADDrM,KAAKwO,OAAOxB,MAAQP,EAAKF,EACTvM,KAAKwO,OAAOxB,MAAOhN,KAAKwO,MAAM,GAEhE+gD,EAAervD,UAAU0wD,WAAa,SAAUx+C,GACxCiE,EAAY,CACZhJ,QAAS+E,EAAK/F,KACdoK,YAAarE,EAAK++C,SAClBz1C,OAAQ,kBAGZ,GADA1b,KAAKwO,OAAO+H,QAAQ,WAAYF,CAAS,EACrCrW,KAAKwO,QAAUxO,KAAKwO,OAAO+8C,SAAWvrD,KAAKkO,SAAWlO,KAAKkO,QAAQq9C,QAAS,CAC5E,IAAK,IAAIvqD,EAAI,EAAGA,EAAIhB,KAAKkO,QAAQq9C,QAAQ5qD,OAAQK,CAAC,GACe,CAAC,IAA1DhB,KAAKwO,OAAO+8C,QAAQ71C,QAAQ1V,KAAKkO,QAAQq9C,QAAQvqD,EAAE,GACnDhB,KAAKwO,OAAO+8C,QAAQ99C,KAAKzN,KAAKkO,QAAQq9C,QAAQvqD,EAAE,EAGpDhB,KAAKwO,OAAO4iD,SACZpxD,KAAKwO,OAAOqsB,yBAIxB00B,EAAervD,UAAUmxD,SAAW,SAAUz9C,EAAOtT,EAAQgxD,GACzD,IAAIC,EAAcj3C,GAAe1G,CAAK,EAClC49C,EAAkBxxD,KAAKmO,YAAY7N,CAAM,EAC7C,GAAyB,EAArBixD,EAAY5wD,QAAuC,EAAzB6wD,EAAgB7wD,SACZ,MAA7B4wD,EAAY,GAAGxuC,YACZnW,oBAAM4kD,EAAgB,EAAE,GACgB,MAAjCA,EAAgB,GAAGzuC,YACvBwuC,EAAY,GAAGxuC,aACdyuC,EAAgB,GAAGzuC,YAAa,CAGxC,IAFA,IAAIkc,EAAW,EACX9iB,EAAUo1C,EACPtyB,EAAWsyB,EAAY5wD,QAAQ,CAElCwb,EAAQzN,SAASuwB,EAAStwB,WAAY,EAAE,GAAG8iD,SAAW,cACtD,IAAI/B,EAAO,GACPjjD,EAAKD,WAAS,KAAM2P,EAAQ8iB,EAAS,EACpCryB,oBAAMH,CAAE,GACTmO,WAAS,UAAWnO,EAAIijD,CAAI,EAE3BzsC,EAAc9G,EAAQ8iB,EAAS,GAChCrkB,WAAS,QAASiJ,GAAe1H,EAAQ8iB,EAAS,EAAGywB,CAAI,EAExD9iD,oBAAM8iD,CAAI,GACX90C,WAAS,eAAgB80C,EAAMvzC,EAAQ8iB,EAAS,EAEpDA,CAAQ,GAER5xB,EAAUwL,SAAO,cAAgBvY,EAAS,KAAMN,KAAKkO,QAAQb,OAAO,EACpEqkD,EAAgB74C,SAAO,KAAMxL,CAAO,EACpCT,oBAAM8kD,CAAa,GACnB1xD,KAAKkO,QAAQyjD,SAASJ,EAAajxD,EAAQ,KAAMgxD,CAAO,IAKpE/B,EAAervD,UAAU+vD,gBAAkB,SAAU79C,GACjD,IAQQ++C,EAUQ96C,EAcJu7C,GAhCPx/C,EAAKwiB,cAAiB50B,KAAK6xD,cAC3B7xD,KAAK8xD,mBAAsB9xD,KAAK+xD,eAAkB/xD,KAAKgyD,iBAAkBhyD,CAAAA,KAAKiyD,kBAK9EjyD,KAAKkyD,eACNlyD,KAAKwO,OAAOmB,aAAe,iBACvBwhD,EAAWnxD,KAAKmO,YAAY3B,WAAS,KAAM4F,EAAK++C,QAAQ,CAAC,EACzD/+C,EAAK/F,KAAKK,aAAa,UAAU,IAAM1M,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,IAAM,CAACX,KAAK6xD,cAAgB,CAAC7xD,KAAKmyD,mBAAqBnyD,KAAK8xD,mBAAqB9xD,KAAK+xD,eAC5K/xD,KAAK8xD,kBAAoB,CAAA,EACzB9xD,KAAKmyD,kBAAoB,CAAA,EACpBnyD,KAAK8xD,oBACN9xD,KAAK8xD,kBAAoB,CAAA,EACrBF,EAAiB,CAAEtiD,OAAQ8C,EAAK9C,OAAQmH,YAAa06C,EAAS,GAAIv8B,aAAcxiB,EAAKwiB,cACzF50B,KAAKwO,OAAO+H,QAAQ,aAAcq7C,CAAc,GAE/C5xD,KAAK6xD,eACFx7C,EAAY,CAAEkK,OAAQ,CAAA,EAAO9J,YAAa06C,EAAS,GAAIz1C,OAAQ,kBACnE1b,KAAKwO,OAAO+H,QAAQ,WAAYF,CAAS,EACzCjE,EAAKmO,OAASlK,EAAUkK,QAExBnO,EAAKmO,SACLvgB,KAAKiyD,kBAAoBjyD,CAAAA,CAAAA,KAAKmyD,mBAAoBnyD,KAAK8sB,iBAAiB,KAAO1a,EAAK/F,KAAKK,aAAa,UAAU,EAChH1M,KAAKmyD,kBAAoB,CAAA,EACzBnyD,KAAK8xD,kBAAoB,CAAA,EACzB9xD,KAAK+xD,cAAgB,CAAA,EACrB/xD,KAAK8sB,iBAAmB9sB,KAAKkO,QAAQc,cACrChP,KAAKkO,QAAQrB,cAAc,CAAEmC,cAAe,CAACoD,EAAK/F,KAAKK,aAAa,UAAU,GAAI,IAGjF1M,KAAK8sB,iBAAiB,KAAO1a,EAAK/F,KAAKK,aAAa,UAAU,IAC/DklD,EAAiB,CAAEtiD,OAAQ8C,EAAK9C,OAAQmH,YAAa06C,EAAS,GAAIv8B,aAAc50B,KAAKmyD,mBACzFnyD,KAAKwO,OAAO+H,QAAQ,aAAcq7C,CAAc,KA/BpD5xD,KAAKiyD,kBAAoB,CAAA,EACzBjyD,KAAKmyD,kBAAoB,CAAA,IAmCjC5C,EAAervD,UAAUs2C,2BAA6B,SAAUnqC,GAC5D,IAAIhK,EAAOrC,KAAKkO,QAAQC,YAAY9B,CAAI,EAKpCgK,GAJJrW,KAAKwO,OAAO+B,cAAgB,GAC5BvQ,KAAKwO,OAAO8D,SAAWjQ,EACvBrC,KAAKyzC,WAAapnC,EAEF,CAAEkU,OAAQ,EAD1BvgB,KAAKwO,OAAOmB,aAAe,kBACM8G,YAAapU,EAAK,GAAIqZ,OAAQ,mBAC/D1b,KAAKwO,OAAO+H,QAAQ,WAAYF,CAAS,EACzCrW,KAAKmyD,kBAAoB,CAAA,EACpB97C,EAAUkK,SACXnU,GAAWC,EAAMrM,KAAKwO,OAAO8D,SAAS,GAAItS,KAAKwO,MAAM,EACrD+D,EAAKvS,KAAKwO,OAAQxO,KAAK+xD,cAAgB3yC,GAAkB2N,EAAoB/sB,KAAKwO,OAAO1B,IAAI,EAC7F9M,KAAKwO,OAAO4pB,YAAc/rB,EAC1BrM,KAAK+xD,cAAgB/xD,KAAKgyD,eAAiBhyD,KAAK6xD,aAAe,CAAA,EAC/D7xD,KAAKkO,QAAQrB,cAAc,CAAEmC,cAAe,CAAC3C,EAAKK,aAAa,UAAU,GAAI,IAGrF6iD,EAAervD,UAAUiwD,eAAiB,SAAU/9C,GAOhD,IASIo3C,EAfAxpD,KAAKwO,OAAO0B,qBAAuBlQ,KAAKwO,OAAO0B,oBAAoBC,WAAa,CAACnQ,KAAKkyD,eACtFlyD,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,MAAQ,GAC1DpQ,KAAKwO,OAAO6B,WAAa,CAAA,EACzBrQ,KAAKmyD,kBAAoB,CAAA,GAE7BnyD,KAAKwO,OAAO8xB,cAAgB,GACvBluB,EAAKwiB,cAAiB50B,KAAK6xD,cAAiB7xD,KAAK8xD,mBAAsB9xD,KAAK+xD,eAAkB/xD,KAAKgyD,gBAIxGhyD,KAAKyzC,WAAarhC,EAAK/F,KACvBrM,KAAKwO,OAAOmB,aAAe,iBACvBwhD,EAAWnxD,KAAKmO,YAAY3B,WAAS,KAAM4F,EAAK++C,QAAQ,CAAC,EAC7DnxD,KAAKwO,OAAO+B,cAAgB,GAC5BvQ,KAAKwO,OAAO8D,SAAW6+C,EACnB3H,EAAexpD,KAAKwO,OAAO1B,KAC3B,CAAC9M,KAAK6xD,cAAgB7xD,KAAK8xD,kBAC3B1lD,GAAWgG,EAAK/F,KAAMrM,KAAKwO,OAAO8D,SAAS,GAAItS,KAAKwO,MAAM,GAG1DxO,KAAKwO,OAAOvB,OAASC,GAAUkF,EAAK/F,KAAMrM,KAAKwO,MAAM,EACrDxO,KAAKwO,OAAO4pB,YAAchmB,EAAK/F,MAE/B+F,EAAK/F,KAAKgN,cAAc,IAAMg0B,EAAS,GAAsD,OAAjDj7B,EAAK/F,KAAKgN,cAAc,IAAMrL,CAAa,IACvFhO,KAAKoyD,iBAAmB,OAExB5I,IAAiBxpD,KAAKwO,OAAO1B,OACzB,CAAC9M,KAAK6xD,cAAgB7xD,KAAK8xD,mBAC3Bv/C,EAAKvS,KAAKwO,OAAQxO,KAAK+xD,cAAgB3yC,GAAkB2N,EAAoB/sB,KAAKwO,OAAO1B,IAAI,EAEjG9M,KAAKwO,OAAO4pB,YAAchmB,EAAK/F,MAEnCrM,KAAK+xD,cAAgB/xD,KAAKgyD,eAAiBhyD,KAAK6xD,aAAe7xD,KAAK8xD,kBAAoB,CAAA,GAzBpF9xD,KAAKwO,OAAOvB,OAASC,GAAUkF,EAAK/F,KAAMrM,KAAKwO,MAAM,GA4B7D+gD,EAAervD,UAAUmyD,WAAa,SAAUjgD,GAC5CpS,KAAK+xD,cAAgB,CAAA,EACrB/xD,KAAKsyD,iBAAiBlgD,EAAK,EAAE,GAGjCm9C,EAAervD,UAAUmwD,aAAe,SAAUj+C,GAC9C,IAOQzE,EACAhB,EACAG,GATHsF,EAAKwiB,cAAiB50B,KAAKuyD,SAGqB,OAAjDngD,EAAK/F,KAAKgN,cAAc,IAAMrL,CAAa,IAC3ChO,KAAKwyD,mBAAqB,CAAA,EACtBrB,EAAWnxD,KAAKmO,YAAY3B,WAAS,KAAM4F,EAAK++C,QAAQ,CAAC,EACzD1kD,EAAK2F,EAAK/F,KAAKK,aAAa,SAAS,EACrCiB,EAAOf,CAAAA,oBAAMH,CAAE,EACfE,EAAUC,oBAAMH,CAAE,EAAI0kD,EAAS,GAAGr5C,KAAOrL,EACzCK,EAAOC,GAAQqF,EAAK/F,KAAMM,EAASgB,EAAM3N,KAAKwO,MAAM,EACxDxO,KAAKoyD,iBAAmBhgD,EAAK/F,KAAKK,aAAa,UAAU,EACzD1M,KAAKwO,OAAO8Q,WAAatf,KAAKoyD,iBAC9BpyD,KAAKwO,OAAO8D,SAAWtS,KAAKmO,YAAY3B,WAAS,KAAM4F,EAAK++C,QAAQ,CAAC,EACrEnxD,KAAKwO,OAAOvB,OAAOQ,KAAKjB,WAAS,KAAM4F,EAAK++C,QAAQ,CAAC,EACrD5+C,EAAKvS,KAAKwO,OAAQikD,GAAmB3lD,CAAI,IAIjDyiD,EAAervD,UAAUwyD,eAAiB,SAAUtgD,GAChDpS,KAAKqxD,SAASj/C,EAAKwB,MAAO5T,KAAKoyD,iBAAkB,CAAA,CAAK,EACtDpyD,KAAKwO,OAAO8Q,WAAa,KACzBtf,KAAKwyD,mBAAqB,CAAA,GAE9BjD,EAAervD,UAAUqwD,cAAgB,SAAUn+C,GAI/C,IAOQgkC,EAVRp2C,KAAKwO,OAAOmB,aAAe,iBAC3B3P,KAAK8sB,iBAAmB9sB,KAAKkO,QAAQc,cACrChP,KAAKyzC,WAAarhC,EAAK/F,KACG,IAArB+F,EAAKgP,MAAMoV,OAAiBpkB,EAAK/F,KAAKK,aAAa,UAAU,IAAM1M,KAAKkO,QAAQc,cAAc,IAC/FhP,KAAK6xD,aAAe,CAAA,EACpB7xD,KAAKmyD,kBAAoB,CAAA,EACzBnyD,KAAKkO,QAAQrB,cAAc,CAAEmC,cAAe,CAACoD,EAAK/F,KAAKK,aAAa,UAAU,GAAI,GAE7E0F,EAAK/F,KAAKK,aAAa,UAAU,IAAM1M,KAAKkO,QAAQc,cAAc,IAA2C,IAArChP,KAAKwO,OAAO+B,cAAc5P,QACvGX,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACjD6lC,EAA+B,eAArBp2C,KAAKwO,OAAO4F,KAAyB,iBAAmB,cACtEpU,KAAKwO,OAAOW,OAAO4yB,EAAqB,CAAErmB,OAAQ06B,EAAQ1S,QAAS,CAAEnzB,cAAe,IAAM,GAErF6B,EAAK/F,KAAKK,aAAa,UAAU,IAAM1M,KAAKkO,QAAQc,cAAc,IAAOhP,KAAKmyD,mBAAsBnyD,KAAKwyD,qBACrF,IAArBpgD,EAAKgP,MAAMoV,QACXx2B,KAAK6xD,aAAe,CAAA,GAExB7xD,KAAK8xD,kBAAoB,CAAA,EACzB9xD,KAAKmyD,kBAAoB,CAAA,IAIjC5C,EAAervD,UAAUwwD,cAAgB,SAAUt+C,GAC1CxF,oBAAMwF,EAAKugD,SAAS,IACrBvgD,EAAKmO,OAAS,CAAA,IAGtBgvC,EAAervD,UAAUmgC,cAAgB,SAAUjuB,GAC/CpS,KAAKwO,OAAOM,MAAQ,CAAA,EACpB,IAGQiqB,EAHJ65B,EAAYpmD,WAASxM,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAAIX,KAAKwO,OAAOgK,OAAO,EACjE,QAA1BxY,KAAKoyD,mBACDS,EAAQh6C,SAAO,cAAgB7Y,KAAKkO,QAAQc,cAAc,GAAK,KAAMhP,KAAKkO,QAAQb,OAAO,EACzF0rB,EAAOnsB,oBAAMimD,CAAK,EAA4C,KAAvCh6C,SAAO,IAAMsiB,GAAiB03B,CAAK,EAC1DjmD,oBAAMmsB,CAAE,GACR/4B,KAAKqxD,SAASj/C,EAAKwB,MAAO5T,KAAKkO,QAAQc,cAAc,GAAI,CAAA,CAAI,EAEjEhP,KAAKoyD,iBAAmB,IAExBxlD,oBAAMgmD,CAAS,GACfh4C,WAAS5a,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAAIyR,EAAKwB,MAAO5T,KAAKwO,OAAOgK,OAAO,EAE3FxY,KAAKwO,OAAO0L,UAAUq4B,iBAAmB,CAAEvyC,KAAKwO,OAAY,OAC5DxO,KAAK8yD,WAAW1gD,CAAI,GAG5Bm9C,EAAervD,UAAU4yD,WAAa,SAAU1gD,GAC5C,IACQ3F,EADJzM,KAAKkO,UACDzB,EAAKzM,KAAKkO,QAAQc,cAAc,GACpChP,KAAK+yD,eAAe3gD,EAAM3F,CAAE,IAGpC8iD,EAAervD,UAAU6yD,eAAiB,SAAU3gD,EAAM3F,GACtD,IAAIumD,EAAsD,CAAC,IAA5ChzD,KAAKkO,QAAQ+kD,cAAcv9C,QAAQjJ,CAAE,EACpDzM,KAAKkzD,iBAAiBzmD,CAAE,EACxBzM,KAAKqxD,SAASj/C,EAAKwB,MAAOnH,EAAI,CAACumD,CAAQ,GAE3CzD,EAAervD,UAAUgzD,iBAAmB,SAAUzmD,GAC9ComD,EAAQh6C,SAAO,cAAgBpM,EAAK,KAAMzM,KAAKkO,QAAQb,OAAO,EAC9DmB,EAASqK,SAAO,IAAMsiB,GAAiB03B,CAAK,EAC5CM,EAAS3kD,EAAS9O,MAAMQ,UAAUwR,MAAMsV,KAAKxY,EAAO4C,QAAQ,EAAI,KAChE+hD,GACAnzD,KAAKkO,QAAQklD,YAAYD,CAAM,GAGvC5D,EAAervD,UAAUmzD,UAAY,SAAUjhD,GAC3C,IAAIkhD,EAAQtzD,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAC3DX,KAAKkO,QAAQqlD,UAAUvzD,KAAKkO,QAAQc,aAAa,EACjDhP,KAAKkO,QAAQrB,cAAc,CAAEmC,cAAe,CAACskD,GAAQ,EACrDtzD,KAAKoyD,iBAAmB,MACxBpyD,KAAKqgC,cAAcjuB,CAAI,GAE3Bm9C,EAAervD,UAAUsgC,WAAa,SAAUpuB,GACX,mBAA7BpS,KAAKwO,OAAOmB,cACRyC,EAAK9R,OAAO+Y,cAAc,IAAMg0B,EAAS,GACzCrtC,KAAKkO,QAAQqlD,UAAUvzD,KAAKkO,QAAQc,aAAa,GAI7DugD,EAAervD,UAAU4lD,aAAe,SAAU1zC,GAC9CpS,KAAKwvD,SACLxvD,KAAKqxD,SAASj/C,EAAKwB,MAAOpH,WAAS,SAAU4F,EAAKkM,GAAG,EAAG,CAAA,CAAK,GAEjEixC,EAAervD,UAAUy/B,cAAgB,SAAUvtB,GAC/CpS,KAAKwvD,SACL,IAAI/iD,EAAKD,WAAS,SAAU4F,EAAKkM,GAAG,EACpCte,KAAKqxD,SAASj/C,EAAKwB,MAAOnH,EAAI,CAAA,CAAK,EACnCzM,KAAKkO,QAAQrB,cAAc,CAAEmC,cAAe,CAAChP,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,IAAK,GAErG4uD,EAAervD,UAAU0/B,YAAc,SAAUxtB,GAC7CpS,KAAK8yD,WAAW1gD,CAAI,GAExBm9C,EAAervD,UAAU4/B,eAAiB,WACL,mBAA7B9/B,KAAKwO,OAAOmB,cACZ3P,KAAKwzD,kBAGbjE,EAAervD,UAAU8/B,aAAe,WACpC,IAEQniB,EAFyB,mBAA7B7d,KAAKwO,OAAOmB,eACZ3P,KAAKyzD,mBACD51C,EAASrR,WAAS,OAAQxM,KAAKwO,OAAO8D,SAAS,EAAE,EACrDmR,GAAOzjB,KAAKwO,OAAQ,CAACqP,GAAS7d,KAAKwO,OAAO1B,KAAM,QAAQ,IAIhEyiD,EAAervD,UAAU+/B,YAAc,SAAU7tB,GAC7C,IAGQshD,EAHyB,mBAA7B1zD,KAAKwO,OAAOmB,eACRmN,EAAe9c,KAAKkO,QAAQc,cAAc,GAC1C2kD,EAAc96C,SAAO,cAAgBiE,EAAe,KAAM9c,KAAKkO,QAAQb,OAAO,EAC9EqmD,EAAkB1iD,UAAQ2iD,EAAa,IAAMx4B,EAAe,EAAE7Y,cAClEtiB,KAAKkO,QAAQc,cAAgB,CAAC0kD,EAAgBhnD,aAAa,UAAU,GACrE1M,KAAKkO,QAAQ2kB,YAEjB7yB,KAAK8yD,WAAW1gD,CAAI,GAExBm9C,EAAervD,UAAUggC,aAAe,SAAU9tB,GAC9CpS,KAAK8yD,WAAW1gD,CAAI,GAExBm9C,EAAervD,UAAUigC,aAAe,WACH,mBAA7BngC,KAAKwO,OAAOmB,cACZ3P,KAAKogC,oBAIbmvB,EAAervD,UAAU0zD,kBAAoB,SAAUxhD,GACnD,IAqBYyhD,EArBRpnD,EAAKzM,KAAKkyD,cAAmClyD,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAChGX,KAAK+yD,eAAe3gD,EAAM3F,CAAE,EAC5BzM,KAAKwO,OAAO8Q,WAAa,KACrBtf,KAAKkyD,aACLlyD,KAAKkyD,aAAe,MAGhB3oB,EAAa,GACbvpC,KAAKwO,OAAOxB,MACZu8B,EAAa,IAAIz2B,cAAY9S,KAAKkO,QAAQC,aAAa,EACnD4E,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAASjT,KAAKwO,OAAO2nB,UAAW,CAAA,CAAK,CAAC,EAK5D,GAFf29B,EAAQ,IAAIhhD,cAAY9S,KAAKkO,QAAQC,aAAa,EAClD4E,cAAa,IAAIC,SAAQC,MAAMjT,KAAKkO,QAAQsrB,OAAOjtB,KAAM,QAASvM,KAAKwO,OAAOqe,WAAY,CAAA,CAAK,CAAC,GAC1FlsB,SACN4oC,EAAa,IAAIz2B,cAAYghD,CAAK,EAC9B/gD,cAAa,IAAIC,SAAQC,MAAM,UAAW,QAASxG,EAAI,CAAA,CAAK,CAAC,GAGjD,EAApB88B,EAAW5oC,SACPkzD,EAAsC,EAA/B7zD,KAAK8sB,iBAAiBnsB,QAA4E,IAA9DX,KAAKkO,QAAQC,YAAYnO,KAAK8sB,iBAAiB,EAAE,EAAEnsB,OAC5FX,KAAK8sB,iBAAiB,GAAKtgB,WAASxM,KAAKkO,QAAQsrB,OAAO/sB,GAAI88B,EAAW,EAAE,EAC/EvpC,KAAKkO,QAAQc,cAAgB,CAAC6kD,GAC9B7zD,KAAKkO,QAAQ2kB,WACb7yB,KAAKwzD,oBAKjBjE,EAAervD,UAAU6wC,YAAc,SAAU3+B,GAC7C,IAKQm3B,EAMIuqB,EAXoD,KAA5D9zD,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBpQ,KAAKwO,OAAO6B,YAI3EhO,EAAOrC,KAAKkO,QAAQC,cACpBo7B,EAAa,GACbvpC,KAAKwO,OAAOxB,MACZu8B,EAAa,IAAIz2B,cAAYzQ,CAAI,EAC7B0Q,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAASjT,KAAKwO,OAAO2nB,UAAW,CAAA,CAAK,CAAC,EAK5D,GAFf29B,EAAQ,IAAIhhD,cAAYzQ,CAAI,EAC5B0Q,cAAa,IAAIC,SAAQC,MAAMjT,KAAKkO,QAAQsrB,OAAOjtB,KAAM,QAASvM,KAAKwO,OAAOqU,gBAAiB,CAAA,CAAK,CAAC,GAC/FliB,SACN4oC,EAAa,IAAIz2B,cAAYghD,CAAK,EAC9B/gD,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASjT,KAAKwO,OAAOuU,WAAY,CAAA,CAAK,CAAC,GAGxE,EAApBwmB,EAAW5oC,SACXX,KAAKkyD,aAAe1lD,WAASxM,KAAKkO,QAAQsrB,OAAOo2B,SAAUrmB,EAAW,EAAE,EACxEvpC,KAAKwO,OAAO8Q,WAAatf,KAAKkyD,aAC9BlyD,KAAKwO,OAAO8D,SAAWtS,KAAKmO,YAAYnO,KAAKkyD,YAAY,EACzD3/C,EAAKvS,KAAKwO,OAAQoe,GAAwB5sB,KAAKwO,OAAOuU,WAAW9L,QAAQ,MAAO,GAAG,CAAC,IArBxFjX,KAAK8yD,WAAW1gD,CAAI,GAyB5Bm9C,EAAervD,UAAU8hC,kBAAoB,SAAUzT,GACnD,GAAIA,EAAE7S,SAAW1b,KAAKi+B,iBAAgC,WAAb1P,EAAE7S,OAI3C,IAAK,IAAI8nB,EAAK,EAAGC,EAAKlkC,OAAOojB,KAAK4L,EAAEmV,OAAO,EAAGF,EAAKC,EAAG9iC,OAAQ6iC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,mBACDxjC,KAAK8wD,cACL,MACJ,IAAK,yBACDv+C,EAAKvS,KAAKwO,OAAQ+N,EAAoBvc,KAAKwO,OAAO1B,IAAI,EAClDyhB,EAAEs5B,QAAQ1J,uBAAuBjmC,YAAcqW,EAAEmV,QAAQya,uBAAuBjmC,YAChFlY,KAAKkO,QAAQgK,UAAYqW,EAAEmV,QAAQya,uBAAuBjmC,aAO9Eq3C,EAAervD,UAAU6zD,eAAiB,WACtC/zD,KAAKmjB,cAETosC,EAAervD,UAAUwsD,mBAAqB,SAAUn+B,GACpDvuB,KAAKkO,QAAQrB,cAAc,CAAEmC,cAAe,CAACuf,EAAEzR,cAAe,GAElEyyC,EAAervD,UAAU8zD,gBAAkB,SAAUzlC,GACjDvuB,KAAKkzD,iBAAiB3kC,EAAEzR,YAAY,GAExCyyC,EAAervD,UAAU+zD,UAAY,SAAU7hD,GAC3C,GAAIC,EAAiBrS,KAAKwO,MAAM,EAAG,CAC/BxO,KAAKk0D,UAAY,GAEjB,IADA,IAAI1qC,EAAMxpB,KAAKwO,OAAOsP,SACb9c,EAAI,EAAGA,EAAIwoB,EAAI7oB,OAAQK,CAAC,GACM,CAAA,IAA/BwL,WAAS,SAAUgd,EAAIxoB,EAAE,GACzBhB,KAAKk0D,UAAUzmD,KAAKjB,WAAS,SAAUgd,EAAIxoB,EAAE,CAAC,EAI1D,IAAIkzD,EAAY,GAEZA,EADAl0D,KAAKwO,OAAOwQ,cAAgBhf,KAAKwO,OAAO0Q,aAC5Blf,KAAKm0D,aAAa/hD,EAAKwB,MAAO5T,KAAKwO,OAAO0Q,aAAclf,KAAKwO,OAAOmP,QAAQ,EAG5E3d,KAAKk0D,UAErBl0D,KAAKkO,QAAQklD,YAAYc,CAAS,GAEtC3E,EAAervD,UAAUi0D,aAAe,SAAUvgD,EAAOshB,EAAMpoB,GAE3D,IADA,IAAIonD,EAAY,GACPlzD,EAAI,EAAGA,EAAI4S,EAAMjT,OAAQK,CAAC,GAC/B,GAAI,CAAC4S,EAAM5S,GAAG8hB,QACN,CAAC9iB,KAAKwO,OAAOxB,MAUb,IATA,IAGQsc,EAHJ0gB,EAAUp2B,EAAM5S,GAAe,aAO/BuoC,GANArU,IAEI5L,GADJxc,GAAc8G,EAAM5S,GAAGozD,cACNt4C,YAAY,GAAG,EAChCkuB,EAASl9B,EAAK+O,UAAUyN,EAAQ,CAAC,EACjCxc,EAAOA,EAAK+O,UAAU,EAAGyN,EAAQ,CAAC,GAErB,IAAIxW,cAAY9S,KAAKkO,QAAQC,aAAa,EACvD4E,cAAa,IAAIC,SAAQC,MAAMjT,KAAKkO,QAAQsrB,OAAOjtB,KAAM,QAASy9B,EAAQ,CAAA,CAAK,CAAC,GAC3EX,EAAI,EAAGA,EAAIE,EAAW5oC,OAAQ0oC,CAAC,GAGpC,GAFY78B,WAAS,aAAc+8B,EAAWF,EAAE,EAClCpyB,QAAQ,MAAO,GAAG,IAClBnK,EAAM,CAChBonD,EAAUzmD,KAAKjB,WAASxM,KAAKkO,QAAQsrB,OAAO/sB,GAAI88B,EAAWF,EAAE,CAAC,EAC9D,MAMpB,OAAO6qB,GAEX3E,EAAervD,UAAUm0D,SAAW,SAAUjiD,GAC1C,IAAI8hD,EAAY,GACZl0D,KAAKwO,OAAOwQ,cAAgBhf,KAAKwO,OAAOe,YACxCvP,KAAKk0D,UAAYl0D,KAAKm0D,aAAa/hD,EAAKwB,MAAO5T,KAAKwO,OAAOe,YAAavP,KAAKwO,OAAOoB,UAAU,EAG9FskD,EAAYl0D,KAAKk0D,UAErBl0D,KAAKkO,QAAQklD,YAAYc,CAAS,GAGtC3E,EAAervD,UAAUoyD,iBAAmB,SAAUgC,GAClD,IAMY/qB,EAGI98B,EATXzM,KAAKwO,OAAOxB,OAgBT8P,EAAe9c,KAAKkO,QAAQC,cAAcmD,OAAO,SAAUkY,GAAO,OAAOA,EAAI1R,OAASw8C,EAAUx8C,KAAO,EAAE,GAC7G9X,KAAKkO,QAAQc,cAAgB,CAACxC,WAAS,SAAUsQ,CAAY,GAC7D9c,KAAKkO,QAAQ2kB,aAjBT/lB,EAAON,WAAS,aAAc8nD,CAAS,EACvCC,EAAW/nD,WAAS,OAAQ8nD,CAAS,EAGvB,GAFdjyD,EAAO,IAAIyQ,cAAY9S,KAAKkO,QAAQC,aAAa,EACjD4E,cAAa,IAAIC,SAAQC,MAAMjT,KAAKkO,QAAQsrB,OAAOjtB,KAAM,QAASgoD,EAAU,CAAA,CAAK,CAAC,GAC7E5zD,QAGmB,GAFpB4oC,EAAa,IAAIz2B,cAAYzQ,CAAI,EACjC0Q,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASnG,EAAM,CAAA,CAAK,CAAC,GACvDnM,SACP8L,EAAKD,WAASxM,KAAKkO,QAAQsrB,OAAO/sB,GAAI88B,EAAW,EAAE,EACvDvpC,KAAKkO,QAAQc,cAAgB,CAACvC,GAC9BzM,KAAKkO,QAAQ2kB,cAU7B08B,EAAervD,UAAUijC,WAAa,SAAU/wB,GAC5CpS,KAAK8iC,WAAW1wB,CAAI,EACpBpS,KAAKsyD,iBAAiBtyD,KAAKwO,OAAO2P,QAAQ,EAC1Cne,KAAKwO,OAAOyQ,UAAY,CAACjf,KAAKwO,OAAOwQ,cAEzCuwC,EAAervD,UAAU4iC,WAAa,SAAU1wB,GAC5C,IAcQ3F,EAdJ88B,EAAa,GACbvpC,KAAKwO,OAAOxB,MACZu8B,EAAa,IAAIz2B,cAAY9S,KAAKkO,QAAQC,aAAa,EACnD4E,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAASzG,WAAS,KAAM4F,EAAKkM,GAAG,EAAG,CAAA,CAAK,CAAC,EAK/D,GAFfw1C,EAAQ,IAAIhhD,cAAY9S,KAAKkO,QAAQC,aAAa,EAClD4E,cAAa,IAAIC,SAAQC,MAAMjT,KAAKkO,QAAQsrB,OAAOjtB,KAAM,QAASC,WAAS,OAAQ4F,EAAKkM,GAAG,EAAG,CAAA,CAAK,CAAC,GAC9F3d,SACN4oC,EAAa,IAAIz2B,cAAYghD,CAAK,EAC9B/gD,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASzG,WAAS,aAAc4F,EAAKkM,GAAG,EAAG,CAAA,CAAK,CAAC,GAGlF,EAApBirB,EAAW5oC,SACP8L,EAAKD,WAASxM,KAAKkO,QAAQsrB,OAAO/sB,GAAI88B,EAAW,EAAE,EACnDypB,EAAsD,CAAC,IAA5ChzD,KAAKkO,QAAQ+kD,cAAcv9C,QAAQjJ,CAAE,EACpDzM,KAAKkzD,iBAAiBzmD,CAAE,EACxBzM,KAAKqxD,SAASj/C,EAAKwB,MAAOnH,EAAIumD,CAAQ,GAE1ChzD,KAAKwO,OAAO8Q,WAAa,KACzBtf,KAAKqgC,cAAcjuB,CAAI,EACnBpS,KAAKwO,OAAOwO,YACZhd,KAAKw0D,cAAcpiD,CAAI,GAI/Bm9C,EAAervD,UAAUs0D,cAAgB,SAAUpiD,GAC3CC,EAAiBrS,KAAKwO,MAAM,IAAMxO,KAAKwO,OAAO1B,OAAS9M,KAAKwO,OAAO7C,UAAyC,mBAA7B3L,KAAKwO,OAAOoG,gBAGpB,CAAC,IAAvE5U,KAAKwO,OAAO7C,SAAS+J,QAAQ2I,GAAiBre,KAAKwO,OAAQ4D,CAAI,CAAC,GACjEpS,KAAKwO,OAAOyQ,UAAY,CAAA,EACxBI,GAAarf,KAAKwO,MAAM,GAGxBxO,KAAKwO,OAAOyQ,UAAY,CAACjf,KAAKwO,OAAOwQ,eAG7CuwC,EAAervD,UAAU2iC,YAAc,WAC/B7iC,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,iBAClCj+B,KAAKwzD,iBAETxzD,KAAKk0D,UAAY,GACjB,IAAI1qC,EAAMxpB,KAAKwO,OAAOwO,WAAahd,KAAKwO,OAAOsP,SAAW9d,KAAKwO,OAAOS,cACtE,GAAKua,GAAQ9pB,MAAMitB,QAAQnD,CAAG,EAG9B,IAAK,IAAIxoB,EAAI,EAAGA,EAAIwoB,EAAI7oB,OAAQK,CAAC,GACM,CAAA,IAA/BwL,WAAS,SAAUgd,EAAIxoB,EAAE,GACzBhB,KAAKk0D,UAAUzmD,KAAKjB,WAAS,SAAUgd,EAAIxoB,EAAE,CAAC,GAI1DuuD,EAAervD,UAAU6iC,cAAgB,WACjC/iC,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,kBAClCj+B,KAAKwO,OAAOyB,cAAgBjQ,KAAKmO,YAAYnO,KAAKkO,QAAQc,cAAc,EAAE,EAC1EhP,KAAKwO,OAAOgB,eAAiB,CAACxP,KAAKyzC,cAG3C8b,EAAervD,UAAUw7B,iBAAmB,WACxC17B,KAAKwO,OAAO80B,GAAGvB,EAAqB/hC,KAAKgiC,kBAAmBhiC,IAAI,EAChEA,KAAKwO,OAAO80B,GAAGmT,GAAqBz2C,KAAK+zD,eAAgB/zD,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAG9mB,GAAmBxc,KAAK8lD,aAAc9lD,IAAI,EACzDA,KAAKwO,OAAO80B,GAAG/mB,EAAoBvc,KAAK2/B,cAAe3/B,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAGvW,EAAoB/sB,KAAKqgC,cAAergC,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAGlkB,GAAiBpf,KAAK8iC,WAAY9iC,IAAI,EACrDA,KAAKwO,OAAO80B,GAAG5kB,GAAe1e,KAAKq0D,SAAUr0D,IAAI,EACjDA,KAAKwO,OAAO80B,GAAGjmB,GAAkBrd,KAAK6iC,YAAa7iC,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGmvB,GAAmBzyD,KAAK0yD,eAAgB1yD,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAG/W,GAAkBvsB,KAAK4/B,YAAa5/B,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGzB,GAAqB7hC,KAAK8/B,eAAgB9/B,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAG7S,GAAmBzwB,KAAKggC,aAAchgC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGlW,GAAkBptB,KAAKigC,YAAajgC,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGvuB,GAAmB/U,KAAKkgC,aAAclgC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGiN,GAA4BvwC,KAAK0sD,mBAAoB1sD,IAAI,EACxEA,KAAKwO,OAAO80B,GAAGxB,GAAiB9hC,KAAKwgC,WAAYxgC,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGnuB,GAAgBnV,KAAKqzD,UAAWrzD,IAAI,EACnDA,KAAKwO,OAAO80B,GAAG4N,GAAgBlxC,KAAKuJ,QAASvJ,IAAI,EACjDA,KAAKwO,OAAO80B,GAAGlB,GAAmBpiC,KAAKmgC,aAAcngC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGtW,EAAkBhtB,KAAK+wC,YAAa/wC,IAAI,EACvDA,KAAKwO,OAAO80B,GAAG1W,GAAwB5sB,KAAK4zD,kBAAmB5zD,IAAI,EACnEA,KAAKwO,OAAO80B,GAAGzmB,GAAsB7c,KAAKg0D,gBAAiBh0D,IAAI,EAC/DA,KAAKwO,OAAO80B,GAAG7zB,GAAoBzP,KAAK+iC,cAAe/iC,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAGxiB,GAAiB9gB,KAAK+9B,WAAY/9B,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGf,GAAqBviC,KAAKwiC,eAAgBxiC,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAG7kB,GAAgBze,KAAKi0D,UAAWj0D,IAAI,EACnDA,KAAKwO,OAAO80B,GAAGjhB,GAAiBriB,KAAKy0D,WAAYz0D,IAAI,EACrDA,KAAKwO,OAAO80B,GAAG7jB,GAAiBzf,KAAKmjC,WAAYnjC,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGN,EAAoBhjC,KAAKijC,cAAejjC,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAG/jB,GAAiBvf,KAAKqyD,WAAYryD,IAAI,GAEzDuvD,EAAervD,UAAUy4B,oBAAsB,WAC3C34B,KAAKwO,OAAOozB,IAAIplB,GAAmBxc,KAAK8lD,YAAY,EACpD9lD,KAAKwO,OAAOozB,IAAI6U,GAAqBz2C,KAAK+zD,cAAc,EACxD/zD,KAAKwO,OAAOozB,IAAIrlB,EAAoBvc,KAAK2/B,aAAa,EACtD3/B,KAAKwO,OAAOozB,IAAIC,GAAqB7hC,KAAK8/B,cAAc,EACxD9/B,KAAKwO,OAAOozB,IAAIG,EAAqB/hC,KAAKgiC,iBAAiB,EAC3DhiC,KAAKwO,OAAOozB,IAAI7U,EAAoB/sB,KAAKqgC,aAAa,EACtDrgC,KAAKwO,OAAOozB,IAAIxiB,GAAiBpf,KAAK8iC,UAAU,EAChD9iC,KAAKwO,OAAOozB,IAAIljB,GAAe1e,KAAKq0D,QAAQ,EAC5Cr0D,KAAKwO,OAAOozB,IAAIvkB,GAAkBrd,KAAK6iC,WAAW,EAClD7iC,KAAKwO,OAAOozB,IAAI2O,GAA4BvwC,KAAK0sD,kBAAkB,EACnE1sD,KAAKwO,OAAOozB,IAAI6wB,GAAmBzyD,KAAK0yD,cAAc,EACtD1yD,KAAKwO,OAAOozB,IAAIrV,GAAkBvsB,KAAK4/B,WAAW,EAClD5/B,KAAKwO,OAAOozB,IAAI7sB,GAAmB/U,KAAKkgC,YAAY,EACpDlgC,KAAKwO,OAAOozB,IAAIE,GAAiB9hC,KAAKwgC,UAAU,EAChDxgC,KAAKwO,OAAOozB,IAAIzsB,GAAgBnV,KAAKqzD,SAAS,EAC9CrzD,KAAKwO,OAAOozB,IAAIsP,GAAgBlxC,KAAKuJ,OAAO,EAC5CvJ,KAAKwO,OAAOozB,IAAIQ,GAAmBpiC,KAAKmgC,YAAY,EACpDngC,KAAKwO,OAAOozB,IAAI5U,EAAkBhtB,KAAK+wC,WAAW,EAClD/wC,KAAKwO,OAAOozB,IAAIhV,GAAwB5sB,KAAK4zD,iBAAiB,EAC9D5zD,KAAKwO,OAAOozB,IAAI/kB,GAAsB7c,KAAKg0D,eAAe,EAC1Dh0D,KAAKwO,OAAOozB,IAAInR,GAAmBzwB,KAAKggC,YAAY,EACpDhgC,KAAKwO,OAAOozB,IAAIxU,GAAkBptB,KAAKigC,WAAW,EAClDjgC,KAAKwO,OAAOozB,IAAInyB,GAAoBzP,KAAK+iC,aAAa,EACtD/iC,KAAKwO,OAAOozB,IAAI9gB,GAAiB9gB,KAAK+9B,UAAU,EAChD/9B,KAAKwO,OAAOozB,IAAInjB,GAAgBze,KAAKi0D,SAAS,EAC9Cj0D,KAAKwO,OAAOozB,IAAIvf,GAAiBriB,KAAKy0D,UAAU,EAChDz0D,KAAKwO,OAAOozB,IAAIniB,GAAiBzf,KAAKmjC,UAAU,EAChDnjC,KAAKwO,OAAOozB,IAAIoB,EAAoBhjC,KAAKijC,aAAa,EACtDjjC,KAAKwO,OAAOozB,IAAIW,GAAqBviC,KAAKwiC,cAAc,EACxDxiC,KAAKwO,OAAOozB,IAAIriB,GAAiBvf,KAAKqyD,UAAU,GAGpD9C,EAAervD,UAAU+iC,cAAgB,WACrC,IACQyxB,EADJ10D,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,kBAC9By2B,EAAU10D,KAAKmO,YAAYnO,KAAKkO,QAAQc,cAAc,EAAE,EAC5DhP,KAAKwO,OAAO8D,SAAWoiD,IAG/BnF,EAAervD,UAAUsiC,eAAiB,SAAUpwB,GAC5CpS,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,kBAC9BmT,EAAQpgC,UAAQoB,EAAK9R,OAAQ,IAAI,EACrCN,KAAKwO,OAAO8D,SAAWtS,KAAKmO,YAAYijC,EAAM1kC,aAAa,UAAU,CAAC,IAI9E6iD,EAAervD,UAAUu0D,WAAa,SAAUriD,GAC5C,IAGQuiD,EAHJ10C,EAAMjP,UAAQoB,EAAK9R,OAAQ,IAAI,EAC/B2f,EAAI7R,UAAUC,SAAS,kBAAkB,IACzCrO,KAAKuyD,OAAS,CAAA,EACVoC,EAAQjmD,SAASuR,EAAIvT,aAAa,YAAY,EAAG,EAAE,EACvD1M,KAAKkO,QAAQqlD,UAAU,CAACtzC,EAAIvT,aAAa,UAAU,GAAIioD,EAAQ,CAAC,EAChE30D,KAAKuyD,OAAS,CAAA,IAGtBhD,EAAervD,UAAU69B,WAAa,SAAU3rB,GACxCpS,KAAKwO,OAAOoG,eAAiB5U,KAAKi+B,kBAC9BC,EAASltB,UAAQoB,EAAK9R,OAAQ,IAAI,EACtCN,KAAKwO,OAAO2P,SAAWne,KAAKmO,YAAY+vB,CAAM,EAAE,GAChDl+B,KAAKwO,OAAO7C,SAAW3L,KAAKkxD,YAAYhzB,EAAQ1xB,WAAS,OAAQxM,KAAKwO,OAAO2P,QAAQ,CAAC,IAS9FoxC,EAAervD,UAAU+9B,cAAgB,WACrC,MAAO,kBAEXsxB,EAAervD,UAAUqJ,QAAU,WAC3BvJ,KAAKwO,OAAOmzB,cAGhB3hC,KAAK24B,sBACD34B,KAAKkO,UACLlO,KAAK04B,eACL14B,KAAKkO,QAAQ3E,aAGrBgmD,EAAervD,UAAUy7B,WAAa,WAClC37B,KAAK6jC,eAAiB,IAAIC,iBAAe9jC,KAAKkO,QAAQb,QAAS,CAC3D02B,UAAW/jC,KAAK40D,QAAQpkC,KAAKxwB,IAAI,EACjCikC,WAAYjkC,KAAKikC,WACjB3nB,UAAW,UACd,GAELizC,EAAervD,UAAUw4B,aAAe,WACpC14B,KAAK6jC,eAAet6B,WAGxBgmD,EAAervD,UAAU00D,QAAU,SAAUrmC,GACzC,IA2CgBlsB,EA1ChB,OADaksB,EAAEjf,QAEX,IAAK,WACDtP,KAAKwO,OAAOW,OAAO6zB,EAAoB,EAAE,EACzC3c,GAAWrmB,KAAKwO,OAAQ,GAAIxO,KAAKwO,OAAO1B,KAAM,SAAS,EACvD,MACJ,IAAK,MACD+B,GAAa7O,KAAKwO,MAAM,EACxB,MACJ,IAAK,MACGxO,KAAKwO,OAAOvB,OAAO,KAAOjN,KAAKyzC,WAAW/mC,aAAa,UAAU,IACjE1M,KAAKwzD,iBACAvwC,EAAcjjB,KAAKwO,OAAO8D,SAAS,EAAE,GAItCtS,KAAKozD,YAAc,GACnB71C,EAAavd,KAAKwO,OAAQ,QAAQ,GAJlCwG,EAAmBhV,KAAKwO,OAAQxO,KAAKwO,OAAO8D,SAAS,GAAI4Q,CAAqB,GAOtF,MACJ,IAAK,QACD9N,GAAUpV,KAAKwO,MAAM,EACrB,MACJ,IAAK,QACDxO,KAAKwO,OAAOyO,WAAa,GACzBF,GAAa/c,KAAKwO,MAAM,EACxB,MACJ,IAAK,QACD8G,GAAStV,KAAKwO,MAAM,EACpB,MACJ,IAAK,WACDxO,KAAKwzD,iBACApwC,GAAkBpjB,KAAKwO,OAAO8D,SAAS,EAAE,EAIL,IAArCtS,KAAKwO,OAAO+B,cAAc5P,QAC1BX,KAAKmjB,aAJLnO,EAAmBhV,KAAKwO,OAAQxO,KAAKwO,OAAO8D,SAAS,GAAI+Q,EAAyB,EAMtF,MACJ,IAAK,KACwC,IAArCrjB,KAAKwO,OAAO+B,cAAc5P,SAErBsiB,EADD5gB,EAAOrC,KAAKmO,YAAYnO,KAAKkO,QAAQc,cAAc,EAAE,EAAE,EACpC,GAInBhP,KAAKogC,mBACL7iB,EAAavd,KAAKwO,OAAQ,QAAQ,GAJlCwG,EAAmBhV,KAAKwO,OAAQnM,EAAM6gB,CAAqB,KAU/EqsC,EAAervD,UAAUiO,YAAc,SAAUiE,GAE7C,IADA,IAAI/P,EAAOrC,KAAKkO,QAAQC,YAAYiE,CAAI,EAC/BpR,EAAI,EAAGA,EAAIqB,EAAK1B,OAAQK,CAAC,GAC1B4L,oBAAMJ,WAAS,WAAYnK,EAAKrB,EAAE,CAAC,GACnC4Z,WAAS,WAAY,CAAA,EAAOvY,EAAKrB,EAAE,EAG3C,OAAOqB,GAEXktD,EAAervD,UAAUkgC,iBAAmB,WACxCpgC,KAAKwzD,iBACLxzD,KAAKwO,OAAOqU,gBAAkBrW,WAAS,OAAQxM,KAAKwO,OAAO8D,SAAS,EAAE,GAE1Ei9C,EAAervD,UAAUszD,eAAiB,WACtC,IAAInxD,EAAOrC,KAAKmO,YAAYnO,KAAKkO,QAAQc,cAAc,EAAE,EAAE,GAC3DhP,KAAKwO,OAAO8D,SAAW,CAACjQ,GACxBrC,KAAKwO,OAAOsU,OAAS,CAAA,GAEzBysC,EAAervD,UAAUuzD,iBAAmB,WACxCzzD,KAAKwzD,iBAELpnD,GADWyM,SAAO,cAAgB7Y,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAAK,KAAMX,KAAKkO,QAAQb,OAAO,EAC/FrN,KAAKwO,OAAO8D,SAAS,GAAItS,KAAKwO,MAAM,EADrD,IAEIC,EAAUoB,GAAc7P,KAAKwO,OAAO1B,IAAI,EAC5C9M,KAAKwO,OAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EACjDzO,KAAKwO,OAAOvB,OAAOif,MACnBlsB,KAAKwO,OAAOrB,UAAU+e,OAG1BqjC,EAAervD,UAAUijB,WAAa,WAClC,IAAI1U,EAAUoB,GAAc7P,KAAKwO,OAAO1B,IAAI,EAExCgL,EADS9X,KAAKkO,QAAQc,cAAc,KACjBhP,KAAKwO,OAAOvB,OAAO,GAAM,GAAKT,WAAS,OAAQxM,KAAKwO,OAAO8D,SAAS,EAAE,EAC7FgR,GAAStjB,KAAKwO,OAAQC,EAAS,CAACqJ,EAAK,GAElCy3C,GA91BP,SAASA,EAAe/gD,GACpBxO,KAAKozD,YAAc,GACnBpzD,KAAKk0D,UAAY,GAEjBl0D,KAAK8sB,iBAAmB,GACxB9sB,KAAKuyD,OAAS,CAAA,EACdvyD,KAAK+xD,cAAgB,CAAA,EACrB/xD,KAAKgyD,eAAiB,CAAA,EACtBhyD,KAAK6xD,aAAe,CAAA,EACpB7xD,KAAK8xD,kBAAoB,CAAA,EACzB9xD,KAAKwyD,mBAAqB,CAAA,EAC1BxyD,KAAKkyD,aAAe,KAEpBlyD,KAAKmyD,kBAAoB,CAAA,EAEzBnyD,KAAKiyD,kBAAoB,CAAA,EACzBjyD,KAAKwO,OAASA,EACdxO,KAAK07B,mBACL17B,KAAKikC,WAAa,CACdgI,SAAU,YACVC,IAAK,SACLC,IAAK,SACLC,MAAOpsC,KAAKwO,OAAOg3B,MAAQ,QAAU,SACrC6G,MAAOrsC,KAAKwO,OAAOg3B,MAAQ,QAAU,SACrC8G,MAAOtsC,KAAKwO,OAAOg3B,MAAQ,QAAU,SACrCqvB,WAAY,eACZC,SAAU,YACVvoB,GAAI,MC2BZwoB,EAAY70D,UAAUi4B,OAAS,SAAU/lB,GACrC,IAcQ4F,EAEAgE,EACAg5C,EACAC,EAlBJh5B,EAAQj8B,KACRA,KAAKwO,OAAO0mD,oBACRC,EAAuB10C,OAAO20C,aAAaC,QAAQ,OAASr1D,KAAKwO,OAAOnB,QAAQZ,GAAK,OAAO,EAC3FG,oBAAMuoD,CAAoB,IACvBG,EAAQh+C,KAAK+T,MAAM8pC,CAAoB,EACvC,CAACvoD,oBAAM0oD,CAAK,GAAiC,EAA5B/1D,OAAOojB,KAAK2yC,CAAK,EAAE30D,QAAc,iBAAkB20D,IACpE,OAAOA,EAAMN,aACbv0C,OAAO20C,aAAaG,QAAQ,OAASv1D,KAAKwO,OAAOnB,QAAQZ,GAAK,QAAS6K,KAAKC,UAAU+9C,CAAK,CAAC,KAIxGh9B,cAAYt4B,KAAKwO,OAAOnB,OAAO,EACN,YAArBrN,KAAKwO,OAAO4F,OACZiyB,cAAY,CAACrmC,KAAKwO,OAAOnB,SAAUi4B,EAAgB,EAC/CttB,EAAQD,GAAc/X,KAAKwO,OAAQ4D,EAAKwB,KAAK,EACjD5T,KAAKw1D,iBACDx5C,EAAUhc,KAAKy1D,aACfT,EAAe,KAAA,EACfC,EAAmB,CAAC98C,oBAAkB6D,CAAO,GACuC,CAAC,IAArFA,EAAQ0K,UAAU,SAAUuhC,GAAO,OAAOA,EAAItmD,QAAUs6B,EAAMztB,OAAO4J,OAAS,EAC9EpY,KAAKwO,OAAOgN,UAAY,CAACy5C,EACzBD,EAAe,GAGe,SAA1Bh1D,KAAKwO,OAAO0J,YACZ88C,EAAe,CAAC,CAAEU,UAAW11D,KAAKwO,OAAO0J,UAAWvW,MAAO3B,KAAKwO,OAAO4J,UAG/EpY,KAAK+T,QAAU,IAAI4hD,OAAK,CACpB3hD,WAAYgE,EACZ49C,aAAc,CAAA,EACdC,aAAc71D,KAAK81D,YAAYtlC,KAAKxwB,KAAM,QAAQ,EAClD+1D,eAAgB/1D,KAAK81D,YAAYtlC,KAAKxwB,KAAM,UAAU,EACtDg2D,YAAah2D,KAAK6jD,WAAWrzB,KAAKxwB,IAAI,EACtCi2D,cAAej2D,KAAKk2D,cAAc1lC,KAAKxwB,IAAI,EAC3Cm2D,cAAen2D,KAAKwO,OAAOuN,oBAAoBq6C,eAC/CC,kBAAmB,CACfp0D,KAAMjC,KAAKwO,OAAOm1B,oBAAsB,WAAa,SACrD2yB,aAAc,mBAElB9jC,UAAWxyB,KAAKwO,OAAOgkB,UACvB+jC,aAAc,CAAEC,SAAU,IAC1Bl8B,qBAAsBt6B,KAAKwO,OAAO8rB,qBAClC46B,kBAAmBl1D,KAAKwO,OAAO0mD,kBAC/BuB,qBAAsB,CAAA,EACtBzB,aAAc,CAAE0B,YAAa,CAAA,EAAO16C,QAASg5C,GAC7Ch5C,QAASA,EACT26C,kBAAmB32D,KAAK42D,eAAepmC,KAAKxwB,IAAI,EAChD62D,gBAAiB72D,KAAK82D,kBAAkBtmC,KAAKxwB,IAAI,EACjD6wD,UAAW7wD,KAAK+2D,YAAYvmC,KAAKxwB,IAAI,EACrCg3D,aAAch3D,KAAKi3D,eAAezmC,KAAKxwB,IAAI,EAC3Ck3D,YAAal3D,KAAKm3D,cAAc3mC,KAAKxwB,IAAI,EACzCo3D,eAAgBp3D,KAAKq3D,iBAAiB7mC,KAAKxwB,IAAI,EAC/CmC,MAAO,OACP80B,OAASj3B,KAAKwO,OAA2B,qBAAIxO,KAAKs3D,gBAAkB,OACpEC,WAAY,SAAUnlD,GAAQA,EAAKmO,OAAS,CAAA,GAC5Ci3C,KAAM,WACFx3D,KAAKy3D,YAAYluD,WAErByR,OAAQhb,KAAKwO,OAAOwM,OACvB,EACGhb,KAAKwO,OAAO4iD,UACZpxD,KAAK+T,QAAQq9C,QAAU,CAAA,EACvBpxD,KAAK+T,QAAQw3C,QAAU,GACvBvrD,KAAK+T,QAAQuvB,GAAG,sBAAuBtjC,KAAK03D,oBAAqB13D,IAAI,GAEzEA,KAAK+T,QAAQ2e,iBAAmB,CAAA,EAChC1yB,KAAK+T,QAAQ4e,SAAS,IAAM3yB,KAAKwO,OAAOnB,QAAQZ,GAAK0oC,EAAW,EACvB,IAArCn1C,KAAKwO,OAAO+B,cAAc5P,QAAgBX,KAAKwO,OAAO8rB,sBAAwBt6B,KAAKwO,OAAO0mD,oBAC1Fl1D,KAAK23D,SAAW,CAAA,GAEpB33D,KAAK27B,aACL37B,KAAK2/C,eACL3/C,KAAK43D,UAAYxlD,IAGzB2iD,EAAY70D,UAAUw3D,oBAAsB,SAAUtlD,GAClDpS,KAAKwO,OAAgB,QAAI4D,EACrBpS,KAAKwO,OAAO+8C,SAAWvrD,KAAKwO,OAAO65C,eAAiBroD,KAAKwO,OAAO65C,cAAc6B,YAC9ElqD,KAAKwO,OAAO65C,cAAc6B,WAAWqB,UACrCvrD,KAAKwO,OAAgB,QAAIxO,KAAKwO,OAAgB,QAAEsD,OAAO9R,KAAKwO,OAAO65C,cAAc6B,WAAWqB,OAAO,GAEnGvrD,KAAKwO,OAAO+8C,SAAWvrD,KAAKwO,OAAOP,sBACnCjO,KAAKwO,OAAOP,qBAAqBC,SAAWlO,KAAKwO,OAAOP,qBAAqBC,QAAQq9C,UACrFvrD,KAAKwO,OAAgB,QAAIxO,KAAKwO,OAAgB,QAAEsD,OAAO9R,KAAKwO,OAAOP,qBAAqBC,QAAQq9C,OAAO,GAE3GvrD,KAAKwO,OAAOW,OAAO,sBAAuBnP,KAAKwO,OAAgB,OAAC,EAChExO,KAAKwO,OAA6B,wBAQtCumD,EAAY70D,UAAUo3D,cAAgB,WAElC,IAAIO,EAAOh/C,SAAO,IAAM7Y,KAAKwO,OAAOnB,QAAQZ,GAAKmU,GAAgB5gB,KAAKwO,OAAOnB,OAAO,EAChF40C,EAAMppC,SAAO,IAAM7Y,KAAKwO,OAAOnB,QAAQZ,GAAKuM,GAAsBhZ,KAAKwO,OAAOnB,OAAO,EAIzF,OAAQwqD,EAAK5+C,aAAegpC,EAAIhpC,aAFV,IAI1B87C,EAAY70D,UAAUs1D,eAAiB,WACnC,IAAIsC,EAAgB93D,KAAKwO,OAAOuN,oBAAoBC,QACpDhc,KAAK+3D,YAAc,CAAA,EACnB,IAAK,IAAI/2D,EAAI,EAAGA,EAAI82D,EAAcn3D,OAAQK,CAAC,GACvC,GAA+B,SAA3B82D,EAAc92D,GAAGW,MAEjB,OADA3B,KAAAA,KAAK+3D,YAAc,CAACnrD,oBAAMkrD,EAAc92D,GAAGmB,KAAK,IAK5D4yD,EAAY70D,UAAU83D,YAAc,SAAUh8C,EAASi8C,GACnD,GAAIj4D,CAAAA,KAAK+3D,aAA8B,SAAdE,EAGzB,IAAK,IAOOC,EAPHl3D,EAAI,EAAGA,EAAIgb,EAAQrb,OAAQK,CAAC,GAC7Bgb,EAAQhb,GAAGW,QAAUs2D,IACjBC,EAAY,KAAA,EAKZA,EAJ4D,KAA5Dl4D,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBpQ,KAAKwO,OAAO6B,WAIlErQ,KAAKqN,QAAQ8gC,aAAe,IAAuB,SAAd8pB,EAAwB,QAAU,QAAW,OAHlFj4D,KAAKqN,QAAQ8gC,aAAe,IAAO,QAAU,OAK9DnyB,EAAQhb,GAAGmB,MAAQ+1D,IAI/BnD,EAAY70D,UAAUu1D,WAAa,WAC/B,IAAIz5C,EACAyW,EAAsBzyB,KAAKwO,OAAOikB,oBACtC,GAAIzyB,KAAKwO,OAAOgN,SACZQ,EAAU,CACN,CACIra,MAAO,OAAQC,WAAYqY,EAAcja,KAAKwO,OAAQ,MAAM,EAAGrM,MAAO,OAAQN,SAAU,IAAKs2D,gBAAiB,OAC9Gr2D,SAAUM,wBAAsB,SAAUC,GAEtC,MAAO,2BADIowB,EAAsB2lC,qBAAmBC,SAASh2D,EAAKyV,IAAI,EAAIzV,EAAKyV,MACnC,gCAAoCzV,EAAKi2D,aAAe,iCAAqCj2D,EAAKC,KAAO,UACxJ,QAIR,CACD0Z,EAAUuJ,SAAO,GAAIvlB,KAAKwO,OAAOuN,oBAAoBC,QAAS,KAAM,CAAA,CAAI,EACxEhc,KAAKg4D,YAAYh8C,EAAS,MAAM,EAYhC,IAXA,IAUIu8C,EAASv4D,KACJgB,EAAI,EAAG2Z,EAAMqB,EAAQrb,OAAQK,EAAI2Z,EAAK3Z,CAAC,GAC5C20B,CAZU,SAAU30B,GAEpB,IACQw3D,EAFRx8C,EAAQhb,GAAGY,WAAaqY,EAAcs+C,EAAO/pD,OAAQwN,EAAQhb,GAAGY,UAAU,EACjD,SAArBoa,EAAQhb,GAAGW,OAAqBiL,oBAAMoP,EAAQhb,GAAGc,QAAQ,GAAsC,YAA/B,OAAOka,EAAQhb,GAAGc,WAC9E02D,EAAax8C,EAAQhb,GAAGc,SAC5Bka,EAAQhb,GAAGc,SAAWM,wBAAsB,SAAUC,GAC9CyV,EAAO2a,EAAsB2lC,qBAAmBC,SAASh2D,EAAKyV,IAAI,EAAIzV,EAAKyV,KAC/E,OAAO0gD,EAAWvhD,QAAQ,YAAaa,CAAI,EAC9C,IAKG9W,CAAM,EAGtB,IAAIy3D,EAAWz4D,KAAKwO,OAAOgN,UAAYxb,KAAKwO,OAAO4vC,SAAY,KAAO,KAClE9e,EAAO,CACP39B,MAAO,OAAQQ,MAAOs2D,EAAQ52D,SAAU42D,EACxC32D,SAAUM,wBAAsB,SAAUC,GACtC,MAAO,0BAA6BA,EAAKq2D,cAAgB,YAC5D,EAAGvC,cAAe,CAAA,EAAOP,aAAc,CAAA,EAAM7zD,iBAAkB,CAAEC,MAAO,kBACzE22D,eAAgBv2D,wBAAsB,WAClC,MAAO,8CACV,GAEL4Z,EAAQ48C,QAAQt5B,CAAI,EAChBt/B,KAAKwO,OAAOkwB,qBAERm6B,EAAO,CACP52D,KAAM,WAAYE,MAFlB22D,EAAU94D,KAAKwO,OAAO4vC,SAAW,KAAO,KAEPv8C,SAAUi3D,EAAQ/2D,iBAAkB,CAAEC,MAAO,iBAC9Em0D,cAAe,CAAA,EAAOP,aAAc,CAAA,GAEpC51D,KAAKwO,OAAOgN,SACZQ,EAAQvO,KAAKorD,CAAI,EAGjB78C,EAAQ48C,QAAQC,CAAI,GAG5B,IAAS73D,EAAI,EAAG2Z,EAAMqB,EAAQrb,OAAQK,EAAI2Z,EAAK3Z,CAAC,GAC5Cgb,EAAQhb,GAAG+3D,kBAAoB,CAAC/4D,KAAKwO,OAAOikB,oBAMhD,OAJIzyB,KAAKwO,OAAO43C,sBAEZpqC,EAAQvO,KADS,CAAE9L,MAAO,OAAQyqB,QAAS,CAAA,EAAOrqB,iBAAkB,CAAEC,MAAO,eACtD,EAEpBga,GAEX+4C,EAAY70D,UAAUy/C,aAAe,WACjC,IAIIsC,EACA+W,EACA/hC,EANCj3B,KAAK+T,UAGN8jD,EAAOh/C,SAAO,IAAM7Y,KAAKwO,OAAOnB,QAAQZ,GAAKmU,GAAgB5gB,KAAKwO,OAAOnB,OAAO,EAChF40C,EAAMppC,SAAO,IAAM7Y,KAAKwO,OAAOnB,QAAQZ,GAAKuM,GAAsBhZ,KAAKwO,OAAOnB,OAAO,EACrF2rD,EAAangD,SAAO,IAAMO,GAAiBpZ,KAAKwO,OAAOnB,OAAO,EAC9D4pB,EAAU4gC,EAAK5+C,aAAegpC,EAAIhpC,aAAe+/C,EAAW//C,aAChEjZ,KAAK+T,QAAQkjB,OAASA,EACtBj3B,KAAK+T,QAAQ8e,aAEjBkiC,EAAY70D,UAAU+4D,eAAiB,WACnCj5D,KAAK+T,QAAQiI,QAAUhc,KAAKy1D,aAC5Bz1D,KAAKk5D,gBAAkB,CAAA,EACvBl5D,KAAK+T,QAAQolD,kBAEjBpE,EAAY70D,UAAU+2D,eAAiB,SAAU7kD,GAC7C,IAAIgnD,EAAKvgD,SAAO,kBAAmBzG,EAAKinD,GAAG,EAC3C,GAAI,CAACD,EAED,IADA,IAAIp9C,EAAUhc,KAAKwO,OAAOuN,oBAAoBC,QACrChb,EAAI,EAAGA,EAAIgb,EAAQrb,OAAQK,CAAC,GACjC,GAAyB,SAArBgb,EAAQhb,GAAGW,MAAkB,CAC7By3D,EAAKhnD,EAAKinD,IAAIjoD,SAASpR,KAAKwO,OAAOm1B,oBAAuB3iC,EAAI,EAAMA,EAAI,GACxE,MAwBZ,GApBIo4D,GACAA,EAAG5gC,aAAa,QAAShsB,WAAS,OAAQ4F,EAAK/P,IAAI,CAAC,EAEpDrC,KAAKwO,OAAOwD,gBAAkBhS,KAAKwO,OAAOM,OAAoC,SAA3B9O,KAAKwO,OAAO6G,YAC/DrV,KAAKwO,OAAOQ,eAAsD,IAArChP,KAAKwO,OAAOQ,cAAcrO,QACgB,CAAC,IAApEX,KAAKwO,OAAOQ,cAAc0G,QAAQlJ,WAAS,OAAQ4F,EAAK/P,IAAI,CAAC,GAC7D0N,GAAQqC,EAAKinD,GAAG,EAGpB,CAACr5D,KAAKwO,OAAOoX,mBAAqBpZ,WAAS,SAAU4F,EAAK/P,IAAI,IAC1DkK,EAAOC,WAAS,OAAQ4F,EAAK/P,IAAI,EACjCi8B,EAAUlsB,EAAKinD,IAAIhgD,cAAc,YAAc9M,EAAO,IAAI,KAEtDsR,EAASrR,WAAS,OAAQ4F,EAAK/P,IAAI,EACnCJ,EAAOuK,WAAS,OAAQ4F,EAAK/P,IAAI,EACR,CAAC,IAA1Bwb,EAAOnI,QAAQzT,CAAI,KACnBq8B,EAAQtkB,UAAY6D,EAAOuT,OAAO,EAAGvT,EAAOld,OAASsB,EAAKtB,MAAM,GAIxCokB,KAAAA,IAAhCvY,WAAS,OAAQ4F,EAAK/P,IAAI,GAAmB+P,EAAKinD,IAAIhgD,cAAc,YAAY,EAAG,CACnF,IAAIigD,EAAUlnD,EAAKinD,IAAIhgD,cAAc,YAAY,EAC7CkgD,EAAe,KAAA,EACnB,GAAK/sD,WAAS,SAAU4F,EAAK/P,IAAI,EAG5B,CAKD,IAJA,IAAIm3D,EAAYhtD,WAAS,OAAQ4F,EAAK/P,IAAI,EACtCwuB,EAAO,IAAIC,uBAAqB9wB,KAAKwO,OAAOwM,MAAM,EAClDy+C,EAAa,KAAA,EACbz9C,EAAUhc,KAAKwO,OAAOuN,oBAAoBC,QACrChb,EAAI,EAAGA,EAAIgb,EAAQrb,OAAQK,CAAC,GACjC,GAAyB,SAArBgb,EAAQhb,GAAGW,MAAkB,CAC7B83D,EAActhD,oBAAkB6D,EAAQhb,GAAGkB,MAAM,EAAmC,IAA/B8Z,EAAQhb,GAAGkB,OAAOyM,WACvE,MAIR4qD,EADY1oC,EAAK6oC,aAAcF,EAAY,KAAO,CAAEt3D,OAAQu3D,EAAY,EACjD,IAAMx/C,EAAcja,KAAKwO,OAAQ,IAAI,OAd5D+qD,EAAe,GAgBnBD,EAAQt/C,UAAYu/C,EAExB,GAAIv5D,KAAKwO,OAAOgN,UACgCuJ,KAAAA,IAAxCvY,WAAS,eAAgB4F,EAAK/P,IAAI,GAAmB+P,EAAKinD,IAAIhgD,cAAc,YAAY,EAAG,CAK3F,IAJA,IAAIsgD,EAAUvnD,EAAKinD,IAAIhgD,cAAc,YAAY,EAC7CwX,EAAO,IAAIC,uBAAqB9wB,KAAKwO,OAAOwM,MAAM,EAClDgB,EAAUhc,KAAKwO,OAAOuN,oBAAoBC,QAC1C9Z,EAAS,KAAA,EACJlB,EAAI,EAAGA,EAAIgb,EAAQrb,OAAQK,CAAC,GACjC,GAAyB,iBAArBgb,EAAQhb,GAAGW,MAA0B,CACrCO,EAAS8Z,EAAQhb,GAAGkB,OACpB,MAGJ6uB,EAAkBF,EAAKG,WAAW,IAAI9Z,KAAK1K,WAAS,eAAgB4F,EAAK/P,IAAI,CAAC,EAAGH,CAAM,EAC3Fy3D,EAAQ3/C,UAAY+W,EAGxB6oC,EAAYxnD,EAAKinD,IAAIhgD,cAAc,IAAM6vB,EAAW,EACpD0wB,GACAA,EAAUxrD,UAAUqC,IAAI,SAAS,EAEhCwS,EAAc7Q,EAAK/P,IAAI,IACxB+P,EAAKinD,IAAI5/C,WAAa,IAAMoK,GAAezR,EAAK/P,IAAI,GAEpDgU,EAAY,CACZhJ,QAAS+E,EAAKinD,IACd5iD,YAAarE,EAAK/P,KAClBqZ,OAAQ,eAEZ1b,KAAKwO,OAAO+H,QAAQ,WAAYF,CAAS,GAE7C0+C,EAAY70D,UAAUi3D,cAAgB,SAAU/kD,GAC5C,GAAyB,YAArBA,EAAKynD,YAA2B,CAGhC,GAFA75D,KAAKwO,OAAO3B,cAAc,CAAEqL,UAAW9F,EAAKsjD,WAAa,CAAA,CAAI,EAC7D11D,KAAKwO,OAAO3B,cAAc,CAAEuL,OAAQhG,EAAK0nD,YAAc,CAAA,CAAI,EAClB,IAArC95D,KAAKwO,OAAO+B,cAAc5P,OAAc,CACxCX,KAAK+5D,SAAW,CAAA,EAChB,IAAIC,EAAOh6D,KAAK+T,QAAQkmD,wBACpBt/C,EAAMq/C,EAAKr5D,OAEf,IADAX,KAAKk6D,kBAAoB,GACZ,EAANv/C,GAAS,CACZ,IAAItY,EAAOrC,KAAK+T,QAAQomD,gBAAgBH,EAAKr/C,EAAM,IAAItY,KACvDrC,KAAKk6D,kBAAkBzsD,KAAKjB,WAASxM,KAAKwO,OAAOxB,MAAQ,KAAO,OAAQ3K,CAAI,CAAC,EAC7EsY,CAAG,IAGX3a,KAAKwO,OAAOW,OAAOwM,GAAqB,EAAE,IAGlDo5C,EAAY70D,UAAUm3D,iBAAmB,SAAUjlD,GAC3CwnD,EAAYxnD,EAAK/F,KAAKgN,cAAc,IAAM6vB,EAAW,EACrD0wB,GACAA,EAAUxrD,UAAUqC,IAAI,SAAS,GAGzCskD,EAAY70D,UAAU42D,kBAAoB,SAAU1kD,GAChD,IAAI6pB,EAAQj8B,KAERo6D,GADJ9hC,cAAYt4B,KAAKwO,OAAOnB,OAAO,EACdrN,KAAKwO,OAAOuN,oBAAoBC,QAAQq+C,KAAK,SAAUz+C,GAAU,OAAOA,EAAOja,QAAUs6B,EAAMztB,OAAO4J,OAAS,IAC5HgiD,CAAAA,GAAgB,iBAAkBA,IAAyC,SAA1Bp6D,KAAKwO,OAAO0J,YACzDF,EAAQD,GAAc/X,KAAKwO,OAASxO,KAAKwO,OAA2B,qBAClE4D,EAAKoI,OACLxa,KAAK+T,QAAQC,UAAU,EAC7B5B,EAAKoI,OAASxC,IAItB+8C,EAAY70D,UAAU62D,YAAc,WA+ChC,IAkBQuD,EAUAC,EA1ERv6D,KAAKi7B,iBACqC,IAArCj7B,KAAKwO,OAAO+B,cAAc5P,QAAgB,CAACX,KAAKwO,OAAO8rB,sBAAyBt6B,KAAK23D,WACtF33D,KAAKw6D,cAAcx6D,KAAKwO,OAAO+B,aAAa,EAElB,CAAA,IAA1BvQ,KAAKo7B,kBAA8B,CAACjjB,oBAAkBnY,KAAK+T,QAAQ0mD,aAAa,GAAyC,EAApCz6D,KAAK+T,QAAQ0mD,cAAc95D,SAC3GX,KAAKk5D,gBAKNl5D,KAAKk5D,gBAAkB,CAAA,GAJvBl5D,KAAKw6D,cAAcx6D,KAAKwO,OAAOoQ,UAAU,EACzC5e,KAAKo7B,iBAAmB,CAAA,IAM5Bp7B,KAAKwO,OAAO8d,cACZtsB,KAAKw6D,cAAc,CAAChuD,WAASxM,KAAKwO,OAAOxB,MAAQ,KAAO,OAAQhN,KAAKwO,OAAO8d,WAAW,EAAE,EACzFtsB,KAAKwO,OAAO8d,YAAc,MAE1BtsB,KAAKwO,OAAO6F,oBAAoB1T,QAChCX,KAAKw6D,cAAcx6D,KAAKwO,OAAO6F,mBAAmB,EAElDrU,KAAKwO,OAAO8b,aAAoD,IAArCtqB,KAAKwO,OAAO+B,cAAc5P,SACrDX,KAAK+T,QAAQqtB,iBACbphC,KAAKugC,aAAavgC,KAAKwO,OAAO8b,WAAW,EACzCtqB,KAAKwO,OAAO8b,YAAc,MAER,CAAA,IAAlBtqB,KAAK+5D,WACL/5D,KAAKw6D,cAAcx6D,KAAKk6D,iBAAiB,EACzCl6D,KAAK+5D,SAAW,CAAA,GAEhB/5D,KAAK06D,oBACA16D,KAAKk5D,gBAKNl5D,KAAKk5D,gBAAkB,CAAA,GAJvBl5D,KAAKw6D,cAAcx6D,KAAK26D,mBAAmB,EAC3C36D,KAAK06D,kBAAoB,CAAA,IAMJ,CAAA,IAAzB16D,KAAKs7B,kBACLt7B,KAAK6e,KAAK,GACV7e,KAAKw6D,cAAcx6D,KAAKwO,OAAO2V,UAAU,EACrCnkB,KAAK6e,QAAU7e,KAAKwO,OAAO2V,WAAWxjB,UACtCX,KAAKs7B,gBAAkB,CAAA,EACvBt7B,KAAKwO,OAAO2V,WAAa,IAG7BnkB,KAAK+T,QAAQ6mD,gBAAgBj6D,OAASX,KAAK+T,QAAQ8mD,eAAiB76D,KAAK+T,QAAQkjB,SAEjF6jC,EADc96D,KAAK+T,QAAQgnD,oBACnB3gD,MAAM0d,aAAe,GAC7BgjC,EAAQ1gD,MAAM4gD,YAAc,GACZniD,SAAO,mBAAoBiiD,CAAO,EACxC1gD,MAAM6gD,iBAAmB,KAEnCX,EADct6D,KAAK+T,QAAQmnD,aAAa7hD,cAAc,YAAY,GAC1De,MAAM+gD,UAAY,GAC1Bb,EAAQlsD,UAAUqC,IAAI,cAAc,IAGhCqqD,EAAU96D,KAAK+T,QAAQgnD,mBACtB/6D,KAAKwO,OAAOgkB,UAIbsoC,EAAQ1gD,MAAM4gD,YAAc,OAH5BF,EAAQ1gD,MAAM0d,aAAe,QAMjCwiC,EADct6D,KAAK+T,QAAQmnD,aAAa7hD,cAAc,YAAY,GAC1DjL,UAAU0C,OAAO,cAAc,GAE3C9Q,KAAK87B,WAAa,CAAA,EAClB97B,KAAKwO,OAAOwD,eAAiB,CAAA,EAC7B+pB,cAAY/7B,KAAKwO,OAAOnB,OAAO,EAC/BrN,KAAKo7D,cAAcp7D,KAAK43D,SAAS,EACjC53D,KAAK40B,aAAe50B,CAAAA,CAAAA,KAAK23D,UAAkB33D,KAAK40B,aAChD50B,KAAK23D,SAAW,CAAA,EACc,SAA1B33D,KAAKwO,OAAO0J,WAAyBtL,oBAAM5M,KAAK+T,QAAQ1G,OAAO,IAC3DktD,EAAkBv6D,KAAK+T,QAAQ1G,QAAQgM,cAAc,6BAA6B,IAC/DkhD,EAAgBnsD,WACnCmsD,EAAgBnsD,UAAU0C,OAAO,mBAAoB,cAAe,oBAAqB,cAAc,GAInHikD,EAAY70D,UAAUs6D,cAAgB,SAAUhqD,GAG5C,IAFA,IAAI6qD,EAAcr7D,KAAK+T,QAAQunD,wBAC3BC,EAAW,GACNv6D,EAAI,EAAG2Z,EAAM0gD,EAAY16D,OAAQK,EAAI2Z,EAAK3Z,CAAC,GAAI,CACpD,IAAIqL,EAAOrM,KAAKwO,OAAOxB,MAAQR,WAAS,KAAM6uD,EAAYr6D,EAAE,EAAI6W,GAAQ7X,KAAKwO,OAAQ6sD,EAAYr6D,EAAE,EACvE,CAAC,IAAzBwP,EAAMkF,QAAQrJ,CAAI,EAClBkvD,EAAS9tD,KAAKzM,CAAC,EAEThB,KAAKwO,OAAOoX,mBAAsB5lB,KAAKwO,OAAOxB,OAASX,CAAAA,EAAK6Q,SAAS,GAAG,IAC1Es+C,EAAOnvD,EAAKsJ,MAAM,GAAG,EAAEjE,MAAM,EAAG,CAAC,CAAC,EAAEkE,KAAK,GAAG,EACpB,CAAC,IAAzBpF,EAAMkF,QAAQ8lD,CAAI,GAClBD,EAAS9tD,KAAKzM,CAAC,GAIH,IAApBu6D,EAAS56D,SACTX,KAAK+T,QAAQugC,WAAWinB,CAAQ,EAChCv7D,KAAKmmC,SAASnmC,KAAK+T,QAAQ0nD,gBAAgB,IAGnD1G,EAAY70D,UAAUqgC,aAAe,SAAUl+B,GAC3C,IAAI2V,EAAQhY,KAAK+T,QAAQunD,wBACrBI,EAAQ,GACR17D,KAAKwO,OAAOxB,MACZ0uD,EAAQ,IAAI5oD,cAAYkF,CAAK,EACzBjF,cAAa,IAAIC,SAAQC,MAAM,KAAM,QAASjT,KAAKwO,OAAO2nB,UAAW,CAAA,CAAK,CAAC,EAK5D,GAFf29B,EAAQ,IAAIhhD,cAAYkF,CAAK,EAC7BjF,cAAa,IAAIC,SAAQC,MAAM,OAAQ,QAASzG,WAAS,OAAQnK,CAAI,EAAG,CAAA,CAAK,CAAC,GACxE1B,SACN+6D,EAAQ,IAAI5oD,cAAYghD,CAAK,EACzB/gD,cAAa,IAAIC,SAAQC,MAAM,aAAc,QAASjT,KAAKwO,OAAOuU,WAAY,CAAA,CAAK,CAAC,GAG7E,EAAf24C,EAAM/6D,SACF2oB,EAAQtR,EAAMtC,QAAQgmD,EAAM,EAAE,EAClC17D,KAAK+T,QAAQugC,WAAW,CAAChrB,EAAM,IAGvCyrC,EAAY70D,UAAUy7D,aAAe,WACH,SAA1B37D,KAAKwO,OAAO0J,UACZlY,KAAK+T,QAAQ6nD,WAAWvwD,WAAWrL,KAAKwO,OAAO4J,OAAQpY,KAAKwO,OAAO0J,SAAS,EAG5ElY,KAAK+T,QAAQC,WAAa+D,GAAc/X,KAAKwO,OAAQxO,KAAK+T,QAAQC,UAAU,EAErB,IAAvDhU,KAAKqN,QAAQgM,cAAc,YAAY,EAAEytB,WACzC9mC,KAAK+T,QAAQ8nD,iBAGrB9G,EAAY70D,UAAU8hC,kBAAoB,SAAUzT,GAChD,GAAIA,EAAE7S,SAAW1b,KAAKi+B,iBAAgC,WAAb1P,EAAE7S,OAI3C,IAAK,IAuBmB0jC,EAvBf5b,EAAK,EAAGC,EAAKlkC,OAAOojB,KAAK4L,EAAEmV,OAAO,EAAGF,EAAKC,EAAG9iC,OAAQ6iC,CAAE,GAE5D,OADWC,EAAGD,IAEV,IAAK,mBACDxjC,KAAKi7B,gBACL,MACJ,IAAK,SACDj7B,KAAK2/C,eACL,MACJ,IAAK,sBACIxnC,oBAAkBnY,KAAK+T,OAAO,IAC/B/T,KAAKw1D,iBACDx5C,EAAUhc,KAAKy1D,aACnBz1D,KAAK+T,QAAQiI,QAAUA,EACvBhc,KAAK+T,QAAQoiD,cAAgBn2D,KAAKwO,OAAOuN,oBAAoBq6C,eAC7Dp2D,KAAK+T,QAAQ8e,WACb7yB,KAAK+T,QAAQolD,kBAEjB,MACJ,IAAK,gBACDn5D,KAAK87D,YAAc,CAAA,EACsB,IAArC97D,KAAKwO,OAAO+B,cAAc5P,QACrBX,KAAKwO,OAAOm1B,sBACTyb,EAAUp/C,KAAKwO,OAAO+B,cAAcmB,MAAM1R,KAAKwO,OAAO+B,cAAc5P,OAAS,CAAC,EAClFX,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe6uC,GAAW,CAAA,CAAI,GAE9Dp/C,KAAKw6D,cAAcx6D,KAAKwO,OAAO+B,aAAa,EAC5CvQ,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAevQ,KAAKwO,OAAO+B,eAAiB,CAAA,CAAI,GAEtE3D,oBAAM5M,KAAK+T,OAAO,IACxB/T,KAAK+T,QAAQqtB,iBACbphC,KAAK87D,YAAc,CAAA,GAEvB,MACJ,IAAK,oBAGL,IAAK,kBACDvpD,EAAKvS,KAAKwO,OAAQue,EAAoB/sB,KAAKwO,OAAO1B,IAAI,EACtD,MACJ,IAAK,qBACL,IAAK,sBACIqL,oBAAkBnY,KAAK+T,OAAO,IAC/B/T,KAAK26D,oBAAsB36D,KAAKwO,OAAO+B,cACvCvQ,KAAK+T,QAAQsiD,kBAAkBp0D,KAAOssB,EAAEmV,QAAQC,oBAAsB,WAAa,SACnF3jC,KAAK06D,kBAAoB,CAAA,EACzB16D,KAAKi5D,kBAET,MACJ,IAAK,OACD9kD,GAAanU,KAAKwO,OAAQ,SAAS,EACnC,MACJ,IAAK,QACDxO,KAAK+7D,oBAIrBhH,EAAY70D,UAAUmgC,cAAgB,SAAUjuB,GAC5CpS,KAAKwO,OAAOM,MAAQ,CAAA,EACpB,IAAIktD,EAAYh8D,KAAKwO,OAAOuN,oBAAoBC,QAAQq+C,KAAK,SAAUz+C,GAAU,MAAwB,eAAjBA,EAAOja,MAAyB,GAChD,KAAnE3B,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,MAAM6lC,QAAiBj2C,KAAK+T,SAC9E,CAACoE,oBAAkB6jD,CAAS,GAAK,CAAC7jD,oBAAkB6jD,EAAUC,WAAW,GAA+B,KAA1BD,EAAUC,eACzFj8D,KAAKwO,OAAO8xB,cAAgB,GACvBtgC,KAAKwO,OAAO6B,WAIbrQ,KAAKk8D,mBAHLl8D,KAAKm8D,iBAAiB,CAAA,CAAK,GAMnCptD,EAAW/O,KAAKwO,MAAM,EACG,YAArBxO,KAAKwO,OAAO4F,OAEZpU,KAAK40B,aAAe,CAAA,EACpB0D,cAAYt4B,KAAKwO,OAAOnB,OAAO,EAC/BrN,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDvQ,KAAK+T,QAAQC,WAAa+D,GAAc/X,KAAKwO,OAAQ4D,EAAKwB,KAAK,EAC/D5T,KAAK+T,QAAQ8nD,gBACT77D,KAAKwO,OAAO4iD,SACZpxD,KAAK+T,QAAQuvB,GAAG,sBAAuBtjC,KAAK03D,oBAAqB13D,IAAI,EAEzEA,KAAK4jC,eAAe,CAAA,CAAI,GAE5B5jC,KAAK43D,UAAYxlD,GAErB2iD,EAAY70D,UAAUg8D,iBAAmB,WACrC,IAAIvhD,EAAM3a,KAAK+T,QAAQiI,QAAQrb,OAC3By7D,EAAa9kD,KAAK+T,MAAM/T,KAAKC,UAAUvX,KAAK+T,QAAQiI,OAAO,CAAC,EAC5DogD,EAAWzhD,EAAM,GAAGhZ,OAAuC,eAA9By6D,EAAWzhD,EAAM,GAAGhZ,OAA0B,CAAC3B,KAAKwO,OAAOgN,WACpFlQ,EAAa,CACb3J,MAAO,aAAcC,WAAYqY,EAAcja,KAAKwO,OAAQ,MAAM,EAAG3M,SAAU,IAAKM,MAAO,QAE/FnC,KAAK+T,QAAQiI,QAAQvO,KAAKnC,CAAU,EACpCtL,KAAKg4D,YAAYh4D,KAAK+T,QAAQiI,QAAS,YAAY,EACnDhc,KAAKg4D,YAAYh4D,KAAK+T,QAAQiI,QAAS,MAAM,EAC7Chc,KAAKk5D,gBAAkB,CAAA,EACvBl5D,KAAK+T,QAAQolD,mBAGrBpE,EAAY70D,UAAUk7D,cAAgB,SAAUhpD,GAC5C,IAAI4F,EAAQD,GAAc/X,KAAKwO,OAAQ4D,EAAKwB,KAAK,EAC5B,IAAjBoE,EAAMrX,QAAiBiM,oBAAM5M,KAAKqN,QAAQgM,cAAc,IAAMS,EAAa,CAAC,EAGtD,IAAjB9B,EAAMrX,QAAgBX,KAAKqN,QAAQgM,cAAc,IAAMC,CAAS,IACjEtZ,KAAKqN,QAAQgM,cAAc,IAAMS,EAAa,EAAET,cAAc,IAAMC,CAAS,GACzEC,EAAWvZ,KAAKqN,QAAQgM,cAAc,IAAMS,EAAa,EAAET,cAAc,IAAMC,CAAS,EAC5FtZ,KAAKqN,QAAQgM,cAAc,IAAMS,EAAa,EAAEoU,YAAY3U,CAAQ,GAGpEvZ,KAAKqN,QAAQ6gB,YAAYluB,KAAKqN,QAAQgM,cAAc,IAAMC,CAAS,CAAC,GARxEb,GAAmBzY,KAAKwO,OAAQxO,KAAKqN,QAAS+E,CAAI,GAY1D2iD,EAAY70D,UAAUsgC,WAAa,WAC/B,IACQn+B,EADyB,gBAA7BrC,KAAKwO,OAAOmB,eACRtN,EAAOrC,KAAK+T,QAAQsoD,qBAAqB,GAC7Cr8D,KAAKs8D,YAAYj6D,CAAI,IAG7B0yD,EAAY70D,UAAU02D,eAAiB,SAAUxkD,GAC7CpS,KAAK+T,QAAQugC,WAAW,CAACliC,EAAKmqD,SAAS,EAEnCnqD,EAAKoqD,UACLn6D,EAAOiV,KAAK+T,MAAM/T,KAAKC,UAAUnF,EAAKoqD,OAAO,CAAC,EAC9Cx8D,KAAKs8D,YAAYj6D,CAAI,IAG7B0yD,EAAY70D,UAAUo8D,YAAc,SAAUj6D,GAC1C,IAAI45B,EAAQj8B,KACP8U,GAAczS,CAAI,EAKvBrC,KAAKwO,OAAO+H,QAAQ,WADJ,CAAEgK,OAAQ,CAAA,EAAO9J,YAAapU,EAAMqZ,OAAQ,eACjB,SAAU6qB,GACjD,IAcgB93B,EAdX83B,EAAahmB,SACVypB,EAASx9B,WAAS,OAAQnK,CAAI,EAC9BmK,WAAS,SAAUnK,CAAI,EACZkT,GAASlT,CAAI,IACXwT,KACL8gB,EAAY1gB,GAAYgmB,EAAMztB,OAAQnM,CAAI,EAC9Cq0B,GAAkBuF,EAAMztB,OAAQw7B,EAAQrT,CAAS,IAKzC,KADFsF,EAAMztB,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAC1C6rB,EAAMztB,OAAO6B,WAW5BoM,GAAiBwf,EAAMztB,OAAQnM,CAAI,GAV/BoK,EAAKD,WAAS,KAAMnK,CAAI,EAC5B45B,EAAMztB,OAAO4P,QAAU6d,EAAMztB,OAAO1B,KAChC2B,EAAUwtB,EAAMztB,OAAO1B,MAAQF,oBAAMH,CAAE,EAAIu9B,EAASv9B,GAAM,IAC9DwvB,EAAMztB,OAAO3B,cAAc,CAAEC,KAAM2B,GAAW,CAAA,CAAI,EAClDwtB,EAAMztB,OAAOrB,UAAUM,KAAKu8B,CAAM,EAClC/N,EAAMztB,OAAOvB,OAAOQ,KAAKjB,WAAS,SAAUnK,CAAI,CAAC,EACjD45B,EAAMztB,OAAO8D,SAAW,CAACjQ,GACzB6S,GAAW+mB,EAAMztB,MAAM,GAK3BytB,EAAMztB,OAAO6B,WAAa,CAAA,GAE9B4rB,EAAM5uB,QAAQijB,QACV2L,EAAMztB,OAAO8rB,sBACb2B,EAAMztB,OAAOnB,QAAQgM,cAAc,IAAM4iB,EAAMztB,OAAOnB,QAAQZ,GAAK+qB,EAAiB,EAAElH,SAGjG,EApCGtb,EAAmBhV,KAAKwO,OAAQnM,EAAM4S,EAAqB,GAuCnE8/C,EAAY70D,UAAU4+B,eAAiB,SAAU1sB,GACpB,YAArBpS,KAAKwO,OAAO4F,OACRpU,KAAKwO,OAAO8rB,sBACZt6B,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAEpDvQ,KAAK+T,QAIN/T,KAAK23D,SAAW,CAAA,EAHhB33D,KAAKm4B,OAAO/lB,CAAI,EAKhBpS,KAAKwO,OAAO6B,aACZrQ,KAAKk8D,mBACLl8D,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,GAEzDvQ,KAAK+T,QAAQC,WAAa+D,GAAc/X,KAAKwO,OAAQ4D,EAAKwB,KAAK,EAC/D5T,KAAKwO,OAAOW,OAAOypB,GAAmB,EAAE,EACxC54B,KAAK+T,QAAQ1G,QAAQe,UAAU0C,OAAOupB,EAAgB,EACtDr6B,KAAK40B,aAAe,CAAA,EACpB50B,KAAK+T,QAAQqtB,iBAC0D,KAAnEphC,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,MAAM6lC,QACxDj2C,KAAKy8D,cAAcrqD,CAAI,EAE3BpS,KAAK2/C,eAC0C,EAA3C3/C,KAAK+T,QAAQihD,aAAah5C,QAAQrb,SAAcX,KAAK+T,QAAQihD,aAAah5C,QAAQ,GAAGra,QAAU3B,KAAKwO,OAAO4J,QAC7E,SAA1BpY,KAAKwO,OAAO0J,WACZlY,KAAK+T,QAAQ1I,WAAWrL,KAAKwO,OAAO4J,OAAQpY,KAAKwO,OAAO0J,SAAS,GAMjF68C,EAAY70D,UAAUu8D,cAAgB,SAAUrqD,GACnB,YAArBpS,KAAKwO,OAAO4F,OACZpU,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDvQ,KAAKwO,OAAOW,OAAO8c,EAAyB,EAAE,EACzCjsB,KAAKwO,OAAOwD,iBACbhS,KAAKwO,OAAO6F,oBAAsB,IAEtCrU,KAAKk8D,mBACLl8D,KAAKwO,OAAO8xB,cAAgBluB,EAAKwB,MACjC5T,KAAKqgC,cAAcjuB,CAAI,IAG/B2iD,EAAY70D,UAAUi8D,iBAAmB,SAAUO,GAC/C,IAGI/hD,EACAyhD,EACAO,EALgB,MAAhB38D,KAAK+T,UAGL4G,EAAM3a,KAAK+T,QAAQiI,QAAQrb,OAC3By7D,EAAa9kD,KAAK+T,MAAM/T,KAAKC,UAAUvX,KAAK+T,QAAQiI,OAAO,CAAC,EAC5D2gD,EAAuB38D,KAAKwO,OAAOuN,oBAAoBC,QAAQwK,KAAK,SAAUyhC,GAAO,MAAqB,eAAdA,EAAItmD,MAAyB,EACzHy6D,EAAWzhD,EAAM,GAAGhZ,QAAwC,eAA9By6D,EAAWzhD,EAAM,GAAGhZ,OAA2B,CAACg7D,IAEzExkD,oBAAkBnY,KAAK+T,QAAQihD,aAAah5C,QAAQ,EAAE,GAAoD,eAA/Chc,KAAK+T,QAAQihD,aAAah5C,QAAQ,GAAGra,QACnE,SAA1B3B,KAAKwO,OAAO0J,UACZlY,KAAK+T,QAAQ1I,WAAW,OAAQrL,KAAKwO,OAAO0J,SAAS,EAGrDlY,KAAK+T,QAAQC,WAAa+D,GAAc/X,KAAKwO,OAAQxO,KAAK+T,QAAQC,UAAU,EAEhFhU,KAAKwO,OAAOW,OAAOwM,GAAqB,EAAE,GAE9C3b,KAAK+T,QAAQiI,QAAQkQ,MAChBwwC,IACD18D,KAAKk5D,gBAAkB,CAAA,EACvBl5D,KAAK+T,QAAQolD,oBAIzBpE,EAAY70D,UAAUy/B,cAAgB,SAAUvtB,GACnB,YAArBpS,KAAKwO,OAAO4F,OAGXpU,KAAK+T,QAIN/T,KAAKqgC,cAAcjuB,CAAI,EAHvBpS,KAAKm4B,OAAO/lB,CAAI,IAMxB2iD,EAAY70D,UAAU0/B,YAAc,SAAUxtB,GACjB,YAArBpS,KAAKwO,OAAO4F,MAGhBpU,KAAKqgC,cAAcjuB,CAAI,GAE3B2iD,EAAY70D,UAAUigC,aAAe,WACA,gBAA7BngC,KAAKwO,OAAOmB,cAAuE,IAArC3P,KAAKwO,OAAO+B,cAAc5P,QACxEX,KAAKogC,oBAGb20B,EAAY70D,UAAU4/B,eAAiB,WACF,gBAA7B9/B,KAAKwO,OAAOmB,eACZ3P,KAAKwO,OAAO8D,SAAWtS,KAAK+T,QAAQsoD,uBAG5CtH,EAAY70D,UAAU8/B,aAAe,WACA,gBAA7BhgC,KAAKwO,OAAOmB,cACZ8T,GAAOzjB,KAAKwO,OAAQxO,KAAKwO,OAAO+B,cAAevQ,KAAKwO,OAAO1B,KAAM,QAAQ,GAIjFioD,EAAY70D,UAAU+/B,YAAc,SAAU7tB,GACjB,YAArBpS,KAAKwO,OAAO4F,OAGhBpU,KAAKqgC,cAAcjuB,CAAI,EACvBpS,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,IAEzDwkD,EAAY70D,UAAUggC,aAAe,SAAU9tB,GAClB,YAArBpS,KAAKwO,OAAO4F,OAGhBpU,KAAK40B,aAAe,CAAA,EACpB50B,KAAKm8D,iBAAiB,CAAA,CAAK,EAC3Bn8D,KAAK+T,QAAQC,WAAa+D,GAAc/X,KAAKwO,OAAQ4D,EAAKwB,KAAK,EAC/D5T,KAAK43D,UAAYxlD,IAErB2iD,EAAY70D,UAAUwgC,aAAe,WACR,YAArB1gC,KAAKwO,OAAO4F,MAAsBpU,KAAK+T,SACvC/T,KAAK+T,QAAQ1G,QAAQe,UAAUqC,IAAI4pB,EAAgB,GAG3D06B,EAAY70D,UAAUygC,gBAAkB,WACX,YAArB3gC,KAAKwO,OAAO4F,OACZpU,KAAK40B,aAAe,CAAA,EAChB50B,KAAKwO,OAAOm1B,oBACZ3jC,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkB,EAAG78D,KAAK+T,QAAQ+oD,UAAUn8D,MAAM,EAG/EX,KAAK+T,QAAQgpD,UAAU/8D,KAAK+T,QAAQ+oD,UAAUn8D,OAAS,CAAC,EAE5DX,KAAK40B,aAAe,CAAA,EACpB50B,KAAK87D,YAAc,CAAA,IAG3B/G,EAAY70D,UAAUihC,eAAiB,WACV,YAArBnhC,KAAKwO,OAAO4F,OACZpU,KAAKg9D,kBACLh9D,KAAK87D,YAAc,CAAA,IAI3B/G,EAAY70D,UAAUwsD,mBAAqB,WACvCrmB,cAAY,CAACrmC,KAAKqN,SAAU4vD,EAAgB,EACL,EAAnCj9D,KAAKwO,OAAO+B,cAAc5P,QAC1B0kC,WAAS,CAACrlC,KAAKqN,SAAU4vD,EAAgB,GAGjDlI,EAAY70D,UAAUshC,gBAAkB,WACX,YAArBxhC,KAAKwO,OAAO4F,MAGhBpU,KAAK2/C,gBAEToV,EAAY70D,UAAUmhC,gBAAkB,WACpCrhC,KAAK87B,WAAa,CAAA,GAEtBi5B,EAAY70D,UAAUohC,eAAiB,WACnCthC,KAAK87B,WAAa,CAAA,GAEtBi5B,EAAY70D,UAAUuhC,sBAAwB,WACjB,YAArBzhC,KAAKwO,OAAO4F,OAGhBpU,KAAKwO,OAAO8D,SAAWtS,KAAK+T,QAAQsoD,uBAExCtH,EAAY70D,UAAUw7B,iBAAmB,WACrC17B,KAAKwO,OAAO80B,GAAG/mB,EAAoBvc,KAAK2/B,cAAe3/B,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAG4N,GAAgBlxC,KAAKuJ,QAASvJ,IAAI,EACjDA,KAAKwO,OAAO80B,GAAG9wB,EAAqBxS,KAAK8+B,eAAgB9+B,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAGvW,EAAoB/sB,KAAKqgC,cAAergC,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAG/W,GAAkBvsB,KAAK4/B,YAAa5/B,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGxiB,GAAiB9gB,KAAK+9B,WAAY/9B,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGN,EAAoBhjC,KAAKijC,cAAejjC,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAGvuB,GAAmB/U,KAAKkgC,aAAclgC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAG7wB,GAAezS,KAAKy8D,cAAez8D,IAAI,EACtDA,KAAKwO,OAAO80B,GAAGrB,GAAmBjiC,KAAKkiC,aAAcliC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAG9R,GAAsBxxB,KAAKmiC,gBAAiBniC,IAAI,EAC/DA,KAAKwO,OAAO80B,GAAGvB,EAAqB/hC,KAAKgiC,kBAAmBhiC,IAAI,EAChEA,KAAKwO,OAAO80B,GAAG7S,GAAmBzwB,KAAKggC,aAAchgC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGlW,GAAkBptB,KAAKigC,YAAajgC,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGzB,GAAqB7hC,KAAK8/B,eAAgB9/B,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAGlB,GAAmBpiC,KAAKmgC,aAAcngC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGtW,EAAkBhtB,KAAKqgC,cAAergC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGxB,GAAiB9hC,KAAKwgC,WAAYxgC,IAAI,EACrDA,KAAKwO,OAAO80B,GAAG7nB,GAAmBzb,KAAK27D,aAAc37D,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGnuB,GAAgBnV,KAAKqgC,cAAergC,IAAI,EACvDA,KAAKwO,OAAO80B,GAAGD,GAAkBrjC,KAAKqgC,cAAergC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGjmB,GAAkBrd,KAAKk9D,YAAal9D,IAAI,EACvDA,KAAKwO,OAAO80B,GAAG1K,GAAmB54B,KAAK0gC,aAAc1gC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGjB,GAAsBriC,KAAK2gC,gBAAiB3gC,IAAI,EAC/DA,KAAKwO,OAAO80B,GAAGhB,GAAqBtiC,KAAKmhC,eAAgBnhC,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAGnxB,GAAmBnS,KAAK0hC,aAAc1hC,IAAI,EACzDA,KAAKwO,OAAO80B,GAAGrX,EAAyBjsB,KAAK0sD,mBAAoB1sD,IAAI,EACrEA,KAAKwO,OAAO80B,GAAGlZ,GAAsBpqB,KAAKqhC,gBAAiBrhC,IAAI,EAC/DA,KAAKwO,OAAO80B,GAAG7X,GAAqBzrB,KAAKshC,eAAgBthC,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAGlkB,GAAiBpf,KAAK8iC,WAAY9iC,IAAI,EACrDA,KAAKwO,OAAO80B,GAAG7zB,GAAoBzP,KAAK+iC,cAAe/iC,IAAI,EAC3DA,KAAKwO,OAAO80B,GAAGf,GAAqBviC,KAAKwiC,eAAgBxiC,IAAI,EAC7DA,KAAKwO,OAAO80B,GAAGX,GAAkB3iC,KAAKm9D,uBAAwBn9D,IAAI,EAClEA,KAAKwO,OAAO80B,GAAGb,GAAuBziC,KAAK+7D,gBAAiB/7D,IAAI,EAChEA,KAAKwO,OAAO80B,GAAGJ,GAAsBljC,KAAKwhC,gBAAiBxhC,IAAI,EAC/DA,KAAKwO,OAAO80B,GAAG7jB,GAAiBzf,KAAKmjC,WAAYnjC,IAAI,EACrDA,KAAKwO,OAAO80B,GAAGF,GAA4BpjC,KAAKyhC,sBAAuBzhC,IAAI,GAE/E+0D,EAAY70D,UAAUy4B,oBAAsB,WACxC34B,KAAKwO,OAAOozB,IAAIrlB,EAAoBvc,KAAK2/B,aAAa,EACtD3/B,KAAKwO,OAAOozB,IAAIsP,GAAgBlxC,KAAKuJ,OAAO,EAC5CvJ,KAAKwO,OAAOozB,IAAIpvB,EAAqBxS,KAAK8+B,cAAc,EACxD9+B,KAAKwO,OAAOozB,IAAI7U,EAAoB/sB,KAAKqgC,aAAa,EACtDrgC,KAAKwO,OAAOozB,IAAIvkB,GAAkBrd,KAAKk9D,WAAW,EAClDl9D,KAAKwO,OAAOozB,IAAIrV,GAAkBvsB,KAAK4/B,WAAW,EAClD5/B,KAAKwO,OAAOozB,IAAI7sB,GAAmB/U,KAAKkgC,YAAY,EACpDlgC,KAAKwO,OAAOozB,IAAInvB,GAAezS,KAAKy8D,aAAa,EACjDz8D,KAAKwO,OAAOozB,IAAIK,GAAmBjiC,KAAKkiC,YAAY,EACpDliC,KAAKwO,OAAOozB,IAAIpQ,GAAsBxxB,KAAKmiC,eAAe,EAC1DniC,KAAKwO,OAAOozB,IAAIG,EAAqB/hC,KAAKgiC,iBAAiB,EAC3DhiC,KAAKwO,OAAOozB,IAAIQ,GAAmBpiC,KAAKmgC,YAAY,EACpDngC,KAAKwO,OAAOozB,IAAI5U,EAAkBhtB,KAAKqgC,aAAa,EACpDrgC,KAAKwO,OAAOozB,IAAIyB,GAAkBrjC,KAAKqgC,aAAa,EACpDrgC,KAAKwO,OAAOozB,IAAIE,GAAiB9hC,KAAKwgC,UAAU,EAChDxgC,KAAKwO,OAAOozB,IAAInmB,GAAmBzb,KAAK27D,YAAY,EACpD37D,KAAKwO,OAAOozB,IAAIzsB,GAAgBnV,KAAKqgC,aAAa,EAClDrgC,KAAKwO,OAAOozB,IAAIhJ,GAAmB54B,KAAK0gC,YAAY,EACpD1gC,KAAKwO,OAAOozB,IAAIS,GAAsBriC,KAAK2gC,eAAe,EAC1D3gC,KAAKwO,OAAOozB,IAAIU,GAAqBtiC,KAAKmhC,cAAc,EACxDnhC,KAAKwO,OAAOozB,IAAInR,GAAmBzwB,KAAKggC,YAAY,EACpDhgC,KAAKwO,OAAOozB,IAAIxU,GAAkBptB,KAAKigC,WAAW,EAClDjgC,KAAKwO,OAAOozB,IAAIzvB,GAAmBnS,KAAK0hC,YAAY,EACpD1hC,KAAKwO,OAAOozB,IAAI3V,EAAyBjsB,KAAK0sD,kBAAkB,EAChE1sD,KAAKwO,OAAOozB,IAAIxX,GAAsBpqB,KAAKqhC,eAAe,EAC1DrhC,KAAKwO,OAAOozB,IAAInW,GAAqBzrB,KAAKshC,cAAc,EACxDthC,KAAKwO,OAAOozB,IAAIxiB,GAAiBpf,KAAK8iC,UAAU,EAChD9iC,KAAKwO,OAAOozB,IAAInyB,GAAoBzP,KAAK+iC,aAAa,EACtD/iC,KAAKwO,OAAOozB,IAAI9gB,GAAiB9gB,KAAK+9B,UAAU,EAChD/9B,KAAKwO,OAAOozB,IAAIC,GAAqB7hC,KAAK8/B,cAAc,EACxD9/B,KAAKwO,OAAOozB,IAAIoB,EAAoBhjC,KAAKijC,aAAa,EACtDjjC,KAAKwO,OAAOozB,IAAIW,GAAqBviC,KAAKwiC,cAAc,EACxDxiC,KAAKwO,OAAOozB,IAAIe,GAAkB3iC,KAAKm9D,sBAAsB,EAC7Dn9D,KAAKwO,OAAOozB,IAAIa,GAAuBziC,KAAK+7D,eAAe,EAC3D/7D,KAAKwO,OAAOozB,IAAIsB,GAAsBljC,KAAKwhC,eAAe,EAC1DxhC,KAAKwO,OAAOozB,IAAIniB,GAAiBzf,KAAKmjC,UAAU,EAChDnjC,KAAKwO,OAAOozB,IAAIwB,GAA4BpjC,KAAKyhC,qBAAqB,GAE1EszB,EAAY70D,UAAUiiC,gBAAkB,WAAcniC,KAAK87D,YAAc,CAAA,GACzE/G,EAAY70D,UAAUsiC,eAAiB,SAAUpwB,GACzCpS,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,kBAClCj+B,KAAKwO,OAAO8D,SAAW,CAACtS,KAAK+T,QAAQqpD,WAAWhrD,EAAK9R,MAAM,EAAEk8D,WAGrEzH,EAAY70D,UAAUg9D,YAAc,WAC5Bl9D,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,kBAClCj+B,KAAKwO,OAAO8D,SAAuC,KAA3BtS,KAAKwO,OAAOyO,WAAqBjd,KAAK+T,QAAQsoD,qBAClE,CAAC5oD,EAAczT,KAAKwO,MAAM,KAGtCumD,EAAY70D,UAAU+iC,cAAgB,WAC9BjjC,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,kBACO,IAArCj+B,KAAKwO,OAAO+B,cAAc5P,OAC1BX,KAAKwO,OAAO8D,SAAWtS,KAAK+T,QAAQsoD,qBAGpCr8D,KAAKwO,OAAO8D,SAAW,CAAC9F,WAASxM,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAAIX,KAAKwO,OAAOI,QAAQ,KAIpHmmD,EAAY70D,UAAUi9B,WAAa,SAAU/qB,GACzC,IAKI0F,EAcAulD,EAlBAz/B,EADaxrB,EAAKurB,OAAOr9B,OACL0Q,QAAQ,UAAU,EAC1C,OAAK4sB,GAIDA,EAAO8V,uBAAuB,WAAW,EAAE,GAC3C57B,EAAO9X,KAAKwO,OAAOxB,MAAQhN,KAAK+T,QAAQqpD,WAAWx/B,CAAM,EAAE4+B,QAAQ/vD,GAAKmxB,EAAO8V,uBAAuB,WAAW,EAAE,GAAGpG,UAEjH1P,EAAO8V,uBAAuB,0BAA0B,EAAE,GAAGrnB,qBAClEvU,EAAO9X,KAAKwO,OAAOxB,MAAQhN,KAAK+T,QAAQqpD,WAAWx/B,CAAM,EAAE4+B,QAAQ/vD,GAAKmxB,EAAO8V,uBAAuB,0BAA0B,EAAE,GAAGrnB,mBAAmBihB,WAExJ1P,GAAU,CAACA,EAAOvkB,cAAc,WAAW,GAC3CrZ,KAAKw6D,cAAc,CAAC1iD,EAAK,EAE7BhI,GAAU9P,KAAKwO,OAAQovB,CAAM,EAC7B59B,KAAKwO,OAAOgB,eAAiB,GAC7BxP,KAAKwO,OAAOsP,SAAW,GACvB9d,KAAKwO,OAAOsP,SAAW9d,KAAK+T,QAAQsoD,sBAGhCgB,EADgC,IAAhCr9D,KAAKwO,OAAOsP,SAASnd,QAAgBi9B,EAC3B59B,KAAK+T,QAAQqpD,WAAWx/B,CAAM,EAExCy/B,IACAr9D,KAAKwO,OAAOsP,SAASrQ,KAAK4vD,EAAQb,OAAO,EAE7Cx8D,KAAKwO,OAAOmP,SAAW3d,KAAKwO,OAAO1B,KACnC9M,KAAKwO,OAAOgB,eAAiBxP,KAAK+T,QAAQupD,kBAC1C19C,GAAyB5f,KAAKwO,MAAM,EAC7BxO,KAAKwO,OAAO4R,oBA1BR,MA6Bf20C,EAAY70D,UAAU67D,gBAAkB,WACpC,GAAyB,YAArB/7D,KAAKwO,OAAO4F,MAAsB,CAACpU,KAAKwO,OAAOgN,UAAY,CAAC5O,oBAAM5M,KAAK+T,OAAO,EAK9E,IAJA,IACIwpD,EADav9D,KAAK+T,QAAQgnD,mBAAmB1hD,cAAc,kBAAkB,EAC7CA,cAAc,UAAU,EACxDmkD,EAAsBx9D,KAAK+T,QAAQmnD,aAAa7hD,cAAc,qBAAqB,EAAEjI,SAAS,GAC9FqsD,EAAqBz9D,KAAK+T,QAAQ0hD,aAC7Bz0D,EAAI,EAAGA,EAAIy8D,EAAmB98D,OAAQK,CAAC,IACtChB,KAAK+3D,aAA+C,SAAhC0F,EAAmBz8D,GAAGW,QAAqD,eAAhC87D,EAAmBz8D,GAAGW,QACvB,KAA5D3B,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBpQ,KAAKwO,OAAO6B,WAW3ErQ,KAAKqN,QAAQ8gC,aAAe,IACQ,SAAhCsvB,EAAmBz8D,GAAGW,OACtB47D,EAAmBnsD,SAASpQ,GAAGoZ,MAAMjY,MAAQ,QAC7Cq7D,EAAoBpsD,SAASpQ,GAAGoZ,MAAMjY,MAAQ,UAG9Co7D,EAAmBnsD,SAASpQ,GAAGoZ,MAAMjY,MAAQ,QAC7Cq7D,EAAoBpsD,SAASpQ,GAAGoZ,MAAMjY,MAAQ,SAGlB,IAA3BnC,KAAKqN,QAAQ8gC,cAClBovB,EAAmBnsD,SAASpQ,GAAGoZ,MAAMjY,MAAQ,OAC7Cq7D,EAAoBpsD,SAASpQ,GAAGoZ,MAAMjY,MAAQ,QAtB9CnC,KAAKqN,QAAQ8gC,aAAe,KAC5BovB,EAAmBnsD,SAASpQ,GAAGoZ,MAAMjY,MAAQ,QAC7Cq7D,EAAoBpsD,SAASpQ,GAAGoZ,MAAMjY,MAAQ,SAEd,IAA3BnC,KAAKqN,QAAQ8gC,cAClBovB,EAAmBnsD,SAASpQ,GAAGoZ,MAAMjY,MAAQ,OAC7Cq7D,EAAoBpsD,SAASpQ,GAAGoZ,MAAMjY,MAAQ,UAuBtE4yD,EAAY70D,UAAUi9D,uBAAyB,WAC3Cn9D,KAAK+7D,kBACoB,YAArB/7D,KAAKwO,OAAO4F,MAAuBpU,KAAKwO,OAAOgN,UAAa5O,oBAAM5M,KAAK+T,OAAO,GAC9E/T,KAAK2/C,gBAGboV,EAAY70D,UAAU+6B,cAAgB,WAClC,IAAIgB,EAAQj8B,KACRA,KAAK+T,UACD/T,KAAKwO,OAAO0S,kBAAoB/I,oBAAkBnY,KAAKihB,OAAO,EAC9DjhB,KAAKihB,QAAU,IAAI4b,YAAU78B,KAAK+T,QAAQ1G,QAAS,CAC/C+vB,SAAUp9B,KAAKwO,OAAO6uB,mBACtBN,SAAU,EACVD,eAAgB,CAAA,EAChBQ,SAAUt9B,KAAKwO,OAAOnB,QACtB4vB,WAAY,IAAMlsB,GAClBysB,KAAMtb,GAAgBsO,KAAKxwB,KAAMA,KAAKwO,MAAM,EAC5CkvB,UAAW,SAAUtrB,GACjB4O,GAAiBib,EAAMztB,OAAQ4D,EAAM6pB,EAAMhb,OAAO,GAEtDsc,SAAUld,GAAgBmQ,KAAKxwB,KAAMA,KAAKwO,MAAM,EAChDwuB,iBAAkB,CAAA,EAClBE,OAAQl9B,KAAKm9B,WAAW3M,KAAKxwB,IAAI,EACpC,EAEI,CAACA,KAAKwO,OAAO0S,kBAAoBlhB,KAAKihB,UAC3CjhB,KAAKihB,QAAQ1X,UACbvJ,KAAKihB,QAAU,QAI3B8zC,EAAY70D,UAAU69B,WAAa,SAAU3rB,GACzC,IAEQ4rB,EAOAG,EATJn+B,KAAKwO,OAAOoG,eAAiB5U,KAAKi+B,kBAE9BD,EAAUxxB,WAASxM,KAAKwO,OAAOvB,OAAOjN,KAAKwO,OAAOvB,OAAOtM,OAAS,GAAIX,KAAKwO,OAAOI,QAAQ,EACzFwD,EAAK9R,OAAO0Q,QAAQ,IAAI,GAKrBmtB,EAAO,KACXA,EAAOn+B,KAAK+T,QAAQqpD,WAAWhrD,EAAK9R,MAAM,EAAEk8D,QAC5Cx8D,KAAKwO,OAAO7C,SAAWwyB,EAAKrb,OAAS9iB,KAAKwO,OAAO1B,KAAO6K,GAAY3X,KAAKwO,OAAQ2vB,EAAMn+B,KAAKwO,OAAO1B,IAAI,EACvG9M,KAAKwO,OAAO2P,SAAWggB,EAAKrb,OAASkb,EAAUG,IAP/Cn+B,KAAKwO,OAAO7C,SAAW3L,KAAKwO,OAAO1B,KACnC9M,KAAKwO,OAAO2P,SAAW6f,KAUnC+2B,EAAY70D,UAAU6iC,cAAgB,WAC9B/iC,KAAKwO,OAAOmB,eAAiB3P,KAAKi+B,kBAClCj+B,KAAKwO,OAAOyB,cAAgBjQ,KAAK+T,QAAQsoD,qBACzCr8D,KAAKwO,OAAOgB,eAAiBxP,KAAK+T,QAAQupD,oBAGlDvI,EAAY70D,UAAU4iC,WAAa,SAAU1wB,GAChB,YAArBpS,KAAKwO,OAAO4F,OACZpU,KAAKo7B,iBAAmB,CAAA,EACpBp7B,KAAKwO,OAAO1B,OAAS9M,KAAKwO,OAAO0X,iBACjClmB,KAAKwO,OAAO1B,OAASuR,GAAiBre,KAAKwO,OAAQ4D,CAAI,GAAKpS,CAAAA,KAAKwO,OAAOxB,OACxEhN,KAAKqgC,cAAcjuB,CAAI,IAInC2iD,EAAY70D,UAAUijC,WAAa,SAAU/wB,GAChB,YAArBpS,KAAKwO,OAAO4F,OACZpU,KAAKo7B,iBAAmB,CAAA,EACxBp7B,KAAKqgC,cAAcjuB,CAAI,IAS/B2iD,EAAY70D,UAAU+9B,cAAgB,WAClC,MAAO,eAEX82B,EAAY70D,UAAUqJ,QAAU,WACxBvJ,KAAKwO,OAAOmzB,cAGhB3hC,KAAK24B,sBACD34B,KAAK+T,UACD/T,KAAKwO,OAAO4iD,SACZpxD,KAAK+T,QAAQ6tB,IAAI,sBAAuB5hC,KAAK03D,mBAAmB,EAEpE13D,KAAK04B,eACL14B,KAAK+T,QAAQxK,aAGrBwrD,EAAY70D,UAAUqlC,WAAa,SAAUh0B,GACrCykC,EAASn9B,SAAO,IAAM7C,GAAYzE,CAAI,EAC1CvR,KAAKwO,OAAOsU,OAASlW,CAAAA,CAAAA,oBAAMopC,CAAM,GAGrC+e,EAAY70D,UAAU41D,YAAc,SAAUxmD,EAAQ8C,GAClD,IAAIiE,EAAY,CACZ/G,OAAQA,EAAQmH,YAAarE,EAAK/P,KAAMuyB,aAAc50B,KAAK87D,YAAav7C,OAAQ,CAAA,EAAOjgB,OAAQ8R,EAAK9R,QAExGN,KAAKwO,OAAO+H,QAAQ,gBAAiBF,CAAS,EAC9CjE,EAAKmO,OAASlK,EAAUkK,OACnBvgB,KAAK09D,gBACN19D,KAAK09D,cAAgB,CAAA,GAChBtrD,EAAKurD,gBAAkBvrD,EAAKwrD,gBAAkB,CAAC59D,KAAKwO,OAAOm1B,qBAAwBvxB,EAAK9R,QAAU8R,EAAK9R,OAAOgiB,eAAiB,CAAClQ,EAAK9R,OAAOgiB,cAAclU,UAAUC,SAAS,oBAAoB,IAClM+D,EAAKmO,OAAS,CAAA,EACVg8C,EAAYnqD,GAAQA,EAAKyrD,WACvBzrD,EAAKyrD,WAAWzrD,EAAKyrD,WAAWl9D,OAAS,GACzCyR,EAAKmqD,SACXv8D,KAAK+T,QAAQgpD,UAAUR,CAAQ,GAEnCv8D,KAAK09D,cAAgB,CAAA,IAI7B3I,EAAY70D,UAAU2jD,WAAa,SAAUzxC,GACzCpS,KAAKwO,OAAOmB,aAAe,cACtB3P,KAAKwO,OAAOwD,gBAAkBhS,CAAAA,KAAKwO,OAAO6B,YAC3CrQ,KAAK89D,kBAET99D,KAAKwO,OAAOW,OAAO8c,EAAyB,EAAE,EACM,IAAhDjsB,KAAK+T,QAAQkmD,wBAAwBt5D,SACrCX,KAAK+9D,eAAiB/9D,KAAK+T,QAAQ0nD,kBAEvCz7D,KAAK+T,QAAQ1G,QAAQmrB,aAAa,WAAY,IAAI,EAClDx4B,KAAKomC,cAAc,SAAUh0B,CAAI,EACjC,IAAIb,EAAOvR,KAAK+T,QAAQiqD,cAAch+D,KAAK+T,QAAQ0nD,gBAAgB,EAe/DzB,GAdJh6D,KAAKulC,WAAWh0B,CAAI,EACf3E,oBAAM2E,CAAI,GAAM3E,oBAAM2E,EAAK8H,cAAc,gBAAgB,CAAC,IACP,IAAhDrZ,KAAK+T,QAAQkmD,wBAAwBt5D,SACjCouD,EAAgB/uD,KAAK+T,QAAQkmD,wBAAwBj6D,KAAK+T,QAAQkmD,wBAAwBt5D,OAAS,GACnGigC,EAAW5gC,KAAK+T,QAAQiqD,cAAcjP,CAAa,EAClDniD,oBAAMg0B,CAAQ,GACfA,EAASvnB,cAAc,gBAAgB,EAAEmf,aAAa,WAAY,IAAI,GAG9EjnB,EAAK8H,cAAc,0BAA0B,EAAE+kB,gBAAgB,UAAU,GAExExxB,oBAAM5M,KAAK+T,OAAO,GAAMnH,oBAAM5M,KAAK+T,QAAQ1G,QAAQgM,cAAc,mBAAmB,CAAC,GACtFrZ,KAAK+T,QAAQ1G,QAAQgM,cAAc,mBAAmB,EAAEmf,aAAa,WAAY,IAAI,EAE9Ex4B,KAAK+T,QAAQkmD,yBACxB,GAAI,CAACj6D,KAAKwO,OAAOm1B,oBACb,IAAK,IAAI3iC,EAAI,EAAGA,EAAIg5D,EAAKr5D,OAAQK,CAAC,GAC1Bg5D,EAAKh5D,KAAOhB,KAAK+T,QAAQ0nD,iBACzBz7D,KAAK+T,QAAQiqD,cAAchE,EAAKh5D,EAAE,EAAEw3B,aAAa,WAAY,GAAG,EAGhEx4B,KAAK+T,QAAQiqD,cAAchE,EAAKh5D,EAAE,EAAEo9B,gBAAgB,UAAU,EAI1E,IAAIzjB,EAAMq/C,EAAKr5D,OAQXo+B,GAPA/+B,KAAKwO,OAAO8rB,qBACZt6B,KAAKwO,OAAOqU,gBAAkBrW,WAAS,OAAQ4F,EAAK/P,IAAI,EAE7C,EAANsY,IACDtY,EAAOrC,KAAK+T,QAAQomD,gBAAgBH,EAAKr/C,EAAM,IAAItY,KACvDrC,KAAKwO,OAAOqU,gBAAkBrW,WAAS,OAAQnK,CAAI,GAEzCmK,WAAS,aAAc4F,CAAI,GACrCgzB,EAAc54B,WAAS,yBAA0BxM,KAAK+T,QAAQ6oD,eAAe,EAC7E58D,KAAKwO,OAAOo2B,UAAYh4B,oBAAMmyB,CAAO,GAAK3sB,EAAK9R,QAAU,CAAC8kC,GAAe,CAAChzB,EAAK9R,OAAO0Q,QAAQ,eAAe,IAC7GhR,KAAKwO,OAAOsU,OAAStW,WAAS,SAAU4F,EAAK/P,IAAI,EAC5CrC,KAAKwO,OAAOsU,QACb9iB,KAAKs8D,YAAYlqD,EAAK/P,IAAI,GAGlCrC,KAAKwO,OAAO4pB,YAAchmB,EAAKinD,IACzBr5D,KAAKwO,OAAO8rB,sBAA2BloB,EAAK6rD,yBAC9Cj+D,KAAKmmC,SAASnmC,KAAK+T,QAAQ0nD,gBAAgB,EAE1Cz7D,KAAKwO,OAAOwD,iBACbhS,KAAK40B,aAAe,CAAA,IAI5BmgC,EAAY70D,UAAUwhC,aAAe,WACR,YAArB1hC,KAAKwO,OAAO4F,MAAuBxH,oBAAM5M,KAAK+T,OAAO,GACW,KAA5D/T,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAiBpQ,KAAKwO,OAAO6B,YAC/ErQ,KAAKm8D,iBAAiB,CAAA,CAAK,GAIvCpH,EAAY70D,UAAU49D,gBAAkB,WACpC99D,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EAGrD,IAFA,IAAIutD,EAAkB99D,KAAKk+D,kBACvBC,EAAa,EACVA,EAAaL,EAAgBn9D,QAAQ,CACxC,IAAIy9D,EAASN,EAAgBK,GACzBE,EAASx+C,GAAY7f,KAAKwO,OAAQ4vD,CAAM,EAC5Cp+D,KAAKwO,OAAO+B,cAAc9C,KAAK4wD,CAAM,EACrCF,CAAU,GAEdn+D,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAevQ,KAAKwO,OAAO+B,eAAiB,CAAA,CAAI,GAEhFwkD,EAAY70D,UAAUg2D,cAAgB,SAAU9jD,GAE5C,IAQQwuB,EARJ,CAAC5gC,KAAKwO,OAAOm1B,qBAAuB/2B,oBAAMwF,EAAK/P,IAAI,GAC/CkP,EAAOvR,KAAK+T,QAAQiqD,cAAc5rD,EAAKmqD,QAAQ,EAC9C3vD,oBAAM2E,CAAI,GACXA,EAAK6sB,gBAAgB,UAAU,GAGgB,EAA9Cp+B,KAAK+T,QAAQkmD,wBAAwBt5D,SACtCouD,EAAgB/uD,KAAK+T,QAAQkmD,wBAAwBj6D,KAAK+T,QAAQkmD,wBAAwBt5D,OAAS,GACnGigC,EAAW5gC,KAAK+T,QAAQiqD,cAAcjP,CAAa,EAClDniD,oBAAMg0B,CAAQ,GACfA,EAASvnB,cAAc,gBAAgB,EAAE+kB,gBAAgB,UAAU,GAGrC,CAAC,IAAnCp+B,KAAK+T,QAAQ0nD,kBACbz7D,KAAK+T,QAAQ1G,QAAQmrB,aAAa,WAAY,GAAG,EAEhDx4B,KAAK40B,cAIV50B,KAAK89D,kBACoC,IAArC99D,KAAKwO,OAAO+B,cAAc5P,SAC1Bia,WAAS,yBAA0B,CAAA,EAAO5a,KAAK+T,QAAQ6oD,eAAe,EACtEv2B,cAAY,CAACrmC,KAAKwO,OAAOnB,SAAUi4B,EAAgB,GAEvDtlC,KAAKwO,OAAOW,OAAO8c,EAAyB,EAAE,EAC9CjsB,KAAKomC,cAAc,WAAYh0B,CAAI,EACnCpS,KAAKwO,OAAO4pB,YAAc,MAVtBp4B,KAAK40B,aAAe,CAAA,GAY5BmgC,EAAY70D,UAAUkmC,cAAgB,SAAU92B,EAAQ8C,GAChDiE,EAAY,CAAE/G,OAAQA,EAAQmH,YAAarE,EAAK/P,KAAMuyB,aAAc50B,KAAK87D,aAC7E97D,KAAKwO,OAAO+H,QAAQ,aAAcF,CAAS,EAC3CrW,KAAK87D,YAAc,CAAA,GAEvB/G,EAAY70D,UAAUy7B,WAAa,WAC/B37B,KAAK4jC,eAAe,CAAA,CAAI,EACxB5jC,KAAK6jC,eAAiB,IAAIC,iBAAe9jC,KAAK+T,QAAQ1G,QAAS,CAC3D02B,UAAW/jC,KAAKs+D,aAAa9tC,KAAKxwB,IAAI,EACtCikC,WAAYjkC,KAAKikC,WACjB3nB,UAAW,QACd,EACDtc,KAAKkkC,mBAAqB,IAAIJ,iBAAe9jC,KAAKqN,QAAS,CACvD02B,UAAW/jC,KAAKu+D,eAAe/tC,KAAKxwB,IAAI,EACxCikC,WAAYjkC,KAAKikC,WACjB3nB,UAAW,UACd,EACD8nB,eAAa3zB,IAAIzQ,KAAK+T,QAAQ1G,QAAS,OAAQrN,KAAKw+D,YAAax+D,IAAI,EACrEokC,eAAa3zB,IAAIzQ,KAAKwO,OAAOnB,QAAS,WAAYrN,KAAKgvC,OAAQhvC,IAAI,GAEvE+0D,EAAY70D,UAAUw4B,aAAe,WACjC14B,KAAK4jC,eAAe,CAAA,CAAK,EACzB5jC,KAAK6jC,eAAet6B,UACpBvJ,KAAKkkC,mBAAmB36B,UACxB66B,eAAatzB,OAAO9Q,KAAK+T,QAAQ1G,QAAS,OAAQrN,KAAKw+D,WAAW,EAClEp6B,eAAatzB,OAAO9Q,KAAKwO,OAAOnB,QAAS,WAAYrN,KAAKgvC,MAAM,GAEpE+lB,EAAY70D,UAAU0jC,eAAiB,SAAUW,GAC7C,IAAItI,EAAQj8B,KACRukC,GACItkB,EAAMjgB,KAAK+T,QAAQmnD,aACvBl7D,KAAKwkC,SAAW,IAAIC,QAAMxkB,EAAK,CAC3BykB,IAAK,SAAUC,GACU,IAAjBA,EAAIE,UAAkBF,EAAIK,cAAc1kC,OAAO8N,UAAUC,SAAS,WAAW,GAC7E4tB,EAAMkF,kBAGdgE,QAAS,SAAU5W,GACX0N,EAAMztB,OAAOo2B,WACbrW,EAAEyW,cAAclP,iBACZmG,EAAMztB,OAAOm1B,sBACb/oB,WAAS,yBAA0BqhB,EAAMztB,OAAOm1B,oBAAqB1H,EAAMloB,QAAQ6oD,eAAe,EAClGv3B,WAAS,CAACpJ,EAAMztB,OAAOnB,SAAUi4B,EAAgB,GAEjDhlC,EAASiuB,EAAEyW,cAAc1kC,UAErB+4D,EAAMroD,UAAQ1Q,EAAQ,IAAMyQ,EAAO,EACnCuY,EAAQ2S,EAAMloB,QAAQ+oD,UAAUpnD,QAAQ2jD,CAAG,EAC/Cp9B,EAAMloB,QAAQgpD,UAAUzzC,CAAK,IAI5C,GAGGtpB,KAAKwkC,UACLxkC,KAAKwkC,SAASj7B,WAK1BwrD,EAAY70D,UAAU88D,gBAAkB,WACpC32B,cAAY,CAACrmC,KAAKwO,OAAOnB,SAAUi4B,EAAgB,EACnDtlC,KAAK+T,QAAQqtB,iBACbphC,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAe,IAAM,CAAA,CAAI,EACrDvQ,KAAKwO,OAAOW,OAAO8c,EAAyB,EAAE,EACR,CAAC,IAAnCjsB,KAAK+T,QAAQ0nD,mBACbz7D,KAAKgmC,WAAa,MAEtBhmC,KAAK40B,aAAe,CAAA,GAExBmgC,EAAY70D,UAAUs+D,YAAc,WAChCx+D,KAAKmmC,SAAS,IAAI,GAEtB4uB,EAAY70D,UAAU8uC,OAAS,SAAUzgB,GACrC,IAAyB,OAApBA,EAAEkwC,eAA0BztD,UAAQud,EAAEkwC,cAAe,SAAS,IAAMlwC,EAAEkwC,gBAGvE,CAAC7xD,oBAAM5M,KAAK+T,QAAQ1G,OAAO,EAE3B,IADA,IAAIqxD,EAAa1+D,KAAK+T,QAAQ1G,QAAQuD,iBAAiB,IAAI,EAClD5P,EAAI,EAAGA,EAAI09D,EAAW/9D,OAAQK,CAAC,GAChC09D,EAAW19D,GAAGoN,UAAUC,SAAS,SAAS,GAC1CrO,KAAKmmC,SAAS,IAAI,GAKlC4uB,EAAY70D,UAAUy+D,oBAAsB,WACxC,OAAS/xD,oBAAM5M,KAAKymC,gBAAgB,EACwC,KAAxE/3B,SAAS1O,KAAKymC,iBAAiB/5B,aAAa,eAAe,EAAG,EAAE,EAAI,GAG5EqoD,EAAY70D,UAAUq+D,eAAiB,SAAUhwC,GAC7C,GAAKvuB,KAAK87B,WAGV,OAAQvN,EAAEjf,QACN,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,YACL,IAAK,aACL,IAAK,UACL,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,WACL,IAAK,YACL,IAAK,SACL,IAAK,MACL,IAAK,MACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,IAAK,KACL,IAAK,WACL,IAAK,SACL,IAAK,QACDif,EAAEuH,mBAOdi/B,EAAY70D,UAAUo+D,aAAe,SAAU/vC,GAC3C,GAAKvuB,KAAK87B,WAAV,CAGAvN,EAAEuH,iBACF,IAyDgBwkC,EACAsE,EACAC,EA3DZvvD,EAASif,EAAEjf,OACXwvD,EAAY/mD,GAAc/X,KAAKwO,OAAQxO,KAAK+T,QAAQC,UAAU,EAC9D+qD,EAAaD,EAAUn+D,OACvBq+D,EAAWh/D,KAAK2+D,sBAChBM,EAAWj/D,KAAK+T,QAAQ0nD,iBACxByD,EAAgBl/D,KAAK+T,QAAQkmD,wBAIjC,OAAQ3qD,GACJ,IAAK,WACDtP,KAAKwO,OAAOW,OAAO6zB,EAAoB,EAAE,EACzC3c,GAAWrmB,KAAKwO,OAAQxO,KAAKwO,OAAO+B,cAAevQ,KAAKwO,OAAO1B,KAAM,SAAS,EAC9E,MACJ,IAAK,MACD+B,GAAa7O,KAAKwO,MAAM,EACxB,MACJ,IAAK,MACL,IAAK,WACDxO,KAAK0nC,gBACL,MACJ,IAAK,QACqC,CAAC,IAAnC1nC,KAAK+T,QAAQ0nD,kBAAyD,CAAA,IAA9Bz7D,KAAK+T,QAAQ6hD,aAChDrnC,EAAEjuB,OAAO8N,UAAUC,SAAS,gBAAgB,IACzCqnD,EAAannC,EAAEjuB,OAAOozC,uBAAuB,aAAa,EAAE/yC,OAAuB,aAAd,YACrEw+D,EAAen/D,KAAK+T,QAAQqrD,eAAe7wC,EAAEjuB,OAAO+Y,cAAc,kBAAkB,EAAE3M,aAAa,cAAc,CAAC,EAAE/K,MACxH3B,KAAK+T,QAAQ1I,WAAW8zD,EAAczJ,CAAS,EAC1C9oD,oBAAM5M,KAAKymC,iBAAiB44B,WAAW,IACxCr/D,KAAKymC,iBAAiB44B,YAAY7mC,aAAa,WAAY,GAAG,GAMtEgkC,EADMx8D,KAAK+T,QAAQomD,gBAAgBn6D,KAAK+T,QAAQ0nD,kBAAkBp5D,QAE9DA,EAAOiV,KAAK+T,MAAM/T,KAAKC,UAAUilD,CAAO,CAAC,EAC7Cx8D,KAAKs8D,YAAYj6D,CAAI,GAEzB,MACJ,IAAK,QACD+S,GAAUpV,KAAKwO,MAAM,EACrB,MACJ,IAAK,QACDxO,KAAKwO,OAAOyO,WAAa,GACzBF,GAAa/c,KAAKwO,MAAM,EACxB,MACJ,IAAK,QACD8G,GAAStV,KAAKwO,MAAM,EACpB,MACJ,IAAK,QACDxO,KAAKmjB,aACL,MACJ,IAAK,KACDnjB,KAAK2nC,gBACL,MACJ,IAAK,QACG,CAAC/6B,oBAAMkyD,EAAU,EAAE,GAAK9+D,KAAKwO,OAAOm1B,sBAEhCi7B,GADAtE,EAAUt6D,KAAK+T,QAAQmnD,aAAa7hD,cAAc,YAAY,GAC1CytB,UACpB+3B,EAAgB7+D,KAAK+T,QAAQ0nD,iBACjCz7D,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkB,EAAGiC,EAAUn+D,OAAS,CAAC,EACtE25D,EAAQxzB,UAAY83B,EACE,CAAC,IAAnBC,IACA7+D,KAAKmmC,SAAS04B,CAAa,EAGnC,MACJ,IAAK,WACL,IAAK,MACD,GAAI,CAACjyD,oBAAMkyD,EAAU,EAAE,EACnB,GAAK9+D,KAAKwO,OAAOm1B,qBAAoC,aAAbpV,EAAEjf,OAGrC,CAAA,GAAsC,CAAC,IAAnCtP,KAAK+T,QAAQ0nD,kBAAwC,QAAbltC,EAAEjf,OAC/C,OAGAtP,KAAKs/D,eAAe/wC,CAAC,OANrBvuB,KAAK+T,QAAQgpD,UAAU,CAAC,EAShC,MACJ,IAAK,UACInwD,oBAAMkyD,EAAU,EAAE,IACd9+D,KAAKwO,OAAOm1B,oBAIb3jC,KAAKmmC,SAAS44B,EAAa,CAAC,EAH5B/+D,KAAK+T,QAAQgpD,UAAUgC,EAAa,CAAC,GAM7C,MACJ,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,QACI/+D,KAAKwO,OAAOm1B,oBAIR/2B,oBAAMkyD,EAAU,EAAE,IACdlyD,oBAAMqyD,CAAQ,GAAkB,CAAC,IAAdA,EAIH,WAAb1wC,EAAEjf,QAAoC,cAAbif,EAAEjf,OAC3BtP,KAAK+T,QAAQgpD,UAAU,CAAC,EAGxB/8D,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkB,EAAGiC,EAAUn+D,OAAS,CAAC,EAP1EX,KAAKu/D,aAAaT,EAAWG,EAAU,KAAM1wC,CAAC,GALtDvuB,KAAK+T,QAAQgpD,UAAwB,cAAbxuC,EAAEjf,QAAuC,WAAbif,EAAEjf,OAAuB,EAAIwvD,EAAUn+D,OAAS,CAAC,EAiBzG,MACJ,IAAK,QACL,IAAK,UACL,IAAK,aACL,IAAK,YACDX,KAAKw/D,eAAeN,EAAeF,EAAUC,EAAU1wC,CAAC,EACxD,MACJ,IAAK,OACL,IAAK,SACL,IAAK,UACL,IAAK,YACDvuB,KAAKy/D,gBAAgBX,EAAWG,EAAUD,EAAUE,EAAe3wC,CAAC,EACpE,MACJ,IAAK,SACL,IAAK,WACIvuB,KAAKwO,OAAOm1B,oBAIb3jC,KAAK0/D,iBAAiBZ,EAAWvwC,EAAG0wC,CAAQ,EAH5Cj/D,KAAK2/D,aAAab,EAAWvwC,EAAG0wC,CAAQ,EAK5C,MACJ,IAAK,OACDv4B,EAAY,CAACl6B,WAASxM,KAAKwO,OAAOxB,MAAQ,KAAO,OAAQ8xD,EAAU,EAAE,GACrE9+D,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAem2B,GAAa,CAAA,CAAI,EAC5D1mC,KAAKw6D,cAAc9zB,CAAS,EAC5B,MACJ,IAAK,SACL,IAAK,WACD1mC,KAAK2/D,aAAab,EAAWvwC,EAAG0wC,CAAQ,EACxC,MACJ,IAAK,MACDr+B,EAAW,CAACp0B,WAASxM,KAAKwO,OAAOxB,MAAQ,KAAO,OAAQ8xD,EAAUC,EAAa,EAAE,GACjF/+D,KAAKwO,OAAO3B,cAAc,CAAE0D,cAAeqwB,GAAY,CAAA,CAAI,EAC3D5gC,KAAKw6D,cAAc55B,CAAQ,EAC3B,MACJ,IAAK,OACD5gC,KAAKwO,OAAOo5B,sBAIxBmtB,EAAY70D,UAAUg+D,gBAAkB,WACpC,OAAOl+D,KAAK+T,QAAQsoD,sBAExBtH,EAAY70D,UAAUijB,WAAa,WAC/B,GAAyC,IAArCnjB,KAAKwO,OAAO+B,cAAc5P,OAAc,CACxCX,KAAKwO,OAAO8D,SAAWtS,KAAK+T,QAAQsoD,qBAEpC,IADA,IAAIrkD,EAAQhY,KAAKwO,OAAO8D,SACftR,EAAI,EAAGA,EAAIgX,EAAMrX,OAAQK,CAAC,GAC/B,GAAI,CAACoiB,GAAkBpL,EAAMhX,EAAE,EAE3B,OADAgU,KAAAA,EAAmBhV,KAAKwO,OAAQwJ,EAAMhX,GAAIqiB,EAAyB,EAI3EC,GAAStjB,KAAKwO,OAAQxO,KAAKwO,OAAO1B,KAAM9M,KAAKwO,OAAO+B,aAAa,IAGzEwkD,EAAY70D,UAAUwnC,cAAgB,WAClC,GAAI1nC,KAAKwO,OAAO+B,eAAoD,EAAnCvQ,KAAKwO,OAAO+B,cAAc5P,OAAY,CACnEX,KAAKwO,OAAO8D,SAAWtS,KAAK+T,QAAQsoD,qBAEpC,IADA,IAAIrkD,EAAQhY,KAAKwO,OAAO8D,SACftR,EAAI,EAAGA,EAAIgX,EAAMrX,OAAQK,CAAC,GAC/B,GAAI,CAACiiB,EAAcjL,EAAMhX,EAAE,EAEvB,OADAgU,KAAAA,EAAmBhV,KAAKwO,OAAQwJ,EAAMhX,GAAIkiB,CAAqB,EAIvE3F,EAAavd,KAAKwO,OAAQ,QAAQ,IAG1CumD,EAAY70D,UAAUynC,cAAgB,WACO,IAArC3nC,KAAKwO,OAAO+B,cAAc5P,SAC1BX,KAAKogC,mBACLpd,GAAShjB,KAAKwO,MAAM,IAG5BumD,EAAY70D,UAAUkgC,iBAAmB,WACrC,IAAI/9B,EAAOrC,KAAKk+D,kBAAkB,GAClCt7C,GAAmB5iB,KAAKwO,OAAQnM,CAAI,GAExC0yD,EAAY70D,UAAUu/D,gBAAkB,SAAUX,EAAWG,EAAUD,EAAUE,EAAe3wC,GACvFvuB,KAAKwO,OAAOm1B,oBAII,CAAC,IAAds7B,GAAiC,SAAb1wC,EAAEjf,QAAkC,WAAbif,EAAEjf,OAG3B,CAAC,IAAd2vD,GAAmBD,IAAaC,IACrB,SAAb1wC,EAAEjf,QAAkC,WAAbif,EAAEjf,SAAwBtP,KAAK4/D,WAAWV,EAAeF,CAAQ,EAI3Fh/D,KAAK6/D,kBAAkBZ,EAAUC,EAAeJ,EAAWvwC,CAAC,EAH5DvuB,KAAK8/D,qBAAqBb,EAAUD,EAAUE,EAAe3wC,CAAC,EAJ9DvuB,KAAK0/D,iBAAiBZ,EAAWvwC,EAAG0wC,CAAQ,EAJhDj/D,KAAK2/D,aAAab,EAAWvwC,EAAG0wC,CAAQ,GAehDlK,EAAY70D,UAAUy/D,aAAe,SAAUpvD,EAAege,EAAGguC,GACzD,CAAC3vD,oBAAM5M,KAAKymC,gBAAgB,GAAKzmC,KAAKwO,OAAOm1B,oBAC5B,aAAbpV,EAAEjf,OACFtP,KAAK+T,QAAQgpD,UAAU/8D,KAAK2+D,sBAAwB,CAAC,EAGrD3+D,KAAK+T,QAAQgpD,UAAU/8D,KAAK2+D,sBAAwB,CAAC,EAGnD/xD,oBAAM2vD,CAAQ,GAAkB,CAAC,IAAdA,EASpB3vD,oBAAM2D,EAAc,EAAE,GACvBvQ,KAAK+T,QAAQgpD,UAAU,CAAC,EATX,aAAbxuC,EAAEjf,QAAsC,aAAbif,EAAEjf,QAAsC,cAAbif,EAAEjf,QAAuC,WAAbif,EAAEjf,OACpFtP,KAAK+T,QAAQgpD,UAAUR,GAAaA,IAAahsD,EAAc5P,OAAS,EAAK,EAAI,EAAE,EAGnFX,KAAK+T,QAAQgpD,UAAUR,GAA0B,IAAbA,EAAkB,EAAI,EAAE,GASxExH,EAAY70D,UAAUs/D,eAAiB,SAAUN,EAAeF,EAAUC,EAAU1wC,GAChF,IAaQqa,EAbH5oC,KAAK4/D,WAAWV,EAAeF,CAAQ,GAAkB,CAAC,IAAdC,GAAiC,eAAb1wC,EAAEjf,QAAwC,YAAbif,EAAEjf,OAQ1F1C,oBAAM5M,KAAKymC,gBAAgB,GAAKu4B,IAAaC,EAIjC,CAAC,IAAdA,GAAgC,cAAb1wC,EAAEjf,QAA0BtP,KAAKwO,OAAOm1B,qBAC5DiF,EAAQq2B,EACZC,EAAchzC,MACdlsB,KAAK+T,QAAQugC,WAAW4qB,CAAa,EACrCl/D,KAAKmmC,SAASyC,CAAK,GAED,eAAbra,EAAEjf,QACPtP,KAAK+T,QAAQgpD,UAAUkC,CAAQ,GAV/BC,EAAczxD,KAAKzN,KAAK2+D,qBAAqB,EAC7C3+D,KAAK+T,QAAQugC,WAAW4qB,CAAa,GATjCF,EAAWC,EACXj/D,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkBmC,EAAUC,CAAQ,EAGjEj/D,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkBoC,EAAUD,CAAQ,GAiB7EjK,EAAY70D,UAAUw/D,iBAAmB,SAAU1nD,EAAOuW,EAAGguC,GACzD,IAGIn0B,EAFCx7B,oBAAM5M,KAAKymC,gBAAgB,EAKtB75B,oBAAM2vD,CAAQ,GAAkB,CAAC,IAAdA,EAKpB3vD,oBAAMoL,EAAM,EAAE,IACfowB,EAAW,GALfA,EAAyB,aAAb7Z,EAAEjf,QAAsC,WAAbif,EAAEjf,OACrCitD,GAAaA,EAAWvkD,EAAMrX,OAAU,EAAI,GAAK47D,GAAaA,EAAW,EAAK,EAAI,IANlFwD,EAAY//D,KAAK2+D,sBACrBv2B,EAAyB,aAAb7Z,EAAEjf,QAAsC,WAAbif,EAAEjf,OACrCywD,GAAcA,EAAY/nD,EAAMrX,OAAS,EAAK,EAAI,GAAKo/D,GAAcA,EAAY,EAAK,EAAI,IAWlG//D,KAAKmmC,SAASiC,CAAQ,GAE1B2sB,EAAY70D,UAAUq/D,aAAe,SAAUvnD,EAAOgoD,EAAYhB,EAAUzwC,GACtC,YAA9BvuB,KAAK+T,QAAQksD,cAA4D,iBAA9BjgE,KAAK+T,QAAQksD,aACvC,WAAb1xC,EAAEjf,QAAoC,UAAbif,EAAEjf,QACvB1C,oBAAM5M,KAAKgmC,UAAU,GAAKhmC,KAAK+9D,iBAAmBiC,IAClDhgE,KAAK+9D,eAAiBiC,GAET,aAAbzxC,EAAEjf,OACFtP,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkB78D,KAAK+9D,eAAgB/lD,EAAMrX,OAAS,CAAC,EAGpFX,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkB,EAAG78D,KAAK+9D,cAAc,EAEzE/9D,KAAKgmC,WAAag6B,GAGD,UAAbzxC,EAAEjf,OACFtP,KAAK+T,QACDugC,WAAWt0C,KAAKkgE,WAAWtzD,oBAAMozD,CAAU,EAAI,EAAIA,EAAYpzD,oBAAMoyD,CAAQ,EAAIhnD,EAAMrX,OAAS,EAAIq+D,EAAUzwC,CAAC,CAAC,EAGhH3hB,oBAAMozD,CAAU,EAChBhgE,KAAK+T,QAAQgpD,UAAU,CAAC,EAGxB/8D,KAAK+T,QAAQugC,WAAWt0C,KAAKkgE,WAAWtzD,oBAAMoyD,CAAQ,EAAI,EAAIA,EAAUgB,EAAYzxC,CAAC,CAAC,EAMlGvuB,KAAK+T,QAAQ6oD,gBAAgBG,UAAyB,cAAbxuC,EAAEjf,QAAuC,WAAbif,EAAEjf,OAAuB,EAAI0I,EAAMrX,OAAS,IAGzHo0D,EAAY70D,UAAUggE,WAAa,SAAU15B,EAAOoC,EAAOra,GACvD,IAAI4xC,EAAUngE,KAAK+T,QAAQkmD,wBAC3B,GAAiB,UAAb1rC,EAAEjf,OACF,IAAK,IAAItO,EAAIwlC,EAAQ,EAAGxlC,GAAK4nC,EAAO5nC,CAAC,GACjCm/D,EAAQ1yD,KAAKzM,CAAC,OAIlB,IAASA,EAAI4nC,EAAQ,EAAGpC,GAASxlC,EAAGA,CAAC,GACjCm/D,EAAQ1yD,KAAKzM,CAAC,EAGtB,OAAOm/D,GAEXpL,EAAY70D,UAAU4/D,qBAAuB,SAAUb,EAAUmB,EAAQC,EAAe9xC,GAChFqa,GAAgC,cAAbra,EAAEjf,QAAuC,WAAbif,EAAEjf,OAAuB,EAAI,CAAC,EAC7Ek3B,EAAQ55B,oBAAM5M,KAAKgmC,UAAU,EAAIi5B,EAAWoB,EAAc,GAC1D75B,IAAUoC,EACV5oC,KAAK+T,QAAQgpD,UAAUv2B,CAAK,EAGxBA,EAAQoC,EACS,cAAbra,EAAEjf,QAAuC,WAAbif,EAAEjf,OAC9BtP,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkBr2B,EAAOoC,CAAK,EAG3D5oC,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkBj0B,EAAOpC,CAAK,EAG7C,cAAbjY,EAAEjf,QAAuC,WAAbif,EAAEjf,OACnCtP,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkBj0B,EAAOpC,CAAK,EAG3DxmC,KAAK+T,QAAQ6oD,gBAAgBC,kBAAkBr2B,EAAOoC,CAAK,EAGnE5oC,KAAKgmC,WAAahmC,KAAK+T,QAAQ0nD,kBAEnC1G,EAAY70D,UAAUimC,SAAW,SAAU50B,GACvC,IAAIi1B,EAAQxmC,KAAKymC,iBACb65B,EAActgE,KAAK+T,QAAQiqD,cAAczsD,CAAI,EAC7Ci1B,IACAA,EAAMpI,gBAAgB,UAAU,EAChCiI,cAAY,CAACG,GAAQ,CAACqB,GAAW04B,GAAY,GAE5C3zD,oBAAM0zD,CAAW,IAClBtgE,KAAK+T,QAAQ1G,QAAQmrB,aAAa,WAAY,IAAI,EAClD8nC,EAAY9nC,aAAa,WAAY,GAAG,EACxC8nC,EAAYhwC,QACZ+U,WAAS,CAACi7B,GAAc,CAACz4B,GAAW04B,GAAY,IAGxDxL,EAAY70D,UAAUo/D,eAAiB,SAAU/wC,GAC7C,IAEIiyC,EAFAC,EAAY5nD,SAAO,SAAU7Y,KAAKqN,OAAO,EAC7CrN,KAAK+T,QAAQ1G,QAAQmrB,aAAa,WAAY,IAAI,EAE9C,CAAC5rB,oBAAM2hB,EAAEjuB,MAAM,GAAKiuB,EAAEjuB,OAAO8N,UAAUC,SAAS,iBAAiB,GACjErO,KAAKmmC,SAAS,CAAC,EACfq6B,EAAYjyC,EAAEjuB,OAAO+rB,oBAEfzf,oBAAM5M,KAAK+T,QAAQ1G,QAAQgM,cAAc,UAAU,CAAC,GAAiE,OAA3DrZ,KAAK+T,QAAQ1G,QAAQgM,cAAc,UAAU,EAAEqnD,QAK/GF,EAAY3nD,SAAO,oBAAqB7Y,KAAKqN,OAAO,GAJpDmzD,EAAYxgE,KAAK+T,QAAQ1G,QAAQgM,cAAc,UAAU,EAAEgT,mBAC3DrsB,KAAKmmC,SAAS,CAAC,GAKdv5B,oBAAM4zD,CAAS,IAChBA,EAAUhoC,aAAa,WAAY,GAAG,EACtCgoC,EAAUlwC,QACV+U,WAAS,CAACm7B,GAAY,CAAC34B,GAAW04B,GAAY,EAC9CE,EAAUjoC,aAAa,WAAY,GAAG,EACX,IAAvBioC,EAAUhU,UAAyC,IAAvB+T,EAAU/T,UACtCpmB,cAAY,CAACo6B,GAAY,CAAC54B,GAAW04B,GAAY,IAI7DxL,EAAY70D,UAAUumC,eAAiB,WACnC,OAAO5tB,SAAO,IAAM0nD,GAAavgE,KAAKqN,OAAO,GAEjD0nD,EAAY70D,UAAU0/D,WAAa,SAAUS,EAAerB,GAExD,IADA,IAAI2B,EAAQ,CAAA,EACH3/D,EAAI,EAAGA,GAAKq/D,EAAc1/D,OAAS,EAAGK,CAAC,GAC5C,GAAIq/D,EAAcr/D,KAAOg+D,EAAU,CAC/B2B,EAAQ,CAAA,EACR,MAGR,OAAOA,GAEX5L,EAAY70D,UAAU2/D,kBAAoB,SAAUZ,EAAUoB,EAAevB,EAAWvwC,GACnE,CAAC,IAAd0wC,EACAj/D,KAAK+T,QAAQgpD,UAAU,CAAC,EAGpBnwD,oBAAM5M,KAAKgmC,UAAU,GAAKzX,EAAE0S,UAC5BjhC,KAAKgmC,WAAahmC,KAAK+T,QAAQ0nD,iBAC/Bz7D,KAAK+T,QAAQugC,WAAW,CAAC2qB,EAAwB,cAAb1wC,EAAEjf,QAAuC,WAAbif,EAAEjf,OACzD2vD,GAAaA,IAAaH,EAAUn+D,OAAS,EAAK,EAAI,GAAOs+D,GAA0B,IAAbA,EAAkB,EAAI,GAAI,GAG5F,cAAb1wC,EAAEjf,QAAuC,YAAbif,EAAEjf,QACb,cAAbif,EAAEjf,QAAkE,CAAC,IAAzC+wD,EAAc3qD,QAAQupD,EAAW,CAAC,EAC1DA,IAAaH,EAAUn+D,OAAS,GAChC0/D,EAAc5yD,KAAKwxD,EAAW,CAAC,EAGjB,YAAb1wC,EAAEjf,QAAgE,CAAC,IAAzC+wD,EAAc3qD,QAAQupD,EAAW,CAAC,EAChD,IAAbA,GACAoB,EAAc5yD,KAAKwxD,EAAW,CAAC,EAInCoB,EAAcn0C,MAElBlsB,KAAK+T,QAAQugC,WAAW+rB,CAAa,GAGpB,WAAb9xC,EAAEjf,OACGtP,KAAK4/D,WAAWS,EAAergE,KAAK2+D,sBAAwB,CAAC,EAK9D3+D,KAAKmmC,SAASnmC,KAAK2+D,sBAAwB,CAAC,GAJ5C0B,EAAc5yD,KAAMzN,KAAK2+D,sBAAwB,GACjD3+D,KAAK+T,QAAQugC,WAAW+rB,CAAa,GAMnCrgE,KAAK4/D,WAAWS,EAAergE,KAAK2+D,sBAAwB,CAAC,EAKnE3+D,KAAKmmC,SAASnmC,KAAK2+D,sBAAwB,CAAC,GAJ5C0B,EAAc5yD,KAAMzN,KAAK2+D,sBAAwB,GACjD3+D,KAAK+T,QAAQugC,WAAW+rB,CAAa,IASzDtL,EAAY70D,UAAUgiC,aAAe,SAAU3T,GAC3C,GAAyB,YAArBvuB,KAAKwO,OAAO4F,KAIhB,OADa5H,WAAS,SAAU+hB,CAAC,GAE7B,IAAK,cACDvuB,KAAKypC,YAAYj9B,WAAS,MAAO+hB,CAAC,CAAC,EACnC,MACJ,IAAK,gBACDvuB,KAAK0pC,cAAcl9B,WAAS,MAAO+hB,CAAC,CAAC,EACrC,MACJ,IAAK,WACDvuB,KAAK2pC,SAASn9B,WAAS,KAAM+hB,CAAC,CAAC,EAC/B,MACJ,IAAK,eACDvuB,KAAK87D,YAAc,CAAA,EACnB,MACJ,IAAK,aACD97D,KAAK87D,YAAc,CAAA,EACnB97D,KAAK4pC,WAAWp9B,WAAS,KAAM+hB,CAAC,EAAG/hB,WAAS,UAAW+hB,CAAC,CAAC,EACzD,MACJ,IAAK,YACDvuB,KAAK87D,YAAc,CAAA,EACnB97D,KAAK2gC,kBACL,MACJ,IAAK,iBACD3gC,KAAK87D,YAAc,CAAA,EACnB97D,KAAKmhC,mBAIjB4zB,EAAY70D,UAAU0gE,WAAa,SAAUpwD,GACzC,IAAI6qD,EAAcr7D,KAAK+T,QAAQunD,wBAC3B37C,EAAU,GACVkhD,EAAY,EAA6D,KAA5D7gE,KAAKwO,OAAO0B,oBAAoBC,UAAU9C,QAAQ+C,OAAgBpQ,CAAAA,KAAKwO,OAAO6B,YAC3FiB,EAAStR,KAAKwO,OAAOxB,MAAQ,KAAO,OACxC,GAAIhN,KAAKwO,OAAOxB,OAAS,CAAC6zD,EACtB,IAAK,IAAI7/D,EAAI,EAAG2Z,EAAM0gD,EAAY16D,OAAQK,EAAI2Z,EAAK3Z,CAAC,GACQ,CAAC,IAArDwP,EAAMkF,QAAQlJ,WAAS8E,EAAQ+pD,EAAYr6D,EAAE,CAAC,GAC9C2e,EAAQlS,KAAK4tD,EAAYr6D,EAAE,OAKnC,IAASA,EAAI,EAAG2Z,EAAM0gD,EAAY16D,OAAQK,EAAI2Z,EAAK3Z,CAAC,GAAI,CACpD,IAAI8/D,EAASt0D,WAAS,aAAc6uD,EAAYr6D,EAAE,EAAIwL,WAAS,OAAQ6uD,EAAYr6D,EAAE,EACvD,CAAC,IAA3BwP,EAAMkF,QAAQorD,CAAM,GACpBnhD,EAAQlS,KAAK4tD,EAAYr6D,EAAE,EAIvC,OAAO2e,GAEXo1C,EAAY70D,UAAUupC,YAAc,SAAUj8B,GAE1C,GADAxN,KAAKwO,OAAOmB,aAAe,cACvB/C,oBAAMY,CAAG,EACTxN,KAAK0nC,oBADT,CAIA,IAAI/nB,EAAU3f,KAAK4gE,WAAWpzD,CAAG,EACjC,GAAuB,IAAnBmS,EAAQhf,OAAZ,CAKA,IAFA,IAAI0B,EAAO,GACPmhB,EAAS,GACJxiB,EAAI,EAAGA,EAAI2e,EAAQhf,OAAQK,CAAC,GACjCqB,EAAKrB,GAAK2e,EAAQ3e,GAClBwiB,EAAOxiB,GAAK6e,GAAY7f,KAAKwO,OAAQnM,EAAKrB,EAAE,EAEhDuiB,GAAcvjB,KAAKwO,OAAQnM,EAAMmhB,CAAM,KAE3CuxC,EAAY70D,UAAUwpC,cAAgB,SAAUl8B,GAC5C,GAAIZ,oBAAMY,CAAG,EACTxN,KAAKmjB,iBADT,CAIA,IAAI49C,EAAW/gE,KAAK4gE,WAAWpzD,CAAG,EAClC,GAAwB,IAApBuzD,EAASpgE,OAAb,CAKA,IAFA,IAAI0B,EAAO,GACPmhB,EAAS,GACJxiB,EAAI,EAAGA,EAAI+/D,EAASpgE,OAAQK,CAAC,GAClCqB,EAAKrB,GAAK+/D,EAAS//D,GACnBwiB,EAAOxiB,GAAK6e,GAAY7f,KAAKwO,OAAQnM,EAAKrB,EAAE,EAEhD0iB,GAAgB1jB,KAAKwO,OAAQnM,EAAMmhB,CAAM,KAE7CuxC,EAAY70D,UAAUypC,SAAW,SAAUl9B,GACnCG,oBAAMH,CAAE,GAIS,GADjBkT,EAAU3f,KAAK4gE,WAAW,CAACn0D,EAAG,GACtB9L,QACRX,KAAKs8D,YAAY38C,EAAQ,EAAE,GAGnCo1C,EAAY70D,UAAU0pC,WAAa,SAAUn9B,EAAIqL,GAC7C9X,KAAKwO,OAAOmB,aAAe,cACvB/C,oBAAMH,CAAE,EACRzM,KAAK2nC,gBAIY,GADjBhoB,EAAU3f,KAAK4gE,WAAW,CAACn0D,EAAG,GACtB9L,SACRiiB,GAAmB5iB,KAAKwO,OAAQmR,EAAQ,EAAE,EACrC/S,oBAAMkL,CAAI,EASXkL,GAAShjB,KAAKwO,MAAM,EARhByU,EAAcjjB,KAAKwO,OAAO8D,SAAS,EAAE,EACrCmT,GAAOzlB,KAAKwO,OAAQxO,KAAKwO,OAAO1B,KAAMgL,CAAI,EAG1C9C,EAAmBhV,KAAKwO,OAAQxO,KAAKwO,OAAO8D,SAAS,GAAI4Q,CAAqB,QAh7D9F6xC,GAw7DOA,EAj7DP,SAASA,EAAYvmD,GACjBxO,KAAK40B,aAAe,CAAA,EACpB50B,KAAK87D,YAAc,CAAA,EACnB97D,KAAKo7B,iBAAmB,CAAA,EACxBp7B,KAAKk5D,gBAAkB,CAAA,EACvBl5D,KAAKihB,QAAU,KACfjhB,KAAKgmC,WAAa,KAClBhmC,KAAK+9D,eAAiB,KACtB/9D,KAAK06D,kBAAoB,CAAA,EACzB16D,KAAK26D,oBAAsB,GAC3B36D,KAAK6e,MAAQ,EACb7e,KAAK87B,WAAa,CAAA,EAClB97B,KAAK23D,SAAW,CAAA,EAChB33D,KAAK+3D,YAAc,CAAA,EACnB/3D,KAAK09D,cAAgB,CAAA,EACrB19D,KAAK8lB,eAAiB,CAAA,EACtB9lB,KAAKs7B,gBAAkB,CAAA,EACvBq6B,OAAK9L,OAAOmX,SAAQ1vB,cAAa2vB,OAAMC,eAAa,EACpDlhE,KAAKwO,OAASA,EACdxO,KAAKqN,QAAUwL,SAAO,IAAM7Y,KAAKwO,OAAOnB,QAAQZ,GAAK0oC,GAAan1C,KAAKwO,OAAOnB,OAAO,EACrFrN,KAAK07B,mBACL17B,KAAKikC,WAAa,CACdgI,SAAU,YACVC,IAAK,SACL9B,IAAK,MACLC,SAAU,YACVI,QAAS,WACTC,SAAU,YACVC,SAAU,iBACVC,SAAU,iBACVC,UAAW,kBACXE,SAAU,YACVC,UAAW,aACXC,UAAW,kBACXG,QAAS,gBACTN,OAAQ,eACRO,MAAO,iBACPC,OAAQ,kBACRC,OAAQ,uBACRG,KAAM,qBACNC,MAAO,QACPC,UAAW,aACXC,WAAY,cACZC,QAAS,mBACT5B,IAAK,MACLC,KAAM,OACNK,OAAQ,UACR2B,IAAK,SACLC,MAAOpsC,KAAKwO,OAAOg3B,MAAQ,QAAU,SACrC6G,MAAOrsC,KAAKwO,OAAOg3B,MAAQ,QAAU,SACrC8G,MAAOtsC,KAAKwO,OAAOg3B,MAAQ,QAAU,SACrCqvB,WAAY,eACZroB,SAAU,eACVE,MAAO,SACPH,GAAI,KACJR,MAAO,SACPC,MAAO,QACPS,KAAM,wCblES,oKAqMJ,2IAZI,0fAgBG,uHAxBJ,uCAEC,0JAED,qDAlBA,sPApDU,gFAEL,4TAzGF,2BAgBP,sDA6DD,qDA8BO,sBAvGL,wBAIE,oCA6KL,+HApEO,6MA3GN,gHCbK,iCAwFE,6hBA9DN,uEAwEE,o0BAjHJ,oWA+HQ,mlBCpHrB,SAAsB00B,EAAW/mC,GAEpC,IAAIgnC,EAAkB,QAAQ/qC,KAAK8qC,CAAS,EACxCE,EAAiB,QAAQhrC,KAAK+D,CAAQ,EAE1C,GAAIgnC,GAAmB,CAACC,EACpB,OAAO,EAEX,GAAI,CAACD,GAAmBC,EACpB,MAAO,CAAC,EAEZ,IAAIC,EAAiB,GACjBC,EAAgB,GAIpB,KAHCJ,EAAY,IAAIlqD,QAAQ,eAAgB,SAAUuqD,EAAGC,EAAIC,GAAuD,OAAjDJ,EAAe7zD,KAAK,CAACg0D,GAAME,EAAAA,EAAUD,GAAM,GAAG,EAAU,GAAK,GAC5HtnC,EAAW,IAAInjB,QAAQ,eAAgB,SAAUuqD,EAAGC,EAAIC,GAAsD,OAAhDH,EAAc9zD,KAAK,CAACg0D,GAAME,EAAAA,EAAUD,GAAM,GAAG,EAAU,GAAK,EAEpHJ,EAAe3gE,QAAU4gE,EAAc5gE,QAAQ,CAClD,IAAIihE,EAAgBN,EAAeO,QAC/BC,EAAeP,EAAcM,QACjC,GAAID,GAAiBE,EAAc,CAC3BC,EAAmBH,EAAc,GAAKE,EAAa,IACnDF,EAAc,GAAGI,cAAcF,EAAa,EAAE,EAClD,GAAIC,EACA,OAAOA,GAInB,OAAOT,EAAe3gE,OAAS4gE,EAAc5gE,MACjD,2DDwDwB,qLA5DJ"}