@worktile/gantt 12.2.0-next.1 → 12.2.0

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 (39) hide show
  1. package/bundles/worktile-gantt.umd.js +175 -145
  2. package/bundles/worktile-gantt.umd.js.map +1 -1
  3. package/class/event.d.ts +2 -0
  4. package/class/index.d.ts +1 -0
  5. package/class/item.d.ts +1 -1
  6. package/class/link.d.ts +5 -5
  7. package/components/links/{paths → lines}/curve.d.ts +2 -3
  8. package/components/links/lines/factory.d.ts +5 -0
  9. package/components/links/{paths/path.d.ts → lines/line.d.ts} +1 -4
  10. package/components/links/{paths/line.d.ts → lines/straight.d.ts} +2 -2
  11. package/components/links/links.component.d.ts +1 -1
  12. package/esm2015/class/event.js +1 -1
  13. package/esm2015/class/index.js +2 -1
  14. package/esm2015/class/item.js +4 -3
  15. package/esm2015/class/link.js +6 -6
  16. package/esm2015/components/bar/bar-drag.js +35 -12
  17. package/esm2015/components/bar/bar.component.js +1 -1
  18. package/esm2015/components/links/lines/curve.js +96 -0
  19. package/esm2015/components/links/lines/factory.js +14 -0
  20. package/esm2015/components/links/lines/line.js +24 -0
  21. package/esm2015/components/links/lines/straight.js +58 -0
  22. package/esm2015/components/links/links.component.js +4 -4
  23. package/esm2015/gantt-drag-container.js +55 -38
  24. package/esm2015/gantt-upper.js +10 -2
  25. package/esm2015/gantt.component.js +7 -11
  26. package/esm2015/gantt.config.js +3 -3
  27. package/fesm2015/worktile-gantt.js +136 -124
  28. package/fesm2015/worktile-gantt.js.map +1 -1
  29. package/gantt-drag-container.d.ts +20 -8
  30. package/gantt-upper.d.ts +5 -3
  31. package/gantt.component.d.ts +1 -3
  32. package/gantt.config.d.ts +2 -2
  33. package/main.bundle.scss +31 -1
  34. package/package.json +1 -1
  35. package/components/links/paths/factory.d.ts +0 -5
  36. package/esm2015/components/links/paths/curve.js +0 -118
  37. package/esm2015/components/links/paths/factory.js +0 -14
  38. package/esm2015/components/links/paths/line.js +0 -59
  39. package/esm2015/components/links/paths/path.js +0 -31
@@ -1 +1 @@
1
- {"version":3,"file":"worktile-gantt.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../packages/gantt/src/class/date-point.ts","../../../packages/gantt/src/class/event.ts","../../../packages/gantt/src/utils/date.ts","../../../packages/gantt/src/class/view-type.ts","../../../packages/gantt/src/class/link.ts","../../../packages/gantt/src/class/item.ts","../../../packages/gantt/src/class/group.ts","../../../packages/gantt/src/gantt.config.ts","../../../packages/gantt/src/views/view.ts","../../../packages/gantt/src/views/month.ts","../../../packages/gantt/src/views/quarter.ts","../../../packages/gantt/src/views/day.ts","../../../packages/gantt/src/views/week.ts","../../../packages/gantt/src/views/year.ts","../../../packages/gantt/src/views/factory.ts","../../../packages/gantt/src/gantt.styles.ts","../../../packages/gantt/src/utils/helpers.ts","../../../packages/gantt/src/gantt-upper.ts","../../../packages/gantt/src/table/gantt-column.component.ts","../../../packages/gantt/src/table/gantt-table.component.ts","../../../packages/gantt/src/gantt-abstract.ts","../../../packages/gantt/src/components/icon/icons.ts","../../../packages/gantt/src/components/icon/icon.component.ts","../../../packages/gantt/src/gantt.pipe.ts","../../../packages/gantt/src/components/table/gantt-table.component.ts","../../../packages/gantt/src/components/table/gantt-table.component.html","../../../packages/gantt/src/gantt-dom.service.ts","../../../packages/gantt/src/gantt-drag-container.ts","../../../packages/gantt/src/gantt-print.service.ts","../../../packages/gantt/src/components/calendar/calendar.component.ts","../../../packages/gantt/src/components/calendar/calendar.component.html","../../../packages/gantt/src/components/drag-backdrop/drag-backdrop.component.ts","../../../packages/gantt/src/components/drag-backdrop/drag-backdrop.component.html","../../../packages/gantt/src/root.component.ts","../../../packages/gantt/src/root.component.html","../../../packages/gantt/src/components/links/paths/path.ts","../../../packages/gantt/src/components/links/paths/curve.ts","../../../packages/gantt/src/components/links/paths/line.ts","../../../packages/gantt/src/components/links/paths/factory.ts","../../../packages/gantt/src/components/links/links.component.ts","../../../packages/gantt/src/components/links/links.component.html","../../../packages/gantt/src/gantt-item-upper.ts","../../../packages/gantt/src/components/range/range.component.ts","../../../packages/gantt/src/components/range/range.component.html","../../../packages/gantt/src/components/bar/bar-drag.ts","../../../packages/gantt/src/components/bar/bar.component.ts","../../../packages/gantt/src/components/bar/bar.component.html","../../../packages/gantt/src/components/main/gantt-main.component.ts","../../../packages/gantt/src/components/main/gantt-main.component.html","../../../packages/gantt/src/gantt.component.ts","../../../packages/gantt/src/gantt.component.html","../../../packages/gantt/src/gantt.module.ts","../../../packages/gantt/src/public-api.ts","../../../packages/gantt/src/worktile-gantt.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { GanttDate } from '../utils/date';\n\nexport class GanttDatePoint {\n constructor(\n public start: GanttDate,\n public text: string,\n public x: number,\n public y: number,\n public additions?: {\n isWeekend: boolean;\n isToday: boolean;\n }\n ) {}\n}\n","import { QueryList } from '@angular/core';\nimport { NgxGanttTableColumnComponent } from '../table/gantt-column.component';\nimport { GanttItem } from './item';\n\nexport class GanttDragEvent<T = unknown> {\n item: GanttItem<T>;\n}\n\nexport class GanttTableEvent {\n columns: QueryList<NgxGanttTableColumnComponent>;\n}\n\nexport class GanttLinkDragEvent<T = unknown> {\n source: GanttItem<T>;\n target?: GanttItem<T>;\n}\n\nexport class GanttLoadOnScrollEvent {\n start: number;\n end: number;\n}\n\nexport class GanttLineClickEvent<T = unknown> {\n event: MouseEvent;\n source: GanttItem<T>;\n target: GanttItem<T>;\n}\n\nexport class GanttBarClickEvent<T = unknown> {\n event: Event;\n item: GanttItem<T>;\n}\n\nexport class GanttSelectedEvent<T = unknown> {\n event: Event;\n selectedValue: GanttItem<T> | GanttItem<T>[];\n}\n","import {\n addYears,\n addMonths,\n addDays,\n addWeeks,\n addQuarters,\n getUnixTime,\n startOfDay,\n startOfWeek,\n startOfMonth,\n startOfQuarter,\n startOfYear,\n endOfDay,\n endOfWeek,\n endOfMonth,\n endOfQuarter,\n endOfYear,\n format,\n fromUnixTime,\n getDaysInMonth,\n addSeconds,\n setDate,\n addMinutes,\n addHours,\n differenceInCalendarDays,\n isWeekend,\n getWeek,\n isToday,\n differenceInDays,\n differenceInCalendarQuarters,\n eachMonthOfInterval,\n eachWeekOfInterval,\n eachDayOfInterval\n} from 'date-fns';\n\nexport {\n addYears,\n addMonths,\n addDays,\n addWeeks,\n addQuarters,\n getUnixTime,\n startOfDay,\n startOfWeek,\n startOfMonth,\n startOfQuarter,\n startOfYear,\n endOfDay,\n endOfWeek,\n endOfMonth,\n endOfQuarter,\n endOfYear,\n format,\n fromUnixTime,\n getDaysInMonth,\n addSeconds,\n setDate,\n addMinutes,\n addHours,\n differenceInCalendarDays,\n isWeekend,\n getWeek,\n isToday,\n differenceInDays,\n differenceInCalendarQuarters,\n eachMonthOfInterval,\n eachWeekOfInterval,\n eachDayOfInterval\n} from 'date-fns';\n\nexport type GanttDateUtil = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport class GanttDate {\n value: Date;\n\n constructor(date?: Date | string | number) {\n if (date) {\n if (date instanceof Date) {\n this.value = date;\n } else if (typeof date === 'string' || typeof date === 'number') {\n if (date.toString().length < 13) {\n this.value = fromUnixTime(+date);\n } else {\n this.value = new Date(date);\n }\n } else {\n throw new Error(\n `The input date type is not supported expect Date | string\n | number | { date: number; with_time: 0 | 1}, actual ${JSON.stringify(date)}`\n );\n }\n } else {\n this.value = new Date();\n }\n }\n\n getYear(): number {\n return this.value.getFullYear();\n }\n\n getMonth(): number {\n return this.value.getMonth();\n }\n\n getDay(): number {\n return this.value.getDay();\n }\n\n getTime(): number {\n return this.value.getTime();\n }\n\n getDate(): number {\n return this.value.getDate();\n }\n\n getHours(): number {\n return this.value.getHours();\n }\n\n getMinutes(): number {\n return this.value.getMinutes();\n }\n\n getSeconds(): number {\n return this.value.getSeconds();\n }\n\n getMilliseconds(): number {\n return this.value.getMilliseconds();\n }\n\n getWeek(options: { locale?: Locale; weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 } = { weekStartsOn: 1 }): number {\n return getWeek(this.value, options);\n }\n\n getDaysInMonth() {\n return getDaysInMonth(this.value);\n }\n\n getDaysInQuarter() {\n return differenceInCalendarDays(this.endOfQuarter().addSeconds(1).value, this.startOfQuarter().value);\n }\n\n getDaysInYear() {\n return differenceInCalendarDays(this.endOfYear().addSeconds(1).value, this.startOfYear().value);\n }\n\n setDate(dayOfMonth: number): GanttDate {\n return new GanttDate(setDate(this.value, dayOfMonth));\n }\n\n clone(): GanttDate {\n return new GanttDate(new Date(this.value));\n }\n\n add(amount: number, unit?: GanttDateUtil) {\n switch (unit) {\n case 'second':\n return new GanttDate(this.value).addSeconds(amount);\n case 'minute':\n return new GanttDate(this.value).addMinutes(amount);\n case 'hour':\n return new GanttDate(this.value).addHours(amount);\n case 'day':\n return new GanttDate(this.value).addDays(amount);\n case 'week':\n return new GanttDate(this.value).addWeeks(amount);\n case 'month':\n return new GanttDate(this.value).addMonths(amount);\n case 'quarter':\n return new GanttDate(this.value).addQuarters(amount);\n case 'year':\n return new GanttDate(this.value).addYears(amount);\n default:\n return new GanttDate(this.value).addSeconds(amount);\n }\n }\n\n addSeconds(amount: number): GanttDate {\n return new GanttDate(addSeconds(this.value, amount));\n }\n\n addMinutes(amount: number): GanttDate {\n return new GanttDate(addMinutes(this.value, amount));\n }\n\n addHours(amount: number): GanttDate {\n return new GanttDate(addHours(this.value, amount));\n }\n\n addDays(amount: number): GanttDate {\n return new GanttDate(addDays(this.value, amount));\n }\n\n addWeeks(amount: number) {\n return new GanttDate(addWeeks(this.value, amount));\n }\n\n addMonths(amount: number): GanttDate {\n return new GanttDate(addMonths(this.value, amount));\n }\n\n addQuarters(amount: number): GanttDate {\n return new GanttDate(addQuarters(this.value, amount));\n }\n\n addYears(amount: number): GanttDate {\n return new GanttDate(addYears(this.value, amount));\n }\n\n startOfDay(): GanttDate {\n return new GanttDate(startOfDay(this.value));\n }\n\n startOfWeek(options?: { locale?: Locale; weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 }): GanttDate {\n return new GanttDate(startOfWeek(this.value, options));\n }\n\n startOfMonth(): GanttDate {\n return new GanttDate(startOfMonth(this.value));\n }\n\n startOfQuarter(): GanttDate {\n return new GanttDate(startOfQuarter(this.value));\n }\n\n startOfYear(): GanttDate {\n return new GanttDate(startOfYear(this.value));\n }\n\n endOfDay(): GanttDate {\n return new GanttDate(endOfDay(this.value));\n }\n\n endOfWeek(options?: { locale?: Locale; weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 }): GanttDate {\n return new GanttDate(endOfWeek(this.value, options));\n }\n\n endOfMonth(): GanttDate {\n return new GanttDate(endOfMonth(this.value));\n }\n\n endOfQuarter(): GanttDate {\n return new GanttDate(endOfQuarter(this.value));\n }\n\n endOfYear(): GanttDate {\n return new GanttDate(endOfYear(this.value));\n }\n\n getUnixTime(): number {\n return getUnixTime(this.value);\n }\n\n format(\n mat: string,\n options?: {\n locale?: Locale;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n firstWeekContainsDate?: number;\n useAdditionalWeekYearTokens?: boolean;\n useAdditionalDayOfYearTokens?: boolean;\n }\n ) {\n return format(this.value, mat, options);\n }\n\n isWeekend() {\n return isWeekend(this.value);\n }\n\n isToday() {\n return isToday(this.value);\n }\n}\n","export enum GanttViewType {\n day = 'day',\n quarter = 'quarter',\n month = 'month',\n year = 'year',\n week = 'week'\n}\n","import { GanttDate } from '../utils/date';\nimport { GanttItem } from './item';\n\nexport enum GanttLinkType {\n fs = 1,\n ff = 2,\n ss = 3,\n sf = 4\n}\n\nexport enum GanttLinkPathType {\n curve = 'curve',\n line = 'line'\n}\n\nexport enum LinkColors {\n default = '#cacaca',\n blocked = '#FF7575',\n active = '#348FE4'\n}\n\nexport interface GanttLink {\n type: GanttLinkType;\n link: string;\n color?: string;\n}\n\nexport interface GanttLinkItem {\n id: string;\n before: { x: number; y: number };\n after: { x: number; y: number };\n start: GanttDate;\n end: GanttDate;\n origin: GanttItem;\n links: GanttLink[];\n}\n\nexport interface LinkInternal {\n path: string;\n source: GanttItem;\n target: GanttItem;\n color: string;\n type: GanttLinkType;\n}\n\nexport interface GanttLinkOptions {\n dependencyTypes?: [GanttLinkType.fs];\n showArrow?: false;\n linkPathType?: GanttLinkPathType.curve;\n}\n","import { GanttDate } from '../utils/date';\nimport { BehaviorSubject } from 'rxjs';\nimport { GanttViewType } from './view-type';\nimport { GanttLink, GanttLinkType } from './link';\n\ninterface GanttItemRefs {\n width: number;\n x: number;\n y: number;\n}\n\nexport enum GanttItemType {\n bar = 'bar',\n range = 'range',\n custom = 'custom'\n}\n\nexport interface GanttItem<T = unknown> {\n id: string;\n title: string;\n start?: number;\n end?: number;\n group_id?: string;\n links?: (GanttLink | string)[];\n draggable?: boolean;\n linkable?: boolean;\n expandable?: boolean;\n expanded?: boolean;\n children?: GanttItem[];\n color?: string;\n barStyle?: Partial<CSSStyleDeclaration>;\n origin?: T;\n type?: GanttItemType;\n progress?: number;\n}\n\nexport class GanttItemInternal {\n id: string;\n title: string;\n start: GanttDate;\n end: GanttDate;\n links: GanttLink[];\n color?: string;\n barStyle?: Partial<CSSStyleDeclaration>;\n draggable?: boolean;\n linkable?: boolean;\n origin: GanttItem;\n expandable?: boolean;\n expanded?: boolean;\n loading: boolean;\n children: GanttItemInternal[];\n type?: GanttItemType;\n progress?: number;\n viewType?: GanttViewType;\n\n get refs() {\n return this.refs$.getValue();\n }\n\n refs$ = new BehaviorSubject<{ width: number; x: number; y: number }>(null);\n\n constructor(item: GanttItem, options?: { viewType: GanttViewType }) {\n this.origin = item;\n this.id = this.origin.id;\n this.links = (this.origin.links || []).map((link) => {\n if (typeof link === 'string') {\n return {\n type: GanttLinkType.fs,\n link\n };\n } else {\n return link;\n }\n });\n this.color = this.origin.color;\n this.barStyle = this.origin.barStyle;\n this.linkable = this.origin.linkable === undefined ? true : this.origin.linkable;\n this.draggable = this.origin.draggable === undefined ? true : this.origin.draggable;\n this.expandable = this.origin.expandable || (this.origin.children || []).length > 0;\n this.expanded = this.origin.expanded === undefined ? false : this.origin.expanded;\n this.start = item.start ? new GanttDate(item.start) : null;\n this.end = item.end ? new GanttDate(item.end) : null;\n this.viewType = options && options.viewType ? options.viewType : GanttViewType.month;\n this.children = (item.children || []).map((subItem) => {\n return new GanttItemInternal(subItem, { viewType: this.viewType });\n });\n this.type = this.origin.type || GanttItemType.bar;\n this.progress = this.origin.progress;\n // fill one month when start or end is null\n this.fillItemStartOrEnd(item);\n }\n\n fillItemStartOrEnd(item: GanttItem) {\n let addInterval: number;\n switch (this.viewType) {\n case GanttViewType.day:\n case GanttViewType.week:\n addInterval = 0;\n break;\n default:\n addInterval = 30;\n break;\n }\n if (item.start && !item.end) {\n this.end = new GanttDate(item.start).addDays(addInterval).endOfDay();\n }\n if (!item.start && item.end) {\n this.start = new GanttDate(item.end).addDays(-addInterval).startOfDay();\n }\n }\n\n updateRefs(refs: GanttItemRefs) {\n this.refs$.next(refs);\n }\n\n updateDate(start: GanttDate, end: GanttDate) {\n this.start = start.startOfDay();\n this.end = end.endOfDay();\n this.origin.start = this.start.getUnixTime();\n this.origin.end = this.end.getUnixTime();\n }\n\n addChildren(items: GanttItem[]) {\n this.origin.children = items;\n this.children = (items || []).map((subItem) => {\n return new GanttItemInternal(subItem, { viewType: this.viewType });\n });\n }\n\n setExpand(expanded: boolean) {\n this.expanded = expanded;\n this.origin.expanded = expanded;\n }\n\n addLink(linkId: string) {\n this.links = [...this.links, { type: GanttLinkType.fs, link: linkId }];\n this.origin.links = this.links;\n }\n}\n","import { GanttItemInternal } from './item';\n\nexport interface GanttGroup<T = unknown> {\n id: string;\n title: string;\n expanded?: boolean;\n origin?: T;\n class?: string;\n}\n\nexport class GanttGroupInternal {\n id: string;\n title: string;\n origin: GanttGroup;\n items: GanttItemInternal[];\n mergedItems: GanttItemInternal[][];\n expanded?: boolean;\n refs?: {\n height?: number;\n } = {};\n class?: string;\n constructor(group: GanttGroup) {\n this.id = group.id;\n this.origin = group;\n this.title = group.title;\n this.expanded = group.expanded === undefined ? true : group.expanded;\n this.items = [];\n this.mergedItems = [[]];\n this.class = group.class || '';\n }\n\n setExpand(expanded: boolean) {\n this.expanded = expanded;\n this.origin.expanded = expanded;\n }\n}\n","import { GanttLinkPathType, GanttLinkOptions, GanttLinkType } from './class/link';\nimport { InjectionToken } from '@angular/core';\n\nexport interface GanttDateFormat {\n week?: string;\n month?: string;\n quarter?: string;\n year?: string;\n yearMonth?: string;\n yearQuarter?: string;\n}\n\nexport interface GanttGlobalConfig {\n dateFormat?: GanttDateFormat;\n linkOptions?: GanttLinkOptions;\n}\n\nexport const defaultConfig = {\n dateFormat: {\n week: '第w周',\n month: 'M月',\n quarter: 'QQQ',\n year: 'yyyy年',\n yearMonth: 'yyyy年MM月',\n yearQuarter: 'yyyy年QQQ'\n },\n linkOptions: {\n dependencyTypes: [GanttLinkType.fs],\n showArrow: false,\n linkPathType: GanttLinkPathType.curve\n }\n};\n\nexport const GANTT_GLOBAL_CONFIG = new InjectionToken<GanttGlobalConfig>('GANTT_GLOBAL_CONFIG');\n","import { GanttDate, differenceInDays, GanttDateUtil } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { BehaviorSubject } from 'rxjs';\nimport { defaultConfig, GanttDateFormat } from '../gantt.config';\n\nexport const primaryDatePointTop = 18;\n\nexport const secondaryDatePointTop = 36;\n\nexport interface GanttViewDate {\n date: GanttDate;\n isCustom?: boolean;\n}\n\nexport interface GanttViewOptions {\n start?: GanttDate;\n end?: GanttDate;\n min?: GanttDate;\n max?: GanttDate;\n cellWidth?: number;\n addAmount?: number;\n addUnit?: GanttDateUtil;\n dateFormat?: GanttDateFormat;\n}\n\nconst viewOptions: GanttViewOptions = {\n min: new GanttDate().addYears(-1).startOfYear(),\n max: new GanttDate().addYears(1).endOfYear(),\n dateFormat: defaultConfig.dateFormat\n};\n\nexport abstract class GanttView {\n start$: BehaviorSubject<GanttDate>;\n\n end$: BehaviorSubject<GanttDate>;\n\n get start() {\n return this.start$.getValue();\n }\n\n get end() {\n return this.end$.getValue();\n }\n\n primaryDatePoints: GanttDatePoint[];\n\n secondaryDatePoints: GanttDatePoint[];\n\n width: number;\n\n cellWidth: number;\n\n primaryWidth: number;\n\n showTimeline = true;\n\n showWeekBackdrop: boolean;\n\n options: GanttViewOptions;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options: GanttViewOptions) {\n this.options = Object.assign({}, viewOptions, options);\n const startDate = start.isCustom\n ? this.startOf(start.date)\n : this.startOf(start.date.value < this.options.start.value ? start.date : this.options.start);\n const endDate = end.isCustom\n ? this.endOf(end.date)\n : this.endOf(end.date.value > this.options.end.value ? end.date : this.options.end);\n this.start$ = new BehaviorSubject<GanttDate>(startDate);\n this.end$ = new BehaviorSubject<GanttDate>(endDate);\n this.initialize();\n }\n\n abstract startOf(date: GanttDate): GanttDate;\n\n abstract endOf(date: GanttDate): GanttDate;\n\n // 获取一级时间网格合并后的宽度\n abstract getPrimaryWidth(): number;\n\n // 获取当前视图下每一天占用的宽度\n abstract getDayOccupancyWidth(date: GanttDate): number;\n\n // 获取一级时间点(坐标,显示名称)\n abstract getPrimaryDatePoints(): GanttDatePoint[];\n\n // 获取二级时间点(坐标,显示名称)\n abstract getSecondaryDatePoints(): GanttDatePoint[];\n\n protected getDateIntervalWidth(start: GanttDate, end: GanttDate) {\n let result = 0;\n const days = differenceInDays(end.value, start.value);\n for (let i = 0; i < Math.abs(days); i++) {\n result += this.getDayOccupancyWidth(start.addDays(i));\n }\n result = days >= 0 ? result : -result;\n return Number(result.toFixed(3));\n }\n\n protected initialize() {\n this.primaryDatePoints = this.getPrimaryDatePoints();\n this.secondaryDatePoints = this.getSecondaryDatePoints();\n this.width = this.getWidth();\n this.cellWidth = this.getCellWidth();\n this.primaryWidth = this.getPrimaryWidth();\n }\n\n addStartDate() {\n const start = this.startOf(this.start.add(this.options.addAmount * -1, this.options.addUnit));\n if (start.value >= this.options.min.value) {\n const origin = this.start;\n this.start$.next(start);\n this.initialize();\n return { start: this.start, end: origin };\n }\n return null;\n }\n\n addEndDate() {\n const end = this.endOf(this.end.add(this.options.addAmount, this.options.addUnit));\n if (end.value <= this.options.max.value) {\n const origin = this.end;\n this.end$.next(end);\n this.initialize();\n return { start: origin, end: this.end };\n }\n return null;\n }\n\n updateDate(start: GanttDate, end: GanttDate) {\n start = this.startOf(start);\n end = this.endOf(end);\n if (start.value < this.start.value) {\n this.start$.next(start);\n }\n if (end.value > this.end.value) {\n this.end$.next(end);\n }\n this.initialize();\n }\n\n // 获取View的宽度\n getWidth() {\n return this.getCellWidth() * this.secondaryDatePoints.length;\n }\n\n // 获取单个网格的宽度\n getCellWidth() {\n return this.options.cellWidth;\n }\n\n // 获取当前时间的X坐标\n getTodayXPoint(): number {\n const toady = new GanttDate().startOfDay();\n if (toady.value > this.start.value && toady.value < this.end.value) {\n const x = this.getXPointByDate(toady) + this.getDayOccupancyWidth(toady) / 2;\n return x;\n } else {\n return null;\n }\n }\n\n // 获取指定时间的X坐标\n getXPointByDate(date: GanttDate) {\n return this.getDateIntervalWidth(this.start, date);\n }\n\n // 根据X坐标获取对应时间\n getDateByXPoint(x: number) {\n const indexOfSecondaryDate = Math.floor(x / this.getCellWidth());\n const matchDate = this.secondaryDatePoints[indexOfSecondaryDate];\n const dayWidth = this.getDayOccupancyWidth(matchDate?.start);\n if (dayWidth === this.getCellWidth()) {\n return matchDate?.start;\n } else {\n const day = Math.floor((x % this.getCellWidth()) / dayWidth) + 1;\n if (this.getCellWidth() / dayWidth === 7) {\n return matchDate?.start.addDays(day);\n }\n return matchDate?.start.setDate(day);\n }\n }\n\n // 获取指定时间范围的宽度\n getDateRangeWidth(start: GanttDate, end: GanttDate) {\n // addSeconds(1) 是因为计算相差天会以一个整天来计算 end时间一般是59分59秒不是一个整天,所以需要加1\n return this.getDateIntervalWidth(start, end.addSeconds(1));\n }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate, differenceInCalendarQuarters, eachMonthOfInterval } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\n\nconst viewOptions: GanttViewOptions = {\n start: new GanttDate().startOfQuarter().addQuarters(-1),\n end: new GanttDate().endOfQuarter().addQuarters(2),\n cellWidth: 280,\n addAmount: 1,\n addUnit: 'quarter'\n};\n\nexport class GanttViewMonth extends GanttView {\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n startOf(date: GanttDate) {\n return date.startOfQuarter();\n }\n\n endOf(date: GanttDate) {\n return date.endOfQuarter();\n }\n\n getPrimaryWidth() {\n return this.getCellWidth() * 3;\n }\n\n getDayOccupancyWidth(date: GanttDate): number {\n return this.cellWidth / date.getDaysInMonth();\n }\n\n getPrimaryDatePoints(): GanttDatePoint[] {\n const quarters = differenceInCalendarQuarters(this.end.addSeconds(1).value, this.start.value);\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < quarters; i++) {\n const start = this.start.addQuarters(i);\n const point = new GanttDatePoint(\n start,\n start.format(this.options.dateFormat.yearQuarter),\n (this.getCellWidth() * 3) / 2 + i * (this.getCellWidth() * 3),\n primaryDatePointTop\n );\n points.push(point);\n }\n\n return points;\n }\n\n getSecondaryDatePoints(): GanttDatePoint[] {\n const months = eachMonthOfInterval({ start: this.start.value, end: this.end.value });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < months.length; i++) {\n const start = new GanttDate(months[i]);\n const point = new GanttDatePoint(\n start,\n start.format(this.options.dateFormat.month),\n i * this.getCellWidth() + this.getCellWidth() / 2,\n secondaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { eachYearOfInterval, differenceInCalendarQuarters } from 'date-fns';\n\nconst viewOptions: GanttViewOptions = {\n start: new GanttDate().addYears(-1).startOfYear(),\n end: new GanttDate().addYears(1).endOfYear(),\n min: new GanttDate().addYears(-2).startOfYear(),\n max: new GanttDate().addYears(2).endOfYear(),\n cellWidth: 500,\n addAmount: 1,\n addUnit: 'year'\n};\n\nexport class GanttViewQuarter extends GanttView {\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n startOf(date: GanttDate) {\n return date.startOfYear();\n }\n\n endOf(date: GanttDate) {\n return date.endOfYear();\n }\n\n getPrimaryWidth() {\n return this.getCellWidth() * 4;\n }\n\n getDayOccupancyWidth(date: GanttDate): number {\n return this.cellWidth / date.getDaysInQuarter();\n }\n\n getPrimaryDatePoints(): GanttDatePoint[] {\n const years = eachYearOfInterval({ start: this.start.value, end: this.end.value });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < years.length; i++) {\n const start = new GanttDate(years[i]);\n const point = new GanttDatePoint(\n start,\n `${start.format(this.options.dateFormat.year)}`,\n (this.getCellWidth() * 4) / 2 + i * (this.getCellWidth() * 4),\n primaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n\n getSecondaryDatePoints(): GanttDatePoint[] {\n const quarters = differenceInCalendarQuarters(this.end.value, this.start.value);\n const points: GanttDatePoint[] = [];\n for (let i = 0; i <= quarters; i++) {\n const start = this.start.addQuarters(i);\n const point = new GanttDatePoint(\n start,\n start.format(this.options.dateFormat.quarter),\n i * this.getCellWidth() + this.getCellWidth() / 2,\n secondaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate, eachWeekOfInterval, eachDayOfInterval } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\n\nconst viewOptions: GanttViewOptions = {\n cellWidth: 35,\n start: new GanttDate().startOfYear().startOfWeek({ weekStartsOn: 1 }),\n end: new GanttDate().endOfYear().endOfWeek({ weekStartsOn: 1 }),\n addAmount: 1,\n addUnit: 'month'\n};\n\nexport class GanttViewDay extends GanttView {\n showWeekBackdrop = true;\n\n showTimeline = false;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n startOf(date: GanttDate) {\n return date.startOfWeek({ weekStartsOn: 1 });\n }\n\n endOf(date: GanttDate) {\n return date.endOfWeek({ weekStartsOn: 1 });\n }\n\n getPrimaryWidth() {\n return this.getCellWidth() * 7;\n }\n\n getDayOccupancyWidth(): number {\n return this.cellWidth;\n }\n\n getPrimaryDatePoints(): GanttDatePoint[] {\n const weeks = eachWeekOfInterval({ start: this.start.value, end: this.end.addSeconds(1).value }, { weekStartsOn: 1 });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < weeks.length; i++) {\n const weekStart = new GanttDate(weeks[i]);\n const increaseWeek = weekStart.getDaysInMonth() - weekStart.getDate() >= 3 ? 0 : 1;\n const point = new GanttDatePoint(\n weekStart,\n weekStart.addWeeks(increaseWeek).format(this.options.dateFormat.yearMonth),\n (this.getCellWidth() * 7) / 2 + i * (this.getCellWidth() * 7),\n primaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n\n getSecondaryDatePoints(): GanttDatePoint[] {\n const days = eachDayOfInterval({ start: this.start.value, end: this.end.value });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < days.length; i++) {\n const start = new GanttDate(days[i]);\n const point = new GanttDatePoint(\n start,\n start.getDate().toString(),\n i * this.getCellWidth() + this.getCellWidth() / 2,\n secondaryDatePointTop,\n {\n isWeekend: start.isWeekend(),\n isToday: start.isToday()\n }\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { GanttDatePoint } from '../class/date-point';\nimport { eachWeekOfInterval, GanttDate } from '../utils/date';\nimport { GanttView, GanttViewDate, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop } from './view';\n\nconst viewOptions: GanttViewOptions = {\n cellWidth: 280,\n start: new GanttDate().startOfYear().startOfWeek({ weekStartsOn: 1 }),\n end: new GanttDate().endOfYear().endOfWeek({ weekStartsOn: 1 }),\n addAmount: 1,\n addUnit: 'month'\n};\n\nexport class GanttViewWeek extends GanttView {\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n startOf(date: GanttDate) {\n return date.startOfWeek({ weekStartsOn: 1 });\n }\n\n endOf(date: GanttDate) {\n return date.endOfWeek({ weekStartsOn: 1 });\n }\n\n getPrimaryWidth() {\n return this.getCellWidth();\n }\n\n getDayOccupancyWidth(): number {\n return this.cellWidth / 7;\n }\n\n getPrimaryDatePoints(): GanttDatePoint[] {\n const weeks = eachWeekOfInterval({ start: this.start.value, end: this.end.addSeconds(1).value }, { weekStartsOn: 1 });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < weeks.length; i++) {\n const weekStart = new GanttDate(weeks[i]);\n const increaseWeek = weekStart.getDaysInMonth() - weekStart.getDate() >= 3 ? 0 : 1;\n const point = new GanttDatePoint(\n weekStart,\n weekStart.addWeeks(increaseWeek).format(this.options.dateFormat.year),\n this.getCellWidth() / 2 + i * this.getCellWidth(),\n primaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n\n getSecondaryDatePoints(): GanttDatePoint[] {\n const weeks = eachWeekOfInterval({ start: this.start.value, end: this.end.value });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < weeks.length; i++) {\n const start = new GanttDate(weeks[i]);\n const point = new GanttDatePoint(\n start,\n `${start.format(this.options.dateFormat.week)}`,\n i * this.getCellWidth() + this.getCellWidth() / 2,\n secondaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { eachYearOfInterval, differenceInCalendarYears } from 'date-fns';\n\nconst viewOptions: GanttViewOptions = {\n cellWidth: 480,\n start: new GanttDate().addYears(-2).startOfYear(),\n end: new GanttDate().addYears(2).endOfYear(),\n addAmount: 1,\n addUnit: 'year'\n};\n\nexport class GanttViewYear extends GanttView {\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n startOf(date: GanttDate) {\n return date.startOfYear();\n }\n\n endOf(date: GanttDate) {\n return date.endOfYear();\n }\n\n getPrimaryWidth() {\n return this.getCellWidth();\n }\n\n getDayOccupancyWidth(date: GanttDate): number {\n return this.cellWidth / date.getDaysInYear();\n }\n\n getPrimaryDatePoints(): GanttDatePoint[] {\n const years = eachYearOfInterval({ start: this.start.value, end: this.end.value });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < years.length; i++) {\n const start = new GanttDate(years[i]);\n const point = new GanttDatePoint(start, ``, this.getCellWidth() / 2 + i * this.getCellWidth(), primaryDatePointTop);\n points.push(point);\n }\n return points;\n }\n\n getSecondaryDatePoints(): GanttDatePoint[] {\n const years = differenceInCalendarYears(this.end.value, this.start.value);\n const points: GanttDatePoint[] = [];\n const pointTop = 27;\n for (let i = 0; i <= years; i++) {\n const start = this.start.addYears(i);\n const point = new GanttDatePoint(\n start,\n `${start.format(this.options.dateFormat.year)}`,\n i * this.getCellWidth() + this.getCellWidth() / 2,\n pointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { GanttViewOptions, GanttViewDate } from './view';\nimport { GanttViewMonth } from './month';\nimport { GanttDate } from '../utils/date';\nimport { GanttViewType } from '../class/view-type';\nimport { GanttViewQuarter } from './quarter';\nimport { GanttViewDay } from './day';\nimport { GanttViewWeek } from './week';\nimport { GanttViewYear } from './year';\n\nexport function createViewFactory(type: GanttViewType, start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n switch (type) {\n case GanttViewType.month:\n return new GanttViewMonth(start, end, options);\n case GanttViewType.week:\n return new GanttViewWeek(start, end, options);\n case GanttViewType.quarter:\n return new GanttViewQuarter(start, end, options);\n case GanttViewType.day:\n return new GanttViewDay(start, end, options);\n case GanttViewType.year:\n return new GanttViewYear(start, end, options);\n default:\n throw new Error('gantt view type invalid');\n }\n}\n","export const defaultStyles = {\n lineHeight: 44,\n barHeight: 22\n};\n\nexport const headerHeight = 44;\n\nexport type GanttStyles = typeof defaultStyles;\n\nexport const sideWidth = 400;\n\nexport const sideMiddleWidth = 500;\n\nexport const sideMaxWidth = 600;\n\nexport const sideMinWidth = 400;\n\nexport const barBackground = '#348fe4';\n\nexport const rangeHeight = 17;\n\nexport const todayHeight = 24;\n\nexport const todayWidth = 35;\n\nexport const todayBorderRadius = 4;\n\n\n","import { GanttItem, GanttItemInternal } from '../class/item';\n\nexport interface Dictionary<T = unknown> {\n [key: string]: T;\n}\n\nexport function isNumber(value: any) {\n return typeof value === 'number';\n}\n\nexport function isString(value: any) {\n return typeof value === 'string';\n}\n\nexport function isUndefined(value: any) {\n return value === undefined;\n}\n\nexport function hexToRgb(color: string, opacity = 1) {\n if (/^#/g.test(color)) {\n return `rgba(${parseInt(color.slice(1, 3), 16)},${parseInt(color.slice(3, 5), 16)},${parseInt(color.slice(5, 7), 16)},${opacity})`;\n } else {\n return color;\n }\n}\n\nexport function uniqBy<T = unknown>(array: T[], key: keyof T) {\n const valuesMap: Dictionary<T> = {};\n const result = [];\n (array || []).forEach((value) => {\n const _key = value[key as string];\n if (!valuesMap[_key]) {\n valuesMap[_key] = value;\n result.push(value);\n }\n });\n return result;\n}\n\nexport function flatten<T = unknown>(array: T[]) {\n return array.reduce((pre, cur) => {\n return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);\n }, []);\n}\n\nexport function recursiveItems(items: GanttItemInternal[]) {\n const result = [];\n (items || []).forEach((item) => {\n result.push(item);\n if (item.expanded && item.children) {\n result.push(...recursiveItems(item.children));\n }\n });\n return result;\n}\n\nexport function getFlatItems(items: GanttItem[]) {\n const result = [];\n (items || []).forEach((item) => {\n result.push(item);\n if (item.children) {\n result.push(...getFlatItems(item.children));\n }\n });\n return result;\n}\n","import {\n Input,\n TemplateRef,\n Output,\n EventEmitter,\n ContentChild,\n ElementRef,\n HostBinding,\n ChangeDetectorRef,\n NgZone,\n SimpleChanges,\n InjectionToken,\n Directive,\n Inject,\n Optional\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, take, skip } from 'rxjs/operators';\nimport {\n GanttItem,\n GanttGroup,\n GanttViewType,\n GanttLoadOnScrollEvent,\n GanttDragEvent,\n GanttGroupInternal,\n GanttItemInternal,\n GanttBarClickEvent,\n GanttLinkDragEvent\n} from './class';\nimport { GanttView, GanttViewOptions } from './views/view';\nimport { createViewFactory } from './views/factory';\nimport { GanttDate } from './utils/date';\nimport { GanttStyles, defaultStyles } from './gantt.styles';\nimport { uniqBy, flatten, recursiveItems, getFlatItems } from './utils/helpers';\nimport { GanttDragContainer } from './gantt-drag-container';\nimport { GANTT_GLOBAL_CONFIG, GanttGlobalConfig, defaultConfig } from './gantt.config';\nimport { GanttLinkOptions } from './class/link';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Directive()\nexport abstract class GanttUpper {\n @Input('items') originItems: GanttItem[] = [];\n\n @Input('groups') originGroups: GanttGroup[] = [];\n\n @Input() viewType: GanttViewType = GanttViewType.month;\n\n @Input() start: number;\n\n @Input() end: number;\n\n @Input() showTodayLine = true;\n\n @Input() draggable: boolean;\n\n @Input() styles: GanttStyles;\n\n @Input() viewOptions: GanttViewOptions = {};\n\n @Input() disabledLoadOnScroll: boolean;\n\n @Input()\n set selectable(value: BooleanInput) {\n this._selectable = coerceBooleanProperty(value);\n if (this._selectable) {\n this.selectionModel = this.initSelectionModel();\n } else {\n this.selectionModel?.clear();\n }\n }\n\n get selectable(): boolean {\n return this._selectable;\n }\n\n @Input()\n set multiple(value: BooleanInput) {\n this._multiple = coerceBooleanProperty(value);\n if (this.selectable) {\n this.selectionModel = this.initSelectionModel();\n }\n }\n\n get multiple(): boolean {\n return this._multiple;\n }\n\n @Output() loadOnScroll = new EventEmitter<GanttLoadOnScrollEvent>();\n\n @Output() dragStarted = new EventEmitter<GanttDragEvent>();\n\n @Output() dragMoved = new EventEmitter<GanttDragEvent>();\n\n @Output() dragEnded = new EventEmitter<GanttDragEvent>();\n\n @Output() barClick = new EventEmitter<GanttBarClickEvent>();\n\n @ContentChild('bar', { static: true }) barTemplate: TemplateRef<any>;\n\n @ContentChild('range', { static: true }) rangeTemplate: TemplateRef<any>;\n\n @ContentChild('item', { static: true }) itemTemplate: TemplateRef<any>;\n\n @ContentChild('group', { static: true }) groupTemplate: TemplateRef<any>;\n\n @ContentChild('groupHeader', { static: true }) groupHeaderTemplate: TemplateRef<any>;\n\n public linkable: boolean;\n\n public linkOptions: GanttLinkOptions;\n\n public linkDragEnded = new EventEmitter<GanttLinkDragEvent>();\n\n public view: GanttView;\n\n public items: GanttItemInternal[] = [];\n\n public groups: GanttGroupInternal[] = [];\n\n public viewChange = new EventEmitter<GanttView>();\n\n public expandChange = new EventEmitter<void>();\n\n public get element() {\n return this.elementRef.nativeElement;\n }\n\n public firstChange = true;\n\n public dragContainer: GanttDragContainer;\n\n public unsubscribe$ = new Subject();\n\n public selectionModel: SelectionModel<string>;\n\n private groupsMap: { [key: string]: GanttGroupInternal };\n\n private _selectable = false;\n\n private _multiple = false;\n\n @HostBinding('class.gantt') ganttClass = true;\n\n constructor(\n protected elementRef: ElementRef<HTMLElement>,\n protected cdr: ChangeDetectorRef,\n protected ngZone: NgZone,\n @Inject(GANTT_GLOBAL_CONFIG) protected config: GanttGlobalConfig\n ) {}\n\n private createView() {\n const viewDate = this.getViewDate();\n this.view = createViewFactory(this.viewType, viewDate.start, viewDate.end, this.viewOptions);\n }\n\n private setupGroups() {\n const collapsedIds = this.groups.filter((group) => group.expanded === false).map((group) => group.id);\n this.groupsMap = {};\n this.groups = [];\n this.originGroups.forEach((origin) => {\n const group = new GanttGroupInternal(origin);\n group.expanded = !collapsedIds.includes(group.id);\n this.groupsMap[group.id] = group;\n this.groups.push(group);\n });\n }\n\n private setupItems() {\n this.originItems = uniqBy(this.originItems, 'id');\n this.items = [];\n if (this.groups.length > 0) {\n this.originItems.forEach((origin) => {\n const group = this.groupsMap[origin.group_id];\n if (group) {\n const item = new GanttItemInternal(origin, { viewType: this.viewType });\n group.items.push(item);\n }\n });\n } else {\n this.originItems.forEach((origin) => {\n const item = new GanttItemInternal(origin, { viewType: this.viewType });\n this.items.push(item);\n });\n }\n }\n\n private setupExpandedState() {\n this.originItems = uniqBy(this.originItems, 'id');\n let items: GanttItemInternal[] = [];\n const flatOriginItems = getFlatItems(this.originItems);\n\n if (this.items.length > 0) {\n items = recursiveItems(this.items);\n } else {\n items = flatten(this.groups.map((group) => recursiveItems(group.items)));\n }\n items.forEach((item) => {\n if (item.origin.expanded) {\n const newItem = flatOriginItems.find((originItem) => originItem.id === item.id);\n if (newItem) {\n if (newItem.expanded === undefined) {\n newItem.expanded = true;\n }\n }\n }\n });\n }\n\n private getViewDate() {\n let start = this.start;\n let end = this.end;\n if (!this.start || !this.end) {\n this.originItems.forEach((item) => {\n if (item.start && !this.start) {\n start = start ? Math.min(start, item.start) : item.start;\n }\n if (item.end && !this.end) {\n end = end ? Math.max(end, item.end) : item.end;\n }\n });\n }\n return {\n start: {\n date: new GanttDate(start),\n isCustom: this.start ? true : false\n },\n end: {\n date: new GanttDate(end),\n isCustom: this.end ? true : false\n }\n };\n }\n\n computeRefs() {\n this.groups.forEach((group) => {\n const groupItems = recursiveItems(group.items);\n this.computeItemsRefs(...groupItems);\n });\n const items = recursiveItems(this.items);\n this.computeItemsRefs(...items);\n }\n\n private expandGroups(expanded: boolean) {\n this.groups.forEach((group) => {\n group.setExpand(expanded);\n });\n this.expandChange.next();\n this.cdr.detectChanges();\n }\n\n private initSelectionModel() {\n return new SelectionModel(this.multiple, []);\n }\n\n onInit() {\n this.styles = Object.assign({}, defaultStyles, this.styles);\n this.viewOptions.dateFormat = Object.assign({}, defaultConfig.dateFormat, this.config.dateFormat, this.viewOptions.dateFormat);\n this.createView();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n this.initSelectionModel();\n this.firstChange = false;\n\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.element.style.opacity = '1';\n\n this.dragContainer.dragStarted.subscribe((event) => {\n this.dragStarted.emit(event);\n });\n\n this.dragContainer.dragMoved.subscribe((event) => {\n this.dragMoved.emit(event);\n });\n this.dragContainer.dragEnded.subscribe((event) => {\n this.dragEnded.emit(event);\n this.computeRefs();\n this.detectChanges();\n });\n });\n\n this.view.start$.pipe(skip(1), takeUntil(this.unsubscribe$)).subscribe(() => {\n this.computeRefs();\n });\n }\n\n onChanges(changes: SimpleChanges) {\n if (!this.firstChange) {\n if (changes.viewType && changes.viewType.currentValue) {\n this.createView();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n this.viewChange.emit(this.view);\n }\n if (changes.originItems || changes.originGroups) {\n this.setupExpandedState();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n }\n }\n }\n\n onDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n computeItemsRefs(...items: GanttItemInternal[]) {\n items.forEach((item) => {\n item.updateRefs({\n width: item.start && item.end ? this.view.getDateRangeWidth(item.start.startOfDay(), item.end.endOfDay()) : 0,\n x: item.start ? this.view.getXPointByDate(item.start) : 0,\n y: (this.styles.lineHeight - this.styles.barHeight) / 2 - 1\n });\n });\n }\n\n trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n return item.id || index;\n }\n\n detectChanges() {\n this.cdr.detectChanges();\n }\n\n expandGroup(group: GanttGroupInternal) {\n group.setExpand(!group.expanded);\n this.expandChange.emit();\n this.cdr.detectChanges();\n }\n\n // public functions\n\n expandAll() {\n this.expandGroups(true);\n }\n\n collapseAll() {\n this.expandGroups(false);\n }\n\n getGanttItem(id: string) {\n return this.getGanttItems([id])[0] || null;\n }\n\n getGanttItems(ids: string[]) {\n let items: GanttItemInternal[] = [];\n if (this.items.length > 0) {\n items = recursiveItems(this.items);\n } else {\n items = flatten(this.groups.map((group) => recursiveItems(group.items)));\n }\n return items.filter((item) => ids.includes(item.id));\n }\n\n isSelected(id: string) {\n if (!this.selectable) {\n return false;\n }\n if (!this.selectionModel.hasValue()) {\n return false;\n }\n return this.selectionModel.isSelected(id);\n }\n}\n\nexport const GANTT_UPPER_TOKEN = new InjectionToken<GanttUpper>('GANTT_UPPER_TOKEN');\n","import { Component, OnInit, ContentChild, TemplateRef, Input, EventEmitter, Inject, Output } from '@angular/core';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../gantt-upper';\n@Component({\n selector: 'ngx-gantt-column',\n template: ''\n})\nexport class NgxGanttTableColumnComponent implements OnInit {\n public columnWidth: string;\n\n @Input()\n set width(width: number | string) {\n this.columnWidth = coerceCssPixelValue(width);\n }\n\n @Input() name: string;\n\n @ContentChild('cell', { static: true }) templateRef: TemplateRef<any>;\n\n @ContentChild('header', { static: true }) headerTemplateRef: TemplateRef<any>;\n\n constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n\n ngOnInit() {}\n}\n","import { Component, ContentChild, EventEmitter, OnInit, Output, TemplateRef } from '@angular/core';\nimport { GanttTableEvent } from '../class';\n\n@Component({\n selector: 'ngx-gantt-table',\n template: ''\n})\nexport class NgxGanttTableComponent implements OnInit {\n @Output() columnChanges = new EventEmitter<GanttTableEvent>();\n\n @ContentChild('rowBeforeSlot', { static: true }) rowBeforeTemplate: TemplateRef<any>;\n\n @ContentChild('rowAfterSlot', { static: true }) rowAfterTemplate: TemplateRef<any>;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { GanttGroupInternal, GanttItemInternal } from './class';\nimport { GanttStyles } from './gantt.styles';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\n\nexport interface GanttAbstractComponent {\n table: NgxGanttTableComponent;\n styles: GanttStyles;\n maxLevel: number;\n expandGroup(group: GanttGroupInternal): void;\n expandChildren(item: GanttItemInternal): void;\n}\n\nexport const GANTT_ABSTRACT_TOKEN = new InjectionToken<GanttAbstractComponent>('gantt-abstract-token');\n","const angleRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"amnavigation/angle-right\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M7.978 11.498l-.005.005L2.3 5.831 3.13 5l4.848 4.848L12.826 5l.83.831-5.673 5.672-.005-.005z\" transform=\"rotate(-90 7.978 8.252)\"></path></g></svg>`;\nconst angleDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"aknavigation/angle-down\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M7.978 11.997l-.005.006L2.3 6.33l.83-.831 4.848 4.848L12.826 5.5l.83.83-5.673 5.673-.005-.006z\" ></path></g></svg>`;\nconst plusSquare = `<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"kxaction/plus-square\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M2 0h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1.2a.8.8 0 0 0-.8.8v12a.8.8 0 0 0 .8.8h12a.8.8 0 0 0 .8-.8V2a.8.8 0 0 0-.8-.8H2zm5.45 6.2V4.75h1.2V7.4h2.65v1.2H8.65v2.65h-1.2V8.6H4.8V7.4h2.65z\"></path></g></svg>`;\nconst minusSquare = `<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"jnaction/minus-square\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M2 0h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1.2a.8.8 0 0 0-.8.8v12a.8.8 0 0 0 .8.8h12a.8.8 0 0 0 .8-.8V2a.8.8 0 0 0-.8-.8H2zm2.8 6.2h6.5v1.2H4.8V7.4z\"></path></g></svg>`;\nconst loadingIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 50 50\" style=\"enable-background:new 0 0 50 50\" xml:space=\"preserve\">\n<path fill=\"#aaa\" d=\"M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z\" transform=\"rotate(275.098 25 25)\">\n <animateTransform attributeType=\"xml\" attributeName=\"transform\" type=\"rotate\" from=\"0 25 25\" to=\"360 25 25\" dur=\"0.6s\" repeatCount=\"indefinite\"></animateTransform>\n</path>\n</svg>`;\nconst emptyIcon = `<svg\nwidth=\"148px\"\nheight=\"134px\"\nviewBox=\"0 0 148 134\"\nversion=\"1.1\"\nxmlns=\"http://www.w3.org/2000/svg\"\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n<defs>\n <filter x=\"0.0%\" y=\"0.0%\" width=\"100.0%\" height=\"100.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-1\">\n <feGaussianBlur stdDeviation=\"0\" in=\"SourceGraphic\"></feGaussianBlur>\n </filter>\n</defs>\n<g id=\"148x134\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"编组-6\" transform=\"translate(1.000000, 1.000000)\">\n <ellipse\n id=\"椭圆形\"\n fill=\"#EDEEF2\"\n opacity=\"0.3\"\n filter=\"url(#filter-1)\"\n cx=\"73.0800017\"\n cy=\"115.920003\"\n rx=\"73.0800017\"\n ry=\"16.8000004\"\n ></ellipse>\n <g id=\"编组-5\" transform=\"translate(15.120000, 0.000000)\">\n <polygon\n id=\"矩形\"\n fill=\"#E2E4E9\"\n points=\"19.2789848 49.5600011 99.1200023 48.7200011 117.600003 75.9297673 117.600003 92.313049 0 92.313049 0 75.0356267\"\n ></polygon>\n <path\n d=\"M23.5200005,0 L94.0800002,0 C97.7913538,2.06413823e-16 100.8,3.00864655 100.8,6.72000015 L100.8,99.1200023 L100.8,99.1200023 L16.8000004,99.1200023 L16.8000004,6.72000015 C16.8000004,3.00864655 19.8086469,1.56994302e-15 23.5200005,0 Z\"\n id=\"矩形\"\n fill=\"#F9FAFB\"\n ></path>\n <path\n d=\"M30.9200007,12.4400003 L86.6800019,12.4400003 C88.5356787,12.4400003 90.040002,13.9443236 90.040002,15.8000004 L90.040002,42.000001 C90.040002,43.8556778 88.5356787,45.360001 86.6800019,45.360001 L30.9200007,45.360001 C29.0643239,45.360001 27.5600006,43.8556778 27.5600006,42.000001 L27.5600006,15.8000004 C27.5600006,13.9443236 29.0643239,12.4400003 30.9200007,12.4400003 Z\"\n id=\"矩形\"\n fill=\"#E8EAEE\"\n ></path>\n <text\n id=\"&lt;/null&gt;\"\n font-family=\"PingFangSC-Medium, PingFang SC\"\n font-size=\"15.1200003\"\n font-weight=\"400\"\n fill=\"#BCBECD\"\n >\n <tspan x=\"33.6000008\" y=\"32.8000004\">&lt;/null&gt;</tspan>\n </text>\n <rect id=\"矩形\" fill=\"#E8EAEE\" x=\"27.5600006\" y=\"52.0800012\" width=\"61.4800014\" height=\"5.04000011\" rx=\"2.52000006\"></rect>\n <rect\n id=\"矩形备份\"\n fill=\"#E8EAEE\"\n x=\"27.5600006\"\n y=\"63.8400014\"\n width=\"61.4800014\"\n height=\"5.04000011\"\n rx=\"2.52000006\"\n ></rect>\n <path\n d=\"M0,75.6000017 L29.280235,75.6000017 C32.0637502,75.6000017 34.3202352,77.8564866 34.3202352,80.6400018 L34.3202352,86.2591426 C34.3202352,89.0426578 36.5767201,91.2991427 39.3602353,91.2991427 L78.4136737,91.2991427 C81.1971889,91.2991427 83.4536738,89.0426578 83.4536738,86.2591426 L83.4536738,80.6400018 C83.4536738,77.8564866 85.7101587,75.6000017 88.4936739,75.6000017 L117.600003,75.6000017 L117.600003,75.6000017 L117.600003,110.880003 C117.600003,115.519195 113.839194,119.280003 109.200002,119.280003 L8.40000019,119.280003 C3.76080819,119.280003 -6.53729019e-15,115.519195 0,110.880003 L0,75.6000017 L0,75.6000017 Z\"\n id=\"矩形\"\n fill=\"#EDEFF2\"\n ></path>\n </g>\n </g>\n</g>\n</svg>`;\nexport const icons = {\n 'angle-right': angleRight,\n 'angle-down': angleDown,\n 'plus-square': plusSquare,\n 'minus-square': minusSquare,\n loading: loadingIcon,\n empty: emptyIcon\n};\n","import { Component, OnInit, Input, AfterViewInit, ElementRef, HostBinding } from '@angular/core';\nimport { icons } from './icons';\n@Component({\n selector: 'gantt-icon',\n template: ''\n})\nexport class GanttIconComponent implements OnInit, AfterViewInit {\n @HostBinding('class.gantt-icon') isIcon = true;\n\n @Input() set iconName(name: string) {\n this.setSvg(name);\n }\n\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {}\n\n setSvg(name: string) {\n const iconSvg = icons[name];\n if (iconSvg) {\n this.elementRef.nativeElement.innerHTML = iconSvg;\n } else {\n this.elementRef.nativeElement.innerHTML = '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GanttItemType } from './class';\n\n@Pipe({\n name: 'isGanttRangeItem'\n})\nexport class IsGanttRangeItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.range;\n }\n}\n\n\n@Pipe({\n name: 'isGanttBarItem'\n})\nexport class IsGanttBarItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.bar;\n }\n}\n\n\n@Pipe({\n name: 'isGanttCustomItem'\n})\nexport class IsGanttCustomItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.custom;\n }\n}\n","import {\n Component,\n HostBinding,\n TemplateRef,\n QueryList,\n Input,\n OnInit,\n ViewChild,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Inject,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { GanttItemInternal, GanttGroupInternal, GanttSelectedEvent } from '../../class';\nimport { NgxGanttTableColumnComponent } from '../../table/gantt-column.component';\n// import { defaultColumnWidth, minColumnWidth } from '../../gantt.component';\nimport { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { GanttAbstractComponent, GANTT_ABSTRACT_TOKEN } from '../../gantt-abstract';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../gantt-upper';\n\nexport const defaultColumnWidth = 100;\nexport const minColumnWidth = 80;\n\ninterface DragFixedConfig {\n target: HTMLElement;\n originWidth: number;\n movedWidth: number;\n minWidth: number;\n}\n@Component({\n selector: 'gantt-table',\n templateUrl: './gantt-table.component.html'\n})\nexport class GanttTableComponent implements OnInit, OnChanges {\n public columnList: QueryList<NgxGanttTableColumnComponent>;\n\n public dragStartLeft: number;\n\n @Input() groups: GanttGroupInternal[];\n\n @Input() items: GanttItemInternal[];\n\n @Input()\n set columns(columns: QueryList<NgxGanttTableColumnComponent>) {\n columns.forEach((column) => {\n if (!column.columnWidth) {\n column.columnWidth = coerceCssPixelValue(defaultColumnWidth);\n }\n });\n this.columnList = columns;\n }\n\n @Input() groupTemplate: TemplateRef<any>;\n\n @Input() emptyTemplate: TemplateRef<any>;\n\n @Input() rowBeforeTemplate: TemplateRef<any>;\n\n @Input() rowAfterTemplate: TemplateRef<any>;\n\n @Output() itemClick = new EventEmitter<GanttSelectedEvent>();\n\n @ViewChild('dragLine', { static: true }) draglineElementRef: ElementRef<HTMLElement>;\n\n @HostBinding('class.gantt-table') ganttTableClass = true;\n\n @HostBinding('class.gantt-table-empty') ganttTableEmptyClass = false;\n\n constructor(\n @Inject(GANTT_ABSTRACT_TOKEN) public gantt: GanttAbstractComponent,\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n private elementRef: ElementRef\n ) {}\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (!changes.groups.currentValue?.length && !changes.items.currentValue?.length) {\n this.ganttTableEmptyClass = true;\n } else {\n this.ganttTableEmptyClass = false;\n }\n }\n\n private dragFixed(config: DragFixedConfig) {\n if (config.movedWidth < config.minWidth) {\n config.target.style.transform = `translate3d(${config.minWidth - config.originWidth}px, 0, 0)`;\n }\n }\n\n expandGroup(group: GanttGroupInternal) {\n this.gantt.expandGroup(group);\n }\n\n expandChildren(event: MouseEvent, item: GanttItemInternal) {\n event.stopPropagation();\n this.gantt.expandChildren(item);\n }\n\n dragStarted(event: CdkDragStart) {\n const target = event.source.element.nativeElement;\n this.dragStartLeft = target.getBoundingClientRect().left;\n }\n\n dragMoved(event: CdkDragMove, column?: NgxGanttTableColumnComponent) {\n const target = event.source.element.nativeElement;\n const left = target.getBoundingClientRect().left;\n\n let originWidth: number;\n let movedWidth: number;\n let minWidth: number;\n if (column) {\n originWidth = parseInt(column.columnWidth, 10);\n movedWidth = originWidth + (left - this.dragStartLeft);\n minWidth = minColumnWidth;\n } else {\n originWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n movedWidth = originWidth + (left - this.dragStartLeft);\n minWidth = minColumnWidth * this.columnList.length;\n }\n\n this.dragFixed({\n target,\n originWidth,\n movedWidth,\n minWidth\n });\n\n this.showAuxiliaryLine(event);\n }\n\n columnDragEnded(event: CdkDragEnd, column: NgxGanttTableColumnComponent) {\n const target = event.source.element.nativeElement;\n const left = target.getBoundingClientRect().left;\n const width = parseInt(column.columnWidth, 10) + (left - this.dragStartLeft);\n const columnWidth = Math.max(width || 0, minColumnWidth);\n column.columnWidth = coerceCssPixelValue(columnWidth);\n if (this.gantt.table) {\n this.gantt.table.columnChanges.emit({ columns: this.columnList });\n }\n\n this.hideAuxiliaryLine();\n event.source.reset();\n }\n\n tableDragEnded(event: CdkDragEnd) {\n const target = event.source.element.nativeElement;\n const left = target.getBoundingClientRect().left;\n const tableWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n const dragWidth = left - this.dragStartLeft;\n this.columnList.forEach((column) => {\n const lastColumnWidth = parseInt(column.columnWidth, 10);\n const distributeWidth = parseInt(String(dragWidth * (lastColumnWidth / tableWidth)), 10);\n const columnWidth = Math.max(lastColumnWidth + distributeWidth || 0, minColumnWidth);\n column.columnWidth = coerceCssPixelValue(columnWidth);\n });\n\n if (this.gantt.table) {\n this.gantt.table.columnChanges.emit({ columns: this.columnList });\n }\n\n this.hideAuxiliaryLine();\n event.source.reset();\n }\n\n private showAuxiliaryLine(event: CdkDragMove) {\n const tableRect = this.elementRef.nativeElement.getBoundingClientRect();\n const targetRect = event.source.element.nativeElement.getBoundingClientRect();\n const distance = { x: targetRect.left - tableRect.left, y: targetRect.top - tableRect.top };\n this.draglineElementRef.nativeElement.style.left = `${distance.x}px`;\n this.draglineElementRef.nativeElement.style.display = 'block';\n }\n\n private hideAuxiliaryLine() {\n this.draglineElementRef.nativeElement.style.display = 'none';\n }\n\n trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n return item.id || index;\n }\n}\n","<div class=\"gantt-table-header gantt-table-row\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let i = index\" [style.width]=\"column.columnWidth\">\n <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"></ng-container>\n <ng-template #default>\n {{ column.name }}\n </ng-template>\n <div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event, column)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"columnDragEnded($event, column)\"\n ></div>\n </div>\n</div>\n<div class=\"gantt-table-body\">\n <ng-container *ngIf=\"!groups.length && !items.length\">\n <ng-container *ngIf=\"!emptyTemplate\">\n <gantt-icon class=\"empty-icon\" iconName=\"empty\"></gantt-icon>\n <div class=\"empty-text\">没有数据</div>\n </ng-container>\n <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"groups && groups.length > 0; else itemsTemplate\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-table-group\" [ngClass]=\"group.class\">\n <div class=\"gantt-table-group-title\" [class.expanded]=\"group.expanded\" (click)=\"expandGroup(group)\">\n <gantt-icon class=\"expand-icon\" [iconName]=\"group.expanded ? 'angle-down' : 'angle-right'\"></gantt-icon>\n <ng-container *ngIf=\"groupTemplate; else default\">\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: group.origin, group: group.origin }\"\n ></ng-template>\n </ng-container>\n <ng-template #default>\n <span class=\"group-title\">{{ group.title }}</span>\n </ng-template>\n </div>\n </div>\n\n <ng-container *ngIf=\"group.expanded\">\n <ng-template\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ group: group, items: group.items, level: 0 }\"\n ></ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"tableDragEnded($event)\"\n></div>\n\n<div #dragLine class=\"gantt-table-drag-auxiliary-line\"></div>\n\n<ng-template #itemsTemplate>\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items, level: 0 }\"></ng-template>\n</ng-template>\n\n<ng-template #ganttItems let-group=\"group\" let-items=\"items\" let-level=\"level\">\n <ng-container *ngFor=\"let item of items; trackBy: trackBy\">\n <div\n (click)=\"itemClick.emit({ event: $event, selectedValue: this.item.origin })\"\n class=\"gantt-table-item gantt-table-row\"\n [class.gantt-table-item-first-level-group]=\"level === 0 && (item.type | isGanttRangeItem)\"\n [class.gantt-table-item-with-group]=\"group\"\n [class.gantt-table-item-active]=\"ganttUpper.isSelected(item.id)\"\n [style.height.px]=\"gantt.styles.lineHeight\"\n [style.lineHeight.px]=\"gantt.styles.lineHeight\"\n >\n <ng-template\n [ngTemplateOutlet]=\"rowBeforeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let first = first\" [style.width]=\"column.columnWidth\">\n <div *ngIf=\"first\" class=\"gantt-expand-icon\" [style.marginLeft.px]=\"level * 20\">\n <ng-container *ngIf=\"level < gantt.maxLevel - 1 && item.expandable\">\n <gantt-icon\n *ngIf=\"!item.loading\"\n class=\"expand-icon\"\n [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"\n (click)=\"expandChildren($event, item)\"\n ></gantt-icon>\n <gantt-icon *ngIf=\"item.loading\" [iconName]=\"'loading'\"></gantt-icon>\n </ng-container>\n </div>\n <div class=\"gantt-table-column-content\">\n <ng-template\n [ngTemplateOutlet]=\"column.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"rowAfterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children, level: level + 1, group: group }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n","import { Injectable, ElementRef, OnDestroy } from '@angular/core';\nimport { fromEvent, Subject, merge } from 'rxjs';\nimport { pairwise, map, auditTime, takeUntil, take, startWith } from 'rxjs/operators';\nimport { isNumber } from './utils/helpers';\n\nconst scrollThreshold = 50;\n\nexport enum ScrollDirection {\n NONE,\n LEFT,\n RIGHT\n}\n\nexport interface ScrollEvent {\n target: Element;\n direction: ScrollDirection;\n}\n\n@Injectable()\nexport class GanttDomService implements OnDestroy {\n public root: Element;\n\n public side: Element;\n\n public container: Element;\n\n public sideContainer: Element;\n\n public mainContainer: Element;\n\n public calendarOverlay: Element;\n\n public linksOverlay: Element;\n\n private unsubscribe$ = new Subject<void>();\n\n constructor() {}\n\n private monitorScrollChange() {\n merge(fromEvent(this.mainContainer, 'scroll'), fromEvent(this.sideContainer, 'scroll'))\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((event) => {\n this.syncScroll(event);\n });\n\n fromEvent(this.mainContainer, 'scroll')\n .pipe(startWith(), takeUntil(this.unsubscribe$))\n .subscribe((event) => {\n // if (this.mainContainer.scrollLeft > 0) {\n // this.side.classList.add('gantt-side-has-shadow');\n // } else {\n // this.side.classList.remove('gantt-side-has-shadow');\n // }\n });\n }\n\n private syncScroll(event: Event) {\n const target = event.currentTarget as HTMLElement;\n this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;\n\n this.sideContainer.scrollTop = target.scrollTop;\n this.mainContainer.scrollTop = target.scrollTop;\n }\n\n private disableBrowserWheelEvent() {\n const container = this.mainContainer as HTMLElement;\n fromEvent(container, 'wheel')\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((event: WheelEvent) => {\n const delta = event.deltaX;\n if (!delta) {\n return;\n }\n if (\n (container.scrollLeft + container.offsetWidth === container.scrollWidth && delta > 0) ||\n (container.scrollLeft === 0 && delta < 0)\n ) {\n event.preventDefault();\n }\n });\n }\n\n initialize(root: ElementRef<HTMLElement>) {\n this.root = root.nativeElement;\n this.side = this.root.getElementsByClassName('gantt-side')[0];\n this.container = this.root.getElementsByClassName('gantt-container')[0];\n this.sideContainer = this.root.getElementsByClassName('gantt-side-container')[0];\n this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0];\n this.calendarOverlay = this.root.getElementsByClassName('gantt-calendar-overlay')[0];\n this.monitorScrollChange();\n this.disableBrowserWheelEvent();\n }\n\n getViewerScroll() {\n return fromEvent<Event>(this.mainContainer, 'scroll').pipe(\n map(() => this.mainContainer.scrollLeft),\n pairwise(),\n map(([previous, current]) => {\n const event: ScrollEvent = {\n target: this.mainContainer,\n direction: ScrollDirection.NONE\n };\n if (current - previous < 0) {\n if (this.mainContainer.scrollLeft < scrollThreshold && this.mainContainer.scrollLeft > 0) {\n event.direction = ScrollDirection.LEFT;\n }\n }\n if (current - previous > 0) {\n if (this.mainContainer.scrollWidth - this.mainContainer.clientWidth - this.mainContainer.scrollLeft < scrollThreshold) {\n event.direction = ScrollDirection.RIGHT;\n }\n }\n return event;\n })\n );\n }\n\n getResize() {\n return fromEvent(window, 'resize').pipe(auditTime(150));\n }\n\n scrollMainContainer(left: number) {\n if (isNumber(left)) {\n const scrollLeft = left - this.mainContainer.clientWidth / 2;\n this.mainContainer.scrollLeft = scrollLeft > scrollThreshold ? scrollLeft : 0;\n this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import { Injectable, EventEmitter } from '@angular/core';\nimport { GanttDragEvent, GanttLinkDragEvent } from './class/event';\nimport { GanttItemInternal } from './class/item';\n\nexport type LinkDragFrom = 'source' | 'target';\n\n@Injectable()\nexport class GanttDragContainer {\n dragStarted = new EventEmitter<GanttDragEvent>();\n\n dragMoved = new EventEmitter<GanttDragEvent>();\n\n dragEnded = new EventEmitter<GanttDragEvent>();\n\n linkDragStarted = new EventEmitter<GanttLinkDragEvent>();\n\n linkDragEntered = new EventEmitter<GanttLinkDragEvent>();\n\n linkDragEnded = new EventEmitter<GanttLinkDragEvent>();\n\n linkDraggingId: string;\n\n private linkDragSource: GanttItemInternal;\n\n private linkDragTarget: GanttItemInternal;\n\n private linkDragFrom: LinkDragFrom;\n\n constructor() {}\n\n emitLinkDragStarted(from: LinkDragFrom, item: GanttItemInternal) {\n this.linkDraggingId = item.id;\n this.linkDragFrom = from;\n this.linkDragSource = this.linkDragFrom === 'source' ? item : null;\n this.linkDragTarget = this.linkDragFrom === 'target' ? item : null;\n this.linkDragStarted.emit({\n source: this.linkDragSource && this.linkDragSource.origin,\n target: this.linkDragTarget && this.linkDragTarget.origin\n });\n }\n\n emitLinkDragEntered(item: GanttItemInternal) {\n if (this.linkDragFrom === 'source') {\n this.linkDragTarget = item;\n } else {\n this.linkDragSource = item;\n }\n this.linkDragEntered.emit({\n source: this.linkDragSource.origin,\n target: this.linkDragTarget.origin\n });\n }\n\n emitLinkDragLeaved() {\n if (this.linkDragFrom === 'source') {\n this.linkDragTarget = null;\n } else {\n this.linkDragSource = null;\n }\n }\n\n emitLinkDragEnded() {\n this.linkDraggingId = null;\n if (this.linkDragSource && this.linkDragTarget) {\n this.linkDragSource.addLink(this.linkDragTarget.id);\n\n this.linkDragEnded.emit({\n source: this.linkDragSource.origin,\n target: this.linkDragTarget.origin\n });\n }\n this.linkDragSource = null;\n this.linkDragTarget = null;\n }\n}\n","import { Injectable, ElementRef } from '@angular/core';\nimport html2canvas from 'html2canvas';\n\n@Injectable()\nexport class GanttPrintService {\n private root: HTMLElement;\n\n private mainContainer: HTMLElement;\n\n constructor() {}\n\n private setInlineStyles(targetElem: Element) {\n const svgElements = Array.from(targetElem.getElementsByTagName('svg'));\n for (const svgElement of svgElements) {\n this.recursElementChildren(svgElement);\n }\n }\n\n private recursElementChildren(node: SVGSVGElement | HTMLElement) {\n const transformProperties = [\n 'fill',\n 'color',\n 'font-size',\n 'stroke',\n 'font',\n 'text-anchor',\n 'stroke-dasharray',\n 'shape-rendering',\n 'stroke-width'\n ];\n if (!node.style) {\n return;\n }\n const styles = getComputedStyle(node);\n for (const transformProperty of transformProperties) {\n node.style[transformProperty] = styles[transformProperty];\n }\n for (const child of Array.from(node.childNodes)) {\n this.recursElementChildren(child as SVGSVGElement);\n }\n }\n\n register(root: ElementRef<HTMLElement>) {\n this.root = root.nativeElement;\n this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0] as HTMLElement;\n }\n\n print(name: string = 'download', ignoreElementClass?: string) {\n const root = this.root as HTMLElement;\n\n const mainContainer = this.mainContainer as HTMLElement;\n // set print width\n const printWidth = root.offsetWidth;\n\n // set print height\n const printHeight = root.offsetHeight - mainContainer.offsetHeight + mainContainer.scrollHeight;\n\n html2canvas(root, {\n logging: false,\n allowTaint: true,\n useCORS: true,\n width: printWidth,\n height: printHeight,\n ignoreElements: (element) => {\n if (ignoreElementClass && element.classList.contains(ignoreElementClass)) {\n return true;\n }\n if (element.classList.contains('gantt-calendar-today-overlay')) {\n return true;\n }\n },\n\n onclone: (cloneDocument: Document) => {\n const ganttClass = root.className;\n const cloneGanttDom = cloneDocument.querySelector(`.${ganttClass.replace(/\\s+/g, '.')}`) as HTMLElement;\n const cloneGanttContainerDom = cloneDocument.querySelector('.gantt-container') as HTMLElement;\n const cloneCalendarOverlay = cloneDocument.querySelector('.gantt-calendar-overlay-main') as HTMLElement;\n const cloneLinksOverlay = cloneDocument.querySelector('.gantt-links-overlay-main') as HTMLElement;\n\n // change targetDom width\n cloneGanttDom.style.width = `${printWidth}px`;\n cloneGanttDom.style.height = `${printHeight}px`;\n cloneGanttDom.style.overflow = `unset`;\n cloneGanttContainerDom.style.backgroundColor = '#fff';\n cloneCalendarOverlay.setAttribute('height', `${printHeight}`);\n cloneCalendarOverlay.setAttribute('style', `background: transparent`);\n\n if (cloneLinksOverlay) {\n cloneLinksOverlay.setAttribute('height', `${printHeight}`);\n cloneLinksOverlay.setAttribute('style', `height: ${printHeight}px`);\n }\n\n // setInlineStyles for svg\n this.setInlineStyles(cloneGanttDom);\n }\n }).then((canvas: HTMLCanvasElement) => {\n const link = document.createElement('a');\n const dataUrl = canvas.toDataURL('image/png');\n link.download = `${name}.png`;\n link.href = dataUrl;\n link.click();\n });\n }\n}\n","import {\n Component,\n OnInit,\n HostBinding,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n NgZone,\n Inject,\n ElementRef,\n AfterViewInit\n} from '@angular/core';\nimport { GanttDatePoint } from '../../class/date-point';\nimport { Subject, merge } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { headerHeight, todayHeight, todayWidth, todayBorderRadius } from '../../gantt.styles';\nimport { isNumber } from '../../utils/helpers';\nimport { GanttDate } from '../../utils/date';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttViewType } from './../../class/view-type';\n\nconst mainHeight = 5000;\n\n@Component({\n selector: 'gantt-calendar-overlay',\n templateUrl: './calendar.component.html'\n})\nexport class GanttCalendarComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n get view() {\n return this.ganttUpper.view;\n }\n\n private unsubscribe$ = new Subject();\n\n headerHeight = headerHeight;\n\n mainHeight = mainHeight;\n\n todayHeight = todayHeight;\n\n todayWidth = todayWidth;\n\n todayBorderRadius = todayBorderRadius;\n\n viewTypes = GanttViewType;\n\n @HostBinding('class.gantt-calendar-overlay') className = true;\n\n constructor(\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n private ngZone: NgZone,\n private elementRef: ElementRef<HTMLElement>\n ) {}\n\n setTodayPoint() {\n const x = this.view.getTodayXPoint();\n const today = new GanttDate().getDate();\n const todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0] as HTMLElement;\n const rect = this.elementRef.nativeElement.getElementsByClassName('today-rect')[0] as HTMLElement;\n const line = this.elementRef.nativeElement.getElementsByClassName('today-line')[0] as HTMLElement;\n\n if (isNumber(x)) {\n if (rect) {\n rect.style.left = `${x - todayWidth / 2}px`;\n rect.style.top = `${headerHeight - todayHeight}px`;\n rect.innerHTML = today.toString();\n }\n if (line) {\n line.style.left = `${x}px`;\n line.style.top = `${headerHeight}px`;\n line.style.bottom = `${-mainHeight}px`;\n }\n } else {\n todayEle.style.display = 'none';\n }\n }\n\n ngOnInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.setTodayPoint();\n });\n });\n }\n\n ngAfterViewInit() {}\n\n ngOnChanges(changes: SimpleChanges): void {}\n\n trackBy(index: number, point: GanttDatePoint) {\n return point.text || index;\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-overlay-main\" [attr.width]=\"view.width\" [attr.height]=\"headerHeight\">\n <g>\n <text class=\"primary-text\" *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text class=\"secondary-text\" [class.secondary-text-weekend]=\"point.additions?.isWeekend\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n </ng-container>\n\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line [attr.x1]=\"0\" [attr.x2]=\"view.width\" [attr.y1]=\"headerHeight\" [attr.y2]=\"headerHeight\" class=\"header-line\"></line>\n </g>\n </g>\n <g>\n <g *ngIf=\"view.showTimeline\">\n <line\n *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.cellWidth\"\n [attr.x2]=\"(i + 1) * view.cellWidth\"\n [attr.y1]=\"headerHeight\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n </g>\n</svg>\n","import { Component, OnInit, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'gantt-drag-backdrop',\n templateUrl: `./drag-backdrop.component.html`\n})\nexport class GanttDragBackdropComponent implements OnInit {\n @HostBinding('class.gantt-drag-backdrop') backdropClass = true;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","<div class=\"gantt-drag-mask\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n","import {\n Component,\n OnInit,\n HostBinding,\n NgZone,\n ElementRef,\n Inject,\n ContentChild,\n TemplateRef,\n Input,\n Optional,\n AfterViewInit\n} from '@angular/core';\nimport { GanttDomService, ScrollDirection } from './gantt-dom.service';\nimport { GanttDragContainer } from './gantt-drag-container';\nimport { take, takeUntil, startWith } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from './gantt-upper';\nimport { GanttPrintService } from './gantt-print.service';\n\n@Component({\n selector: 'ngx-gantt-root',\n templateUrl: './root.component.html',\n providers: [GanttDomService, GanttDragContainer]\n})\nexport class NgxGanttRootComponent implements OnInit {\n @Input() sideWidth: number;\n\n @HostBinding('class.gantt') ganttClass = true;\n\n @ContentChild('sideTemplate', { static: true }) sideTemplate: TemplateRef<any>;\n\n @ContentChild('mainTemplate', { static: true }) mainTemplate: TemplateRef<any>;\n\n private unsubscribe$ = new Subject();\n\n private get view() {\n return this.ganttUpper.view;\n }\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private ngZone: NgZone,\n private dom: GanttDomService,\n public dragContainer: GanttDragContainer,\n @Inject(GANTT_UPPER_TOKEN) private ganttUpper: GanttUpper,\n @Optional() private printService: GanttPrintService\n ) {\n this.ganttUpper.dragContainer = dragContainer;\n }\n\n ngOnInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.dom.initialize(this.elementRef);\n if (this.printService) {\n this.printService.register(this.elementRef);\n }\n this.setupScrollClass();\n this.setupResize();\n this.setupViewScroll();\n // 优化初始化时Scroll滚动体验问题,通过透明度解决,默认透明度为0,滚动结束后恢复\n this.elementRef.nativeElement.style.opacity = '1';\n this.ganttUpper.viewChange.pipe(startWith(null)).subscribe(() => {\n this.scrollToToday();\n });\n });\n }\n\n private setupViewScroll() {\n if (this.ganttUpper.disabledLoadOnScroll) {\n return;\n }\n this.dom\n .getViewerScroll()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((event) => {\n if (event.direction === ScrollDirection.LEFT) {\n const dates = this.view.addStartDate();\n if (dates) {\n event.target.scrollLeft += this.view.getDateRangeWidth(dates.start, dates.end);\n this.ngZone.run(() => {\n this.ganttUpper.loadOnScroll.emit({ start: dates.start.getUnixTime(), end: dates.end.getUnixTime() });\n });\n }\n }\n if (event.direction === ScrollDirection.RIGHT) {\n const dates = this.view.addEndDate();\n if (dates) {\n this.ngZone.run(() => {\n this.ganttUpper.loadOnScroll.emit({ start: dates.start.getUnixTime(), end: dates.end.getUnixTime() });\n });\n }\n }\n });\n }\n\n private setupResize() {\n this.dom\n .getResize()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.setupScrollClass();\n });\n }\n\n private setupScrollClass() {\n const mainContainer = this.dom.mainContainer as HTMLElement;\n const height = mainContainer.offsetHeight;\n const scrollHeight = mainContainer.scrollHeight;\n if (scrollHeight > height) {\n this.elementRef.nativeElement.className = 'gantt gantt-scroll';\n } else {\n this.elementRef.nativeElement.className = 'gantt';\n }\n }\n\n private scrollToToday() {\n const x = this.view.getTodayXPoint();\n this.dom.scrollMainContainer(x);\n }\n}\n","<div class=\"gantt-side\" [style.width.px]=\"sideWidth\">\n <div class=\"gantt-side-container\">\n <ng-template [ngTemplateOutlet]=\"sideTemplate\"></ng-template>\n </div>\n</div>\n<div class=\"gantt-container\">\n <gantt-calendar-overlay></gantt-calendar-overlay>\n <gantt-drag-backdrop></gantt-drag-backdrop>\n <div class=\"gantt-main\">\n <ng-template [ngTemplateOutlet]=\"mainTemplate\"></ng-template>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { GanttLinkItem, GanttLinkType } from '../../../class/link';\n\n@Injectable()\nexport abstract class GanttLinkPath {\n constructor() {}\n\n abstract generateSSPath(source: GanttLinkItem, target: GanttLinkItem): string;\n\n abstract generateFFPath(source: GanttLinkItem, target: GanttLinkItem): string;\n\n abstract generateFSAndSFPath(source: GanttLinkItem, target: GanttLinkItem, type?: GanttLinkType): string;\n\n generatePath(source: GanttLinkItem, target: GanttLinkItem, type: GanttLinkType) {\n if (source.before && source.after && target.before && target.after) {\n let path = '';\n\n switch (type) {\n case GanttLinkType.ss:\n path = this.generateSSPath(source, target);\n break;\n case GanttLinkType.ff:\n path = this.generateFFPath(source, target);\n break;\n\n case GanttLinkType.sf:\n path = this.generateFSAndSFPath(source, target, type);\n break;\n default:\n path = this.generateFSAndSFPath(source, target);\n }\n\n return path;\n }\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { GanttLinkItem, GanttLinkType } from '../../../class/link';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../../gantt-upper';\nimport { GanttLinkPath } from './path';\n\nexport class GanttLinkPathCurve extends GanttLinkPath {\n private bezierWeight = -0.5;\n\n constructor(@Inject(GANTT_UPPER_TOKEN) private ganttUpper: GanttUpper) {\n super();\n }\n\n generateSSPath(source: GanttLinkItem, target: GanttLinkItem) {\n const x1 = source.before.x;\n const y1 = source.before.y;\n const x4 = target.before.x;\n const y4 = target.before.y;\n const isMirror = y4 > y1 ? 0 : 1;\n const radius = Math.abs(y4 - y1) / 2;\n\n if (x4 > x1) {\n return `M ${x1} ${y1}\n A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}\n L ${x4} ${y4}`;\n } else {\n return `M ${x1} ${y1}\n L ${x4} ${y1}\n A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;\n }\n }\n generateFFPath(source: GanttLinkItem, target: GanttLinkItem) {\n const x1 = source.after.x;\n const y1 = source.after.y;\n const x4 = target.after.x;\n const y4 = target.after.y;\n const isMirror = y4 > y1 ? 1 : 0;\n const radius = Math.abs(y4 - y1) / 2;\n if (x4 > x1) {\n return `M ${x1} ${y1}\n L ${x4} ${y1}\n A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;\n } else {\n return `M ${x1} ${y1}\n A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}\n L ${x4} ${y4}`;\n }\n }\n\n generateFSAndSFPath(source: GanttLinkItem, target: GanttLinkItem, type?: GanttLinkType) {\n let x1 = source.after.x;\n let y1 = source.after.y;\n let x4 = target.before.x;\n let y4 = target.before.y;\n\n if (type === GanttLinkType.sf) {\n x1 = target.after.x;\n y1 = target.after.y;\n x4 = source.before.x;\n y4 = source.before.y;\n }\n\n const dx = Math.abs(x4 - x1) * this.bezierWeight;\n\n const x2 = x1 - dx;\n const x3 = x4 + dx;\n const centerX = (x1 + x4) / 2;\n const centerY = (y1 + y4) / 2;\n\n let controlX = this.ganttUpper.styles.lineHeight / 2;\n const controlY = this.ganttUpper.styles.lineHeight / 2;\n\n if (x1 >= x4) {\n if (y4 > y1) {\n if (Math.abs(y4 - y1) <= this.ganttUpper.styles.lineHeight) {\n return `M ${x1} ${y1}\n C ${x1 + controlX} ${y1} ${x1 + controlX} ${y1 + controlX} ${x1} ${y1 + controlY}\n L ${x4} ${y4 - controlY}\n C ${x4 - controlY} ${y4 - controlY} ${x4 - controlX} ${y4} ${x4} ${y4}`;\n } else {\n controlX = this.ganttUpper.styles.lineHeight;\n return `M ${x1} ${y1}\n C ${x1 + controlX} ${y1} ${x1 + controlX} ${y1 + controlX} ${centerX} ${centerY}\n C ${x4 - controlX} ${y4 - controlX} ${x4 - controlX} ${y4} ${x4} ${y4}\n `;\n }\n } else {\n if (Math.abs(y4 - y1) <= this.ganttUpper.styles.lineHeight) {\n return `M ${x1} ${y1}\n C ${x1 + controlX} ${y1} ${x1 + controlX} ${y1 - controlX} ${x1} ${y1 - controlY}\n L ${x4} ${y4 + controlY}\n C ${x4 - controlY} ${y4 + controlY} ${x4 - controlX} ${y4} ${x4} ${y4}\n `;\n } else {\n controlX = this.ganttUpper.styles.lineHeight;\n return `M ${x1} ${y1}\n C ${x1 + controlX} ${y1} ${x1 + controlX} ${y1 - controlX} ${centerX} ${centerY}\n C ${x4 - controlX} ${y4 + controlX} ${x4 - controlX} ${y4} ${x4} ${y4}\n `;\n }\n }\n } else if (x4 - x1 < 100) {\n const radius = Math.abs(y4 - y1) / 4;\n let lindWidth = x4 - x1 - radius;\n lindWidth = Math.max(lindWidth, radius);\n\n return `M ${x1} ${y1}\n L ${x1 + lindWidth} ${y1}\n A ${radius} ${radius} 0 1 ${y4 > y1 ? 1 : 0} ${x1 + lindWidth} ${y4 > y1 ? y1 + 2 * radius : y1 - 2 * radius}\n L ${x4 - lindWidth} ${y4 > y1 ? y1 + 2 * radius : y1 - 2 * radius}\n A ${radius} ${radius} 0 1 ${y4 > y1 ? 0 : 1} ${x4 - lindWidth} ${y4}\n L ${x4} ${y4}\n `;\n }\n return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { GanttLinkPath } from './path';\nimport { GanttLinkItem, GanttLinkType } from '../../../class/link';\n\nexport class GanttLinkPathLine extends GanttLinkPath {\n private pathControl = 20;\n\n constructor() {\n super();\n }\n\n generateSSPath(source: GanttLinkItem, target: GanttLinkItem) {\n const x1 = source.before.x;\n const y1 = source.before.y;\n const x4 = target.before.x;\n const y4 = target.before.y;\n const control = this.pathControl;\n const centerY = (y1 + y4) / 2;\n\n return `M ${x1} ${y1}\n L ${x4 > x1 ? x1 - control : x4 - control} ${y1}\n L ${x4 > x1 ? x1 - control : x4 - control} ${y4}\n L ${x4} ${y4}`;\n }\n\n generateFFPath(source: GanttLinkItem, target: GanttLinkItem) {\n const x1 = source.after.x;\n const y1 = source.after.y;\n const x4 = target.after.x;\n const y4 = target.after.y;\n const control = this.pathControl;\n\n return `M ${x1} ${y1}\n L ${x4 > x1 ? x4 + control : x1 + control} ${y1}\n L ${x4 > x1 ? x4 + control : x1 + control} ${y4}\n L ${x4} ${y4}`;\n }\n\n generateFSAndSFPath(source: GanttLinkItem, target: GanttLinkItem, type?: GanttLinkType) {\n let x1 = source.after.x;\n let y1 = source.after.y;\n let x4 = target.before.x;\n let y4 = target.before.y;\n const control = this.pathControl;\n\n if (type === GanttLinkType.sf) {\n x1 = target.after.x;\n y1 = target.after.y;\n x4 = source.before.x;\n y4 = source.before.y;\n }\n\n if (x4 - x1 >= 40) {\n return `M ${x1} ${y1}\n L ${x1 + control} ${y1}\n L ${x1 + control} ${y4}\n L ${x4} ${y4}`;\n } else {\n return `M ${x1} ${y1}\n L ${x1 + control} ${y1}\n L ${x1 + control} ${y4 > y1 ? y1 + control : y1 - control}\n L ${x4 - control} ${y4 > y1 ? y1 + control : y1 - control}\n L ${x4 - control} ${y4}\n L ${x4} ${y4}`;\n }\n }\n}\n","import { GanttLinkPathType } from '../../../class/link';\nimport { GanttUpper } from '../../../gantt-upper';\nimport { GanttLinkPathCurve } from './curve';\nimport { GanttLinkPathLine } from './line';\n\nexport function generatePathFactory(type: GanttLinkPathType, ganttUpper?: GanttUpper) {\n switch (type) {\n case GanttLinkPathType.curve:\n return new GanttLinkPathCurve(ganttUpper);\n case GanttLinkPathType.line:\n return new GanttLinkPathLine();\n default:\n throw new Error('gantt link path type invalid');\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n HostBinding,\n Inject,\n ChangeDetectorRef,\n ElementRef,\n OnDestroy,\n OnChanges\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil, skip, debounceTime } from 'rxjs/operators';\nimport { GanttGroupInternal } from '../../class/group';\nimport { GanttItemInternal } from './../../class/item';\nimport { GanttLineClickEvent } from '../../class/event';\nimport { GanttDragContainer } from '../../gantt-drag-container';\nimport { recursiveItems } from '../../utils/helpers';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttLinkItem, LinkInternal, LinkColors, GanttLinkType } from '../../class/link';\nimport { GanttLinkPath } from './paths/path';\nimport { generatePathFactory } from './paths/factory';\n\n@Component({\n selector: 'gantt-links-overlay',\n templateUrl: './links.component.html'\n})\nexport class GanttLinksComponent implements OnInit, OnChanges, OnDestroy {\n @Input() groups: GanttGroupInternal[] = [];\n\n @Input() items: GanttItemInternal[] = [];\n\n @Output() lineClick = new EventEmitter<GanttLineClickEvent>();\n\n public links: LinkInternal[] = [];\n\n public ganttLinkTypes = GanttLinkType;\n\n public showArrow = false;\n\n private linkItems: GanttLinkItem[] = [];\n\n private firstChange = true;\n\n private linkPath: GanttLinkPath;\n\n private unsubscribe$ = new Subject();\n\n @HostBinding('class.gantt-links-overlay') ganttLinksOverlay = true;\n\n constructor(\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n private cdr: ChangeDetectorRef,\n private elementRef: ElementRef,\n private ganttDragContainer: GanttDragContainer\n ) {}\n\n ngOnInit() {\n this.linkPath = generatePathFactory(this.ganttUpper.linkOptions.linkPathType, this.ganttUpper);\n\n this.showArrow = this.ganttUpper.linkOptions.showArrow;\n this.buildLinks();\n this.firstChange = false;\n\n this.ganttDragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.elementRef.nativeElement.style.visibility = 'hidden';\n });\n\n merge(\n this.ganttUpper.viewChange,\n this.ganttUpper.expandChange,\n this.ganttUpper.view.start$,\n this.ganttUpper.dragEnded,\n this.ganttUpper.linkDragEnded\n )\n .pipe(takeUntil(this.unsubscribe$), skip(1), debounceTime(0))\n .subscribe(() => {\n this.elementRef.nativeElement.style.visibility = 'visible';\n this.buildLinks();\n this.cdr.detectChanges();\n });\n }\n\n ngOnChanges() {\n if (!this.firstChange) {\n this.buildLinks();\n }\n }\n\n private computeItemPosition() {\n const lineHeight = this.ganttUpper.styles.lineHeight;\n const barHeight = this.ganttUpper.styles.barHeight;\n this.linkItems = [];\n if (this.groups.length > 0) {\n let itemNum = 0;\n let groupNum = 0;\n this.groups.forEach((group) => {\n groupNum++;\n if (group.expanded) {\n const items = recursiveItems(group.items);\n items.forEach((item, itemIndex) => {\n const y = (groupNum + itemNum + itemIndex) * lineHeight + item.refs.y + barHeight / 2;\n this.linkItems.push({\n ...item,\n before: {\n x: item.refs.x,\n y\n },\n after: {\n x: item.refs.x + item.refs.width,\n y\n }\n });\n });\n itemNum += items.length;\n }\n });\n } else {\n const items = recursiveItems(this.items);\n items.forEach((item, itemIndex) => {\n const y = itemIndex * lineHeight + item.refs.y + barHeight / 2;\n this.linkItems.push({\n ...item,\n before: {\n x: item.refs.x,\n y\n },\n after: {\n x: item.refs.x + item.refs.width,\n y\n }\n });\n });\n }\n }\n\n buildLinks() {\n this.computeItemPosition();\n this.links = [];\n this.linkItems.forEach((source) => {\n if (source.origin.start || source.origin.end) {\n source.links.forEach((link) => {\n const target = this.linkItems.find((item) => item.id === link.link);\n if (target && (target.origin.start || target.origin.end)) {\n let color = LinkColors.default;\n if (link.type === GanttLinkType.fs && source.end.getTime() > target.start.getTime()) {\n color = LinkColors.blocked;\n }\n this.links.push({\n path: this.linkPath.generatePath(source, target, link.type),\n source: source.origin,\n target: target.origin,\n type: link.type,\n color: link.color || color\n });\n }\n });\n }\n });\n }\n\n trackBy(index: number) {\n return index;\n }\n\n onLineClick(event: MouseEvent, link: LinkInternal) {\n this.lineClick.emit({\n event,\n source: link.source,\n target: link.target\n });\n }\n\n mouseEnterPath(link: LinkInternal) {\n if (link.color === LinkColors.default) {\n link.color = LinkColors.active;\n }\n }\n\n mouseLeavePath(link: LinkInternal) {\n if (link.color === LinkColors.active) {\n link.color = LinkColors.default;\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<svg [attr.width]=\"ganttUpper.view.width\" class=\"gantt-links-overlay-main\">\n <ng-container *ngFor=\"let link of links; let i = index; trackBy: trackBy\">\n <path\n [attr.d]=\"link.path\"\n fill=\"transparent\"\n stroke-width=\"2\"\n [attr.stroke]=\"link.color\"\n pointer-events=\"none\"\n [attr.style]=\"link.type === ganttLinkTypes.sf ? 'marker-start: url(#triangle' + i + ')' : 'marker-end: url(#triangle' + i + ')'\"\n ></path>\n <g>\n <path\n class=\"link-line\"\n (click)=\"onLineClick($event, link)\"\n (mouseenter)=\"mouseEnterPath(link)\"\n (mouseleave)=\"mouseLeavePath(link)\"\n [attr.d]=\"link.path\"\n stroke=\"transparent\"\n stroke-width=\"9\"\n fill=\"none\"\n cursor=\"pointer\"\n ></path>\n </g>\n <defs *ngIf=\"showArrow\">\n <marker\n *ngIf=\"link.type === ganttLinkTypes.sf; else markerEnd\"\n [id]=\"'triangle' + i\"\n markerUnits=\"strokeWidth\"\n markerWidth=\"5\"\n markerHeight=\"4\"\n refX=\"5\"\n refY=\"2\"\n orient=\"180\"\n >\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n\n <ng-template #markerEnd>\n <marker [id]=\"'triangle' + i\" markerUnits=\"strokeWidth\" markerWidth=\"5\" markerHeight=\"4\" refX=\"5\" refY=\"2\" orient=\"auto\">\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n </ng-template>\n </defs>\n </ng-container>\n <line class=\"link-dragging-line\"></line>\n</svg>\n","import { Input, ElementRef, Inject, TemplateRef, Directive } from '@angular/core';\nimport { GanttItemInternal, GanttItemType } from './class';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { rangeHeight } from './gantt.styles';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from './gantt-upper';\n\n@Directive()\nexport abstract class GanttItemUpper {\n @Input() template: TemplateRef<any>;\n\n @Input() item: GanttItemInternal;\n\n public firstChange = true;\n\n public unsubscribe$ = new Subject();\n\n constructor(protected elementRef: ElementRef<HTMLElement>, @Inject(GANTT_UPPER_TOKEN) protected ganttUpper: GanttUpper) {}\n\n onInit() {\n this.firstChange = false;\n this.item.refs$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.setPositions();\n });\n }\n\n onChanges(): void {\n if (!this.firstChange) {\n this.setPositions();\n }\n }\n\n private setPositions() {\n const itemElement = this.elementRef.nativeElement;\n itemElement.style.left = this.item.refs.x + 'px';\n itemElement.style.top = this.item.refs.y + 'px';\n itemElement.style.width = this.item.refs.width + 'px';\n if (this.item.type === GanttItemType.bar) {\n itemElement.style.height = this.ganttUpper.styles.barHeight + 'px';\n } else if (this.item.type === GanttItemType.range) {\n itemElement.style.height = rangeHeight + 'px';\n } else {\n }\n }\n\n onDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import { Component, OnInit, HostBinding, ElementRef, OnChanges, OnDestroy, Inject } from '@angular/core';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttItemUpper } from '../../gantt-item-upper';\n\n@Component({\n selector: 'ngx-gantt-range,gantt-range',\n templateUrl: './range.component.html'\n})\nexport class NgxGanttRangeComponent extends GanttItemUpper implements OnInit, OnChanges, OnDestroy {\n @HostBinding('class.gantt-range') ganttRangeClass = true;\n\n constructor(elementRef: ElementRef<HTMLDivElement>, @Inject(GANTT_UPPER_TOKEN) ganttUpper: GanttUpper) {\n super(elementRef, ganttUpper);\n }\n\n ngOnInit() {\n super.onInit();\n }\n\n ngOnChanges(): void {\n super.onChanges();\n }\n\n ngOnDestroy() {\n super.onDestroy();\n }\n}\n","<ng-container *ngIf=\"item.start && item.end\">\n <div class=\"gantt-range-main\">\n <div class=\"gantt-range-main-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n </div>\n <div class=\"gantt-range-triangle left\"></div>\n <div class=\"gantt-range-triangle right\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</ng-container>\n","import { Injectable, ElementRef, OnDestroy, NgZone } from '@angular/core';\nimport { DragRef, DragDrop } from '@angular/cdk/drag-drop';\nimport { GanttDomService } from '../../gantt-dom.service';\nimport { GanttDragContainer } from '../../gantt-drag-container';\nimport { GanttItemInternal } from '../../class/item';\nimport { GanttDate, differenceInCalendarDays } from '../../utils/date';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { GanttUpper } from '../../gantt-upper';\n\nconst dragMinWidth = 10;\nconst activeClass = 'gantt-bar-active';\nconst linkDropClass = 'gantt-bar-link-drop';\n\nfunction createSvgElement(qualifiedName: string, className: string) {\n const element = document.createElementNS('http://www.w3.org/2000/svg', qualifiedName);\n element.classList.add(className);\n return element;\n}\n\n@Injectable()\nexport class GanttBarDrag implements OnDestroy {\n private ganttUpper: GanttUpper;\n\n private barElement: HTMLElement;\n\n private item: GanttItemInternal;\n\n private get dragDisabled() {\n return !this.item.draggable || !this.ganttUpper.draggable;\n }\n\n private get linkDragDisabled() {\n return !this.item.linkable || !this.ganttUpper.linkable;\n }\n\n private linkDraggingLine: SVGElement;\n\n private barDragRef: DragRef;\n\n private dragRefs: DragRef[] = [];\n\n private destroy$ = new Subject();\n\n constructor(private dragDrop: DragDrop, private dom: GanttDomService, private dragContainer: GanttDragContainer) {}\n\n private createMouseEvents() {\n fromEvent(this.barElement, 'mouseenter')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (this.dragContainer.linkDraggingId && this.dragContainer.linkDraggingId !== this.item.id) {\n if (this.item.linkable) {\n this.barElement.classList.add(linkDropClass);\n this.dragContainer.emitLinkDragEntered(this.item);\n }\n } else {\n this.barElement.classList.add(activeClass);\n }\n });\n\n fromEvent(this.barElement, 'mouseleave')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (!this.dragContainer.linkDraggingId) {\n this.barElement.classList.remove(activeClass);\n } else {\n this.dragContainer.emitLinkDragLeaved();\n }\n this.barElement.classList.remove(linkDropClass);\n });\n }\n\n private createBarDrag() {\n const dragRef = this.dragDrop.createDrag(this.barElement);\n dragRef.lockAxis = 'x';\n dragRef.started.subscribe(() => {\n this.setDraggingStyles();\n this.dragContainer.dragStarted.emit({ item: this.item.origin });\n });\n dragRef.moved.subscribe((event) => {\n const currentX = this.item.refs.x + event.distance.x;\n const currentDate = this.ganttUpper.view.getDateByXPoint(currentX);\n const currentStartX = this.ganttUpper.view.getXPointByDate(currentDate);\n const dayWidth = this.ganttUpper.view.getDayOccupancyWidth(currentDate);\n const diffDays = differenceInCalendarDays(this.item.end.value, this.item.start.value);\n let start = currentDate;\n let end = currentDate.addDays(diffDays);\n if (currentX > currentStartX + dayWidth / 2) {\n start = start.addDays(1);\n end = end.addDays(1);\n }\n this.openDragBackdrop(this.barElement, start, end);\n this.item.updateDate(start, end);\n this.dragContainer.dragMoved.emit({ item: this.item.origin });\n });\n dragRef.ended.subscribe((event) => {\n this.clearDraggingStyles();\n this.closeDragBackdrop();\n event.source.reset();\n this.dragContainer.dragEnded.emit({ item: this.item.origin });\n });\n this.barDragRef = dragRef;\n return dragRef;\n }\n\n private createBarHandleDrags() {\n const dragRefs = [];\n const handles = this.barElement.querySelectorAll<HTMLElement>('.drag-handles .handle');\n handles.forEach((handle, index) => {\n const isBefore = index === 0;\n const dragRef = this.dragDrop.createDrag(handle);\n dragRef.lockAxis = 'x';\n dragRef.withBoundaryElement(this.dom.root as HTMLElement);\n\n dragRef.started.subscribe(() => {\n this.setDraggingStyles();\n this.dragContainer.dragStarted.emit({ item: this.item.origin });\n });\n\n dragRef.moved.subscribe((event) => {\n if (isBefore) {\n const x = this.item.refs.x + event.distance.x;\n const width = this.item.refs.width + event.distance.x * -1;\n if (width > dragMinWidth) {\n this.barElement.style.width = width + 'px';\n this.barElement.style.left = x + 'px';\n this.openDragBackdrop(\n this.barElement,\n this.ganttUpper.view.getDateByXPoint(x),\n this.ganttUpper.view.getDateByXPoint(x + width)\n );\n this.item.updateDate(this.ganttUpper.view.getDateByXPoint(x), this.item.end);\n }\n } else {\n const width = this.item.refs.width + event.distance.x;\n if (width > dragMinWidth) {\n this.barElement.style.width = width + 'px';\n this.openDragBackdrop(\n this.barElement,\n this.ganttUpper.view.getDateByXPoint(this.item.refs.x),\n this.ganttUpper.view.getDateByXPoint(this.item.refs.x + width)\n );\n }\n this.item.updateDate(this.item.start, this.ganttUpper.view.getDateByXPoint(this.item.refs.x + width));\n }\n this.dragContainer.dragMoved.emit({ item: this.item.origin });\n event.source.reset();\n });\n\n dragRef.ended.subscribe((event) => {\n if (isBefore) {\n const width = this.item.refs.width + event.distance.x * -1;\n if (width > dragMinWidth) {\n this.item.updateDate(this.ganttUpper.view.getDateByXPoint(this.item.refs.x + event.distance.x), this.item.end);\n } else {\n this.item.updateDate(this.item.end.startOfDay(), this.item.end);\n }\n } else {\n const width = this.item.refs.width + event.distance.x;\n if (width > dragMinWidth) {\n this.item.updateDate(\n this.item.start,\n this.ganttUpper.view.getDateByXPoint(this.item.refs.x + this.item.refs.width + event.distance.x)\n );\n } else {\n this.item.updateDate(this.item.start, this.item.start.endOfDay());\n }\n }\n this.clearDraggingStyles();\n this.closeDragBackdrop();\n this.dragContainer.dragEnded.emit({ item: this.item.origin });\n });\n dragRefs.push(dragRef);\n });\n return dragRefs;\n }\n\n private createLinkHandleDrags() {\n const dragRefs = [];\n const handles = this.barElement.querySelectorAll<HTMLElement>('.link-handles .handle');\n handles.forEach((handle, index) => {\n const isBefore = index === 0;\n const dragRef = this.dragDrop.createDrag(handle);\n dragRef.withBoundaryElement(this.dom.root as HTMLElement);\n dragRef.beforeStarted.subscribe(() => {\n handle.style.pointerEvents = 'none';\n if (this.barDragRef) {\n this.barDragRef.disabled = true;\n }\n this.createLinkDraggingLine();\n this.dragContainer.emitLinkDragStarted(isBefore ? 'target' : 'source', this.item);\n });\n\n dragRef.moved.subscribe(() => {\n const positions = this.calcLinkLinePositions(handle, isBefore);\n this.linkDraggingLine.setAttribute('x1', positions.x1.toString());\n this.linkDraggingLine.setAttribute('y1', positions.y1.toString());\n this.linkDraggingLine.setAttribute('x2', positions.x2.toString());\n this.linkDraggingLine.setAttribute('y2', positions.y2.toString());\n });\n\n dragRef.ended.subscribe((event) => {\n event.source.reset();\n handle.style.pointerEvents = '';\n if (this.barDragRef) {\n this.barDragRef.disabled = false;\n }\n this.barElement.classList.remove(activeClass);\n this.destroyLinkDraggingLine();\n this.dragContainer.emitLinkDragEnded();\n });\n\n dragRefs.push(dragRef);\n });\n return dragRefs;\n }\n\n private openDragBackdrop(dragElement: HTMLElement, start: GanttDate, end: GanttDate) {\n const dragMaskElement = this.dom.root.querySelector('.gantt-drag-mask') as HTMLElement;\n const dragBackdropElement = this.dom.root.querySelector('.gantt-drag-backdrop') as HTMLElement;\n const rootRect = this.dom.root.getBoundingClientRect();\n const dragRect = dragElement.getBoundingClientRect();\n const left = dragRect.left - rootRect.left - this.dom.side.clientWidth;\n const width = dragRect.right - dragRect.left;\n dragMaskElement.style.left = left + 'px';\n dragMaskElement.style.width = width + 'px';\n dragMaskElement.querySelector('.start').innerHTML = start.format('MM-dd');\n dragMaskElement.querySelector('.end').innerHTML = end.format('MM-dd');\n dragMaskElement.style.display = 'block';\n dragBackdropElement.style.display = 'block';\n }\n\n private closeDragBackdrop() {\n const dragMaskElement = this.dom.root.querySelector('.gantt-drag-mask') as HTMLElement;\n const dragBackdropElement = this.dom.root.querySelector('.gantt-drag-backdrop') as HTMLElement;\n dragMaskElement.style.display = 'none';\n dragBackdropElement.style.display = 'none';\n }\n\n private setDraggingStyles() {\n this.barElement.style.pointerEvents = 'none';\n this.barElement.classList.add('gantt-bar-draggable-drag');\n }\n\n private clearDraggingStyles() {\n this.barElement.style.pointerEvents = '';\n this.barElement.classList.remove('gantt-bar-draggable-drag');\n }\n\n private calcLinkLinePositions(target: HTMLElement, isBefore: boolean) {\n const rootRect = this.dom.root.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n const layerRect = target.parentElement.parentElement.getBoundingClientRect();\n return {\n x1: layerRect.left + (isBefore ? 0 : layerRect.width) - rootRect.left,\n y1: layerRect.top + layerRect.height / 2 - rootRect.top,\n x2: targetRect.left - rootRect.left + targetRect.width / 2,\n y2: targetRect.top - rootRect.top + targetRect.height / 2\n };\n }\n\n private createLinkDraggingLine() {\n if (!this.linkDraggingLine) {\n const svgElement = createSvgElement('svg', 'gantt-link-drag-container');\n const linElement = createSvgElement('line', 'link-dragging-line');\n svgElement.appendChild(linElement);\n this.dom.root.appendChild(svgElement);\n this.linkDraggingLine = linElement;\n }\n }\n\n private destroyLinkDraggingLine() {\n if (this.linkDraggingLine) {\n this.linkDraggingLine.parentElement.remove();\n this.linkDraggingLine = null;\n }\n }\n\n createDrags(elementRef: ElementRef, item: GanttItemInternal, ganttUpper: GanttUpper) {\n this.item = item;\n this.barElement = elementRef.nativeElement;\n this.ganttUpper = ganttUpper;\n\n if (!item.draggable || (this.dragDisabled && this.linkDragDisabled)) {\n return;\n } else {\n this.createMouseEvents();\n if (!this.dragDisabled) {\n const dragRef = this.createBarDrag();\n const dragHandlesRefs = this.createBarHandleDrags();\n this.dragRefs.push(dragRef, ...dragHandlesRefs);\n }\n if (!this.linkDragDisabled) {\n const linkDragRefs = this.createLinkHandleDrags();\n this.dragRefs.push(...linkDragRefs);\n }\n }\n }\n\n ngOnDestroy() {\n this.closeDragBackdrop();\n this.dragRefs.forEach((dragRef) => dragRef.dispose());\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n TemplateRef,\n HostBinding,\n ElementRef,\n OnChanges,\n OnDestroy,\n Inject,\n ViewChild,\n Output,\n EventEmitter,\n AfterViewInit\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { GanttBarDrag } from './bar-drag';\nimport { hexToRgb } from '../../utils/helpers';\nimport { GanttDragContainer } from '../../gantt-drag-container';\nimport { barBackground } from '../../gantt.styles';\nimport { GanttBarClickEvent } from '../../class';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttItemUpper } from '../../gantt-item-upper';\n\nfunction linearGradient(sideOrCorner: string, color: string, stop: string) {\n return `linear-gradient(${sideOrCorner},${color} 0%,${stop} 40%)`;\n}\n\n@Component({\n selector: 'ngx-gantt-bar,gantt-bar',\n templateUrl: './bar.component.html',\n providers: [GanttBarDrag]\n})\nexport class NgxGanttBarComponent extends GanttItemUpper implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n @Output() barClick = new EventEmitter<GanttBarClickEvent>();\n\n @ViewChild('content') contentElementRef: ElementRef<HTMLDivElement>;\n\n @HostBinding('class.gantt-bar') ganttItemClass = true;\n\n color = 'red';\n\n constructor(\n private dragContainer: GanttDragContainer,\n private drag: GanttBarDrag,\n elementRef: ElementRef<HTMLDivElement>,\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper\n ) {\n super(elementRef, ganttUpper);\n }\n\n ngOnInit() {\n super.onInit();\n this.dragContainer.dragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.setContentBackground();\n });\n }\n\n ngAfterViewInit() {\n this.drag.createDrags(this.elementRef, this.item, this.ganttUpper);\n this.setContentBackground();\n }\n\n ngOnChanges(): void {\n super.onChanges();\n }\n\n onBarClick(event: Event) {\n this.barClick.emit({ event, item: this.item.origin });\n }\n\n private setContentBackground() {\n const contentElement = this.contentElementRef.nativeElement;\n const color = this.item.color || barBackground;\n const style: Partial<CSSStyleDeclaration> = this.item.barStyle || {};\n if (this.item.origin.start && this.item.origin.end) {\n style.background = color;\n style.borderRadius = '';\n }\n if (this.item.origin.start && !this.item.origin.end) {\n style.background = linearGradient('to left', hexToRgb(color, 0.55), hexToRgb(color, 1));\n style.borderRadius = '4px 12.5px 12.5px 4px';\n }\n if (!this.item.origin.start && this.item.origin.end) {\n style.background = linearGradient('to right', hexToRgb(color, 0.55), hexToRgb(color, 1));\n style.borderRadius = '12.5px 4px 4px 12.5px';\n }\n if (this.item.progress >= 0) {\n const contentProgressElement = contentElement.querySelector('.gantt-bar-content-progress') as HTMLDivElement;\n style.background = hexToRgb(color, 0.3);\n style.borderRadius = '';\n contentProgressElement.style.background = color;\n }\n\n for (const key in style) {\n if (style.hasOwnProperty(key)) {\n contentElement.style[key] = style[key];\n }\n }\n }\n\n stopPropagation(event: Event) {\n event.stopPropagation();\n }\n\n ngOnDestroy() {\n super.onDestroy();\n }\n}\n","<div class=\"gantt-bar-layer\">\n <div *ngIf=\"item.draggable && ganttUpper.draggable\" class=\"drag-handles\">\n <ng-container>\n <span class=\"handle\" (mousedown)=\"stopPropagation($event)\"></span>\n <span class=\"handle\" (mousedown)=\"stopPropagation($event)\"></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</div>\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { Component, OnInit, HostBinding, Inject, Input, TemplateRef, Output, EventEmitter } from '@angular/core';\nimport { GanttGroupInternal, GanttItemInternal, GanttBarClickEvent, GanttLineClickEvent } from '../../class';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\n\n@Component({\n selector: 'gantt-main',\n templateUrl: './gantt-main.component.html'\n})\nexport class GanttMainComponent implements OnInit {\n @Input() groups: GanttGroupInternal[];\n\n @Input() items: GanttItemInternal[];\n\n @Input() groupHeaderTemplate: TemplateRef<any>;\n\n @Input() itemTemplate: TemplateRef<any>;\n\n @Input() barTemplate: TemplateRef<any>;\n\n @Input() rangeTemplate: TemplateRef<any>;\n\n @Output() barClick = new EventEmitter<GanttBarClickEvent>();\n\n @Output() lineClick = new EventEmitter<GanttLineClickEvent>();\n\n @HostBinding('class.gantt-main-container') ganttMainClass = true;\n\n constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n\n ngOnInit() {}\n\n trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n return item.id || index;\n }\n}\n","<gantt-links-overlay [groups]=\"groups\" [items]=\"items\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<!-- groups -->\n<div class=\"gantt-main-groups\" *ngIf=\"groups && groups.length > 0; else itemsTemplate\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-group\" [ngClass]=\"group.class\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: group }\"></ng-template>\n </div>\n <div *ngIf=\"group.expanded\" class=\"gantt-items\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: group.items }\"></ng-template>\n </div>\n </ng-container>\n</div>\n<!-- items -->\n<ng-template #itemsTemplate>\n <div class=\"gantt-main-items\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items }\"></ng-template>\n </div>\n</ng-template>\n\n<ng-template #ganttItems let-items=\"items\">\n <ng-container *ngFor=\"let item of items;\">\n <div\n class=\"gantt-item\"\n [style.height.px]=\"ganttUpper.styles.lineHeight\"\n [class.gantt-main-item-active]=\"ganttUpper.isSelected(item.id)\"\n >\n <ng-container *ngIf=\"item.type | isGanttCustomItem\">\n <ng-template [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n </ng-container>\n <gantt-range *ngIf=\"item.type | isGanttRangeItem\" [template]=\"rangeTemplate\" [item]=\"item\"></gantt-range>\n <gantt-bar *ngIf=\"item.type | isGanttBarItem\" [item]=\"item\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n","import {\n Component,\n OnInit,\n ElementRef,\n ChangeDetectionStrategy,\n Input,\n EventEmitter,\n Output,\n ChangeDetectorRef,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ContentChildren,\n QueryList,\n AfterViewInit,\n ContentChild,\n TemplateRef,\n forwardRef,\n Inject\n} from '@angular/core';\nimport { startWith, takeUntil, take, finalize } from 'rxjs/operators';\nimport { Subject, Observable } from 'rxjs';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from './gantt-upper';\nimport { GanttLinkDragEvent, GanttLineClickEvent, GanttItemInternal, GanttItem, GanttSelectedEvent } from './class';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { sideWidth } from './gantt.styles';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { GANTT_ABSTRACT_TOKEN } from './gantt-abstract';\nimport { defaultColumnWidth } from './components/table/gantt-table.component';\nimport { defaultConfig, GanttGlobalConfig, GANTT_GLOBAL_CONFIG } from './gantt.config';\nimport { GanttLinkOptions } from './class/link';\n@Component({\n selector: 'ngx-gantt',\n templateUrl: './gantt.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: GANTT_UPPER_TOKEN,\n useExisting: NgxGanttComponent\n },\n {\n provide: GANTT_ABSTRACT_TOKEN,\n useExisting: forwardRef(() => NgxGanttComponent)\n }\n ]\n})\nexport class NgxGanttComponent extends GanttUpper implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n @Input() maxLevel = 2;\n\n @Input() async: boolean;\n\n @Input() childrenResolve: (GanttItem) => Observable<GanttItem[]>;\n\n @Input() linkable: boolean;\n\n @Input() linkOptions: GanttLinkOptions;\n\n @Output() linkDragStarted = new EventEmitter<GanttLinkDragEvent>();\n\n @Output() linkDragEnded = new EventEmitter<GanttLinkDragEvent>();\n\n @Output() lineClick = new EventEmitter<GanttLineClickEvent>();\n\n @Output() selectedChange = new EventEmitter<GanttSelectedEvent>();\n\n @ContentChild(NgxGanttTableComponent) table: NgxGanttTableComponent;\n\n @ContentChildren(NgxGanttTableColumnComponent, { descendants: true }) columns: QueryList<NgxGanttTableColumnComponent>;\n\n @ContentChild('tableEmpty', { static: true }) tableEmptyTemplate: TemplateRef<any>;\n\n private ngUnsubscribe$ = new Subject();\n\n public sideTableWidth = sideWidth;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n @Inject(GANTT_GLOBAL_CONFIG) config: GanttGlobalConfig\n ) {\n super(elementRef, cdr, ngZone, config);\n }\n\n ngOnInit() {\n super.onInit();\n this.linkOptions = Object.assign({}, defaultConfig.linkOptions, this.config?.linkOptions, this.linkOptions);\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.dragContainer.linkDragStarted.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((event: GanttLinkDragEvent) => {\n this.linkDragStarted.emit(event);\n });\n this.dragContainer.linkDragEnded.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((event: GanttLinkDragEvent) => {\n this.linkDragEnded.emit(event);\n });\n });\n }\n\n ngAfterViewInit() {\n this.columns.changes.pipe(startWith(true), takeUntil(this.ngUnsubscribe$)).subscribe(() => {\n this.columns.forEach((column) => {\n if (!column.columnWidth) {\n column.columnWidth = coerceCssPixelValue(defaultColumnWidth);\n }\n });\n this.cdr.detectChanges();\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.onChanges(changes);\n }\n\n expandChildren(item: GanttItemInternal) {\n if (!item.expanded) {\n item.setExpand(true);\n if (this.async && this.childrenResolve && item.children.length === 0) {\n item.loading = true;\n this.childrenResolve(item.origin)\n .pipe(\n take(1),\n finalize(() => {\n item.loading = false;\n this.expandChange.emit();\n this.cdr.detectChanges();\n })\n )\n .subscribe((items) => {\n item.addChildren(items);\n this.computeItemsRefs(...item.children);\n });\n } else {\n this.computeItemsRefs(...item.children);\n this.expandChange.emit();\n }\n } else {\n item.setExpand(false);\n this.expandChange.emit();\n }\n }\n\n selectItem(selectEvent: GanttSelectedEvent) {\n if (!this.selectable) {\n return;\n }\n const { event, selectedValue } = selectEvent;\n this.selectionModel.toggle((selectedValue as GanttItem).id);\n\n const selectedIds = this.selectionModel.selected;\n if (this.multiple) {\n const selectedValue = this.getGanttItems(selectedIds).map((item) => item.origin);\n this.selectedChange.emit({ event, selectedValue });\n } else {\n const selectedValue = this.getGanttItem(selectedIds[0])?.origin;\n this.selectedChange.emit({ event, selectedValue });\n }\n }\n\n ngOnDestroy() {\n super.onDestroy();\n }\n}\n","<ngx-gantt-root>\n <ng-template #sideTemplate>\n <gantt-table\n [groups]=\"groups\"\n [items]=\"items\"\n [columns]=\"columns\"\n [groupTemplate]=\"groupTemplate\"\n [emptyTemplate]=\"tableEmptyTemplate\"\n [rowBeforeTemplate]=\"table?.rowBeforeTemplate\"\n [rowAfterTemplate]=\"table?.rowAfterTemplate\"\n (itemClick)=\"selectItem($event)\"\n ></gantt-table>\n </ng-template>\n <ng-template #mainTemplate>\n <gantt-main\n [groups]=\"groups\"\n [items]=\"items\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n (barClick)=\"barClick.emit($event)\"\n (lineClick)=\"lineClick.emit($event)\"\n >\n </gantt-main>\n </ng-template>\n</ngx-gantt-root>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxGanttComponent } from './gantt.component';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { GanttCalendarComponent } from './components/calendar/calendar.component';\nimport { GanttTableComponent } from './components/table/gantt-table.component';\nimport { NgxGanttBarComponent } from './components/bar/bar.component';\nimport { GanttMainComponent } from './components/main/gantt-main.component';\nimport { GanttIconComponent } from './components/icon/icon.component';\nimport { GanttDragBackdropComponent } from './components/drag-backdrop/drag-backdrop.component';\nimport { GanttLinksComponent } from './components/links/links.component';\nimport { NgxGanttRootComponent } from './root.component';\nimport { NgxGanttRangeComponent } from './components/range/range.component';\nimport { IsGanttRangeItemPipe, IsGanttBarItemPipe, IsGanttCustomItemPipe } from './gantt.pipe';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { GANTT_GLOBAL_CONFIG, defaultConfig } from './gantt.config';\n\n@NgModule({\n imports: [CommonModule, DragDropModule],\n exports: [\n NgxGanttComponent,\n NgxGanttTableComponent,\n NgxGanttTableColumnComponent,\n NgxGanttRootComponent,\n NgxGanttBarComponent,\n NgxGanttRangeComponent\n ],\n declarations: [\n NgxGanttComponent,\n NgxGanttTableComponent,\n NgxGanttTableColumnComponent,\n GanttTableComponent,\n GanttMainComponent,\n GanttCalendarComponent,\n GanttLinksComponent,\n NgxGanttBarComponent,\n GanttIconComponent,\n GanttDragBackdropComponent,\n NgxGanttRangeComponent,\n NgxGanttRootComponent,\n IsGanttRangeItemPipe,\n IsGanttBarItemPipe,\n IsGanttCustomItemPipe\n ],\n providers: [\n {\n provide: GANTT_GLOBAL_CONFIG,\n useValue: defaultConfig\n }\n ]\n})\nexport class NgxGanttModule {}\n","/*\n * Public API Surface of gantt\n */\n\nexport * from './gantt.module';\nexport * from './gantt-upper';\nexport * from './root.component';\nexport * from './gantt.component';\nexport * from './table/gantt-table.component';\nexport * from './table/gantt-column.component';\nexport * from './components/bar/bar.component';\nexport * from './components/range/range.component';\nexport * from './utils/date';\nexport * from './class';\nexport * from './views/view';\nexport * from './gantt-item-upper';\nexport * from './gantt.pipe';\nexport * from './gantt-print.service';\nexport * from './gantt.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromUnixTime","getWeek","getDaysInMonth","differenceInCalendarDays","setDate","addSeconds","addMinutes","addHours","addDays","addWeeks","addMonths","addQuarters","addYears","startOfDay","startOfWeek","startOfMonth","startOfQuarter","startOfYear","endOfDay","endOfWeek","endOfMonth","endOfQuarter","endOfYear","getUnixTime","format","isWeekend","isToday","GanttViewType","GanttItemType","BehaviorSubject","InjectionToken","viewOptions","differenceInDays","differenceInCalendarQuarters","eachMonthOfInterval","eachYearOfInterval","eachWeekOfInterval","eachDayOfInterval","differenceInCalendarYears","EventEmitter","Subject","coerceBooleanProperty","SelectionModel","take","skip","takeUntil","Directive","Inject","Input","Output","ContentChild","HostBinding","coerceCssPixelValue","Component","Pipe","ViewChild","merge","fromEvent","startWith","map","pairwise","auditTime","Injectable","html2canvas","Optional","debounceTime","finalize","forwardRef","ChangeDetectionStrategy","ContentChildren","CommonModule","DragDropModule","NgModule"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAA;;;;;;;;;;;;;;IAcA;IAEA,IAAI,aAAa,GAAG,UAAS,CAAC,EAAE,CAAC;QAC7B,aAAa,GAAG,MAAM,CAAC,cAAc;aAChC,EAAE,SAAS,EAAE,EAAE,EAAE,YAAY,KAAK,IAAI,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5E,UAAU,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;gBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;oBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,OAAO,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC;aAEc,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1B,IAAI,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI;YACrC,MAAM,IAAI,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,+BAA+B,CAAC,CAAC;QAC9F,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,SAAS,EAAE,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE;QACvC,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IAEM,IAAI,QAAQ,GAAG;QAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,QAAQ,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAChF;YACD,OAAO,CAAC,CAAC;SACZ,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAA;aAEe,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;YAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1E,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACzB;QACL,OAAO,CAAC,CAAC;IACb,CAAC;aAEe,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACpD,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;YAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;oBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;aAEe,OAAO,CAAC,UAAU,EAAE,SAAS;QACzC,OAAO,UAAU,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;aAEe,UAAU,CAAC,WAAW,EAAE,aAAa;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;aAEe,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS;QACvD,SAAS,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,YAAY,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC5G,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM;YACrD,SAAS,SAAS,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC3F,SAAS,QAAQ,CAAC,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC9F,SAAS,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC9G,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE,CAAC,CAAC;IACP,CAAC;aAEe,WAAW,CAAC,OAAO,EAAE,IAAI;QACrC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAa,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,SAAS,IAAI,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClE,SAAS,IAAI,CAAC,EAAE;YACZ,IAAI,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAC9D,OAAO,CAAC;gBAAE,IAAI;oBACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;wBAAE,OAAO,CAAC,CAAC;oBAC7J,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBACxC,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACT,KAAK,CAAC,CAAC;wBAAC,KAAK,CAAC;4BAAE,CAAC,GAAG,EAAE,CAAC;4BAAC,MAAM;wBAC9B,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wBACxD,KAAK,CAAC;4BAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBACjD,KAAK,CAAC;4BAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;wBACjD;4BACI,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gCAAE,CAAC,GAAG,CAAC,CAAC;gCAAC,SAAS;6BAAE;4BAC5G,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACtF,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,GAAG,EAAE,CAAC;gCAAC,MAAM;6BAAE;4BACrE,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;gCAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BACtB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;qBAC9B;oBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;iBAC9B;gBAAC,OAAO,CAAC,EAAE;oBAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC;iBAAE;wBAAS;oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAAE;YAC1D,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACpF;IACL,CAAC;IAEM,IAAI,eAAe,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9D,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,cAAa,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC,KAAK,UAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;QACtB,IAAI,EAAE,KAAK,SAAS;YAAE,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;aAEa,YAAY,CAAC,CAAC,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAClH,CAAC;aAEe,QAAQ,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAC9E,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;gBAC1C,IAAI,EAAE;oBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;wBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;oBACnC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;iBAC3C;aACJ,CAAC;QACF,MAAM,IAAI,SAAS,CAAC,CAAC,GAAG,yBAAyB,GAAG,iCAAiC,CAAC,CAAC;IAC3F,CAAC;aAEe,MAAM,CAAC,CAAC,EAAE,CAAC;QACvB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3D,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI;YACA,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI;gBAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC9E;QACD,OAAO,KAAK,EAAE;YAAE,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SAAE;gBAC/B;YACJ,IAAI;gBACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACpD;oBACO;gBAAE,IAAI,CAAC;oBAAE,MAAM,CAAC,CAAC,KAAK,CAAC;aAAE;SACpC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED;aACgB,QAAQ;QACpB,KAAK,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE;YAC9C,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC;IACd,CAAC;IAED;aACgB,cAAc;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpF,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAC5C,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE;gBAC7D,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpB,OAAO,CAAC,CAAC;IACb,CAAC;aAEe,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI;QACxC,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjF,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE;oBACpB,IAAI,CAAC,EAAE;wBAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrD,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;iBACnB;aACJ;QACD,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC;IACjC,CAAC;aAEe,OAAO,CAAC,CAAC;QACrB,OAAO,IAAI,YAAY,OAAO,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;aAEe,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS;QAC3D,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QAC9D,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACtH,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAC1I,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAAE;QAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAAE,EAAE;QAClF,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACxH,SAAS,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE;QAClD,SAAS,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;YAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;IACtF,CAAC;aAEe,gBAAgB,CAAC,CAAC;QAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;QACT,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5I,SAAS,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;IACnJ,CAAC;aAEe,aAAa,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,aAAa;YAAE,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACvF,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,KAAK,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,cAAc,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACjN,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE;QAChK,SAAS,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAS,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,EAAE;IAChI,CAAC;aAEe,oBAAoB,CAAC,MAAM,EAAE,GAAG;QAC5C,IAAI,MAAM,CAAC,cAAc,EAAE;YAAE,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;SAAE;aAAM;YAAE,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;SAAE;QAC/G,OAAO,MAAM,CAAC;IAClB,CAAC;IAAA,CAAC;IAEF,IAAI,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,UAAS,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC,IAAI,UAAS,CAAC,EAAE,CAAC;QACd,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC;aAEc,YAAY,CAAC,GAAG;QAC5B,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,GAAG,CAAC;QACtC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,GAAG,IAAI,IAAI;YAAE,KAAK,IAAI,CAAC,IAAI,GAAG;gBAAE,IAAI,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAAE,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QACzI,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAClB,CAAC;aAEe,eAAe,CAAC,GAAG;QAC/B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAC5D,CAAC;aAEe,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC3D,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAC;QACnL,OAAO,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAClG,CAAC;aAEe,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAClE,IAAI,IAAI,KAAK,GAAG;YAAE,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;QACxE,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QAC7F,IAAI,OAAO,KAAK,KAAK,UAAU,GAAG,QAAQ,KAAK,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,yEAAyE,CAAC,CAAC;QAClL,OAAO,CAAC,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC;IAC9G;;;QC3OI,wBACW,KAAgB,EAChB,IAAY,EACZ,CAAS,EACT,CAAS,EACT,SAGN;YAPM,UAAK,GAAL,KAAK,CAAW;YAChB,SAAI,GAAJ,IAAI,CAAQ;YACZ,MAAC,GAAD,CAAC,CAAQ;YACT,MAAC,GAAD,CAAC,CAAQ;YACT,cAAS,GAAT,SAAS,CAGf;SACD;6BACP;KAAA;;;QCTD;SAEC;6BAAA;KAAA,IAAA;;QAED;SAEC;8BAAA;KAAA,IAAA;;QAED;SAGC;iCAAA;KAAA,IAAA;;QAED;SAGC;qCAAA;KAAA,IAAA;;QAED;SAIC;kCAAA;KAAA,IAAA;;QAED;SAGC;iCAAA;KAAA,IAAA;;QAED;SAGC;iCAAA;KAAA;;;QCuCG,mBAAY,IAA6B;YACrC,IAAI,IAAI,EAAE;gBACN,IAAI,IAAI,YAAY,IAAI,EAAE;oBACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;iBACrB;qBAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oBAC7D,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE;wBAC7B,IAAI,CAAC,KAAK,GAAGA,oBAAY,CAAC,CAAC,IAAI,CAAC,CAAC;qBACpC;yBAAM;wBACH,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC/B;iBACJ;qBAAM;oBACH,MAAM,IAAI,KAAK,CACX,0IACwD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAG,CACjF,CAAC;iBACL;aACJ;iBAAM;gBACH,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;aAC3B;SACJ;QAED,2BAAO,GAAP;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SACnC;QAED,4BAAQ,GAAR;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SAChC;QAED,0BAAM,GAAN;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SAC9B;QAED,2BAAO,GAAP;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;SAC/B;QAED,2BAAO,GAAP;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;SAC/B;QAED,4BAAQ,GAAR;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SAChC;QAED,8BAAU,GAAV;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;SAClC;QAED,8BAAU,GAAV;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;SAClC;QAED,mCAAe,GAAf;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;SACvC;QAED,2BAAO,GAAP,UAAQ,OAA4F;YAA5F,wBAAA,EAAA,YAA2E,YAAY,EAAE,CAAC,EAAE;YAChG,OAAOC,eAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACvC;QAED,kCAAc,GAAd;YACI,OAAOC,sBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACrC;QAED,oCAAgB,GAAhB;YACI,OAAOC,gCAAwB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC;SACzG;QAED,iCAAa,GAAb;YACI,OAAOA,gCAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC;SACnG;QAED,2BAAO,GAAP,UAAQ,UAAkB;YACtB,OAAO,IAAI,SAAS,CAACC,eAAO,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;SACzD;QAED,yBAAK,GAAL;YACI,OAAO,IAAI,SAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAC9C;QAED,uBAAG,GAAH,UAAI,MAAc,EAAE,IAAoB;YACpC,QAAQ,IAAI;gBACR,KAAK,QAAQ;oBACT,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxD,KAAK,QAAQ;oBACT,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxD,KAAK,MAAM;oBACP,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtD,KAAK,KAAK;oBACN,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACrD,KAAK,MAAM;oBACP,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtD,KAAK,OAAO;oBACR,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACvD,KAAK,SAAS;oBACV,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzD,KAAK,MAAM;oBACP,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtD;oBACI,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;aAC3D;SACJ;QAED,8BAAU,GAAV,UAAW,MAAc;YACrB,OAAO,IAAI,SAAS,CAACC,kBAAU,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SACxD;QAED,8BAAU,GAAV,UAAW,MAAc;YACrB,OAAO,IAAI,SAAS,CAACC,kBAAU,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SACxD;QAED,4BAAQ,GAAR,UAAS,MAAc;YACnB,OAAO,IAAI,SAAS,CAACC,gBAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SACtD;QAED,2BAAO,GAAP,UAAQ,MAAc;YAClB,OAAO,IAAI,SAAS,CAACC,eAAO,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SACrD;QAED,4BAAQ,GAAR,UAAS,MAAc;YACnB,OAAO,IAAI,SAAS,CAACC,gBAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SACtD;QAED,6BAAS,GAAT,UAAU,MAAc;YACpB,OAAO,IAAI,SAAS,CAACC,iBAAS,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SACvD;QAED,+BAAW,GAAX,UAAY,MAAc;YACtB,OAAO,IAAI,SAAS,CAACC,mBAAW,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SACzD;QAED,4BAAQ,GAAR,UAAS,MAAc;YACnB,OAAO,IAAI,SAAS,CAACC,gBAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;SACtD;QAED,8BAAU,GAAV;YACI,OAAO,IAAI,SAAS,CAACC,kBAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAChD;QAED,+BAAW,GAAX,UAAY,OAAuE;YAC/E,OAAO,IAAI,SAAS,CAACC,mBAAW,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;SAC1D;QAED,gCAAY,GAAZ;YACI,OAAO,IAAI,SAAS,CAACC,oBAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAClD;QAED,kCAAc,GAAd;YACI,OAAO,IAAI,SAAS,CAACC,sBAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACpD;QAED,+BAAW,GAAX;YACI,OAAO,IAAI,SAAS,CAACC,mBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACjD;QAED,4BAAQ,GAAR;YACI,OAAO,IAAI,SAAS,CAACC,gBAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAC9C;QAED,6BAAS,GAAT,UAAU,OAAuE;YAC7E,OAAO,IAAI,SAAS,CAACC,iBAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;SACxD;QAED,8BAAU,GAAV;YACI,OAAO,IAAI,SAAS,CAACC,kBAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAChD;QAED,gCAAY,GAAZ;YACI,OAAO,IAAI,SAAS,CAACC,oBAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAClD;QAED,6BAAS,GAAT;YACI,OAAO,IAAI,SAAS,CAACC,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/C;QAED,+BAAW,GAAX;YACI,OAAOC,mBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAClC;QAED,0BAAM,GAAN,UACI,GAAW,EACX,OAMC;YAED,OAAOC,cAAM,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SAC3C;QAED,6BAAS,GAAT;YACI,OAAOC,iBAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC;QAED,2BAAO,GAAP;YACI,OAAOC,eAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9B;wBACJ;KAAA;;ACnRWC;IAAZ,WAAY,aAAa;QACrB,4BAAW,CAAA;QACX,oCAAmB,CAAA;QACnB,gCAAe,CAAA;QACf,8BAAa,CAAA;QACb,8BAAa,CAAA;IACjB,CAAC,EANWA,qBAAa,KAAbA,qBAAa;;ICGzB,IAAY,aAKX;IALD,WAAY,aAAa;QACrB,6CAAM,CAAA;QACN,6CAAM,CAAA;QACN,6CAAM,CAAA;QACN,6CAAM,CAAA;IACV,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;IAED,IAAY,iBAGX;IAHD,WAAY,iBAAiB;QACzB,oCAAe,CAAA;QACf,kCAAa,CAAA;IACjB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,QAG5B;IAED,IAAY,UAIX;IAJD,WAAY,UAAU;QAClB,iCAAmB,CAAA;QACnB,iCAAmB,CAAA;QACnB,gCAAkB,CAAA;IACtB,CAAC,EAJW,UAAU,KAAV,UAAU;;ACJVC;IAAZ,WAAY,aAAa;QACrB,4BAAW,CAAA;QACX,gCAAe,CAAA;QACf,kCAAiB,CAAA;IACrB,CAAC,EAJWA,qBAAa,KAAbA,qBAAa,QAIxB;;QA8CG,2BAAY,IAAe,EAAE,OAAqC;YAAlE,iBA6BC;YA/BD,UAAK,GAAG,IAAIC,oBAAe,CAA0C,IAAI,CAAC,CAAC;YAGvE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,UAAC,IAAI;gBAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oBAC1B,OAAO;wBACH,IAAI,EAAE,aAAa,CAAC,EAAE;wBACtB,IAAI,MAAA;qBACP,CAAC;iBACL;qBAAM;oBACH,OAAO,IAAI,CAAC;iBACf;aACJ,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACjF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;YACpF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YAClF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YAC3D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACrD,IAAI,CAAC,QAAQ,GAAG,OAAO,IAAI,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,GAAGF,qBAAa,CAAC,KAAK,CAAC;YACrF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,UAAC,OAAO;gBAC9C,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;aACtE,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAIC,qBAAa,CAAC,GAAG,CAAC;YAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;;YAErC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;SACjC;QAnCD,sBAAI,mCAAI;iBAAR;gBACI,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;aAChC;;;WAAA;QAmCD,8CAAkB,GAAlB,UAAmB,IAAe;YAC9B,IAAI,WAAmB,CAAC;YACxB,QAAQ,IAAI,CAAC,QAAQ;gBACjB,KAAKD,qBAAa,CAAC,GAAG,CAAC;gBACvB,KAAKA,qBAAa,CAAC,IAAI;oBACnB,WAAW,GAAG,CAAC,CAAC;oBAChB,MAAM;gBACV;oBACI,WAAW,GAAG,EAAE,CAAC;oBACjB,MAAM;aACb;YACD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACzB,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;aACxE;YACD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE;gBACzB,IAAI,CAAC,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,UAAU,EAAE,CAAC;aAC3E;SACJ;QAED,sCAAU,GAAV,UAAW,IAAmB;YAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzB;QAED,sCAAU,GAAV,UAAW,KAAgB,EAAE,GAAc;YACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAC7C,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;SAC5C;QAED,uCAAW,GAAX,UAAY,KAAkB;YAA9B,iBAKC;YAJG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,UAAC,OAAO;gBACtC,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;aACtE,CAAC,CAAC;SACN;QAED,qCAAS,GAAT,UAAU,QAAiB;YACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;SACnC;QAED,mCAAO,GAAP,UAAQ,MAAc;YAClB,IAAI,CAAC,KAAK,0CAAO,IAAI,CAAC,KAAK,KAAE,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAC,CAAC;YACvE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAClC;gCACJ;KAAA;;;QCrHG,4BAAY,KAAiB;YAJ7B,SAAI,GAEA,EAAE,CAAC;YAGH,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;YACrE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;SAClC;QAED,sCAAS,GAAT,UAAU,QAAiB;YACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;SACnC;iCACJ;KAAA;;QClBY,aAAa,GAAG;QACzB,UAAU,EAAE;YACR,IAAI,EAAE,KAAK;YACX,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,UAAU;SAC1B;QACD,WAAW,EAAE;YACT,eAAe,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,iBAAiB,CAAC,KAAK;SACxC;MACH;QAEW,mBAAmB,GAAG,IAAIG,iBAAc,CAAoB,qBAAqB;;QC5BjF,mBAAmB,GAAG,GAAG;QAEzB,qBAAqB,GAAG,GAAG;IAkBxC,IAAMC,aAAW,GAAqB;QAClC,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QAC/C,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;QAC5C,UAAU,EAAE,aAAa,CAAC,UAAU;KACvC,CAAC;;QA+BE,mBAAY,KAAoB,EAAE,GAAkB,EAAE,OAAyB;YAN/E,iBAAY,GAAG,IAAI,CAAC;YAOhB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAEA,aAAW,EAAE,OAAO,CAAC,CAAC;YACvD,IAAM,SAAS,GAAG,KAAK,CAAC,QAAQ;kBAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;kBACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAClG,IAAM,OAAO,GAAG,GAAG,CAAC,QAAQ;kBACtB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;kBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxF,IAAI,CAAC,MAAM,GAAG,IAAIF,oBAAe,CAAY,SAAS,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,GAAG,IAAIA,oBAAe,CAAY,OAAO,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;QAnCD,sBAAI,4BAAK;iBAAT;gBACI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;aACjC;;;WAAA;QAED,sBAAI,0BAAG;iBAAP;gBACI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;aAC/B;;;WAAA;QA+CS,wCAAoB,GAApB,UAAqB,KAAgB,EAAE,GAAc;YAC3D,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAM,IAAI,GAAGG,wBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACrC,MAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;aACzD;YACD,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC;YACtC,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACpC;QAES,8BAAU,GAAV;YACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACzD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;SAC9C;QAED,gCAAY,GAAZ;YACI,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC9F,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE;gBACvC,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACxB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;aAC7C;YACD,OAAO,IAAI,CAAC;SACf;QAED,8BAAU,GAAV;YACI,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACnF,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE;gBACrC,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;gBACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;aAC3C;YACD,OAAO,IAAI,CAAC;SACf;QAED,8BAAU,GAAV,UAAW,KAAgB,EAAE,GAAc;YACvC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3B;YACD,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBAC5B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aACvB;YACD,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB;;QAGD,4BAAQ,GAAR;YACI,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;SAChE;;QAGD,gCAAY,GAAZ;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;SACjC;;QAGD,kCAAc,GAAd;YACI,IAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;gBAChE,IAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7E,OAAO,CAAC,CAAC;aACZ;iBAAM;gBACH,OAAO,IAAI,CAAC;aACf;SACJ;;QAGD,mCAAe,GAAf,UAAgB,IAAe;YAC3B,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACtD;;QAGD,mCAAe,GAAf,UAAgB,CAAS;YACrB,IAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACjE,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;YACjE,IAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,CAAC;YAC7D,IAAI,QAAQ,KAAK,IAAI,CAAC,YAAY,EAAE,EAAE;gBAClC,OAAO,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC;aAC3B;iBAAM;gBACH,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjE,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,KAAK,CAAC,EAAE;oBACtC,OAAO,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;iBACxC;gBACD,OAAO,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACxC;SACJ;;QAGD,qCAAiB,GAAjB,UAAkB,KAAgB,EAAE,GAAc;;YAE9C,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D;wBACJ;KAAA;;ICxLD,IAAMD,aAAW,GAAqB;QAClC,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACvD,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAClD,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,SAAS;KACrB,CAAC;IAEF;QAAoC,kCAAS;QACzC,wBAAY,KAAoB,EAAE,GAAkB,EAAE,OAA0B;mBAC5E,kBAAM,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAEA,aAAW,EAAE,OAAO,CAAC,CAAC;SAC7D;QAED,gCAAO,GAAP,UAAQ,IAAe;YACnB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;SAChC;QAED,8BAAK,GAAL,UAAM,IAAe;YACjB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;SAC9B;QAED,wCAAe,GAAf;YACI,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;SAClC;QAED,6CAAoB,GAApB,UAAqB,IAAe;YAChC,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;SACjD;QAED,6CAAoB,GAApB;YACI,IAAM,QAAQ,GAAGE,oCAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9F,IAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAM,KAAK,GAAG,IAAI,cAAc,CAC5B,KAAK,EACL,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EACjD,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,EAC7D,mBAAmB,CACtB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YAED,OAAO,MAAM,CAAC;SACjB;QAED,+CAAsB,GAAtB;YACI,IAAM,MAAM,GAAGC,2BAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACrF,IAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACpC,IAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvC,IAAM,KAAK,GAAG,IAAI,cAAc,CAC5B,KAAK,EACL,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAC3C,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EACjD,qBAAqB,CACxB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;SACjB;6BACJ;KArDD,CAAoC,SAAS;;ICP7C,IAAMH,aAAW,GAAqB;QAClC,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QACjD,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;QAC5C,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QAC/C,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;QAC5C,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM;KAClB,CAAC;IAEF;QAAsC,oCAAS;QAC3C,0BAAY,KAAoB,EAAE,GAAkB,EAAE,OAA0B;mBAC5E,kBAAM,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAEA,aAAW,EAAE,OAAO,CAAC,CAAC;SAC7D;QAED,kCAAO,GAAP,UAAQ,IAAe;YACnB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC7B;QAED,gCAAK,GAAL,UAAM,IAAe;YACjB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;SAC3B;QAED,0CAAe,GAAf;YACI,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;SAClC;QAED,+CAAoB,GAApB,UAAqB,IAAe;YAChC,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACnD;QAED,+CAAoB,GAApB;YACI,IAAM,KAAK,GAAGI,0BAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACnF,IAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAM,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAM,KAAK,GAAG,IAAI,cAAc,CAC5B,KAAK,EACL,KAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAG,EAC/C,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,EAC7D,mBAAmB,CACtB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;SACjB;QAED,iDAAsB,GAAtB;YACI,IAAM,QAAQ,GAAGF,oCAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChF,IAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;gBAChC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAM,KAAK,GAAG,IAAI,cAAc,CAC5B,KAAK,EACL,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAC7C,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EACjD,qBAAqB,CACxB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;SACjB;+BACJ;KApDD,CAAsC,SAAS;;ICX/C,IAAMF,aAAW,GAAqB;QAClC,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QACrE,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAC/D,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO;KACnB,CAAC;IAEF;QAAkC,gCAAS;QAKvC,sBAAY,KAAoB,EAAE,GAAkB,EAAE,OAA0B;YAAhF,YACI,kBAAM,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAEA,aAAW,EAAE,OAAO,CAAC,CAAC,SAC7D;YAND,sBAAgB,GAAG,IAAI,CAAC;YAExB,kBAAY,GAAG,KAAK,CAAC;;SAIpB;QAED,8BAAO,GAAP,UAAQ,IAAe;YACnB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;SAChD;QAED,4BAAK,GAAL,UAAM,IAAe;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;SAC9C;QAED,sCAAe,GAAf;YACI,OAAO,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;SAClC;QAED,2CAAoB,GAApB;YACI,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;QAED,2CAAoB,GAApB;YACI,IAAM,KAAK,GAAGK,0BAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YACtH,IAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAM,SAAS,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAM,YAAY,GAAG,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACnF,IAAM,KAAK,GAAG,IAAI,cAAc,CAC5B,SAAS,EACT,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAC1E,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,EAC7D,mBAAmB,CACtB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;SACjB;QAED,6CAAsB,GAAtB;YACI,IAAM,IAAI,GAAGC,yBAAiB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACjF,IAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAClC,IAAM,KAAK,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAM,KAAK,GAAG,IAAI,cAAc,CAC5B,KAAK,EACL,KAAK,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAC1B,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EACjD,qBAAqB,EACrB;oBACI,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;oBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;iBAC3B,CACJ,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;SACjB;2BACJ;KA7DD,CAAkC,SAAS;;ICR3C,IAAMN,aAAW,GAAqB;QAClC,SAAS,EAAE,GAAG;QACd,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QACrE,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;QAC/D,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,OAAO;KACnB,CAAC;IAEF;QAAmC,iCAAS;QACxC,uBAAY,KAAoB,EAAE,GAAkB,EAAE,OAA0B;mBAC5E,kBAAM,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAEA,aAAW,EAAE,OAAO,CAAC,CAAC;SAC7D;QAED,+BAAO,GAAP,UAAQ,IAAe;YACnB,OAAO,IAAI,CAAC,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;SAChD;QAED,6BAAK,GAAL,UAAM,IAAe;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;SAC9C;QAED,uCAAe,GAAf;YACI,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;SAC9B;QAED,4CAAoB,GAApB;YACI,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SAC7B;QAED,4CAAoB,GAApB;YACI,IAAM,KAAK,GAAGK,0BAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YACtH,IAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAM,SAAS,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1C,IAAM,YAAY,GAAG,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACnF,IAAM,KAAK,GAAG,IAAI,cAAc,CAC5B,SAAS,EACT,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EACrE,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EACjD,mBAAmB,CACtB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;SACjB;QAED,8CAAsB,GAAtB;YACI,IAAM,KAAK,GAAGA,0BAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACnF,IAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAM,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAM,KAAK,GAAG,IAAI,cAAc,CAC5B,KAAK,EACL,KAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAG,EAC/C,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EACjD,qBAAqB,CACxB,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;SACjB;4BACJ;KArDD,CAAmC,SAAS;;ICP5C,IAAM,WAAW,GAAqB;QAClC,SAAS,EAAE,GAAG;QACd,KAAK,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;QACjD,GAAG,EAAE,IAAI,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;QAC5C,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,MAAM;KAClB,CAAC;IAEF;QAAmC,iCAAS;QACxC,uBAAY,KAAoB,EAAE,GAAkB,EAAE,OAA0B;mBAC5E,kBAAM,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;SAC7D;QAED,+BAAO,GAAP,UAAQ,IAAe;YACnB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC7B;QAED,6BAAK,GAAL,UAAM,IAAe;YACjB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;SAC3B;QAED,uCAAe,GAAf;YACI,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;SAC9B;QAED,4CAAoB,GAApB,UAAqB,IAAe;YAChC,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;SAChD;QAED,4CAAoB,GAApB;YACI,IAAM,KAAK,GAAGD,0BAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YACnF,IAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAM,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAM,KAAK,GAAG,IAAI,cAAc,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,mBAAmB,CAAC,CAAC;gBACpH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;SACjB;QAED,8CAAsB,GAAtB;YACI,IAAM,KAAK,GAAGG,iCAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1E,IAAM,MAAM,GAAqB,EAAE,CAAC;YACpC,IAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC7B,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACrC,IAAM,KAAK,GAAG,IAAI,cAAc,CAC5B,KAAK,EACL,KAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAG,EAC/C,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,EACjD,QAAQ,CACX,CAAC;gBACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;YACD,OAAO,MAAM,CAAC;SACjB;4BACJ;KAhDD,CAAmC,SAAS;;aCJ5B,iBAAiB,CAAC,IAAmB,EAAE,KAAoB,EAAE,GAAkB,EAAE,OAA0B;QACvH,QAAQ,IAAI;YACR,KAAKX,qBAAa,CAAC,KAAK;gBACpB,OAAO,IAAI,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACnD,KAAKA,qBAAa,CAAC,IAAI;gBACnB,OAAO,IAAI,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAClD,KAAKA,qBAAa,CAAC,OAAO;gBACtB,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACrD,KAAKA,qBAAa,CAAC,GAAG;gBAClB,OAAO,IAAI,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACjD,KAAKA,qBAAa,CAAC,IAAI;gBACnB,OAAO,IAAI,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YAClD;gBACI,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;SAClD;IACL;;ICxBO,IAAM,aAAa,GAAG;QACzB,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,EAAE;KAChB,CAAC;IAEK,IAAM,YAAY,GAAG,EAAE,CAAC;IAIxB,IAAM,SAAS,GAAG,GAAG,CAAC;IAEtB,IAAM,eAAe,GAAG,GAAG,CAAC;IAE5B,IAAM,YAAY,GAAG,GAAG,CAAC;IAEzB,IAAM,YAAY,GAAG,GAAG,CAAC;IAEzB,IAAM,aAAa,GAAG,SAAS,CAAC;IAEhC,IAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,IAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,IAAM,UAAU,GAAG,EAAE,CAAC;IAEtB,IAAM,iBAAiB,GAAG,CAAC;;aCnBlB,QAAQ,CAAC,KAAU;QAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;aAEe,QAAQ,CAAC,KAAU;QAC/B,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC;IACrC,CAAC;aAEe,WAAW,CAAC,KAAU;QAClC,OAAO,KAAK,KAAK,SAAS,CAAC;IAC/B,CAAC;aAEe,QAAQ,CAAC,KAAa,EAAE,OAAW;QAAX,wBAAA,EAAA,WAAW;QAC/C,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnB,OAAO,UAAQ,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAI,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAI,OAAO,MAAG,CAAC;SACtI;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;aAEe,MAAM,CAAc,KAAU,EAAE,GAAY;QACxD,IAAM,SAAS,GAAkB,EAAE,CAAC;QACpC,IAAM,MAAM,GAAG,EAAE,CAAC;QAClB,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,UAAC,KAAK;YACxB,IAAM,IAAI,GAAG,KAAK,CAAC,GAAa,CAAC,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;gBAClB,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;SACJ,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAClB,CAAC;aAEe,OAAO,CAAc,KAAU;QAC3C,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG;YACzB,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;SAC9D,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;aAEe,cAAc,CAAC,KAA0B;QACrD,IAAM,MAAM,GAAG,EAAE,CAAC;QAClB,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,UAAC,IAAI;YACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAChC,MAAM,CAAC,IAAI,OAAX,MAAM,2BAAS,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAE;aACjD;SACJ,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAClB,CAAC;aAEe,YAAY,CAAC,KAAkB;QAC3C,IAAM,MAAM,GAAG,EAAE,CAAC;QAClB,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,UAAC,IAAI;YACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,MAAM,CAAC,IAAI,OAAX,MAAM,2BAAS,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAE;aAC/C;SACJ,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAClB;;;QC+EI,oBACc,UAAmC,EACnC,GAAsB,EACtB,MAAc,EACe,MAAyB;YAHtD,eAAU,GAAV,UAAU,CAAyB;YACnC,QAAG,GAAH,GAAG,CAAmB;YACtB,WAAM,GAAN,MAAM,CAAQ;YACe,WAAM,GAAN,MAAM,CAAmB;YA1GpD,gBAAW,GAAgB,EAAE,CAAC;YAE7B,iBAAY,GAAiB,EAAE,CAAC;YAExC,aAAQ,GAAkBA,qBAAa,CAAC,KAAK,CAAC;YAM9C,kBAAa,GAAG,IAAI,CAAC;YAMrB,gBAAW,GAAqB,EAAE,CAAC;YA8BlC,iBAAY,GAAG,IAAIY,eAAY,EAA0B,CAAC;YAE1D,gBAAW,GAAG,IAAIA,eAAY,EAAkB,CAAC;YAEjD,cAAS,GAAG,IAAIA,eAAY,EAAkB,CAAC;YAE/C,cAAS,GAAG,IAAIA,eAAY,EAAkB,CAAC;YAE/C,aAAQ,GAAG,IAAIA,eAAY,EAAsB,CAAC;YAgBrD,kBAAa,GAAG,IAAIA,eAAY,EAAsB,CAAC;YAIvD,UAAK,GAAwB,EAAE,CAAC;YAEhC,WAAM,GAAyB,EAAE,CAAC;YAElC,eAAU,GAAG,IAAIA,eAAY,EAAa,CAAC;YAE3C,iBAAY,GAAG,IAAIA,eAAY,EAAQ,CAAC;YAMxC,gBAAW,GAAG,IAAI,CAAC;YAInB,iBAAY,GAAG,IAAIC,YAAO,EAAE,CAAC;YAM5B,gBAAW,GAAG,KAAK,CAAC;YAEpB,cAAS,GAAG,KAAK,CAAC;YAEE,eAAU,GAAG,IAAI,CAAC;SAO1C;QAvFJ,sBACI,kCAAU;iBASd;gBACI,OAAO,IAAI,CAAC,WAAW,CAAC;aAC3B;iBAZD,UACe,KAAmB;;gBAC9B,IAAI,CAAC,WAAW,GAAGC,8BAAqB,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,IAAI,CAAC,WAAW,EAAE;oBAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;iBACnD;qBAAM;oBACH,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,EAAE,CAAC;iBAChC;aACJ;;;WAAA;QAMD,sBACI,gCAAQ;iBAOZ;gBACI,OAAO,IAAI,CAAC,SAAS,CAAC;aACzB;iBAVD,UACa,KAAmB;gBAC5B,IAAI,CAAC,SAAS,GAAGA,8BAAqB,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;iBACnD;aACJ;;;WAAA;QA0CD,sBAAW,+BAAO;iBAAlB;gBACI,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;aACxC;;;WAAA;QAyBO,+BAAU,GAAV;YACJ,IAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SAChG;QAEO,gCAAW,GAAX;YAAA,iBAUP;YATG,IAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,QAAQ,KAAK,KAAK,GAAA,CAAC,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,EAAE,GAAA,CAAC,CAAC;YACtG,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAC,MAAM;gBAC7B,IAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAC7C,KAAK,CAAC,QAAQ,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClD,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;gBACjC,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3B,CAAC,CAAC;SACN;QAEO,+BAAU,GAAV;YAAA,iBAiBP;YAhBG,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,MAAM;oBAC5B,IAAM,KAAK,GAAG,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC9C,IAAI,KAAK,EAAE;wBACP,IAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACxE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC1B;iBACJ,CAAC,CAAC;aACN;iBAAM;gBACH,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,MAAM;oBAC5B,IAAM,IAAI,GAAG,IAAI,iBAAiB,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACxE,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB,CAAC,CAAC;aACN;SACJ;QAEO,uCAAkB,GAAlB;YACJ,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAClD,IAAI,KAAK,GAAwB,EAAE,CAAC;YACpC,IAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAEvD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtC;iBAAM;gBACH,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC,CAAC;aAC5E;YACD,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI;gBACf,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;oBACtB,IAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,UAAC,UAAU,IAAK,OAAA,UAAU,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,GAAA,CAAC,CAAC;oBAChF,IAAI,OAAO,EAAE;wBACT,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE;4BAChC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAC3B;qBACJ;iBACJ;aACJ,CAAC,CAAC;SACN;QAEO,gCAAW,GAAX;YAAA,iBAuBP;YAtBG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACvB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC1B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAC,IAAI;oBAC1B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAI,CAAC,KAAK,EAAE;wBAC3B,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;qBAC5D;oBACD,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,KAAI,CAAC,GAAG,EAAE;wBACvB,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;qBAClD;iBACJ,CAAC,CAAC;aACN;YACD,OAAO;gBACH,KAAK,EAAE;oBACH,IAAI,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC;oBAC1B,QAAQ,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK;iBACtC;gBACD,GAAG,EAAE;oBACD,IAAI,EAAE,IAAI,SAAS,CAAC,GAAG,CAAC;oBACxB,QAAQ,EAAE,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK;iBACpC;aACJ,CAAC;SACL;QAED,gCAAW,GAAX;YAAA,iBAOC;YANG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;gBACtB,IAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC/C,KAAI,CAAC,gBAAgB,OAArB,KAAI,2BAAqB,UAAU,IAAE;aACxC,CAAC,CAAC;YACH,IAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,gBAAgB,OAArB,IAAI,2BAAqB,KAAK,IAAE;SACnC;QAEO,iCAAY,GAAZ,UAAa,QAAiB;YAClC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;gBACtB,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aAC7B,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC5B;QAEO,uCAAkB,GAAlB;YACJ,OAAO,IAAIC,0BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;SAChD;QAED,2BAAM,GAAN;YAAA,iBA8BC;YA7BG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC/H,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAEzB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAACC,cAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzC,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;gBAEjC,KAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,UAAC,KAAK;oBAC3C,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAChC,CAAC,CAAC;gBAEH,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,UAAC,KAAK;oBACzC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAC9B,CAAC,CAAC;gBACH,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,UAAC,KAAK;oBACzC,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC3B,KAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,KAAI,CAAC,aAAa,EAAE,CAAC;iBACxB,CAAC,CAAC;aACN,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAACC,cAAI,CAAC,CAAC,CAAC,EAAEC,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnE,KAAI,CAAC,WAAW,EAAE,CAAC;aACtB,CAAC,CAAC;SACN;QAED,8BAAS,GAAT,UAAU,OAAsB;YAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE;oBACnD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnC;gBACD,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE;oBAC7C,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,IAAI,CAAC,WAAW,EAAE,CAAC;iBACtB;aACJ;SACJ;QAED,8BAAS,GAAT;YACI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;SAChC;QAED,qCAAgB,GAAhB;YAAA,iBAQC;YARgB,eAA6B;iBAA7B,UAA6B,EAA7B,qBAA6B,EAA7B,IAA6B;gBAA7B,0BAA6B;;YAC1C,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI;gBACf,IAAI,CAAC,UAAU,CAAC;oBACZ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,KAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC;oBAC7G,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,KAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;oBACzD,CAAC,EAAE,CAAC,KAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC;iBAC9D,CAAC,CAAC;aACN,CAAC,CAAC;SACN;QAED,4BAAO,GAAP,UAAQ,KAAa,EAAE,IAA4C;YAC/D,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC;SAC3B;QAED,kCAAa,GAAb;YACI,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC5B;QAED,gCAAW,GAAX,UAAY,KAAyB;YACjC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;SAC5B;;QAID,8BAAS,GAAT;YACI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SAC3B;QAED,gCAAW,GAAX;YACI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SAC5B;QAED,iCAAY,GAAZ,UAAa,EAAU;YACnB,OAAO,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;SAC9C;QAED,kCAAa,GAAb,UAAc,GAAa;YACvB,IAAI,KAAK,GAAwB,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtC;iBAAM;gBACH,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC,CAAC;aAC5E;YACD,OAAO,KAAK,CAAC,MAAM,CAAC,UAAC,IAAI,IAAK,OAAA,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,GAAA,CAAC,CAAC;SACxD;QAED,+BAAU,GAAV,UAAW,EAAU;YACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,OAAO,KAAK,CAAC;aAChB;YACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE;gBACjC,OAAO,KAAK,CAAC;aAChB;YACD,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SAC7C;;;iIArUiB,UAAU,oIA2GhB,mBAAmB;0GA3Gb,UAAU;qHAAV,UAAU;sBAD/BC,YAAS;;;kCA4GDC,SAAM;mCAAC,mBAAmB;;6BA1Gf,WAAW;0BAA1BC,QAAK;2BAAC,OAAO;oBAEG,YAAY;0BAA5BA,QAAK;2BAAC,QAAQ;oBAEN,QAAQ;0BAAhBA,QAAK;oBAEG,KAAK;0BAAbA,QAAK;oBAEG,GAAG;0BAAXA,QAAK;oBAEG,aAAa;0BAArBA,QAAK;oBAEG,SAAS;0BAAjBA,QAAK;oBAEG,MAAM;0BAAdA,QAAK;oBAEG,WAAW;0BAAnBA,QAAK;oBAEG,oBAAoB;0BAA5BA,QAAK;oBAGF,UAAU;0BADbA,QAAK;oBAeF,QAAQ;0BADXA,QAAK;oBAYI,YAAY;0BAArBC,SAAM;oBAEG,WAAW;0BAApBA,SAAM;oBAEG,SAAS;0BAAlBA,SAAM;oBAEG,SAAS;0BAAlBA,SAAM;oBAEG,QAAQ;0BAAjBA,SAAM;oBAEgC,WAAW;0BAAjDC,eAAY;2BAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBAEI,aAAa;0BAArDA,eAAY;2BAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBAEC,YAAY;0BAAnDA,eAAY;2BAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBAEG,aAAa;0BAArDA,eAAY;2BAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBAEQ,mBAAmB;0BAAjEA,eAAY;2BAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBAoCjB,UAAU;0BAArCC,cAAW;2BAAC,aAAa;;QAmOjB,iBAAiB,GAAG,IAAIrB,iBAAc,CAAa,mBAAmB;;;QC5V/E,sCAA8C,UAAsB;YAAtB,eAAU,GAAV,UAAU,CAAY;SAAI;QAXxE,sBACI,+CAAK;iBADT,UACU,KAAsB;gBAC5B,IAAI,CAAC,WAAW,GAAGsB,4BAAmB,CAAC,KAAK,CAAC,CAAC;aACjD;;;WAAA;QAUD,+CAAQ,GAAR,eAAa;;;mJAhBJ,4BAA4B,kBAcjB,iBAAiB;4HAd5B,4BAA4B,wUAF3B,EAAE;qHAEH,4BAA4B;sBAJxCC,YAAS;uBAAC;wBACP,QAAQ,EAAE,kBAAkB;wBAC5B,QAAQ,EAAE,EAAE;qBACf;;;kCAegBN,SAAM;mCAAC,iBAAiB;;6BAVjC,KAAK;0BADRC,QAAK;oBAKG,IAAI;0BAAZA,QAAK;oBAEkC,WAAW;0BAAlDE,eAAY;2BAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBAEI,iBAAiB;0BAA1DA,eAAY;2BAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;;QCLxC;YANU,kBAAa,GAAG,IAAIX,eAAY,EAAmB,CAAC;SAM9C;QAEhB,yCAAQ,GAAR,eAAa;;;6IATJ,sBAAsB;sHAAtB,sBAAsB,8VAFrB,EAAE;qHAEH,sBAAsB;sBAJlCc,YAAS;uBAAC;wBACP,QAAQ,EAAE,iBAAiB;wBAC3B,QAAQ,EAAE,EAAE;qBACf;8EAEa,aAAa;0BAAtBJ,SAAM;oBAE0C,iBAAiB;0BAAjEC,eAAY;2BAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBAEC,gBAAgB;0BAA/DA,eAAY;2BAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ICC3C,IAAM,oBAAoB,GAAG,IAAIpB,iBAAc,CAAyB,sBAAsB,CAAC;;ICbtG,IAAM,UAAU,GAAG,8VAA4U,CAAC;IAChW,IAAM,SAAS,GAAG,wTAAwS,CAAC;IAC3T,IAAM,UAAU,GAAG,ucAAqb,CAAC;IACzc,IAAM,WAAW,GAAG,+ZAA6Y,CAAC;IACla,IAAM,WAAW,GAAG,4hBAIb,CAAC;IACR,IAAM,SAAS,GAAG,6wGAoEX,CAAC;IACD,IAAM,KAAK,GAAG;QACjB,aAAa,EAAE,UAAU;QACzB,YAAY,EAAE,SAAS;QACvB,aAAa,EAAE,UAAU;QACzB,cAAc,EAAE,WAAW;QAC3B,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,SAAS;KACnB;;IC/ED;QAOI,4BAAoB,UAAmC;YAAnC,eAAU,GAAV,UAAU,CAAyB;YANtB,WAAM,GAAG,IAAI,CAAC;SAMY;QAJ3D,sBAAa,wCAAQ;iBAArB,UAAsB,IAAY;gBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACrB;;;WAAA;QAID,qCAAQ,GAAR,eAAmB;QAEnB,4CAAe,GAAf,eAAoB;QAEpB,mCAAM,GAAN,UAAO,IAAY;YACf,IAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,OAAO,EAAE;gBACT,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,OAAO,CAAC;aACrD;iBAAM;gBACH,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;aAChD;SACJ;;;yIApBQ,kBAAkB;kHAAlB,kBAAkB,4JAFjB,EAAE;qHAEH,kBAAkB;sBAJ9BuB,YAAS;uBAAC;wBACP,QAAQ,EAAE,YAAY;wBACtB,QAAQ,EAAE,EAAE;qBACf;gHAEoC,MAAM;0BAAtCF,cAAW;2BAAC,kBAAkB;oBAElB,QAAQ;0BAApBH,QAAK;;;;QCHV;;QACI,wCAAS,GAAT,UAAU,KAAoB;YAC1B,OAAO,KAAK,KAAKpB,qBAAa,CAAC,KAAK,CAAC;SACxC;;;2IAHQ,oBAAoB;yIAApB,oBAAoB;qHAApB,oBAAoB;sBAHhC0B,OAAI;uBAAC;wBACF,IAAI,EAAE,kBAAkB;qBAC3B;;;QAWD;;QACI,sCAAS,GAAT,UAAU,KAAoB;YAC1B,OAAO,KAAK,KAAK1B,qBAAa,CAAC,GAAG,CAAC;SACtC;;;yIAHQ,kBAAkB;uIAAlB,kBAAkB;qHAAlB,kBAAkB;sBAH9B0B,OAAI;uBAAC;wBACF,IAAI,EAAE,gBAAgB;qBACzB;;;QAWD;;QACI,yCAAS,GAAT,UAAU,KAAoB;YAC1B,OAAO,KAAK,KAAK1B,qBAAa,CAAC,MAAM,CAAC;SACzC;;;4IAHQ,qBAAqB;0IAArB,qBAAqB;qHAArB,qBAAqB;sBAHjC0B,OAAI;uBAAC;wBACF,IAAI,EAAE,mBAAmB;qBAC5B;;;ICFM,IAAM,kBAAkB,GAAG,GAAG,CAAC;IAC/B,IAAM,cAAc,GAAG,EAAE,CAAC;IAYjC;QAmCI,6BACyC,KAA6B,EAChC,UAAsB,EAChD,UAAsB;YAFO,UAAK,GAAL,KAAK,CAAwB;YAChC,eAAU,GAAV,UAAU,CAAY;YAChD,eAAU,GAAV,UAAU,CAAY;YAXxB,cAAS,GAAG,IAAIf,eAAY,EAAsB,CAAC;YAI3B,oBAAe,GAAG,IAAI,CAAC;YAEjB,yBAAoB,GAAG,KAAK,CAAC;SAMjE;QA9BJ,sBACI,wCAAO;iBADX,UACY,OAAgD;gBACxD,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM;oBACnB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;wBACrB,MAAM,CAAC,WAAW,GAAGa,4BAAmB,CAAC,kBAAkB,CAAC,CAAC;qBAChE;iBACJ,CAAC,CAAC;gBACH,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;aAC7B;;;WAAA;QAwBD,sCAAQ,GAAR,eAAa;QAEb,yCAAW,GAAX,UAAY,OAAsB;;YAC9B,IAAI,EAAC,MAAA,OAAO,CAAC,MAAM,CAAC,YAAY,0CAAE,MAAM,CAAA,IAAI,EAAC,MAAA,OAAO,CAAC,KAAK,CAAC,YAAY,0CAAE,MAAM,CAAA,EAAE;gBAC7E,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;aACpC;iBAAM;gBACH,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;aACrC;SACJ;QAEO,uCAAS,GAAT,UAAU,MAAuB;YACrC,IAAI,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE;gBACrC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,kBAAe,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,eAAW,CAAC;aAClG;SACJ;QAED,yCAAW,GAAX,UAAY,KAAyB;YACjC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,4CAAc,GAAd,UAAe,KAAiB,EAAE,IAAuB;YACrD,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACnC;QAED,yCAAW,GAAX,UAAY,KAAmB;YAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;YAClD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;SAC5D;QAED,uCAAS,GAAT,UAAU,KAAkB,EAAE,MAAqC;YAC/D,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;YAClD,IAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;YAEjD,IAAI,WAAmB,CAAC;YACxB,IAAI,UAAkB,CAAC;YACvB,IAAI,QAAgB,CAAC;YACrB,IAAI,MAAM,EAAE;gBACR,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBAC/C,UAAU,GAAG,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBACvD,QAAQ,GAAG,cAAc,CAAC;aAC7B;iBAAM;gBACH,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;gBAC1E,UAAU,GAAG,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBACvD,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;aACtD;YAED,IAAI,CAAC,SAAS,CAAC;gBACX,MAAM,QAAA;gBACN,WAAW,aAAA;gBACX,UAAU,YAAA;gBACV,QAAQ,UAAA;aACX,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,6CAAe,GAAf,UAAgB,KAAiB,EAAE,MAAoC;YACnE,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;YAClD,IAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;YACjD,IAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7E,IAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;YACzD,MAAM,CAAC,WAAW,GAAGA,4BAAmB,CAAC,WAAW,CAAC,CAAC;YACtD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;aACrE;YAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;SACxB;QAED,4CAAc,GAAd,UAAe,KAAiB;YAC5B,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;YAClD,IAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC;YACjD,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;YAC/E,IAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;YAC5C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,MAAM;gBAC3B,IAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACzD,IAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,IAAI,eAAe,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzF,IAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,eAAe,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;gBACrF,MAAM,CAAC,WAAW,GAAGA,4BAAmB,CAAC,WAAW,CAAC,CAAC;aACzD,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBAClB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;aACrE;YAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;SACxB;QAEO,+CAAiB,GAAjB,UAAkB,KAAkB;YACxC,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YACxE,IAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAC9E,IAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,UAAU,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;YAC5F,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAM,QAAQ,CAAC,CAAC,OAAI,CAAC;YACrE,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;SACjE;QAEO,+CAAiB,GAAjB;YACJ,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAChE;QAED,qCAAO,GAAP,UAAQ,KAAa,EAAE,IAA4C;YAC/D,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC;SAC3B;;;0IAlJQ,mBAAmB,kBAoChB,oBAAoB,aACpB,iBAAiB;mHArCpB,mBAAmB,qkBCpChC,85JAmHA;qHD/Ea,mBAAmB;sBAJ/BC,YAAS;uBAAC;wBACP,QAAQ,EAAE,aAAa;wBACvB,WAAW,EAAE,8BAA8B;qBAC9C;;;kCAqCQN,SAAM;mCAAC,oBAAoB;;kCAC3BA,SAAM;mCAAC,iBAAiB;;6BAhCpB,MAAM;0BAAdC,QAAK;oBAEG,KAAK;0BAAbA,QAAK;oBAGF,OAAO;0BADVA,QAAK;oBAUG,aAAa;0BAArBA,QAAK;oBAEG,aAAa;0BAArBA,QAAK;oBAEG,iBAAiB;0BAAzBA,QAAK;oBAEG,gBAAgB;0BAAxBA,QAAK;oBAEI,SAAS;0BAAlBC,SAAM;oBAEkC,kBAAkB;0BAA1DM,YAAS;2BAAC,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBAEL,eAAe;0BAAhDJ,cAAW;2BAAC,mBAAmB;oBAEQ,oBAAoB;0BAA3DA,cAAW;2BAAC,yBAAyB;;;IEhE1C,IAAM,eAAe,GAAG,EAAE,CAAC;IAE3B,IAAY,eAIX;IAJD,WAAY,eAAe;QACvB,qDAAI,CAAA;QACJ,qDAAI,CAAA;QACJ,uDAAK,CAAA;IACT,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;IAQD;QAiBI;YAFQ,iBAAY,GAAG,IAAIX,YAAO,EAAQ,CAAC;SAE3B;QAER,6CAAmB,GAAnB;YAAA,iBAgBP;YAfGgB,UAAK,CAACC,cAAS,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAEA,cAAS,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;iBAClF,IAAI,CAACZ,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAClC,SAAS,CAAC,UAAC,KAAK;gBACb,KAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aAC1B,CAAC,CAAC;YAEPY,cAAS,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;iBAClC,IAAI,CAACC,mBAAS,EAAE,EAAEb,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAC/C,SAAS,CAAC,UAAC,KAAK;;;;;;aAMhB,CAAC,CAAC;SACV;QAEO,oCAAU,GAAV,UAAW,KAAY;YAC3B,IAAM,MAAM,GAAG,KAAK,CAAC,aAA4B,CAAC;YAClD,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;YAEhE,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;SACnD;QAEO,kDAAwB,GAAxB;YACJ,IAAM,SAAS,GAAG,IAAI,CAAC,aAA4B,CAAC;YACpDY,cAAS,CAAC,SAAS,EAAE,OAAO,CAAC;iBACxB,IAAI,CAACZ,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAClC,SAAS,CAAC,UAAC,KAAiB;gBACzB,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;gBAC3B,IAAI,CAAC,KAAK,EAAE;oBACR,OAAO;iBACV;gBACD,IACI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,WAAW,KAAK,SAAS,CAAC,WAAW,IAAI,KAAK,GAAG,CAAC;qBACnF,SAAS,CAAC,UAAU,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,EAC3C;oBACE,KAAK,CAAC,cAAc,EAAE,CAAC;iBAC1B;aACJ,CAAC,CAAC;SACV;QAED,oCAAU,GAAV,UAAW,IAA6B;YACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;YAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACnC;QAED,yCAAe,GAAf;YAAA,iBAsBC;YArBG,OAAOY,cAAS,CAAQ,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,IAAI,CACtDE,aAAG,CAAC,cAAM,OAAA,KAAI,CAAC,aAAa,CAAC,UAAU,GAAA,CAAC,EACxCC,kBAAQ,EAAE,EACVD,aAAG,CAAC,UAAC,EAAmB;oBAAnB,KAAA,aAAmB,EAAlB,QAAQ,QAAA,EAAE,OAAO,QAAA;gBACnB,IAAM,KAAK,GAAgB;oBACvB,MAAM,EAAE,KAAI,CAAC,aAAa;oBAC1B,SAAS,EAAE,eAAe,CAAC,IAAI;iBAClC,CAAC;gBACF,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,EAAE;oBACxB,IAAI,KAAI,CAAC,aAAa,CAAC,UAAU,GAAG,eAAe,IAAI,KAAI,CAAC,aAAa,CAAC,UAAU,GAAG,CAAC,EAAE;wBACtF,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC;qBAC1C;iBACJ;gBACD,IAAI,OAAO,GAAG,QAAQ,GAAG,CAAC,EAAE;oBACxB,IAAI,KAAI,CAAC,aAAa,CAAC,WAAW,GAAG,KAAI,CAAC,aAAa,CAAC,WAAW,GAAG,KAAI,CAAC,aAAa,CAAC,UAAU,GAAG,eAAe,EAAE;wBACnH,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;qBAC3C;iBACJ;gBACD,OAAO,KAAK,CAAC;aAChB,CAAC,CACL,CAAC;SACL;QAED,mCAAS,GAAT;YACI,OAAOF,cAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAACI,mBAAS,CAAC,GAAG,CAAC,CAAC,CAAC;SAC3D;QAED,6CAAmB,GAAnB,UAAoB,IAAY;YAC5B,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAChB,IAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC7D,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,UAAU,GAAG,CAAC,CAAC;gBAC9E,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;aACnE;SACJ;QAED,qCAAW,GAAX;YACI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;SAChC;;;sIAjHQ,eAAe;0IAAf,eAAe;qHAAf,eAAe;sBAD3BC,aAAU;;;ICXX;QAqBI;YApBA,gBAAW,GAAG,IAAIvB,eAAY,EAAkB,CAAC;YAEjD,cAAS,GAAG,IAAIA,eAAY,EAAkB,CAAC;YAE/C,cAAS,GAAG,IAAIA,eAAY,EAAkB,CAAC;YAE/C,oBAAe,GAAG,IAAIA,eAAY,EAAsB,CAAC;YAEzD,oBAAe,GAAG,IAAIA,eAAY,EAAsB,CAAC;YAEzD,kBAAa,GAAG,IAAIA,eAAY,EAAsB,CAAC;SAUvC;QAEhB,gDAAmB,GAAnB,UAAoB,IAAkB,EAAE,IAAuB;YAC3D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;YACnE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,KAAK,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC;YACnE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACtB,MAAM,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM;gBACzD,MAAM,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM;aAC5D,CAAC,CAAC;SACN;QAED,gDAAmB,GAAnB,UAAoB,IAAuB;YACvC,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE;gBAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;iBAAM;gBACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;gBACtB,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;gBAClC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;aACrC,CAAC,CAAC;SACN;QAED,+CAAkB,GAAlB;YACI,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE;gBAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;iBAAM;gBACH,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;SACJ;QAED,8CAAiB,GAAjB;YACI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;gBAC5C,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;gBAEpD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACpB,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;oBAClC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM;iBACrC,CAAC,CAAC;aACN;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;;;yIAlEQ,kBAAkB;6IAAlB,kBAAkB;qHAAlB,kBAAkB;sBAD9BuB,aAAU;;;;QCGP;SAAgB;QAER,2CAAe,GAAf,UAAgB,UAAmB;;YACvC,IAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;;gBACvE,KAAyB,IAAA,gBAAA,SAAA,WAAW,CAAA,wCAAA,iEAAE;oBAAjC,IAAM,UAAU,wBAAA;oBACjB,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;iBAC1C;;;;;;;;;SACJ;QAEO,iDAAqB,GAArB,UAAsB,IAAiC;;YAC3D,IAAM,mBAAmB,GAAG;gBACxB,MAAM;gBACN,OAAO;gBACP,WAAW;gBACX,QAAQ;gBACR,MAAM;gBACN,aAAa;gBACb,kBAAkB;gBAClB,iBAAiB;gBACjB,cAAc;aACjB,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACb,OAAO;aACV;YACD,IAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;;gBACtC,KAAgC,IAAA,wBAAA,SAAA,mBAAmB,CAAA,wDAAA,yFAAE;oBAAhD,IAAM,iBAAiB,gCAAA;oBACxB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;iBAC7D;;;;;;;;;;gBACD,KAAoB,IAAA,KAAA,SAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA,gBAAA,4BAAE;oBAA5C,IAAM,KAAK,WAAA;oBACZ,IAAI,CAAC,qBAAqB,CAAC,KAAsB,CAAC,CAAC;iBACtD;;;;;;;;;SACJ;QAED,oCAAQ,GAAR,UAAS,IAA6B;YAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAgB,CAAC;SACnG;QAED,iCAAK,GAAL,UAAM,IAAyB,EAAE,kBAA2B;YAA5D,iBAuDC;YAvDK,qBAAA,EAAA,iBAAyB;YAC3B,IAAM,IAAI,GAAG,IAAI,CAAC,IAAmB,CAAC;YAEtC,IAAM,aAAa,GAAG,IAAI,CAAC,aAA4B,CAAC;;YAExD,IAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;;YAGpC,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;YAEhGC,+BAAW,CAAC,IAAI,EAAE;gBACd,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,IAAI;gBAChB,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,WAAW;gBACnB,cAAc,EAAE,UAAC,OAAO;oBACpB,IAAI,kBAAkB,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;wBACtE,OAAO,IAAI,CAAC;qBACf;oBACD,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE;wBAC5D,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAED,OAAO,EAAE,UAAC,aAAuB;oBAC7B,IAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;oBAClC,IAAM,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,MAAI,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAG,CAAgB,CAAC;oBACxG,IAAM,sBAAsB,GAAG,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAgB,CAAC;oBAC9F,IAAM,oBAAoB,GAAG,aAAa,CAAC,aAAa,CAAC,8BAA8B,CAAgB,CAAC;oBACxG,IAAM,iBAAiB,GAAG,aAAa,CAAC,aAAa,CAAC,2BAA2B,CAAgB,CAAC;;oBAGlG,aAAa,CAAC,KAAK,CAAC,KAAK,GAAM,UAAU,OAAI,CAAC;oBAC9C,aAAa,CAAC,KAAK,CAAC,MAAM,GAAM,WAAW,OAAI,CAAC;oBAChD,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;oBACvC,sBAAsB,CAAC,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC;oBACtD,oBAAoB,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAG,WAAa,CAAC,CAAC;oBAC9D,oBAAoB,CAAC,YAAY,CAAC,OAAO,EAAE,yBAAyB,CAAC,CAAC;oBAEtE,IAAI,iBAAiB,EAAE;wBACnB,iBAAiB,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAG,WAAa,CAAC,CAAC;wBAC3D,iBAAiB,CAAC,YAAY,CAAC,OAAO,EAAE,aAAW,WAAW,OAAI,CAAC,CAAC;qBACvE;;oBAGD,KAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;iBACvC;aACJ,CAAC,CAAC,IAAI,CAAC,UAAC,MAAyB;gBAC9B,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBACzC,IAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC9C,IAAI,CAAC,QAAQ,GAAM,IAAI,SAAM,CAAC;gBAC9B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;gBACpB,IAAI,CAAC,KAAK,EAAE,CAAC;aAChB,CAAC,CAAC;SACN;;;wIAlGQ,iBAAiB;4IAAjB,iBAAiB;qHAAjB,iBAAiB;sBAD7BD,aAAU;;;ICkBX,IAAM,UAAU,GAAG,IAAI,CAAC;IAMxB;QAqBI,gCACsC,UAAsB,EAChD,MAAc,EACd,UAAmC;YAFT,eAAU,GAAV,UAAU,CAAY;YAChD,WAAM,GAAN,MAAM,CAAQ;YACd,eAAU,GAAV,UAAU,CAAyB;YAnBvC,iBAAY,GAAG,IAAItB,YAAO,EAAE,CAAC;YAErC,iBAAY,GAAG,YAAY,CAAC;YAE5B,eAAU,GAAG,UAAU,CAAC;YAExB,gBAAW,GAAG,WAAW,CAAC;YAE1B,eAAU,GAAG,UAAU,CAAC;YAExB,sBAAiB,GAAG,iBAAiB,CAAC;YAEtC,cAAS,GAAGb,qBAAa,CAAC;YAEmB,cAAS,GAAG,IAAI,CAAC;SAM1D;QAxBJ,sBAAI,wCAAI;iBAAR;gBACI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;aAC/B;;;WAAA;QAwBD,8CAAa,GAAb;YACI,IAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,IAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC;YACxC,IAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAgB,CAAC;YACxH,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAgB,CAAC;YAClG,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAgB,CAAC;YAElG,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE;gBACb,IAAI,IAAI,EAAE;oBACN,IAAI,CAAC,KAAK,CAAC,IAAI,GAAM,CAAC,GAAG,UAAU,GAAG,CAAC,OAAI,CAAC;oBAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,GAAM,YAAY,GAAG,WAAW,OAAI,CAAC;oBACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;iBACrC;gBACD,IAAI,IAAI,EAAE;oBACN,IAAI,CAAC,KAAK,CAAC,IAAI,GAAM,CAAC,OAAI,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,GAAM,YAAY,OAAI,CAAC;oBACrC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAM,CAAC,UAAU,OAAI,CAAC;iBAC1C;aACJ;iBAAM;gBACH,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;aACnC;SACJ;QAED,yCAAQ,GAAR;YAAA,iBAQC;YAPG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAACgB,cAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzCa,UAAK,CAAC,KAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;qBACzD,IAAI,CAACX,mBAAS,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC;qBAClC,SAAS,CAAC;oBACP,KAAI,CAAC,aAAa,EAAE,CAAC;iBACxB,CAAC,CAAC;aACV,CAAC,CAAC;SACN;QAED,gDAAe,GAAf,eAAoB;QAEpB,4CAAW,GAAX,UAAY,OAAsB,KAAU;QAE5C,wCAAO,GAAP,UAAQ,KAAa,EAAE,KAAqB;YACxC,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC;SAC9B;QAED,4CAAW,GAAX;YACI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;SAChC;;;6IAvEQ,sBAAsB,kBAsBnB,iBAAiB;sHAtBpB,sBAAsB,0KC3BnC,o/DAoDA;qHDzBa,sBAAsB;sBAJlCQ,YAAS;uBAAC;wBACP,QAAQ,EAAE,wBAAwB;wBAClC,WAAW,EAAE,2BAA2B;qBAC3C;;;kCAuBQN,SAAM;mCAAC,iBAAiB;;6BAHgB,SAAS;0BAArDI,cAAW;2BAAC,8BAA8B;;;IExC/C;QAGI;YAF0C,kBAAa,GAAG,IAAI,CAAC;SAE/C;QAEhB,6CAAQ,GAAR,eAAa;;;iJALJ,0BAA0B;0HAA1B,0BAA0B,mJCNvC,uJAMA;qHDAa,0BAA0B;sBAJtCE,YAAS;uBAAC;wBACP,QAAQ,EAAE,qBAAqB;wBAC/B,WAAW,EAAE,gCAAgC;qBAChD;8EAE6C,aAAa;0BAAtDF,cAAW;2BAAC,2BAA2B;;;;QEiCxC,+BACY,UAAmC,EACnC,MAAc,EACd,GAAoB,EACrB,aAAiC,EACL,UAAsB,EACrC,YAA+B;YAL3C,eAAU,GAAV,UAAU,CAAyB;YACnC,WAAM,GAAN,MAAM,CAAQ;YACd,QAAG,GAAH,GAAG,CAAiB;YACrB,kBAAa,GAAb,aAAa,CAAoB;YACL,eAAU,GAAV,UAAU,CAAY;YACrC,iBAAY,GAAZ,YAAY,CAAmB;YAlB3B,eAAU,GAAG,IAAI,CAAC;YAMtC,iBAAY,GAAG,IAAIX,YAAO,EAAE,CAAC;YAcjC,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,aAAa,CAAC;SACjD;QAbD,sBAAY,uCAAI;iBAAhB;gBACI,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;aAC/B;;;WAAA;QAaD,wCAAQ,GAAR;YAAA,iBAeC;YAdG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAACG,cAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzC,KAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;gBACrC,IAAI,KAAI,CAAC,YAAY,EAAE;oBACnB,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAI,CAAC,UAAU,CAAC,CAAC;iBAC/C;gBACD,KAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,KAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,KAAI,CAAC,eAAe,EAAE,CAAC;;gBAEvB,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;gBAClD,KAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAACe,mBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;oBACvD,KAAI,CAAC,aAAa,EAAE,CAAC;iBACxB,CAAC,CAAC;aACN,CAAC,CAAC;SACN;QAEO,+CAAe,GAAf;YAAA,iBA0BP;YAzBG,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE;gBACtC,OAAO;aACV;YACD,IAAI,CAAC,GAAG;iBACH,eAAe,EAAE;iBACjB,IAAI,CAACb,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAClC,SAAS,CAAC,UAAC,KAAK;gBACb,IAAI,KAAK,CAAC,SAAS,KAAK,eAAe,CAAC,IAAI,EAAE;oBAC1C,IAAM,OAAK,GAAG,KAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACvC,IAAI,OAAK,EAAE;wBACP,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,KAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAK,CAAC,KAAK,EAAE,OAAK,CAAC,GAAG,CAAC,CAAC;wBAC/E,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC;4BACZ,KAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAK,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;yBACzG,CAAC,CAAC;qBACN;iBACJ;gBACD,IAAI,KAAK,CAAC,SAAS,KAAK,eAAe,CAAC,KAAK,EAAE;oBAC3C,IAAM,OAAK,GAAG,KAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;oBACrC,IAAI,OAAK,EAAE;wBACP,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC;4BACZ,KAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAK,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,OAAK,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;yBACzG,CAAC,CAAC;qBACN;iBACJ;aACJ,CAAC,CAAC;SACV;QAEO,2CAAW,GAAX;YAAA,iBAOP;YANG,IAAI,CAAC,GAAG;iBACH,SAAS,EAAE;iBACX,IAAI,CAACA,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAClC,SAAS,CAAC;gBACP,KAAI,CAAC,gBAAgB,EAAE,CAAC;aAC3B,CAAC,CAAC;SACV;QAEO,gDAAgB,GAAhB;YACJ,IAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAA4B,CAAC;YAC5D,IAAM,MAAM,GAAG,aAAa,CAAC,YAAY,CAAC;YAC1C,IAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;YAChD,IAAI,YAAY,GAAG,MAAM,EAAE;gBACvB,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,oBAAoB,CAAC;aAClE;iBAAM;gBACH,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,OAAO,CAAC;aACrD;SACJ;QAEO,6CAAa,GAAb;YACJ,IAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;SACnC;;;4IA9FQ,qBAAqB,mJAoBlB,iBAAiB;qHApBpB,qBAAqB,yIAFnB,CAAC,eAAe,EAAE,kBAAkB,CAAC,0QCvBpD,sbAYA;qHDaa,qBAAqB;sBALjCQ,YAAS;uBAAC;wBACP,QAAQ,EAAE,gBAAgB;wBAC1B,WAAW,EAAE,uBAAuB;wBACpC,SAAS,EAAE,CAAC,eAAe,EAAE,kBAAkB,CAAC;qBACnD;;;kCAqBQN,SAAM;mCAAC,iBAAiB;;kCACxBiB,WAAQ;;6BApBJ,SAAS;0BAAjBhB,QAAK;oBAEsB,UAAU;0BAArCG,cAAW;2BAAC,aAAa;oBAEsB,YAAY;0BAA3DD,eAAY;2BAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;oBAEE,YAAY;0BAA3DA,eAAY;2BAAC,cAAc,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;IE5BlD;QACI;SAAgB;QAQhB,oCAAY,GAAZ,UAAa,MAAqB,EAAE,MAAqB,EAAE,IAAmB;YAC1E,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;gBAChE,IAAI,IAAI,GAAG,EAAE,CAAC;gBAEd,QAAQ,IAAI;oBACR,KAAK,aAAa,CAAC,EAAE;wBACjB,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC3C,MAAM;oBACV,KAAK,aAAa,CAAC,EAAE;wBACjB,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBAC3C,MAAM;oBAEV,KAAK,aAAa,CAAC,EAAE;wBACjB,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;wBACtD,MAAM;oBACV;wBACI,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;iBACvD;gBAED,OAAO,IAAI,CAAC;aACf;SACJ;;;oIA9BiB,aAAa;wIAAb,aAAa;qHAAb,aAAa;sBADlCY,aAAU;;;ICEX,IAAa,kBAAkB;QAAS,sCAAa;QAGjD,4BAA+C,UAAsB;YAArE,YACI,iBAAO,SACV;YAF8C,gBAAU,GAAV,UAAU,CAAY;YAF7D,kBAAY,GAAG,CAAC,GAAG,CAAC;;SAI3B;QAED,2CAAc,GAAd,UAAe,MAAqB,EAAE,MAAqB;YACvD,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,IAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YAErC,IAAI,EAAE,GAAG,EAAE,EAAE;gBACT,OAAO,OAAK,EAAE,SAAI,EAAE,gCACR,MAAM,SAAI,MAAM,aAAQ,QAAQ,SAAI,EAAE,SAAI,EAAE,gCAC5C,EAAE,SAAI,EAAI,CAAC;aAC1B;iBAAM;gBACH,OAAO,OAAK,EAAE,SAAI,EAAE,gCACR,EAAE,SAAI,EAAE,gCACR,MAAM,SAAI,MAAM,aAAQ,QAAQ,SAAI,EAAE,SAAI,EAAI,CAAC;aAC9D;SACJ;QACD,2CAAc,GAAd,UAAe,MAAqB,EAAE,MAAqB;YACvD,IAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,IAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,IAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,IAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,IAAM,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,EAAE,GAAG,EAAE,EAAE;gBACT,OAAO,OAAK,EAAE,SAAI,EAAE,gCACR,EAAE,SAAI,EAAE,gCACR,MAAM,SAAI,MAAM,aAAQ,QAAQ,SAAI,EAAE,SAAI,EAAI,CAAC;aAC9D;iBAAM;gBACH,OAAO,OAAK,EAAE,SAAI,EAAE,gCACR,MAAM,SAAI,MAAM,aAAQ,QAAQ,SAAI,EAAE,SAAI,EAAE,gCAC5C,EAAE,SAAI,EAAI,CAAC;aAC1B;SACJ;QAED,gDAAmB,GAAnB,UAAoB,MAAqB,EAAE,MAAqB,EAAE,IAAoB;YAClF,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAEzB,IAAI,IAAI,KAAK,aAAa,CAAC,EAAE,EAAE;gBAC3B,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpB,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrB,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;aACxB;YAED,IAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC;YAEjD,IAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YACnB,IAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;YACnB,IAAM,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAC9B,IAAM,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAE9B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;YACrD,IAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;YAEvD,IAAI,EAAE,IAAI,EAAE,EAAE;gBACV,IAAI,EAAE,GAAG,EAAE,EAAE;oBACT,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE;wBACxD,OAAO,OAAK,EAAE,SAAI,EAAE,iCAChB,EAAE,GAAG,QAAQ,UAAI,EAAE,UAAI,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,UAAI,EAAE,UAAI,EAAE,GAAG,QAAQ,iCAC5E,EAAE,UAAI,EAAE,GAAG,QAAQ,kCACnB,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,YAAK,EAAE,GAAG,QAAQ,UAAI,EAAE,SAAI,EAAE,SAAI,EAAI,CAAC;qBAC5E;yBAAM;wBACH,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;wBAC7C,OAAO,OAAK,EAAE,SAAI,EAAE,iCAChB,EAAE,GAAG,QAAQ,UAAI,EAAE,UAAI,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,UAAI,OAAO,SAAI,OAAO,iCAC3E,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,UAAI,EAAE,SAAI,EAAE,SAAI,EAAE,2BACpE,CAAC;qBACL;iBACJ;qBAAM;oBACH,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE;wBACxD,OAAO,OAAK,EAAE,SAAI,EAAE,iCAChB,EAAE,GAAG,QAAQ,UAAI,EAAE,UAAI,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,UAAI,EAAE,UAAI,EAAE,GAAG,QAAQ,iCAC5E,EAAE,UAAI,EAAE,GAAG,QAAQ,kCACnB,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,UAAI,EAAE,SAAI,EAAE,SAAI,EAAE,2BACpE,CAAC;qBACL;yBAAM;wBACH,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;wBAC7C,OAAO,OAAK,EAAE,SAAI,EAAE,iCAChB,EAAE,GAAG,QAAQ,UAAI,EAAE,UAAI,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,UAAI,OAAO,SAAI,OAAO,iCAC3E,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,WAAI,EAAE,GAAG,QAAQ,UAAI,EAAE,SAAI,EAAE,SAAI,EAAE,2BACpE,CAAC;qBACL;iBACJ;aACJ;iBAAM,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE;gBACtB,IAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;gBACrC,IAAI,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;gBACjC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBAExC,OAAO,OAAK,EAAE,SAAI,EAAE,iCACR,EAAE,GAAG,SAAS,UAAI,EAAE,gCACpB,MAAM,SAAI,MAAM,cAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,WAAI,EAAE,GAAG,SAAS,WAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,kCACxG,EAAE,GAAG,SAAS,WAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,iCAC7D,MAAM,SAAI,MAAM,cAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,WAAI,EAAE,GAAG,SAAS,UAAI,EAAE,gCAC/D,EAAE,SAAI,EAAE,2BACX,CAAC;aACb;YACD,OAAO,OAAK,EAAE,SAAI,EAAE,WAAM,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,EAAI,CAAC;SAChE;iCACJ;KAAA,CA9GuC,aAAa,EA8GpD,CAAA;IA9GY,kBAAkB;QAGd,WAAAf,SAAM,CAAC,iBAAiB,CAAC,CAAA;OAH7B,kBAAkB,CA8G9B;;IC9GD;QAAuC,qCAAa;QAGhD;YAAA,YACI,iBAAO,SACV;YAJO,iBAAW,GAAG,EAAE,CAAC;;SAIxB;QAED,0CAAc,GAAd,UAAe,MAAqB,EAAE,MAAqB;YACvD,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,IAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAC3B,IAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;YACjC,IAAM,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YAE9B,OAAO,OAAK,EAAE,SAAI,EAAE,qCACA,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,UAAI,EAAE,qCAC3C,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,UAAI,EAAE,oCAC3C,EAAE,SAAI,EAAI,CAAC;SAClC;QAED,0CAAc,GAAd,UAAe,MAAqB,EAAE,MAAqB;YACvD,IAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,IAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,IAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,IAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1B,IAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;YAEjC,OAAO,OAAK,EAAE,SAAI,EAAE,qCACA,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,UAAI,EAAE,qCAC3C,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,UAAI,EAAE,oCAC3C,EAAE,SAAI,EAAI,CAAC;SAClC;QAED,+CAAmB,GAAnB,UAAoB,MAAqB,EAAE,MAAqB,EAAE,IAAoB;YAClF,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxB,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,IAAI,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACzB,IAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;YAEjC,IAAI,IAAI,KAAK,aAAa,CAAC,EAAE,EAAE;gBAC3B,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpB,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpB,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrB,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;aACxB;YAED,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBACf,OAAO,OAAK,EAAE,SAAI,EAAE,qCACJ,EAAE,GAAG,OAAO,UAAI,EAAE,qCAClB,EAAE,GAAG,OAAO,UAAI,EAAE,oCAClB,EAAE,SAAI,EAAI,CAAC;aAC9B;iBAAM;gBACH,OAAO,OAAK,EAAE,SAAI,EAAE,qCACJ,EAAE,GAAG,OAAO,UAAI,EAAE,qCAClB,EAAE,GAAG,OAAO,WAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,sCACrD,EAAE,GAAG,OAAO,WAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,sCACrD,EAAE,GAAG,OAAO,UAAI,EAAE,oCAClB,EAAE,SAAI,EAAI,CAAC;aAC9B;SACJ;gCACJ;KA9DD,CAAuC,aAAa;;aCApC,mBAAmB,CAAC,IAAuB,EAAE,UAAuB;QAChF,QAAQ,IAAI;YACR,KAAK,iBAAiB,CAAC,KAAK;gBACxB,OAAO,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAC9C,KAAK,iBAAiB,CAAC,IAAI;gBACvB,OAAO,IAAI,iBAAiB,EAAE,CAAC;YACnC;gBACI,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACvD;IACL;;ICeA;QAuBI,6BACsC,UAAsB,EAChD,GAAsB,EACtB,UAAsB,EACtB,kBAAsC;YAHZ,eAAU,GAAV,UAAU,CAAY;YAChD,QAAG,GAAH,GAAG,CAAmB;YACtB,eAAU,GAAV,UAAU,CAAY;YACtB,uBAAkB,GAAlB,kBAAkB,CAAoB;YA1BzC,WAAM,GAAyB,EAAE,CAAC;YAElC,UAAK,GAAwB,EAAE,CAAC;YAE/B,cAAS,GAAG,IAAIR,eAAY,EAAuB,CAAC;YAEvD,UAAK,GAAmB,EAAE,CAAC;YAE3B,mBAAc,GAAG,aAAa,CAAC;YAE/B,cAAS,GAAG,KAAK,CAAC;YAEjB,cAAS,GAAoB,EAAE,CAAC;YAEhC,gBAAW,GAAG,IAAI,CAAC;YAInB,iBAAY,GAAG,IAAIC,YAAO,EAAE,CAAC;YAEK,sBAAiB,GAAG,IAAI,CAAC;SAO/D;QAEJ,sCAAQ,GAAR;YAAA,iBAwBC;YAvBG,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAE/F,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC;YACvD,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YAEzB,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAACK,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7E,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;aAC7D,CAAC,CAAC;YAEHW,UAAK,CACD,IAAI,CAAC,UAAU,CAAC,UAAU,EAC1B,IAAI,CAAC,UAAU,CAAC,YAAY,EAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAC3B,IAAI,CAAC,UAAU,CAAC,SAAS,EACzB,IAAI,CAAC,UAAU,CAAC,aAAa,CAChC;iBACI,IAAI,CAACX,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,EAAED,cAAI,CAAC,CAAC,CAAC,EAAEqB,sBAAY,CAAC,CAAC,CAAC,CAAC;iBAC5D,SAAS,CAAC;gBACP,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;gBAC3D,KAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,KAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAC5B,CAAC,CAAC;SACV;QAED,yCAAW,GAAX;YACI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,UAAU,EAAE,CAAC;aACrB;SACJ;QAEO,iDAAmB,GAAnB;YAAA,iBA6CP;YA5CG,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;YACrD,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;YACnD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,IAAI,SAAO,GAAG,CAAC,CAAC;gBAChB,IAAI,UAAQ,GAAG,CAAC,CAAC;gBACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAC,KAAK;oBACtB,UAAQ,EAAE,CAAC;oBACX,IAAI,KAAK,CAAC,QAAQ,EAAE;wBAChB,IAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBAC1C,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,SAAS;4BAC1B,IAAM,CAAC,GAAG,CAAC,UAAQ,GAAG,SAAO,GAAG,SAAS,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;4BACtF,KAAI,CAAC,SAAS,CAAC,IAAI,iCACZ,IAAI,KACP,MAAM,EAAE;oCACJ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;oCACd,CAAC,GAAA;iCACJ,EACD,KAAK,EAAE;oCACH,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;oCAChC,CAAC,GAAA;iCACJ,IACH,CAAC;yBACN,CAAC,CAAC;wBACH,SAAO,IAAI,KAAK,CAAC,MAAM,CAAC;qBAC3B;iBACJ,CAAC,CAAC;aACN;iBAAM;gBACH,IAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,SAAS;oBAC1B,IAAM,CAAC,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,GAAG,CAAC,CAAC;oBAC/D,KAAI,CAAC,SAAS,CAAC,IAAI,iCACZ,IAAI,KACP,MAAM,EAAE;4BACJ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;4BACd,CAAC,GAAA;yBACJ,EACD,KAAK,EAAE;4BACH,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK;4BAChC,CAAC,GAAA;yBACJ,IACH,CAAC;iBACN,CAAC,CAAC;aACN;SACJ;QAED,wCAAU,GAAV;YAAA,iBAuBC;YAtBG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,MAAM;gBAC1B,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;oBAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI;wBACtB,IAAM,MAAM,GAAG,KAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,GAAA,CAAC,CAAC;wBACpE,IAAI,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;4BACtD,IAAI,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;4BAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gCACjF,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;6BAC9B;4BACD,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gCACZ,IAAI,EAAE,KAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;gCAC3D,MAAM,EAAE,MAAM,CAAC,MAAM;gCACrB,MAAM,EAAE,MAAM,CAAC,MAAM;gCACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gCACf,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK;6BAC7B,CAAC,CAAC;yBACN;qBACJ,CAAC,CAAC;iBACN;aACJ,CAAC,CAAC;SACN;QAED,qCAAO,GAAP,UAAQ,KAAa;YACjB,OAAO,KAAK,CAAC;SAChB;QAED,yCAAW,GAAX,UAAY,KAAiB,EAAE,IAAkB;YAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;gBAChB,KAAK,OAAA;gBACL,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;aACtB,CAAC,CAAC;SACN;QAED,4CAAc,GAAd,UAAe,IAAkB;YAC7B,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,OAAO,EAAE;gBACnC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC;aAClC;SACJ;QAED,4CAAc,GAAd,UAAe,IAAkB;YAC7B,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,MAAM,EAAE;gBAClC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC;aACnC;SACJ;QAED,yCAAW,GAAX;YACI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;SAChC;;;0IAjKQ,mBAAmB,kBAwBhB,iBAAiB;mHAxBpB,mBAAmB,+PC7BhC,2oDA8CA;qHDjBa,mBAAmB;sBAJ/BZ,YAAS;uBAAC;wBACP,QAAQ,EAAE,qBAAqB;wBAC/B,WAAW,EAAE,wBAAwB;qBACxC;;;kCAyBQN,SAAM;mCAAC,iBAAiB;;6BAvBpB,MAAM;0BAAdC,QAAK;oBAEG,KAAK;0BAAbA,QAAK;oBAEI,SAAS;0BAAlBC,SAAM;oBAgBmC,iBAAiB;0BAA1DE,cAAW;2BAAC,2BAA2B;;;;QEjCxC,wBAAsB,UAAmC,EAAuC,UAAsB;YAAhG,eAAU,GAAV,UAAU,CAAyB;YAAuC,eAAU,GAAV,UAAU,CAAY;YAJ/G,gBAAW,GAAG,IAAI,CAAC;YAEnB,iBAAY,GAAG,IAAIX,YAAO,EAAE,CAAC;SAEsF;QAE1H,+BAAM,GAAN;YAAA,iBAKC;YAJG,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAACK,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzD,KAAI,CAAC,YAAY,EAAE,CAAC;aACvB,CAAC,CAAC;SACN;QAED,kCAAS,GAAT;YACI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;SACJ;QAEO,qCAAY,GAAZ;YACJ,IAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAClD,WAAW,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YACjD,WAAW,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;YAChD,WAAW,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YACtD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAKjB,qBAAa,CAAC,GAAG,EAAE;gBACtC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;aACtE;iBAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAKA,qBAAa,CAAC,KAAK,EAAE;gBAC/C,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;aACjD;iBAAM;aACN;SACJ;QAED,kCAAS,GAAT;YACI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;SAChC;;;qIAxCiB,cAAc,uDASmC,iBAAiB;8GATlE,cAAc;qHAAd,cAAc;sBADnCkB,YAAS;;;kCAUsDC,SAAM;mCAAC,iBAAiB;;6BAR3E,QAAQ;0BAAhBC,QAAK;oBAEG,IAAI;0BAAZA,QAAK;;;;QCHkC,0CAAc;QAGtD,gCAAY,UAAsC,EAA6B,UAAsB;YAArG,YACI,kBAAM,UAAU,EAAE,UAAU,CAAC,SAChC;YAJiC,qBAAe,GAAG,IAAI,CAAC;;SAIxD;QAED,yCAAQ,GAAR;YACI,iBAAM,MAAM,WAAE,CAAC;SAClB;QAED,4CAAW,GAAX;YACI,iBAAM,SAAS,WAAE,CAAC;SACrB;QAED,4CAAW,GAAX;YACI,iBAAM,SAAS,WAAE,CAAC;SACrB;;KAjBL,CAA4C,cAAc;6IAA7C,sBAAsB,uDAG6B,iBAAiB;sHAHpE,sBAAsB,iMCRnC,udAQA;qHDAa,sBAAsB;sBAJlCK,YAAS;uBAAC;wBACP,QAAQ,EAAE,6BAA6B;wBACvC,WAAW,EAAE,wBAAwB;qBACxC;;;kCAIwDN,SAAM;mCAAC,iBAAiB;;6BAF3C,eAAe;0BAAhDI,cAAW;2BAAC,mBAAmB;;;IECpC,IAAM,YAAY,GAAG,EAAE,CAAC;IACxB,IAAM,WAAW,GAAG,kBAAkB,CAAC;IACvC,IAAM,aAAa,GAAG,qBAAqB,CAAC;IAE5C,SAAS,gBAAgB,CAAC,aAAqB,EAAE,SAAiB;QAC9D,IAAM,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,aAAa,CAAC,CAAC;QACtF,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD;QAuBI,sBAAoB,QAAkB,EAAU,GAAoB,EAAU,aAAiC;YAA3F,aAAQ,GAAR,QAAQ,CAAU;YAAU,QAAG,GAAH,GAAG,CAAiB;YAAU,kBAAa,GAAb,aAAa,CAAoB;YAJvG,aAAQ,GAAc,EAAE,CAAC;YAEzB,aAAQ,GAAG,IAAIX,YAAO,EAAE,CAAC;SAEkF;QAhBnH,sBAAY,sCAAY;iBAAxB;gBACI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;aAC7D;;;WAAA;QAED,sBAAY,0CAAgB;iBAA5B;gBACI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;aAC3D;;;WAAA;QAYO,wCAAiB,GAAjB;YAAA,iBAwBP;YAvBGiB,cAAS,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;iBACnC,IAAI,CAACZ,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC;gBACP,IAAI,KAAI,CAAC,aAAa,CAAC,cAAc,IAAI,KAAI,CAAC,aAAa,CAAC,cAAc,KAAK,KAAI,CAAC,IAAI,CAAC,EAAE,EAAE;oBACzF,IAAI,KAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;wBACpB,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;wBAC7C,KAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC;qBACrD;iBACJ;qBAAM;oBACH,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;iBAC9C;aACJ,CAAC,CAAC;YAEPY,cAAS,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;iBACnC,IAAI,CAACZ,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC;gBACP,IAAI,CAAC,KAAI,CAAC,aAAa,CAAC,cAAc,EAAE;oBACpC,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;iBACjD;qBAAM;oBACH,KAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;iBAC3C;gBACD,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;aACnD,CAAC,CAAC;SACV;QAEO,oCAAa,GAAb;YAAA,iBA+BP;YA9BG,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1D,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC;YACvB,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;gBACtB,KAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,KAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;aACnE,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,UAAC,KAAK;gBAC1B,IAAM,QAAQ,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACrD,IAAM,WAAW,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACnE,IAAM,aAAa,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;gBACxE,IAAM,QAAQ,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;gBACxE,IAAM,QAAQ,GAAG1C,gCAAwB,CAAC,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACtF,IAAI,KAAK,GAAG,WAAW,CAAC;gBACxB,IAAI,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACxC,IAAI,QAAQ,GAAG,aAAa,GAAG,QAAQ,GAAG,CAAC,EAAE;oBACzC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACzB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;iBACxB;gBACD,KAAI,CAAC,gBAAgB,CAAC,KAAI,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACnD,KAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACjC,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;aACjE,CAAC,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,UAAC,KAAK;gBAC1B,KAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,KAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACrB,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;aACjE,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;YAC1B,OAAO,OAAO,CAAC;SAClB;QAEO,2CAAoB,GAApB;YAAA,iBAsEP;YArEG,IAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAc,uBAAuB,CAAC,CAAC;YACvF,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE,KAAK;gBAC1B,IAAM,QAAQ,GAAG,KAAK,KAAK,CAAC,CAAC;gBAC7B,IAAM,OAAO,GAAG,KAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACjD,OAAO,CAAC,QAAQ,GAAG,GAAG,CAAC;gBACvB,OAAO,CAAC,mBAAmB,CAAC,KAAI,CAAC,GAAG,CAAC,IAAmB,CAAC,CAAC;gBAE1D,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;oBACtB,KAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,KAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;iBACnE,CAAC,CAAC;gBAEH,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,UAAC,KAAK;oBAC1B,IAAI,QAAQ,EAAE;wBACV,IAAM,CAAC,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;wBAC9C,IAAM,KAAK,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC3D,IAAI,KAAK,GAAG,YAAY,EAAE;4BACtB,KAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;4BAC3C,KAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC;4BACtC,KAAI,CAAC,gBAAgB,CACjB,KAAI,CAAC,UAAU,EACf,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EACvC,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,GAAG,KAAK,CAAC,CAClD,CAAC;4BACF,KAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;yBAChF;qBACJ;yBAAM;wBACH,IAAM,KAAK,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACtD,IAAI,KAAK,GAAG,YAAY,EAAE;4BACtB,KAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;4BAC3C,KAAI,CAAC,gBAAgB,CACjB,KAAI,CAAC,UAAU,EACf,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EACtD,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CACjE,CAAC;yBACL;wBACD,KAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;qBACzG;oBACD,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC9D,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;iBACxB,CAAC,CAAC;gBAEH,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,UAAC,KAAK;oBAC1B,IAAI,QAAQ,EAAE;wBACV,IAAM,KAAK,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;wBAC3D,IAAI,KAAK,GAAG,YAAY,EAAE;4BACtB,KAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;yBAClH;6BAAM;4BACH,KAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;yBACnE;qBACJ;yBAAM;wBACH,IAAM,KAAK,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACtD,IAAI,KAAK,GAAG,YAAY,EAAE;4BACtB,KAAI,CAAC,IAAI,CAAC,UAAU,CAChB,KAAI,CAAC,IAAI,CAAC,KAAK,EACf,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CACnG,CAAC;yBACL;6BAAM;4BACH,KAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;yBACrE;qBACJ;oBACD,KAAI,CAAC,mBAAmB,EAAE,CAAC;oBAC3B,KAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,KAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;iBACjE,CAAC,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC1B,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;SACnB;QAEO,4CAAqB,GAArB;YAAA,iBAsCP;YArCG,IAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAc,uBAAuB,CAAC,CAAC;YACvF,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM,EAAE,KAAK;gBAC1B,IAAM,QAAQ,GAAG,KAAK,KAAK,CAAC,CAAC;gBAC7B,IAAM,OAAO,GAAG,KAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBACjD,OAAO,CAAC,mBAAmB,CAAC,KAAI,CAAC,GAAG,CAAC,IAAmB,CAAC,CAAC;gBAC1D,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC;oBAC5B,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;oBACpC,IAAI,KAAI,CAAC,UAAU,EAAE;wBACjB,KAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;qBACnC;oBACD,KAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC9B,KAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EAAE,KAAI,CAAC,IAAI,CAAC,CAAC;iBACrF,CAAC,CAAC;gBAEH,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;oBACpB,IAAM,SAAS,GAAG,KAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAC/D,KAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAClE,KAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAClE,KAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAClE,KAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;iBACrE,CAAC,CAAC;gBAEH,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,UAAC,KAAK;oBAC1B,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACrB,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;oBAChC,IAAI,KAAI,CAAC,UAAU,EAAE;wBACjB,KAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;qBACpC;oBACD,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC9C,KAAI,CAAC,uBAAuB,EAAE,CAAC;oBAC/B,KAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;iBAC1C,CAAC,CAAC;gBAEH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC1B,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;SACnB;QAEO,uCAAgB,GAAhB,UAAiB,WAAwB,EAAE,KAAgB,EAAE,GAAc;YAC/E,IAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAgB,CAAC;YACvF,IAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAgB,CAAC;YAC/F,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACvD,IAAM,QAAQ,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;YACrD,IAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YACvE,IAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC7C,eAAe,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;YACzC,eAAe,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;YAC3C,eAAe,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1E,eAAe,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACtE,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YACxC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;SAC/C;QAEO,wCAAiB,GAAjB;YACJ,IAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAgB,CAAC;YACvF,IAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAgB,CAAC;YAC/F,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YACvC,mBAAmB,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;SAC9C;QAEO,wCAAiB,GAAjB;YACJ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;SAC7D;QAEO,0CAAmB,GAAnB;YACJ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;SAChE;QAEO,4CAAqB,GAArB,UAAsB,MAAmB,EAAE,QAAiB;YAChE,IAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACvD,IAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAClD,IAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAC7E,OAAO;gBACH,EAAE,EAAE,SAAS,CAAC,IAAI,IAAI,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,IAAI;gBACrE,EAAE,EAAE,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG;gBACvD,EAAE,EAAE,UAAU,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC;gBAC1D,EAAE,EAAE,UAAU,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC;aAC5D,CAAC;SACL;QAEO,6CAAsB,GAAtB;YACJ,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBACxB,IAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;gBACxE,IAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;gBAClE,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBACnC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;gBACtC,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC;aACtC;SACJ;QAEO,8CAAuB,GAAvB;YACJ,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC7C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAChC;SACJ;QAED,kCAAW,GAAX,UAAY,UAAsB,EAAE,IAAuB,EAAE,UAAsB;;YAC/E,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAE7B,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,gBAAgB,CAAC,EAAE;gBACjE,OAAO;aACV;iBAAM;gBACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;oBACpB,IAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrC,IAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;oBACpD,CAAA,KAAA,IAAI,CAAC,QAAQ,EAAC,IAAI,0BAAC,OAAO,UAAK,eAAe,IAAE;iBACnD;gBACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBACxB,IAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAClD,CAAA,KAAA,IAAI,CAAC,QAAQ,EAAC,IAAI,oCAAI,YAAY,IAAE;iBACvC;aACJ;SACJ;QAED,kCAAW,GAAX;YACI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,OAAO,IAAK,OAAA,OAAO,CAAC,OAAO,EAAE,GAAA,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;SAC5B;;;mIA3RQ,YAAY;uIAAZ,YAAY;qHAAZ,YAAY;sBADxB2D,aAAU;;;ICIX,SAAS,cAAc,CAAC,YAAoB,EAAE,KAAa,EAAE,IAAY;QACrE,OAAO,qBAAmB,YAAY,SAAI,KAAK,YAAO,IAAI,UAAO,CAAC;IACtE,CAAC;;QAOyC,wCAAc;QASpD,8BACY,aAAiC,EACjC,IAAkB,EAC1B,UAAsC,EACJ,UAAsB;YAJ5D,YAMI,kBAAM,UAAU,EAAE,UAAU,CAAC,SAChC;YANW,mBAAa,GAAb,aAAa,CAAoB;YACjC,UAAI,GAAJ,IAAI,CAAc;YAEQ,gBAAU,GAAV,UAAU,CAAY;YAZlD,cAAQ,GAAG,IAAIvB,eAAY,EAAsB,CAAC;YAI5B,oBAAc,GAAG,IAAI,CAAC;YAEtD,WAAK,GAAG,KAAK,CAAC;;SASb;QAED,uCAAQ,GAAR;YAAA,iBAKC;YAJG,iBAAM,MAAM,WAAE,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAACM,mBAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtE,KAAI,CAAC,oBAAoB,EAAE,CAAC;aAC/B,CAAC,CAAC;SACN;QAED,8CAAe,GAAf;YACI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACnE,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC/B;QAED,0CAAW,GAAX;YACI,iBAAM,SAAS,WAAE,CAAC;SACrB;QAED,yCAAU,GAAV,UAAW,KAAY;YACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,OAAA,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;SACzD;QAEO,mDAAoB,GAApB;YACJ,IAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;YAC5D,IAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,aAAa,CAAC;YAC/C,IAAM,KAAK,GAAiC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;YACrE,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBAChD,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;gBACzB,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;aAC3B;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACjD,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxF,KAAK,CAAC,YAAY,GAAG,uBAAuB,CAAC;aAChD;YACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;gBACjD,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;gBACzF,KAAK,CAAC,YAAY,GAAG,uBAAuB,CAAC;aAChD;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;gBACzB,IAAM,sBAAsB,GAAG,cAAc,CAAC,aAAa,CAAC,6BAA6B,CAAmB,CAAC;gBAC7G,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACxC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;gBACxB,sBAAsB,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;aACnD;YAED,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;gBACrB,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC3B,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;iBAC1C;aACJ;SACJ;QAED,8CAAe,GAAf,UAAgB,KAAY;YACxB,KAAK,CAAC,eAAe,EAAE,CAAC;SAC3B;QAED,0CAAW,GAAX;YACI,iBAAM,SAAS,WAAE,CAAC;SACrB;;KA1EL,CAA0C,cAAc;2IAA3C,oBAAoB,+GAajB,iBAAiB;oHAbpB,oBAAoB,yJAFlB,CAAC,YAAY,CAAC,+LC/B7B,+5BAiBA;qHDgBa,oBAAoB;sBALhCQ,YAAS;uBAAC;wBACP,QAAQ,EAAE,yBAAyB;wBACnC,WAAW,EAAE,sBAAsB;wBACnC,SAAS,EAAE,CAAC,YAAY,CAAC;qBAC5B;;;kCAcQN,SAAM;mCAAC,iBAAiB;;6BAZnB,QAAQ;0BAAjBE,SAAM;oBAEe,iBAAiB;0BAAtCM,YAAS;2BAAC,SAAS;oBAEY,cAAc;0BAA7CJ,cAAW;2BAAC,iBAAiB;;;IE5BlC;QAmBI,4BAA8C,UAAsB;YAAtB,eAAU,GAAV,UAAU,CAAY;YAN1D,aAAQ,GAAG,IAAIZ,eAAY,EAAsB,CAAC;YAElD,cAAS,GAAG,IAAIA,eAAY,EAAuB,CAAC;YAEnB,mBAAc,GAAG,IAAI,CAAC;SAEO;QAExE,qCAAQ,GAAR,eAAa;QAEb,oCAAO,GAAP,UAAQ,KAAa,EAAE,IAA4C;YAC/D,OAAO,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC;SAC3B;;;yIAzBQ,kBAAkB,kBAmBP,iBAAiB;kHAnB5B,kBAAkB,2XCV/B,4+DAuCA;qHD7Ba,kBAAkB;sBAJ9Bc,YAAS;uBAAC;wBACP,QAAQ,EAAE,YAAY;wBACtB,WAAW,EAAE,6BAA6B;qBAC7C;;;kCAoBgBN,SAAM;mCAAC,iBAAiB;;6BAlB5B,MAAM;0BAAdC,QAAK;oBAEG,KAAK;0BAAbA,QAAK;oBAEG,mBAAmB;0BAA3BA,QAAK;oBAEG,YAAY;0BAApBA,QAAK;oBAEG,WAAW;0BAAnBA,QAAK;oBAEG,aAAa;0BAArBA,QAAK;oBAEI,QAAQ;0BAAjBC,SAAM;oBAEG,SAAS;0BAAlBA,SAAM;oBAEoC,cAAc;0BAAxDE,cAAW;2BAAC,4BAA4B;;;;QEqBN,qCAAU;QA6B7C,2BACI,UAAmC,EACnC,GAAsB,EACtB,MAAc,EACe,MAAyB;YAJ1D,YAMI,kBAAM,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,SACzC;YAnCQ,cAAQ,GAAG,CAAC,CAAC;YAUZ,qBAAe,GAAG,IAAIZ,eAAY,EAAsB,CAAC;YAEzD,mBAAa,GAAG,IAAIA,eAAY,EAAsB,CAAC;YAEvD,eAAS,GAAG,IAAIA,eAAY,EAAuB,CAAC;YAEpD,oBAAc,GAAG,IAAIA,eAAY,EAAsB,CAAC;YAQ1D,oBAAc,GAAG,IAAIC,YAAO,EAAE,CAAC;YAEhC,oBAAc,GAAG,SAAS,CAAC;;SASjC;QAED,oCAAQ,GAAR;YAAA,iBAWC;;YAVG,iBAAM,MAAM,WAAE,CAAC;YACf,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,WAAW,EAAE,MAAA,IAAI,CAAC,MAAM,0CAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5G,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAACG,cAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACzC,KAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAACE,mBAAS,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,KAAyB;oBACxG,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACpC,CAAC,CAAC;gBACH,KAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAACA,mBAAS,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,UAAC,KAAyB;oBACtG,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAClC,CAAC,CAAC;aACN,CAAC,CAAC;SACN;QAED,2CAAe,GAAf;YAAA,iBASC;YARG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAACa,mBAAS,CAAC,IAAI,CAAC,EAAEb,mBAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjF,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,MAAM;oBACxB,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;wBACrB,MAAM,CAAC,WAAW,GAAGO,4BAAmB,CAAC,kBAAkB,CAAC,CAAC;qBAChE;iBACJ,CAAC,CAAC;gBACH,KAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;aAC5B,CAAC,CAAC;SACN;QAED,uCAAW,GAAX,UAAY,OAAsB;YAC9B,iBAAM,SAAS,YAAC,OAAO,CAAC,CAAC;SAC5B;QAED,0CAAc,GAAd,UAAe,IAAuB;YAAtC,iBA0BC;YAzBG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAChB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;oBAClE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;yBAC5B,IAAI,CACDT,cAAI,CAAC,CAAC,CAAC,EACPuB,kBAAQ,CAAC;wBACL,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;wBACrB,KAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;wBACzB,KAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;qBAC5B,CAAC,CACL;yBACA,SAAS,CAAC,UAAC,KAAK;wBACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBACxB,KAAI,CAAC,gBAAgB,OAArB,KAAI,2BAAqB,IAAI,CAAC,QAAQ,IAAE;qBAC3C,CAAC,CAAC;iBACV;qBAAM;oBACH,IAAI,CAAC,gBAAgB,OAArB,IAAI,2BAAqB,IAAI,CAAC,QAAQ,IAAE;oBACxC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;iBAC5B;aACJ;iBAAM;gBACH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBACtB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;aAC5B;SACJ;QAED,sCAAU,GAAV,UAAW,WAA+B;;YACtC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,OAAO;aACV;YACO,IAAA,KAAK,GAAoB,WAAW,MAA/B,EAAE,aAAa,GAAK,WAAW,cAAhB,CAAiB;YAC7C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAE,aAA2B,CAAC,EAAE,CAAC,CAAC;YAE5D,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YACjD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAM,eAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,MAAM,GAAA,CAAC,CAAC;gBACjF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,OAAA,EAAE,aAAa,iBAAA,EAAE,CAAC,CAAC;aACtD;iBAAM;gBACH,IAAM,eAAa,GAAG,MAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAC;gBAChE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,OAAA,EAAE,aAAa,iBAAA,EAAE,CAAC,CAAC;aACtD;SACJ;QAED,uCAAW,GAAX;YACI,iBAAM,SAAS,WAAE,CAAC;SACrB;;KAjHL,CAAuC,UAAU;wIAApC,iBAAiB,oIAiCd,mBAAmB;iHAjCtB,iBAAiB,uTAXf;YACP;gBACI,OAAO,EAAE,iBAAiB;gBAC1B,WAAW,EAAE,iBAAiB;aACjC;YACD;gBACI,OAAO,EAAE,oBAAoB;gBAC7B,WAAW,EAAEC,aAAU,CAAC,cAAM,OAAA,iBAAiB,GAAA,CAAC;aACnD;SACJ,6DAqBa,sBAAsB,8KAEnB,4BAA4B,uGCrEjD,m1BA2BA;qHDqBa,iBAAiB;sBAf7Bd,YAAS;uBAAC;wBACP,QAAQ,EAAE,WAAW;wBACrB,WAAW,EAAE,wBAAwB;wBACrC,eAAe,EAAEe,0BAAuB,CAAC,MAAM;wBAC/C,SAAS,EAAE;4BACP;gCACI,OAAO,EAAE,iBAAiB;gCAC1B,WAAW,mBAAmB;6BACjC;4BACD;gCACI,OAAO,EAAE,oBAAoB;gCAC7B,WAAW,EAAED,aAAU,CAAC,sCAAuB,GAAA,CAAC;6BACnD;yBACJ;qBACJ;;;kCAkCQpB,SAAM;mCAAC,mBAAmB;;6BAhCtB,QAAQ;0BAAhBC,QAAK;oBAEG,KAAK;0BAAbA,QAAK;oBAEG,eAAe;0BAAvBA,QAAK;oBAEG,QAAQ;0BAAhBA,QAAK;oBAEG,WAAW;0BAAnBA,QAAK;oBAEI,eAAe;0BAAxBC,SAAM;oBAEG,aAAa;0BAAtBA,SAAM;oBAEG,SAAS;0BAAlBA,SAAM;oBAEG,cAAc;0BAAvBA,SAAM;oBAE+B,KAAK;0BAA1CC,eAAY;2BAAC,sBAAsB;oBAEkC,OAAO;0BAA5EmB,kBAAe;2BAAC,4BAA4B,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;oBAEtB,kBAAkB;0BAA/DnB,eAAY;2BAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;;QEnBhD;;;;qIAAa,cAAc;sIAAd,cAAc,iBAvBnB,iBAAiB;YACjB,sBAAsB;YACtB,4BAA4B;YAC5B,mBAAmB;YACnB,kBAAkB;YAClB,sBAAsB;YACtB,mBAAmB;YACnB,oBAAoB;YACpB,kBAAkB;YAClB,0BAA0B;YAC1B,sBAAsB;YACtB,qBAAqB;YACrB,oBAAoB;YACpB,kBAAkB;YAClB,qBAAqB,aAxBfoB,eAAY,EAAEC,iBAAc,aAElC,iBAAiB;YACjB,sBAAsB;YACtB,4BAA4B;YAC5B,qBAAqB;YACrB,oBAAoB;YACpB,sBAAsB;sIA0BjB,cAAc,aAPZ;YACP;gBACI,OAAO,EAAE,mBAAmB;gBAC5B,QAAQ,EAAE,aAAa;aAC1B;SACJ,YA/BQ,CAACD,eAAY,EAAEC,iBAAc,CAAC;qHAiC9B,cAAc;sBAlC1BC,WAAQ;uBAAC;wBACN,OAAO,EAAE,CAACF,eAAY,EAAEC,iBAAc,CAAC;wBACvC,OAAO,EAAE;4BACL,iBAAiB;4BACjB,sBAAsB;4BACtB,4BAA4B;4BAC5B,qBAAqB;4BACrB,oBAAoB;4BACpB,sBAAsB;yBACzB;wBACD,YAAY,EAAE;4BACV,iBAAiB;4BACjB,sBAAsB;4BACtB,4BAA4B;4BAC5B,mBAAmB;4BACnB,kBAAkB;4BAClB,sBAAsB;4BACtB,mBAAmB;4BACnB,oBAAoB;4BACpB,kBAAkB;4BAClB,0BAA0B;4BAC1B,sBAAsB;4BACtB,qBAAqB;4BACrB,oBAAoB;4BACpB,kBAAkB;4BAClB,qBAAqB;yBACxB;wBACD,SAAS,EAAE;4BACP;gCACI,OAAO,EAAE,mBAAmB;gCAC5B,QAAQ,EAAE,aAAa;6BAC1B;yBACJ;qBACJ;;;ICnDD;;;;ICAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"worktile-gantt.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../packages/gantt/src/class/date-point.ts","../../../packages/gantt/src/class/event.ts","../../../packages/gantt/src/utils/date.ts","../../../packages/gantt/src/class/view-type.ts","../../../packages/gantt/src/class/link.ts","../../../packages/gantt/src/class/item.ts","../../../packages/gantt/src/class/group.ts","../../../packages/gantt/src/gantt.config.ts","../../../packages/gantt/src/views/view.ts","../../../packages/gantt/src/views/month.ts","../../../packages/gantt/src/views/quarter.ts","../../../packages/gantt/src/views/day.ts","../../../packages/gantt/src/views/week.ts","../../../packages/gantt/src/views/year.ts","../../../packages/gantt/src/views/factory.ts","../../../packages/gantt/src/gantt.styles.ts","../../../packages/gantt/src/utils/helpers.ts","../../../packages/gantt/src/gantt-upper.ts","../../../packages/gantt/src/table/gantt-column.component.ts","../../../packages/gantt/src/table/gantt-table.component.ts","../../../packages/gantt/src/gantt-abstract.ts","../../../packages/gantt/src/components/icon/icons.ts","../../../packages/gantt/src/components/icon/icon.component.ts","../../../packages/gantt/src/gantt.pipe.ts","../../../packages/gantt/src/components/table/gantt-table.component.ts","../../../packages/gantt/src/components/table/gantt-table.component.html","../../../packages/gantt/src/gantt-dom.service.ts","../../../packages/gantt/src/gantt-drag-container.ts","../../../packages/gantt/src/gantt-print.service.ts","../../../packages/gantt/src/components/calendar/calendar.component.ts","../../../packages/gantt/src/components/calendar/calendar.component.html","../../../packages/gantt/src/components/drag-backdrop/drag-backdrop.component.ts","../../../packages/gantt/src/components/drag-backdrop/drag-backdrop.component.html","../../../packages/gantt/src/root.component.ts","../../../packages/gantt/src/root.component.html","../../../packages/gantt/src/components/links/lines/line.ts","../../../packages/gantt/src/components/links/lines/curve.ts","../../../packages/gantt/src/components/links/lines/straight.ts","../../../packages/gantt/src/components/links/lines/factory.ts","../../../packages/gantt/src/components/links/links.component.ts","../../../packages/gantt/src/components/links/links.component.html","../../../packages/gantt/src/gantt-item-upper.ts","../../../packages/gantt/src/components/range/range.component.ts","../../../packages/gantt/src/components/range/range.component.html","../../../packages/gantt/src/components/bar/bar-drag.ts","../../../packages/gantt/src/components/bar/bar.component.ts","../../../packages/gantt/src/components/bar/bar.component.html","../../../packages/gantt/src/components/main/gantt-main.component.ts","../../../packages/gantt/src/components/main/gantt-main.component.html","../../../packages/gantt/src/gantt.component.ts","../../../packages/gantt/src/gantt.component.html","../../../packages/gantt/src/gantt.module.ts","../../../packages/gantt/src/public-api.ts","../../../packages/gantt/src/worktile-gantt.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { GanttDate } from '../utils/date';\n\nexport class GanttDatePoint {\n constructor(\n public start: GanttDate,\n public text: string,\n public x: number,\n public y: number,\n public additions?: {\n isWeekend: boolean;\n isToday: boolean;\n }\n ) {}\n}\n","import { QueryList } from '@angular/core';\nimport { NgxGanttTableColumnComponent } from '../table/gantt-column.component';\nimport { GanttItem } from './item';\nimport { GanttLinkType } from './link';\n\nexport class GanttDragEvent<T = unknown> {\n item: GanttItem<T>;\n}\n\nexport class GanttTableEvent {\n columns: QueryList<NgxGanttTableColumnComponent>;\n}\n\nexport class GanttLinkDragEvent<T = unknown> {\n source: GanttItem<T>;\n target?: GanttItem<T>;\n type?: GanttLinkType;\n}\n\nexport class GanttLoadOnScrollEvent {\n start: number;\n end: number;\n}\n\nexport class GanttLineClickEvent<T = unknown> {\n event: MouseEvent;\n source: GanttItem<T>;\n target: GanttItem<T>;\n}\n\nexport class GanttBarClickEvent<T = unknown> {\n event: Event;\n item: GanttItem<T>;\n}\n\nexport class GanttSelectedEvent<T = unknown> {\n event: Event;\n selectedValue: GanttItem<T> | GanttItem<T>[];\n}\n","import {\n addYears,\n addMonths,\n addDays,\n addWeeks,\n addQuarters,\n getUnixTime,\n startOfDay,\n startOfWeek,\n startOfMonth,\n startOfQuarter,\n startOfYear,\n endOfDay,\n endOfWeek,\n endOfMonth,\n endOfQuarter,\n endOfYear,\n format,\n fromUnixTime,\n getDaysInMonth,\n addSeconds,\n setDate,\n addMinutes,\n addHours,\n differenceInCalendarDays,\n isWeekend,\n getWeek,\n isToday,\n differenceInDays,\n differenceInCalendarQuarters,\n eachMonthOfInterval,\n eachWeekOfInterval,\n eachDayOfInterval\n} from 'date-fns';\n\nexport {\n addYears,\n addMonths,\n addDays,\n addWeeks,\n addQuarters,\n getUnixTime,\n startOfDay,\n startOfWeek,\n startOfMonth,\n startOfQuarter,\n startOfYear,\n endOfDay,\n endOfWeek,\n endOfMonth,\n endOfQuarter,\n endOfYear,\n format,\n fromUnixTime,\n getDaysInMonth,\n addSeconds,\n setDate,\n addMinutes,\n addHours,\n differenceInCalendarDays,\n isWeekend,\n getWeek,\n isToday,\n differenceInDays,\n differenceInCalendarQuarters,\n eachMonthOfInterval,\n eachWeekOfInterval,\n eachDayOfInterval\n} from 'date-fns';\n\nexport type GanttDateUtil = 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport class GanttDate {\n value: Date;\n\n constructor(date?: Date | string | number) {\n if (date) {\n if (date instanceof Date) {\n this.value = date;\n } else if (typeof date === 'string' || typeof date === 'number') {\n if (date.toString().length < 13) {\n this.value = fromUnixTime(+date);\n } else {\n this.value = new Date(date);\n }\n } else {\n throw new Error(\n `The input date type is not supported expect Date | string\n | number | { date: number; with_time: 0 | 1}, actual ${JSON.stringify(date)}`\n );\n }\n } else {\n this.value = new Date();\n }\n }\n\n getYear(): number {\n return this.value.getFullYear();\n }\n\n getMonth(): number {\n return this.value.getMonth();\n }\n\n getDay(): number {\n return this.value.getDay();\n }\n\n getTime(): number {\n return this.value.getTime();\n }\n\n getDate(): number {\n return this.value.getDate();\n }\n\n getHours(): number {\n return this.value.getHours();\n }\n\n getMinutes(): number {\n return this.value.getMinutes();\n }\n\n getSeconds(): number {\n return this.value.getSeconds();\n }\n\n getMilliseconds(): number {\n return this.value.getMilliseconds();\n }\n\n getWeek(options: { locale?: Locale; weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 } = { weekStartsOn: 1 }): number {\n return getWeek(this.value, options);\n }\n\n getDaysInMonth() {\n return getDaysInMonth(this.value);\n }\n\n getDaysInQuarter() {\n return differenceInCalendarDays(this.endOfQuarter().addSeconds(1).value, this.startOfQuarter().value);\n }\n\n getDaysInYear() {\n return differenceInCalendarDays(this.endOfYear().addSeconds(1).value, this.startOfYear().value);\n }\n\n setDate(dayOfMonth: number): GanttDate {\n return new GanttDate(setDate(this.value, dayOfMonth));\n }\n\n clone(): GanttDate {\n return new GanttDate(new Date(this.value));\n }\n\n add(amount: number, unit?: GanttDateUtil) {\n switch (unit) {\n case 'second':\n return new GanttDate(this.value).addSeconds(amount);\n case 'minute':\n return new GanttDate(this.value).addMinutes(amount);\n case 'hour':\n return new GanttDate(this.value).addHours(amount);\n case 'day':\n return new GanttDate(this.value).addDays(amount);\n case 'week':\n return new GanttDate(this.value).addWeeks(amount);\n case 'month':\n return new GanttDate(this.value).addMonths(amount);\n case 'quarter':\n return new GanttDate(this.value).addQuarters(amount);\n case 'year':\n return new GanttDate(this.value).addYears(amount);\n default:\n return new GanttDate(this.value).addSeconds(amount);\n }\n }\n\n addSeconds(amount: number): GanttDate {\n return new GanttDate(addSeconds(this.value, amount));\n }\n\n addMinutes(amount: number): GanttDate {\n return new GanttDate(addMinutes(this.value, amount));\n }\n\n addHours(amount: number): GanttDate {\n return new GanttDate(addHours(this.value, amount));\n }\n\n addDays(amount: number): GanttDate {\n return new GanttDate(addDays(this.value, amount));\n }\n\n addWeeks(amount: number) {\n return new GanttDate(addWeeks(this.value, amount));\n }\n\n addMonths(amount: number): GanttDate {\n return new GanttDate(addMonths(this.value, amount));\n }\n\n addQuarters(amount: number): GanttDate {\n return new GanttDate(addQuarters(this.value, amount));\n }\n\n addYears(amount: number): GanttDate {\n return new GanttDate(addYears(this.value, amount));\n }\n\n startOfDay(): GanttDate {\n return new GanttDate(startOfDay(this.value));\n }\n\n startOfWeek(options?: { locale?: Locale; weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 }): GanttDate {\n return new GanttDate(startOfWeek(this.value, options));\n }\n\n startOfMonth(): GanttDate {\n return new GanttDate(startOfMonth(this.value));\n }\n\n startOfQuarter(): GanttDate {\n return new GanttDate(startOfQuarter(this.value));\n }\n\n startOfYear(): GanttDate {\n return new GanttDate(startOfYear(this.value));\n }\n\n endOfDay(): GanttDate {\n return new GanttDate(endOfDay(this.value));\n }\n\n endOfWeek(options?: { locale?: Locale; weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6 }): GanttDate {\n return new GanttDate(endOfWeek(this.value, options));\n }\n\n endOfMonth(): GanttDate {\n return new GanttDate(endOfMonth(this.value));\n }\n\n endOfQuarter(): GanttDate {\n return new GanttDate(endOfQuarter(this.value));\n }\n\n endOfYear(): GanttDate {\n return new GanttDate(endOfYear(this.value));\n }\n\n getUnixTime(): number {\n return getUnixTime(this.value);\n }\n\n format(\n mat: string,\n options?: {\n locale?: Locale;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n firstWeekContainsDate?: number;\n useAdditionalWeekYearTokens?: boolean;\n useAdditionalDayOfYearTokens?: boolean;\n }\n ) {\n return format(this.value, mat, options);\n }\n\n isWeekend() {\n return isWeekend(this.value);\n }\n\n isToday() {\n return isToday(this.value);\n }\n}\n","export enum GanttViewType {\n day = 'day',\n quarter = 'quarter',\n month = 'month',\n year = 'year',\n week = 'week'\n}\n","import { GanttDate } from '../utils/date';\nimport { GanttItem } from './item';\n\nexport enum GanttLinkType {\n fs = 1,\n ff = 2,\n ss = 3,\n sf = 4\n}\n\nexport enum GanttLinkLineType {\n curve = 'curve',\n straight = 'straight'\n}\n\nexport enum LinkColors {\n default = '#cacaca',\n blocked = '#FF7575',\n active = '#348FE4'\n}\n\nexport interface GanttLink {\n type: GanttLinkType;\n link: string;\n color?: string;\n}\n\nexport interface GanttLinkItem {\n id: string;\n before: { x: number; y: number };\n after: { x: number; y: number };\n start: GanttDate;\n end: GanttDate;\n origin: GanttItem;\n links: GanttLink[];\n}\n\nexport interface LinkInternal {\n path: string;\n source: GanttItem;\n target: GanttItem;\n color: string;\n type: GanttLinkType;\n}\n\nexport interface GanttLinkOptions {\n dependencyTypes?: GanttLinkType[];\n showArrow?: boolean;\n lineType?: GanttLinkLineType;\n}\n","import { GanttDate } from '../utils/date';\nimport { BehaviorSubject } from 'rxjs';\nimport { GanttViewType } from './view-type';\nimport { GanttLink, GanttLinkType } from './link';\n\ninterface GanttItemRefs {\n width: number;\n x: number;\n y: number;\n}\n\nexport enum GanttItemType {\n bar = 'bar',\n range = 'range',\n custom = 'custom'\n}\n\nexport interface GanttItem<T = unknown> {\n id: string;\n title: string;\n start?: number;\n end?: number;\n group_id?: string;\n links?: (GanttLink | string)[];\n draggable?: boolean;\n linkable?: boolean;\n expandable?: boolean;\n expanded?: boolean;\n children?: GanttItem[];\n color?: string;\n barStyle?: Partial<CSSStyleDeclaration>;\n origin?: T;\n type?: GanttItemType;\n progress?: number;\n}\n\nexport class GanttItemInternal {\n id: string;\n title: string;\n start: GanttDate;\n end: GanttDate;\n links: GanttLink[];\n color?: string;\n barStyle?: Partial<CSSStyleDeclaration>;\n draggable?: boolean;\n linkable?: boolean;\n origin: GanttItem;\n expandable?: boolean;\n expanded?: boolean;\n loading: boolean;\n children: GanttItemInternal[];\n type?: GanttItemType;\n progress?: number;\n viewType?: GanttViewType;\n\n get refs() {\n return this.refs$.getValue();\n }\n\n refs$ = new BehaviorSubject<{ width: number; x: number; y: number }>(null);\n\n constructor(item: GanttItem, options?: { viewType: GanttViewType }) {\n this.origin = item;\n this.id = this.origin.id;\n this.links = (this.origin.links || []).map((link) => {\n if (typeof link === 'string') {\n return {\n type: GanttLinkType.fs,\n link\n };\n } else {\n return link;\n }\n });\n this.color = this.origin.color;\n this.barStyle = this.origin.barStyle;\n this.linkable = this.origin.linkable === undefined ? true : this.origin.linkable;\n this.draggable = this.origin.draggable === undefined ? true : this.origin.draggable;\n this.expandable = this.origin.expandable || (this.origin.children || []).length > 0;\n this.expanded = this.origin.expanded === undefined ? false : this.origin.expanded;\n this.start = item.start ? new GanttDate(item.start) : null;\n this.end = item.end ? new GanttDate(item.end) : null;\n this.viewType = options && options.viewType ? options.viewType : GanttViewType.month;\n this.children = (item.children || []).map((subItem) => {\n return new GanttItemInternal(subItem, { viewType: this.viewType });\n });\n this.type = this.origin.type || GanttItemType.bar;\n this.progress = this.origin.progress;\n // fill one month when start or end is null\n this.fillItemStartOrEnd(item);\n }\n\n fillItemStartOrEnd(item: GanttItem) {\n let addInterval: number;\n switch (this.viewType) {\n case GanttViewType.day:\n case GanttViewType.week:\n addInterval = 0;\n break;\n default:\n addInterval = 30;\n break;\n }\n if (item.start && !item.end) {\n this.end = new GanttDate(item.start).addDays(addInterval).endOfDay();\n }\n if (!item.start && item.end) {\n this.start = new GanttDate(item.end).addDays(-addInterval).startOfDay();\n }\n }\n\n updateRefs(refs: GanttItemRefs) {\n this.refs$.next(refs);\n }\n\n updateDate(start: GanttDate, end: GanttDate) {\n this.start = start.startOfDay();\n this.end = end.endOfDay();\n this.origin.start = this.start.getUnixTime();\n this.origin.end = this.end.getUnixTime();\n }\n\n addChildren(items: GanttItem[]) {\n this.origin.children = items;\n this.children = (items || []).map((subItem) => {\n return new GanttItemInternal(subItem, { viewType: this.viewType });\n });\n }\n\n setExpand(expanded: boolean) {\n this.expanded = expanded;\n this.origin.expanded = expanded;\n }\n\n addLink(link: GanttLink) {\n console.log(link);\n this.links = [...this.links, link];\n this.origin.links = this.links;\n }\n}\n","import { GanttItemInternal } from './item';\n\nexport interface GanttGroup<T = unknown> {\n id: string;\n title: string;\n expanded?: boolean;\n origin?: T;\n class?: string;\n}\n\nexport class GanttGroupInternal {\n id: string;\n title: string;\n origin: GanttGroup;\n items: GanttItemInternal[];\n mergedItems: GanttItemInternal[][];\n expanded?: boolean;\n refs?: {\n height?: number;\n } = {};\n class?: string;\n constructor(group: GanttGroup) {\n this.id = group.id;\n this.origin = group;\n this.title = group.title;\n this.expanded = group.expanded === undefined ? true : group.expanded;\n this.items = [];\n this.mergedItems = [[]];\n this.class = group.class || '';\n }\n\n setExpand(expanded: boolean) {\n this.expanded = expanded;\n this.origin.expanded = expanded;\n }\n}\n","import { GanttLinkType, GanttLinkOptions, GanttLinkLineType } from './class/link';\nimport { InjectionToken } from '@angular/core';\n\nexport interface GanttDateFormat {\n week?: string;\n month?: string;\n quarter?: string;\n year?: string;\n yearMonth?: string;\n yearQuarter?: string;\n}\n\nexport interface GanttGlobalConfig {\n dateFormat?: GanttDateFormat;\n linkOptions?: GanttLinkOptions;\n}\n\nexport const defaultConfig = {\n dateFormat: {\n week: '第w周',\n month: 'M月',\n quarter: 'QQQ',\n year: 'yyyy年',\n yearMonth: 'yyyy年MM月',\n yearQuarter: 'yyyy年QQQ'\n },\n linkOptions: {\n dependencyTypes: [GanttLinkType.fs],\n showArrow: false,\n lineType: GanttLinkLineType.curve\n }\n};\n\nexport const GANTT_GLOBAL_CONFIG = new InjectionToken<GanttGlobalConfig>('GANTT_GLOBAL_CONFIG');\n","import { GanttDate, differenceInDays, GanttDateUtil } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { BehaviorSubject } from 'rxjs';\nimport { defaultConfig, GanttDateFormat } from '../gantt.config';\n\nexport const primaryDatePointTop = 18;\n\nexport const secondaryDatePointTop = 36;\n\nexport interface GanttViewDate {\n date: GanttDate;\n isCustom?: boolean;\n}\n\nexport interface GanttViewOptions {\n start?: GanttDate;\n end?: GanttDate;\n min?: GanttDate;\n max?: GanttDate;\n cellWidth?: number;\n addAmount?: number;\n addUnit?: GanttDateUtil;\n dateFormat?: GanttDateFormat;\n}\n\nconst viewOptions: GanttViewOptions = {\n min: new GanttDate().addYears(-1).startOfYear(),\n max: new GanttDate().addYears(1).endOfYear(),\n dateFormat: defaultConfig.dateFormat\n};\n\nexport abstract class GanttView {\n start$: BehaviorSubject<GanttDate>;\n\n end$: BehaviorSubject<GanttDate>;\n\n get start() {\n return this.start$.getValue();\n }\n\n get end() {\n return this.end$.getValue();\n }\n\n primaryDatePoints: GanttDatePoint[];\n\n secondaryDatePoints: GanttDatePoint[];\n\n width: number;\n\n cellWidth: number;\n\n primaryWidth: number;\n\n showTimeline = true;\n\n showWeekBackdrop: boolean;\n\n options: GanttViewOptions;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options: GanttViewOptions) {\n this.options = Object.assign({}, viewOptions, options);\n const startDate = start.isCustom\n ? this.startOf(start.date)\n : this.startOf(start.date.value < this.options.start.value ? start.date : this.options.start);\n const endDate = end.isCustom\n ? this.endOf(end.date)\n : this.endOf(end.date.value > this.options.end.value ? end.date : this.options.end);\n this.start$ = new BehaviorSubject<GanttDate>(startDate);\n this.end$ = new BehaviorSubject<GanttDate>(endDate);\n this.initialize();\n }\n\n abstract startOf(date: GanttDate): GanttDate;\n\n abstract endOf(date: GanttDate): GanttDate;\n\n // 获取一级时间网格合并后的宽度\n abstract getPrimaryWidth(): number;\n\n // 获取当前视图下每一天占用的宽度\n abstract getDayOccupancyWidth(date: GanttDate): number;\n\n // 获取一级时间点(坐标,显示名称)\n abstract getPrimaryDatePoints(): GanttDatePoint[];\n\n // 获取二级时间点(坐标,显示名称)\n abstract getSecondaryDatePoints(): GanttDatePoint[];\n\n protected getDateIntervalWidth(start: GanttDate, end: GanttDate) {\n let result = 0;\n const days = differenceInDays(end.value, start.value);\n for (let i = 0; i < Math.abs(days); i++) {\n result += this.getDayOccupancyWidth(start.addDays(i));\n }\n result = days >= 0 ? result : -result;\n return Number(result.toFixed(3));\n }\n\n protected initialize() {\n this.primaryDatePoints = this.getPrimaryDatePoints();\n this.secondaryDatePoints = this.getSecondaryDatePoints();\n this.width = this.getWidth();\n this.cellWidth = this.getCellWidth();\n this.primaryWidth = this.getPrimaryWidth();\n }\n\n addStartDate() {\n const start = this.startOf(this.start.add(this.options.addAmount * -1, this.options.addUnit));\n if (start.value >= this.options.min.value) {\n const origin = this.start;\n this.start$.next(start);\n this.initialize();\n return { start: this.start, end: origin };\n }\n return null;\n }\n\n addEndDate() {\n const end = this.endOf(this.end.add(this.options.addAmount, this.options.addUnit));\n if (end.value <= this.options.max.value) {\n const origin = this.end;\n this.end$.next(end);\n this.initialize();\n return { start: origin, end: this.end };\n }\n return null;\n }\n\n updateDate(start: GanttDate, end: GanttDate) {\n start = this.startOf(start);\n end = this.endOf(end);\n if (start.value < this.start.value) {\n this.start$.next(start);\n }\n if (end.value > this.end.value) {\n this.end$.next(end);\n }\n this.initialize();\n }\n\n // 获取View的宽度\n getWidth() {\n return this.getCellWidth() * this.secondaryDatePoints.length;\n }\n\n // 获取单个网格的宽度\n getCellWidth() {\n return this.options.cellWidth;\n }\n\n // 获取当前时间的X坐标\n getTodayXPoint(): number {\n const toady = new GanttDate().startOfDay();\n if (toady.value > this.start.value && toady.value < this.end.value) {\n const x = this.getXPointByDate(toady) + this.getDayOccupancyWidth(toady) / 2;\n return x;\n } else {\n return null;\n }\n }\n\n // 获取指定时间的X坐标\n getXPointByDate(date: GanttDate) {\n return this.getDateIntervalWidth(this.start, date);\n }\n\n // 根据X坐标获取对应时间\n getDateByXPoint(x: number) {\n const indexOfSecondaryDate = Math.floor(x / this.getCellWidth());\n const matchDate = this.secondaryDatePoints[indexOfSecondaryDate];\n const dayWidth = this.getDayOccupancyWidth(matchDate?.start);\n if (dayWidth === this.getCellWidth()) {\n return matchDate?.start;\n } else {\n const day = Math.floor((x % this.getCellWidth()) / dayWidth) + 1;\n if (this.getCellWidth() / dayWidth === 7) {\n return matchDate?.start.addDays(day);\n }\n return matchDate?.start.setDate(day);\n }\n }\n\n // 获取指定时间范围的宽度\n getDateRangeWidth(start: GanttDate, end: GanttDate) {\n // addSeconds(1) 是因为计算相差天会以一个整天来计算 end时间一般是59分59秒不是一个整天,所以需要加1\n return this.getDateIntervalWidth(start, end.addSeconds(1));\n }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate, differenceInCalendarQuarters, eachMonthOfInterval } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\n\nconst viewOptions: GanttViewOptions = {\n start: new GanttDate().startOfQuarter().addQuarters(-1),\n end: new GanttDate().endOfQuarter().addQuarters(2),\n cellWidth: 280,\n addAmount: 1,\n addUnit: 'quarter'\n};\n\nexport class GanttViewMonth extends GanttView {\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n startOf(date: GanttDate) {\n return date.startOfQuarter();\n }\n\n endOf(date: GanttDate) {\n return date.endOfQuarter();\n }\n\n getPrimaryWidth() {\n return this.getCellWidth() * 3;\n }\n\n getDayOccupancyWidth(date: GanttDate): number {\n return this.cellWidth / date.getDaysInMonth();\n }\n\n getPrimaryDatePoints(): GanttDatePoint[] {\n const quarters = differenceInCalendarQuarters(this.end.addSeconds(1).value, this.start.value);\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < quarters; i++) {\n const start = this.start.addQuarters(i);\n const point = new GanttDatePoint(\n start,\n start.format(this.options.dateFormat.yearQuarter),\n (this.getCellWidth() * 3) / 2 + i * (this.getCellWidth() * 3),\n primaryDatePointTop\n );\n points.push(point);\n }\n\n return points;\n }\n\n getSecondaryDatePoints(): GanttDatePoint[] {\n const months = eachMonthOfInterval({ start: this.start.value, end: this.end.value });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < months.length; i++) {\n const start = new GanttDate(months[i]);\n const point = new GanttDatePoint(\n start,\n start.format(this.options.dateFormat.month),\n i * this.getCellWidth() + this.getCellWidth() / 2,\n secondaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { eachYearOfInterval, differenceInCalendarQuarters } from 'date-fns';\n\nconst viewOptions: GanttViewOptions = {\n start: new GanttDate().addYears(-1).startOfYear(),\n end: new GanttDate().addYears(1).endOfYear(),\n min: new GanttDate().addYears(-2).startOfYear(),\n max: new GanttDate().addYears(2).endOfYear(),\n cellWidth: 500,\n addAmount: 1,\n addUnit: 'year'\n};\n\nexport class GanttViewQuarter extends GanttView {\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n startOf(date: GanttDate) {\n return date.startOfYear();\n }\n\n endOf(date: GanttDate) {\n return date.endOfYear();\n }\n\n getPrimaryWidth() {\n return this.getCellWidth() * 4;\n }\n\n getDayOccupancyWidth(date: GanttDate): number {\n return this.cellWidth / date.getDaysInQuarter();\n }\n\n getPrimaryDatePoints(): GanttDatePoint[] {\n const years = eachYearOfInterval({ start: this.start.value, end: this.end.value });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < years.length; i++) {\n const start = new GanttDate(years[i]);\n const point = new GanttDatePoint(\n start,\n `${start.format(this.options.dateFormat.year)}`,\n (this.getCellWidth() * 4) / 2 + i * (this.getCellWidth() * 4),\n primaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n\n getSecondaryDatePoints(): GanttDatePoint[] {\n const quarters = differenceInCalendarQuarters(this.end.value, this.start.value);\n const points: GanttDatePoint[] = [];\n for (let i = 0; i <= quarters; i++) {\n const start = this.start.addQuarters(i);\n const point = new GanttDatePoint(\n start,\n start.format(this.options.dateFormat.quarter),\n i * this.getCellWidth() + this.getCellWidth() / 2,\n secondaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate, eachWeekOfInterval, eachDayOfInterval } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\n\nconst viewOptions: GanttViewOptions = {\n cellWidth: 35,\n start: new GanttDate().startOfYear().startOfWeek({ weekStartsOn: 1 }),\n end: new GanttDate().endOfYear().endOfWeek({ weekStartsOn: 1 }),\n addAmount: 1,\n addUnit: 'month'\n};\n\nexport class GanttViewDay extends GanttView {\n showWeekBackdrop = true;\n\n showTimeline = false;\n\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n startOf(date: GanttDate) {\n return date.startOfWeek({ weekStartsOn: 1 });\n }\n\n endOf(date: GanttDate) {\n return date.endOfWeek({ weekStartsOn: 1 });\n }\n\n getPrimaryWidth() {\n return this.getCellWidth() * 7;\n }\n\n getDayOccupancyWidth(): number {\n return this.cellWidth;\n }\n\n getPrimaryDatePoints(): GanttDatePoint[] {\n const weeks = eachWeekOfInterval({ start: this.start.value, end: this.end.addSeconds(1).value }, { weekStartsOn: 1 });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < weeks.length; i++) {\n const weekStart = new GanttDate(weeks[i]);\n const increaseWeek = weekStart.getDaysInMonth() - weekStart.getDate() >= 3 ? 0 : 1;\n const point = new GanttDatePoint(\n weekStart,\n weekStart.addWeeks(increaseWeek).format(this.options.dateFormat.yearMonth),\n (this.getCellWidth() * 7) / 2 + i * (this.getCellWidth() * 7),\n primaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n\n getSecondaryDatePoints(): GanttDatePoint[] {\n const days = eachDayOfInterval({ start: this.start.value, end: this.end.value });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < days.length; i++) {\n const start = new GanttDate(days[i]);\n const point = new GanttDatePoint(\n start,\n start.getDate().toString(),\n i * this.getCellWidth() + this.getCellWidth() / 2,\n secondaryDatePointTop,\n {\n isWeekend: start.isWeekend(),\n isToday: start.isToday()\n }\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { GanttDatePoint } from '../class/date-point';\nimport { eachWeekOfInterval, GanttDate } from '../utils/date';\nimport { GanttView, GanttViewDate, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop } from './view';\n\nconst viewOptions: GanttViewOptions = {\n cellWidth: 280,\n start: new GanttDate().startOfYear().startOfWeek({ weekStartsOn: 1 }),\n end: new GanttDate().endOfYear().endOfWeek({ weekStartsOn: 1 }),\n addAmount: 1,\n addUnit: 'month'\n};\n\nexport class GanttViewWeek extends GanttView {\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n startOf(date: GanttDate) {\n return date.startOfWeek({ weekStartsOn: 1 });\n }\n\n endOf(date: GanttDate) {\n return date.endOfWeek({ weekStartsOn: 1 });\n }\n\n getPrimaryWidth() {\n return this.getCellWidth();\n }\n\n getDayOccupancyWidth(): number {\n return this.cellWidth / 7;\n }\n\n getPrimaryDatePoints(): GanttDatePoint[] {\n const weeks = eachWeekOfInterval({ start: this.start.value, end: this.end.addSeconds(1).value }, { weekStartsOn: 1 });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < weeks.length; i++) {\n const weekStart = new GanttDate(weeks[i]);\n const increaseWeek = weekStart.getDaysInMonth() - weekStart.getDate() >= 3 ? 0 : 1;\n const point = new GanttDatePoint(\n weekStart,\n weekStart.addWeeks(increaseWeek).format(this.options.dateFormat.year),\n this.getCellWidth() / 2 + i * this.getCellWidth(),\n primaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n\n getSecondaryDatePoints(): GanttDatePoint[] {\n const weeks = eachWeekOfInterval({ start: this.start.value, end: this.end.value });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < weeks.length; i++) {\n const start = new GanttDate(weeks[i]);\n const point = new GanttDatePoint(\n start,\n `${start.format(this.options.dateFormat.week)}`,\n i * this.getCellWidth() + this.getCellWidth() / 2,\n secondaryDatePointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { GanttView, GanttViewOptions, primaryDatePointTop, secondaryDatePointTop, GanttViewDate } from './view';\nimport { GanttDate } from '../utils/date';\nimport { GanttDatePoint } from '../class/date-point';\nimport { eachYearOfInterval, differenceInCalendarYears } from 'date-fns';\n\nconst viewOptions: GanttViewOptions = {\n cellWidth: 480,\n start: new GanttDate().addYears(-2).startOfYear(),\n end: new GanttDate().addYears(2).endOfYear(),\n addAmount: 1,\n addUnit: 'year'\n};\n\nexport class GanttViewYear extends GanttView {\n constructor(start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n super(start, end, Object.assign({}, viewOptions, options));\n }\n\n startOf(date: GanttDate) {\n return date.startOfYear();\n }\n\n endOf(date: GanttDate) {\n return date.endOfYear();\n }\n\n getPrimaryWidth() {\n return this.getCellWidth();\n }\n\n getDayOccupancyWidth(date: GanttDate): number {\n return this.cellWidth / date.getDaysInYear();\n }\n\n getPrimaryDatePoints(): GanttDatePoint[] {\n const years = eachYearOfInterval({ start: this.start.value, end: this.end.value });\n const points: GanttDatePoint[] = [];\n for (let i = 0; i < years.length; i++) {\n const start = new GanttDate(years[i]);\n const point = new GanttDatePoint(start, ``, this.getCellWidth() / 2 + i * this.getCellWidth(), primaryDatePointTop);\n points.push(point);\n }\n return points;\n }\n\n getSecondaryDatePoints(): GanttDatePoint[] {\n const years = differenceInCalendarYears(this.end.value, this.start.value);\n const points: GanttDatePoint[] = [];\n const pointTop = 27;\n for (let i = 0; i <= years; i++) {\n const start = this.start.addYears(i);\n const point = new GanttDatePoint(\n start,\n `${start.format(this.options.dateFormat.year)}`,\n i * this.getCellWidth() + this.getCellWidth() / 2,\n pointTop\n );\n points.push(point);\n }\n return points;\n }\n}\n","import { GanttViewOptions, GanttViewDate } from './view';\nimport { GanttViewMonth } from './month';\nimport { GanttDate } from '../utils/date';\nimport { GanttViewType } from '../class/view-type';\nimport { GanttViewQuarter } from './quarter';\nimport { GanttViewDay } from './day';\nimport { GanttViewWeek } from './week';\nimport { GanttViewYear } from './year';\n\nexport function createViewFactory(type: GanttViewType, start: GanttViewDate, end: GanttViewDate, options?: GanttViewOptions) {\n switch (type) {\n case GanttViewType.month:\n return new GanttViewMonth(start, end, options);\n case GanttViewType.week:\n return new GanttViewWeek(start, end, options);\n case GanttViewType.quarter:\n return new GanttViewQuarter(start, end, options);\n case GanttViewType.day:\n return new GanttViewDay(start, end, options);\n case GanttViewType.year:\n return new GanttViewYear(start, end, options);\n default:\n throw new Error('gantt view type invalid');\n }\n}\n","export const defaultStyles = {\n lineHeight: 44,\n barHeight: 22\n};\n\nexport const headerHeight = 44;\n\nexport type GanttStyles = typeof defaultStyles;\n\nexport const sideWidth = 400;\n\nexport const sideMiddleWidth = 500;\n\nexport const sideMaxWidth = 600;\n\nexport const sideMinWidth = 400;\n\nexport const barBackground = '#348fe4';\n\nexport const rangeHeight = 17;\n\nexport const todayHeight = 24;\n\nexport const todayWidth = 35;\n\nexport const todayBorderRadius = 4;\n\n\n","import { GanttItem, GanttItemInternal } from '../class/item';\n\nexport interface Dictionary<T = unknown> {\n [key: string]: T;\n}\n\nexport function isNumber(value: any) {\n return typeof value === 'number';\n}\n\nexport function isString(value: any) {\n return typeof value === 'string';\n}\n\nexport function isUndefined(value: any) {\n return value === undefined;\n}\n\nexport function hexToRgb(color: string, opacity = 1) {\n if (/^#/g.test(color)) {\n return `rgba(${parseInt(color.slice(1, 3), 16)},${parseInt(color.slice(3, 5), 16)},${parseInt(color.slice(5, 7), 16)},${opacity})`;\n } else {\n return color;\n }\n}\n\nexport function uniqBy<T = unknown>(array: T[], key: keyof T) {\n const valuesMap: Dictionary<T> = {};\n const result = [];\n (array || []).forEach((value) => {\n const _key = value[key as string];\n if (!valuesMap[_key]) {\n valuesMap[_key] = value;\n result.push(value);\n }\n });\n return result;\n}\n\nexport function flatten<T = unknown>(array: T[]) {\n return array.reduce((pre, cur) => {\n return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);\n }, []);\n}\n\nexport function recursiveItems(items: GanttItemInternal[]) {\n const result = [];\n (items || []).forEach((item) => {\n result.push(item);\n if (item.expanded && item.children) {\n result.push(...recursiveItems(item.children));\n }\n });\n return result;\n}\n\nexport function getFlatItems(items: GanttItem[]) {\n const result = [];\n (items || []).forEach((item) => {\n result.push(item);\n if (item.children) {\n result.push(...getFlatItems(item.children));\n }\n });\n return result;\n}\n","import {\n Input,\n TemplateRef,\n Output,\n EventEmitter,\n ContentChild,\n ElementRef,\n HostBinding,\n ChangeDetectorRef,\n NgZone,\n SimpleChanges,\n InjectionToken,\n Directive,\n Inject\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, take, skip } from 'rxjs/operators';\nimport {\n GanttItem,\n GanttGroup,\n GanttViewType,\n GanttLoadOnScrollEvent,\n GanttDragEvent,\n GanttGroupInternal,\n GanttItemInternal,\n GanttBarClickEvent,\n GanttLinkDragEvent\n} from './class';\nimport { GanttView, GanttViewOptions } from './views/view';\nimport { createViewFactory } from './views/factory';\nimport { GanttDate } from './utils/date';\nimport { GanttStyles, defaultStyles } from './gantt.styles';\nimport { uniqBy, flatten, recursiveItems, getFlatItems } from './utils/helpers';\nimport { GanttDragContainer } from './gantt-drag-container';\nimport { GANTT_GLOBAL_CONFIG, GanttGlobalConfig, defaultConfig } from './gantt.config';\nimport { GanttLinkOptions } from './class/link';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\n\n@Directive()\nexport abstract class GanttUpper {\n @Input('items') originItems: GanttItem[] = [];\n\n @Input('groups') originGroups: GanttGroup[] = [];\n\n @Input() viewType: GanttViewType = GanttViewType.month;\n\n @Input() start: number;\n\n @Input() end: number;\n\n @Input() showTodayLine = true;\n\n @Input() draggable: boolean;\n\n @Input() styles: GanttStyles;\n\n @Input() viewOptions: GanttViewOptions = {};\n\n @Input() set linkOptions(options: GanttLinkOptions) {\n this._linkOptions = options;\n }\n\n get linkOptions() {\n return Object.assign({}, defaultConfig.linkOptions, this.config.linkOptions, this._linkOptions);\n }\n\n @Input() disabledLoadOnScroll: boolean;\n\n @Input()\n set selectable(value: BooleanInput) {\n this._selectable = coerceBooleanProperty(value);\n if (this._selectable) {\n this.selectionModel = this.initSelectionModel();\n } else {\n this.selectionModel?.clear();\n }\n }\n\n get selectable(): boolean {\n return this._selectable;\n }\n\n @Input()\n set multiple(value: BooleanInput) {\n this._multiple = coerceBooleanProperty(value);\n if (this.selectable) {\n this.selectionModel = this.initSelectionModel();\n }\n }\n\n get multiple(): boolean {\n return this._multiple;\n }\n\n @Output() loadOnScroll = new EventEmitter<GanttLoadOnScrollEvent>();\n\n @Output() dragStarted = new EventEmitter<GanttDragEvent>();\n\n @Output() dragMoved = new EventEmitter<GanttDragEvent>();\n\n @Output() dragEnded = new EventEmitter<GanttDragEvent>();\n\n @Output() barClick = new EventEmitter<GanttBarClickEvent>();\n\n @ContentChild('bar', { static: true }) barTemplate: TemplateRef<any>;\n\n @ContentChild('range', { static: true }) rangeTemplate: TemplateRef<any>;\n\n @ContentChild('item', { static: true }) itemTemplate: TemplateRef<any>;\n\n @ContentChild('group', { static: true }) groupTemplate: TemplateRef<any>;\n\n @ContentChild('groupHeader', { static: true }) groupHeaderTemplate: TemplateRef<any>;\n\n public linkable: boolean;\n\n public linkDragEnded = new EventEmitter<GanttLinkDragEvent>();\n\n public view: GanttView;\n\n public items: GanttItemInternal[] = [];\n\n public groups: GanttGroupInternal[] = [];\n\n public viewChange = new EventEmitter<GanttView>();\n\n public expandChange = new EventEmitter<void>();\n\n public get element() {\n return this.elementRef.nativeElement;\n }\n\n public firstChange = true;\n\n public dragContainer: GanttDragContainer;\n\n public unsubscribe$ = new Subject();\n\n public selectionModel: SelectionModel<string>;\n\n private groupsMap: { [key: string]: GanttGroupInternal };\n\n private _selectable = false;\n\n private _multiple = false;\n\n private _linkOptions: GanttLinkOptions;\n\n @HostBinding('class.gantt') ganttClass = true;\n\n constructor(\n protected elementRef: ElementRef<HTMLElement>,\n protected cdr: ChangeDetectorRef,\n protected ngZone: NgZone,\n @Inject(GANTT_GLOBAL_CONFIG) public config: GanttGlobalConfig\n ) {}\n\n private createView() {\n const viewDate = this.getViewDate();\n this.view = createViewFactory(this.viewType, viewDate.start, viewDate.end, this.viewOptions);\n }\n\n private setupGroups() {\n const collapsedIds = this.groups.filter((group) => group.expanded === false).map((group) => group.id);\n this.groupsMap = {};\n this.groups = [];\n this.originGroups.forEach((origin) => {\n const group = new GanttGroupInternal(origin);\n group.expanded = !collapsedIds.includes(group.id);\n this.groupsMap[group.id] = group;\n this.groups.push(group);\n });\n }\n\n private setupItems() {\n this.originItems = uniqBy(this.originItems, 'id');\n this.items = [];\n if (this.groups.length > 0) {\n this.originItems.forEach((origin) => {\n const group = this.groupsMap[origin.group_id];\n if (group) {\n const item = new GanttItemInternal(origin, { viewType: this.viewType });\n group.items.push(item);\n }\n });\n } else {\n this.originItems.forEach((origin) => {\n const item = new GanttItemInternal(origin, { viewType: this.viewType });\n this.items.push(item);\n });\n }\n }\n\n private setupExpandedState() {\n this.originItems = uniqBy(this.originItems, 'id');\n let items: GanttItemInternal[] = [];\n const flatOriginItems = getFlatItems(this.originItems);\n\n if (this.items.length > 0) {\n items = recursiveItems(this.items);\n } else {\n items = flatten(this.groups.map((group) => recursiveItems(group.items)));\n }\n items.forEach((item) => {\n if (item.origin.expanded) {\n const newItem = flatOriginItems.find((originItem) => originItem.id === item.id);\n if (newItem) {\n if (newItem.expanded === undefined) {\n newItem.expanded = true;\n }\n }\n }\n });\n }\n\n private getViewDate() {\n let start = this.start;\n let end = this.end;\n if (!this.start || !this.end) {\n this.originItems.forEach((item) => {\n if (item.start && !this.start) {\n start = start ? Math.min(start, item.start) : item.start;\n }\n if (item.end && !this.end) {\n end = end ? Math.max(end, item.end) : item.end;\n }\n });\n }\n return {\n start: {\n date: new GanttDate(start),\n isCustom: this.start ? true : false\n },\n end: {\n date: new GanttDate(end),\n isCustom: this.end ? true : false\n }\n };\n }\n\n computeRefs() {\n this.groups.forEach((group) => {\n const groupItems = recursiveItems(group.items);\n this.computeItemsRefs(...groupItems);\n });\n const items = recursiveItems(this.items);\n this.computeItemsRefs(...items);\n }\n\n private expandGroups(expanded: boolean) {\n this.groups.forEach((group) => {\n group.setExpand(expanded);\n });\n this.expandChange.next();\n this.cdr.detectChanges();\n }\n\n private initSelectionModel() {\n return new SelectionModel(this.multiple, []);\n }\n\n onInit() {\n this.styles = Object.assign({}, defaultStyles, this.styles);\n this.viewOptions.dateFormat = Object.assign({}, defaultConfig.dateFormat, this.config.dateFormat, this.viewOptions.dateFormat);\n this.createView();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n this.initSelectionModel();\n this.firstChange = false;\n\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.element.style.opacity = '1';\n\n this.dragContainer.dragStarted.subscribe((event) => {\n this.dragStarted.emit(event);\n });\n\n this.dragContainer.dragMoved.subscribe((event) => {\n this.dragMoved.emit(event);\n });\n this.dragContainer.dragEnded.subscribe((event) => {\n this.dragEnded.emit(event);\n this.computeRefs();\n this.detectChanges();\n });\n });\n\n this.view.start$.pipe(skip(1), takeUntil(this.unsubscribe$)).subscribe(() => {\n this.computeRefs();\n });\n }\n\n onChanges(changes: SimpleChanges) {\n if (!this.firstChange) {\n if (changes.viewType && changes.viewType.currentValue) {\n this.createView();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n this.viewChange.emit(this.view);\n }\n if (changes.originItems || changes.originGroups) {\n this.setupExpandedState();\n this.setupGroups();\n this.setupItems();\n this.computeRefs();\n }\n }\n }\n\n onDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n\n computeItemsRefs(...items: GanttItemInternal[]) {\n items.forEach((item) => {\n item.updateRefs({\n width: item.start && item.end ? this.view.getDateRangeWidth(item.start.startOfDay(), item.end.endOfDay()) : 0,\n x: item.start ? this.view.getXPointByDate(item.start) : 0,\n y: (this.styles.lineHeight - this.styles.barHeight) / 2 - 1\n });\n });\n }\n\n trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n return item.id || index;\n }\n\n detectChanges() {\n this.cdr.detectChanges();\n }\n\n expandGroup(group: GanttGroupInternal) {\n group.setExpand(!group.expanded);\n this.expandChange.emit();\n this.cdr.detectChanges();\n }\n\n // public functions\n\n expandAll() {\n this.expandGroups(true);\n }\n\n collapseAll() {\n this.expandGroups(false);\n }\n\n getGanttItem(id: string) {\n return this.getGanttItems([id])[0] || null;\n }\n\n getGanttItems(ids: string[]) {\n let items: GanttItemInternal[] = [];\n if (this.items.length > 0) {\n items = recursiveItems(this.items);\n } else {\n items = flatten(this.groups.map((group) => recursiveItems(group.items)));\n }\n return items.filter((item) => ids.includes(item.id));\n }\n\n isSelected(id: string) {\n if (!this.selectable) {\n return false;\n }\n if (!this.selectionModel.hasValue()) {\n return false;\n }\n return this.selectionModel.isSelected(id);\n }\n}\n\nexport const GANTT_UPPER_TOKEN = new InjectionToken<GanttUpper>('GANTT_UPPER_TOKEN');\n","import { Component, OnInit, ContentChild, TemplateRef, Input, EventEmitter, Inject, Output } from '@angular/core';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../gantt-upper';\n@Component({\n selector: 'ngx-gantt-column',\n template: ''\n})\nexport class NgxGanttTableColumnComponent implements OnInit {\n public columnWidth: string;\n\n @Input()\n set width(width: number | string) {\n this.columnWidth = coerceCssPixelValue(width);\n }\n\n @Input() name: string;\n\n @ContentChild('cell', { static: true }) templateRef: TemplateRef<any>;\n\n @ContentChild('header', { static: true }) headerTemplateRef: TemplateRef<any>;\n\n constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n\n ngOnInit() {}\n}\n","import { Component, ContentChild, EventEmitter, OnInit, Output, TemplateRef } from '@angular/core';\nimport { GanttTableEvent } from '../class';\n\n@Component({\n selector: 'ngx-gantt-table',\n template: ''\n})\nexport class NgxGanttTableComponent implements OnInit {\n @Output() columnChanges = new EventEmitter<GanttTableEvent>();\n\n @ContentChild('rowBeforeSlot', { static: true }) rowBeforeTemplate: TemplateRef<any>;\n\n @ContentChild('rowAfterSlot', { static: true }) rowAfterTemplate: TemplateRef<any>;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","import { InjectionToken } from '@angular/core';\nimport { GanttGroupInternal, GanttItemInternal } from './class';\nimport { GanttStyles } from './gantt.styles';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\n\nexport interface GanttAbstractComponent {\n table: NgxGanttTableComponent;\n styles: GanttStyles;\n maxLevel: number;\n expandGroup(group: GanttGroupInternal): void;\n expandChildren(item: GanttItemInternal): void;\n}\n\nexport const GANTT_ABSTRACT_TOKEN = new InjectionToken<GanttAbstractComponent>('gantt-abstract-token');\n","const angleRight = `<svg xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"amnavigation/angle-right\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M7.978 11.498l-.005.005L2.3 5.831 3.13 5l4.848 4.848L12.826 5l.83.831-5.673 5.672-.005-.005z\" transform=\"rotate(-90 7.978 8.252)\"></path></g></svg>`;\nconst angleDown = `<svg xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"aknavigation/angle-down\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M7.978 11.997l-.005.006L2.3 6.33l.83-.831 4.848 4.848L12.826 5.5l.83.83-5.673 5.673-.005-.006z\" ></path></g></svg>`;\nconst plusSquare = `<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"kxaction/plus-square\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M2 0h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1.2a.8.8 0 0 0-.8.8v12a.8.8 0 0 0 .8.8h12a.8.8 0 0 0 .8-.8V2a.8.8 0 0 0-.8-.8H2zm5.45 6.2V4.75h1.2V7.4h2.65v1.2H8.65v2.65h-1.2V8.6H4.8V7.4h2.65z\"></path></g></svg>`;\nconst minusSquare = `<svg viewBox=\"0 0 16 16\" xmlns=\"http://www.w3.org/2000/svg\" fit=\"\" preserveAspectRatio=\"xMidYMid meet\" focusable=\"false\"><g id=\"jnaction/minus-square\" stroke-width=\"1\" fill-rule=\"evenodd\"><path d=\"M2 0h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm0 1.2a.8.8 0 0 0-.8.8v12a.8.8 0 0 0 .8.8h12a.8.8 0 0 0 .8-.8V2a.8.8 0 0 0-.8-.8H2zm2.8 6.2h6.5v1.2H4.8V7.4z\"></path></g></svg>`;\nconst loadingIcon = `<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 50 50\" style=\"enable-background:new 0 0 50 50\" xml:space=\"preserve\">\n<path fill=\"#aaa\" d=\"M25.251,6.461c-10.318,0-18.683,8.365-18.683,18.683h4.068c0-8.071,6.543-14.615,14.615-14.615V6.461z\" transform=\"rotate(275.098 25 25)\">\n <animateTransform attributeType=\"xml\" attributeName=\"transform\" type=\"rotate\" from=\"0 25 25\" to=\"360 25 25\" dur=\"0.6s\" repeatCount=\"indefinite\"></animateTransform>\n</path>\n</svg>`;\nconst emptyIcon = `<svg\nwidth=\"148px\"\nheight=\"134px\"\nviewBox=\"0 0 148 134\"\nversion=\"1.1\"\nxmlns=\"http://www.w3.org/2000/svg\"\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\n>\n<defs>\n <filter x=\"0.0%\" y=\"0.0%\" width=\"100.0%\" height=\"100.0%\" filterUnits=\"objectBoundingBox\" id=\"filter-1\">\n <feGaussianBlur stdDeviation=\"0\" in=\"SourceGraphic\"></feGaussianBlur>\n </filter>\n</defs>\n<g id=\"148x134\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <g id=\"编组-6\" transform=\"translate(1.000000, 1.000000)\">\n <ellipse\n id=\"椭圆形\"\n fill=\"#EDEEF2\"\n opacity=\"0.3\"\n filter=\"url(#filter-1)\"\n cx=\"73.0800017\"\n cy=\"115.920003\"\n rx=\"73.0800017\"\n ry=\"16.8000004\"\n ></ellipse>\n <g id=\"编组-5\" transform=\"translate(15.120000, 0.000000)\">\n <polygon\n id=\"矩形\"\n fill=\"#E2E4E9\"\n points=\"19.2789848 49.5600011 99.1200023 48.7200011 117.600003 75.9297673 117.600003 92.313049 0 92.313049 0 75.0356267\"\n ></polygon>\n <path\n d=\"M23.5200005,0 L94.0800002,0 C97.7913538,2.06413823e-16 100.8,3.00864655 100.8,6.72000015 L100.8,99.1200023 L100.8,99.1200023 L16.8000004,99.1200023 L16.8000004,6.72000015 C16.8000004,3.00864655 19.8086469,1.56994302e-15 23.5200005,0 Z\"\n id=\"矩形\"\n fill=\"#F9FAFB\"\n ></path>\n <path\n d=\"M30.9200007,12.4400003 L86.6800019,12.4400003 C88.5356787,12.4400003 90.040002,13.9443236 90.040002,15.8000004 L90.040002,42.000001 C90.040002,43.8556778 88.5356787,45.360001 86.6800019,45.360001 L30.9200007,45.360001 C29.0643239,45.360001 27.5600006,43.8556778 27.5600006,42.000001 L27.5600006,15.8000004 C27.5600006,13.9443236 29.0643239,12.4400003 30.9200007,12.4400003 Z\"\n id=\"矩形\"\n fill=\"#E8EAEE\"\n ></path>\n <text\n id=\"&lt;/null&gt;\"\n font-family=\"PingFangSC-Medium, PingFang SC\"\n font-size=\"15.1200003\"\n font-weight=\"400\"\n fill=\"#BCBECD\"\n >\n <tspan x=\"33.6000008\" y=\"32.8000004\">&lt;/null&gt;</tspan>\n </text>\n <rect id=\"矩形\" fill=\"#E8EAEE\" x=\"27.5600006\" y=\"52.0800012\" width=\"61.4800014\" height=\"5.04000011\" rx=\"2.52000006\"></rect>\n <rect\n id=\"矩形备份\"\n fill=\"#E8EAEE\"\n x=\"27.5600006\"\n y=\"63.8400014\"\n width=\"61.4800014\"\n height=\"5.04000011\"\n rx=\"2.52000006\"\n ></rect>\n <path\n d=\"M0,75.6000017 L29.280235,75.6000017 C32.0637502,75.6000017 34.3202352,77.8564866 34.3202352,80.6400018 L34.3202352,86.2591426 C34.3202352,89.0426578 36.5767201,91.2991427 39.3602353,91.2991427 L78.4136737,91.2991427 C81.1971889,91.2991427 83.4536738,89.0426578 83.4536738,86.2591426 L83.4536738,80.6400018 C83.4536738,77.8564866 85.7101587,75.6000017 88.4936739,75.6000017 L117.600003,75.6000017 L117.600003,75.6000017 L117.600003,110.880003 C117.600003,115.519195 113.839194,119.280003 109.200002,119.280003 L8.40000019,119.280003 C3.76080819,119.280003 -6.53729019e-15,115.519195 0,110.880003 L0,75.6000017 L0,75.6000017 Z\"\n id=\"矩形\"\n fill=\"#EDEFF2\"\n ></path>\n </g>\n </g>\n</g>\n</svg>`;\nexport const icons = {\n 'angle-right': angleRight,\n 'angle-down': angleDown,\n 'plus-square': plusSquare,\n 'minus-square': minusSquare,\n loading: loadingIcon,\n empty: emptyIcon\n};\n","import { Component, OnInit, Input, AfterViewInit, ElementRef, HostBinding } from '@angular/core';\nimport { icons } from './icons';\n@Component({\n selector: 'gantt-icon',\n template: ''\n})\nexport class GanttIconComponent implements OnInit, AfterViewInit {\n @HostBinding('class.gantt-icon') isIcon = true;\n\n @Input() set iconName(name: string) {\n this.setSvg(name);\n }\n\n constructor(private elementRef: ElementRef<HTMLElement>) {}\n\n ngOnInit(): void {}\n\n ngAfterViewInit() {}\n\n setSvg(name: string) {\n const iconSvg = icons[name];\n if (iconSvg) {\n this.elementRef.nativeElement.innerHTML = iconSvg;\n } else {\n this.elementRef.nativeElement.innerHTML = '';\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { GanttItemType } from './class';\n\n@Pipe({\n name: 'isGanttRangeItem'\n})\nexport class IsGanttRangeItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.range;\n }\n}\n\n\n@Pipe({\n name: 'isGanttBarItem'\n})\nexport class IsGanttBarItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.bar;\n }\n}\n\n\n@Pipe({\n name: 'isGanttCustomItem'\n})\nexport class IsGanttCustomItemPipe implements PipeTransform {\n transform(value: GanttItemType) {\n return value === GanttItemType.custom;\n }\n}\n","import {\n Component,\n HostBinding,\n TemplateRef,\n QueryList,\n Input,\n OnInit,\n ViewChild,\n ElementRef,\n OnChanges,\n SimpleChanges,\n Inject,\n Output,\n EventEmitter\n} from '@angular/core';\nimport { GanttItemInternal, GanttGroupInternal, GanttSelectedEvent } from '../../class';\nimport { NgxGanttTableColumnComponent } from '../../table/gantt-column.component';\n// import { defaultColumnWidth, minColumnWidth } from '../../gantt.component';\nimport { CdkDragEnd, CdkDragMove, CdkDragStart } from '@angular/cdk/drag-drop';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { GanttAbstractComponent, GANTT_ABSTRACT_TOKEN } from '../../gantt-abstract';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../gantt-upper';\n\nexport const defaultColumnWidth = 100;\nexport const minColumnWidth = 80;\n\ninterface DragFixedConfig {\n target: HTMLElement;\n originWidth: number;\n movedWidth: number;\n minWidth: number;\n}\n@Component({\n selector: 'gantt-table',\n templateUrl: './gantt-table.component.html'\n})\nexport class GanttTableComponent implements OnInit, OnChanges {\n public columnList: QueryList<NgxGanttTableColumnComponent>;\n\n public dragStartLeft: number;\n\n @Input() groups: GanttGroupInternal[];\n\n @Input() items: GanttItemInternal[];\n\n @Input()\n set columns(columns: QueryList<NgxGanttTableColumnComponent>) {\n columns.forEach((column) => {\n if (!column.columnWidth) {\n column.columnWidth = coerceCssPixelValue(defaultColumnWidth);\n }\n });\n this.columnList = columns;\n }\n\n @Input() groupTemplate: TemplateRef<any>;\n\n @Input() emptyTemplate: TemplateRef<any>;\n\n @Input() rowBeforeTemplate: TemplateRef<any>;\n\n @Input() rowAfterTemplate: TemplateRef<any>;\n\n @Output() itemClick = new EventEmitter<GanttSelectedEvent>();\n\n @ViewChild('dragLine', { static: true }) draglineElementRef: ElementRef<HTMLElement>;\n\n @HostBinding('class.gantt-table') ganttTableClass = true;\n\n @HostBinding('class.gantt-table-empty') ganttTableEmptyClass = false;\n\n constructor(\n @Inject(GANTT_ABSTRACT_TOKEN) public gantt: GanttAbstractComponent,\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n private elementRef: ElementRef\n ) {}\n\n ngOnInit() {}\n\n ngOnChanges(changes: SimpleChanges) {\n if (!changes.groups.currentValue?.length && !changes.items.currentValue?.length) {\n this.ganttTableEmptyClass = true;\n } else {\n this.ganttTableEmptyClass = false;\n }\n }\n\n private dragFixed(config: DragFixedConfig) {\n if (config.movedWidth < config.minWidth) {\n config.target.style.transform = `translate3d(${config.minWidth - config.originWidth}px, 0, 0)`;\n }\n }\n\n expandGroup(group: GanttGroupInternal) {\n this.gantt.expandGroup(group);\n }\n\n expandChildren(event: MouseEvent, item: GanttItemInternal) {\n event.stopPropagation();\n this.gantt.expandChildren(item);\n }\n\n dragStarted(event: CdkDragStart) {\n const target = event.source.element.nativeElement;\n this.dragStartLeft = target.getBoundingClientRect().left;\n }\n\n dragMoved(event: CdkDragMove, column?: NgxGanttTableColumnComponent) {\n const target = event.source.element.nativeElement;\n const left = target.getBoundingClientRect().left;\n\n let originWidth: number;\n let movedWidth: number;\n let minWidth: number;\n if (column) {\n originWidth = parseInt(column.columnWidth, 10);\n movedWidth = originWidth + (left - this.dragStartLeft);\n minWidth = minColumnWidth;\n } else {\n originWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n movedWidth = originWidth + (left - this.dragStartLeft);\n minWidth = minColumnWidth * this.columnList.length;\n }\n\n this.dragFixed({\n target,\n originWidth,\n movedWidth,\n minWidth\n });\n\n this.showAuxiliaryLine(event);\n }\n\n columnDragEnded(event: CdkDragEnd, column: NgxGanttTableColumnComponent) {\n const target = event.source.element.nativeElement;\n const left = target.getBoundingClientRect().left;\n const width = parseInt(column.columnWidth, 10) + (left - this.dragStartLeft);\n const columnWidth = Math.max(width || 0, minColumnWidth);\n column.columnWidth = coerceCssPixelValue(columnWidth);\n if (this.gantt.table) {\n this.gantt.table.columnChanges.emit({ columns: this.columnList });\n }\n\n this.hideAuxiliaryLine();\n event.source.reset();\n }\n\n tableDragEnded(event: CdkDragEnd) {\n const target = event.source.element.nativeElement;\n const left = target.getBoundingClientRect().left;\n const tableWidth = this.elementRef.nativeElement.getBoundingClientRect().width;\n const dragWidth = left - this.dragStartLeft;\n this.columnList.forEach((column) => {\n const lastColumnWidth = parseInt(column.columnWidth, 10);\n const distributeWidth = parseInt(String(dragWidth * (lastColumnWidth / tableWidth)), 10);\n const columnWidth = Math.max(lastColumnWidth + distributeWidth || 0, minColumnWidth);\n column.columnWidth = coerceCssPixelValue(columnWidth);\n });\n\n if (this.gantt.table) {\n this.gantt.table.columnChanges.emit({ columns: this.columnList });\n }\n\n this.hideAuxiliaryLine();\n event.source.reset();\n }\n\n private showAuxiliaryLine(event: CdkDragMove) {\n const tableRect = this.elementRef.nativeElement.getBoundingClientRect();\n const targetRect = event.source.element.nativeElement.getBoundingClientRect();\n const distance = { x: targetRect.left - tableRect.left, y: targetRect.top - tableRect.top };\n this.draglineElementRef.nativeElement.style.left = `${distance.x}px`;\n this.draglineElementRef.nativeElement.style.display = 'block';\n }\n\n private hideAuxiliaryLine() {\n this.draglineElementRef.nativeElement.style.display = 'none';\n }\n\n trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n return item.id || index;\n }\n}\n","<div class=\"gantt-table-header gantt-table-row\">\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let i = index\" [style.width]=\"column.columnWidth\">\n <ng-container *ngIf=\"column.headerTemplateRef; else default\" [ngTemplateOutlet]=\"column.headerTemplateRef\"></ng-container>\n <ng-template #default>\n {{ column.name }}\n </ng-template>\n <div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event, column)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"columnDragEnded($event, column)\"\n ></div>\n </div>\n</div>\n<div class=\"gantt-table-body\">\n <ng-container *ngIf=\"!groups.length && !items.length\">\n <ng-container *ngIf=\"!emptyTemplate\">\n <gantt-icon class=\"empty-icon\" iconName=\"empty\"></gantt-icon>\n <div class=\"empty-text\">没有数据</div>\n </ng-container>\n <ng-template [ngTemplateOutlet]=\"emptyTemplate\"></ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"groups && groups.length > 0; else itemsTemplate\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-table-group\" [ngClass]=\"group.class\">\n <div class=\"gantt-table-group-title\" [class.expanded]=\"group.expanded\" (click)=\"expandGroup(group)\">\n <gantt-icon class=\"expand-icon\" [iconName]=\"group.expanded ? 'angle-down' : 'angle-right'\"></gantt-icon>\n <ng-container *ngIf=\"groupTemplate; else default\">\n <ng-template\n [ngTemplateOutlet]=\"groupTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: group.origin, group: group.origin }\"\n ></ng-template>\n </ng-container>\n <ng-template #default>\n <span class=\"group-title\">{{ group.title }}</span>\n </ng-template>\n </div>\n </div>\n\n <ng-container *ngIf=\"group.expanded\">\n <ng-template\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ group: group, items: group.items, level: 0 }\"\n ></ng-template>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n\n<div\n class=\"gantt-table-drag-trigger\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n cdkDragBoundary=\".gantt\"\n (cdkDragMoved)=\"dragMoved($event)\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"tableDragEnded($event)\"\n></div>\n\n<div #dragLine class=\"gantt-table-drag-auxiliary-line\"></div>\n\n<ng-template #itemsTemplate>\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items, level: 0 }\"></ng-template>\n</ng-template>\n\n<ng-template #ganttItems let-group=\"group\" let-items=\"items\" let-level=\"level\">\n <ng-container *ngFor=\"let item of items; trackBy: trackBy\">\n <div\n (click)=\"itemClick.emit({ event: $event, selectedValue: this.item.origin })\"\n class=\"gantt-table-item gantt-table-row\"\n [class.gantt-table-item-first-level-group]=\"level === 0 && (item.type | isGanttRangeItem)\"\n [class.gantt-table-item-with-group]=\"group\"\n [class.gantt-table-item-active]=\"ganttUpper.isSelected(item.id)\"\n [style.height.px]=\"gantt.styles.lineHeight\"\n [style.lineHeight.px]=\"gantt.styles.lineHeight\"\n >\n <ng-template\n [ngTemplateOutlet]=\"rowBeforeTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n <div class=\"gantt-table-column\" *ngFor=\"let column of columnList; let first = first\" [style.width]=\"column.columnWidth\">\n <div *ngIf=\"first\" class=\"gantt-expand-icon\" [style.marginLeft.px]=\"level * 20\">\n <ng-container *ngIf=\"level < gantt.maxLevel - 1 && item.expandable\">\n <gantt-icon\n *ngIf=\"!item.loading\"\n class=\"expand-icon\"\n [iconName]=\"item.expanded ? 'angle-down' : 'angle-right'\"\n (click)=\"expandChildren($event, item)\"\n ></gantt-icon>\n <gantt-icon *ngIf=\"item.loading\" [iconName]=\"'loading'\"></gantt-icon>\n </ng-container>\n </div>\n <div class=\"gantt-table-column-content\">\n <ng-template\n [ngTemplateOutlet]=\"column.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n </div>\n <ng-template\n [ngTemplateOutlet]=\"rowAfterTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: item.origin, item: item.origin }\"\n ></ng-template>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children, level: level + 1, group: group }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n","import { Injectable, ElementRef, OnDestroy } from '@angular/core';\nimport { fromEvent, Subject, merge } from 'rxjs';\nimport { pairwise, map, auditTime, takeUntil, take, startWith } from 'rxjs/operators';\nimport { isNumber } from './utils/helpers';\n\nconst scrollThreshold = 50;\n\nexport enum ScrollDirection {\n NONE,\n LEFT,\n RIGHT\n}\n\nexport interface ScrollEvent {\n target: Element;\n direction: ScrollDirection;\n}\n\n@Injectable()\nexport class GanttDomService implements OnDestroy {\n public root: Element;\n\n public side: Element;\n\n public container: Element;\n\n public sideContainer: Element;\n\n public mainContainer: Element;\n\n public calendarOverlay: Element;\n\n public linksOverlay: Element;\n\n private unsubscribe$ = new Subject<void>();\n\n constructor() {}\n\n private monitorScrollChange() {\n merge(fromEvent(this.mainContainer, 'scroll'), fromEvent(this.sideContainer, 'scroll'))\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((event) => {\n this.syncScroll(event);\n });\n\n fromEvent(this.mainContainer, 'scroll')\n .pipe(startWith(), takeUntil(this.unsubscribe$))\n .subscribe((event) => {\n // if (this.mainContainer.scrollLeft > 0) {\n // this.side.classList.add('gantt-side-has-shadow');\n // } else {\n // this.side.classList.remove('gantt-side-has-shadow');\n // }\n });\n }\n\n private syncScroll(event: Event) {\n const target = event.currentTarget as HTMLElement;\n this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;\n\n this.sideContainer.scrollTop = target.scrollTop;\n this.mainContainer.scrollTop = target.scrollTop;\n }\n\n private disableBrowserWheelEvent() {\n const container = this.mainContainer as HTMLElement;\n fromEvent(container, 'wheel')\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((event: WheelEvent) => {\n const delta = event.deltaX;\n if (!delta) {\n return;\n }\n if (\n (container.scrollLeft + container.offsetWidth === container.scrollWidth && delta > 0) ||\n (container.scrollLeft === 0 && delta < 0)\n ) {\n event.preventDefault();\n }\n });\n }\n\n initialize(root: ElementRef<HTMLElement>) {\n this.root = root.nativeElement;\n this.side = this.root.getElementsByClassName('gantt-side')[0];\n this.container = this.root.getElementsByClassName('gantt-container')[0];\n this.sideContainer = this.root.getElementsByClassName('gantt-side-container')[0];\n this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0];\n this.calendarOverlay = this.root.getElementsByClassName('gantt-calendar-overlay')[0];\n this.monitorScrollChange();\n this.disableBrowserWheelEvent();\n }\n\n getViewerScroll() {\n return fromEvent<Event>(this.mainContainer, 'scroll').pipe(\n map(() => this.mainContainer.scrollLeft),\n pairwise(),\n map(([previous, current]) => {\n const event: ScrollEvent = {\n target: this.mainContainer,\n direction: ScrollDirection.NONE\n };\n if (current - previous < 0) {\n if (this.mainContainer.scrollLeft < scrollThreshold && this.mainContainer.scrollLeft > 0) {\n event.direction = ScrollDirection.LEFT;\n }\n }\n if (current - previous > 0) {\n if (this.mainContainer.scrollWidth - this.mainContainer.clientWidth - this.mainContainer.scrollLeft < scrollThreshold) {\n event.direction = ScrollDirection.RIGHT;\n }\n }\n return event;\n })\n );\n }\n\n getResize() {\n return fromEvent(window, 'resize').pipe(auditTime(150));\n }\n\n scrollMainContainer(left: number) {\n if (isNumber(left)) {\n const scrollLeft = left - this.mainContainer.clientWidth / 2;\n this.mainContainer.scrollLeft = scrollLeft > scrollThreshold ? scrollLeft : 0;\n this.calendarOverlay.scrollLeft = this.mainContainer.scrollLeft;\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import { Injectable, EventEmitter, Inject } from '@angular/core';\nimport { GanttLinkType } from './class';\nimport { GanttDragEvent, GanttLinkDragEvent } from './class/event';\nimport { GanttItemInternal } from './class/item';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from './gantt-upper';\n\nfunction getDependencyType(path: LinkDragPath, dependencyTypes: GanttLinkType[]): GanttLinkType {\n if (dependencyTypes.includes(GanttLinkType.ss) && path.from.pos === InBarPosition.start && path.to.pos === InBarPosition.start) {\n return GanttLinkType.ss;\n }\n if (dependencyTypes.includes(GanttLinkType.ff) && path.from.pos === InBarPosition.finish && path.to.pos === InBarPosition.finish) {\n return GanttLinkType.ff;\n }\n if (dependencyTypes.includes(GanttLinkType.sf) && path.from.pos === InBarPosition.start && path.to.pos === InBarPosition.finish) {\n return GanttLinkType.sf;\n }\n return GanttLinkType.fs;\n}\n\nexport enum InBarPosition {\n start = 'start',\n finish = 'finish'\n}\n\nexport type LinkDragPosition = {\n element: HTMLElement;\n item: GanttItemInternal;\n pos?: InBarPosition;\n};\n\nexport interface LinkDragPath {\n from?: LinkDragPosition;\n to?: LinkDragPosition;\n}\n\n@Injectable()\nexport class GanttDragContainer {\n dragStarted = new EventEmitter<GanttDragEvent>();\n\n dragMoved = new EventEmitter<GanttDragEvent>();\n\n dragEnded = new EventEmitter<GanttDragEvent>();\n\n linkDragStarted = new EventEmitter<GanttLinkDragEvent>();\n\n linkDragEntered = new EventEmitter<GanttLinkDragEvent>();\n\n linkDragEnded = new EventEmitter<GanttLinkDragEvent>();\n\n linkDraggingId: string;\n\n linkDragPath: LinkDragPath = { from: null, to: null };\n\n constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n\n emitLinkDragStarted(from: LinkDragPosition) {\n this.linkDraggingId = from.item.id;\n this.linkDragPath.from = from;\n this.linkDragStarted.emit({\n source: from.item.origin,\n target: null\n });\n }\n\n emitLinkDragEntered(to: LinkDragPosition) {\n this.linkDragPath.to = to;\n this.linkDragEntered.emit({\n source: this.linkDragPath.from.item.origin,\n target: to.item.origin\n });\n }\n\n emitLinkDragLeaved() {\n this.linkDragPath.to = null;\n }\n\n emitLinkDragEnded(to: LinkDragPosition) {\n this.linkDragPath.to = to;\n const dependencyType = getDependencyType(this.linkDragPath, this.ganttUpper.linkOptions?.dependencyTypes);\n this.linkDragPath.from.item.addLink({\n link: this.linkDragPath.to.item.id,\n type: dependencyType\n });\n this.linkDragEnded.emit({\n source: this.linkDragPath.from.item.origin,\n target: this.linkDragPath.to.item.origin,\n type: dependencyType\n });\n this.linkDraggingId = null;\n this.linkDragPath = { from: null, to: null };\n }\n}\n","import { Injectable, ElementRef } from '@angular/core';\nimport html2canvas from 'html2canvas';\n\n@Injectable()\nexport class GanttPrintService {\n private root: HTMLElement;\n\n private mainContainer: HTMLElement;\n\n constructor() {}\n\n private setInlineStyles(targetElem: Element) {\n const svgElements = Array.from(targetElem.getElementsByTagName('svg'));\n for (const svgElement of svgElements) {\n this.recursElementChildren(svgElement);\n }\n }\n\n private recursElementChildren(node: SVGSVGElement | HTMLElement) {\n const transformProperties = [\n 'fill',\n 'color',\n 'font-size',\n 'stroke',\n 'font',\n 'text-anchor',\n 'stroke-dasharray',\n 'shape-rendering',\n 'stroke-width'\n ];\n if (!node.style) {\n return;\n }\n const styles = getComputedStyle(node);\n for (const transformProperty of transformProperties) {\n node.style[transformProperty] = styles[transformProperty];\n }\n for (const child of Array.from(node.childNodes)) {\n this.recursElementChildren(child as SVGSVGElement);\n }\n }\n\n register(root: ElementRef<HTMLElement>) {\n this.root = root.nativeElement;\n this.mainContainer = this.root.getElementsByClassName('gantt-main-container')[0] as HTMLElement;\n }\n\n print(name: string = 'download', ignoreElementClass?: string) {\n const root = this.root as HTMLElement;\n\n const mainContainer = this.mainContainer as HTMLElement;\n // set print width\n const printWidth = root.offsetWidth;\n\n // set print height\n const printHeight = root.offsetHeight - mainContainer.offsetHeight + mainContainer.scrollHeight;\n\n html2canvas(root, {\n logging: false,\n allowTaint: true,\n useCORS: true,\n width: printWidth,\n height: printHeight,\n ignoreElements: (element) => {\n if (ignoreElementClass && element.classList.contains(ignoreElementClass)) {\n return true;\n }\n if (element.classList.contains('gantt-calendar-today-overlay')) {\n return true;\n }\n },\n\n onclone: (cloneDocument: Document) => {\n const ganttClass = root.className;\n const cloneGanttDom = cloneDocument.querySelector(`.${ganttClass.replace(/\\s+/g, '.')}`) as HTMLElement;\n const cloneGanttContainerDom = cloneDocument.querySelector('.gantt-container') as HTMLElement;\n const cloneCalendarOverlay = cloneDocument.querySelector('.gantt-calendar-overlay-main') as HTMLElement;\n const cloneLinksOverlay = cloneDocument.querySelector('.gantt-links-overlay-main') as HTMLElement;\n\n // change targetDom width\n cloneGanttDom.style.width = `${printWidth}px`;\n cloneGanttDom.style.height = `${printHeight}px`;\n cloneGanttDom.style.overflow = `unset`;\n cloneGanttContainerDom.style.backgroundColor = '#fff';\n cloneCalendarOverlay.setAttribute('height', `${printHeight}`);\n cloneCalendarOverlay.setAttribute('style', `background: transparent`);\n\n if (cloneLinksOverlay) {\n cloneLinksOverlay.setAttribute('height', `${printHeight}`);\n cloneLinksOverlay.setAttribute('style', `height: ${printHeight}px`);\n }\n\n // setInlineStyles for svg\n this.setInlineStyles(cloneGanttDom);\n }\n }).then((canvas: HTMLCanvasElement) => {\n const link = document.createElement('a');\n const dataUrl = canvas.toDataURL('image/png');\n link.download = `${name}.png`;\n link.href = dataUrl;\n link.click();\n });\n }\n}\n","import {\n Component,\n OnInit,\n HostBinding,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n NgZone,\n Inject,\n ElementRef,\n AfterViewInit\n} from '@angular/core';\nimport { GanttDatePoint } from '../../class/date-point';\nimport { Subject, merge } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { headerHeight, todayHeight, todayWidth, todayBorderRadius } from '../../gantt.styles';\nimport { isNumber } from '../../utils/helpers';\nimport { GanttDate } from '../../utils/date';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttViewType } from './../../class/view-type';\n\nconst mainHeight = 5000;\n\n@Component({\n selector: 'gantt-calendar-overlay',\n templateUrl: './calendar.component.html'\n})\nexport class GanttCalendarComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n get view() {\n return this.ganttUpper.view;\n }\n\n private unsubscribe$ = new Subject();\n\n headerHeight = headerHeight;\n\n mainHeight = mainHeight;\n\n todayHeight = todayHeight;\n\n todayWidth = todayWidth;\n\n todayBorderRadius = todayBorderRadius;\n\n viewTypes = GanttViewType;\n\n @HostBinding('class.gantt-calendar-overlay') className = true;\n\n constructor(\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n private ngZone: NgZone,\n private elementRef: ElementRef<HTMLElement>\n ) {}\n\n setTodayPoint() {\n const x = this.view.getTodayXPoint();\n const today = new GanttDate().getDate();\n const todayEle = this.elementRef.nativeElement.getElementsByClassName('gantt-calendar-today-overlay')[0] as HTMLElement;\n const rect = this.elementRef.nativeElement.getElementsByClassName('today-rect')[0] as HTMLElement;\n const line = this.elementRef.nativeElement.getElementsByClassName('today-line')[0] as HTMLElement;\n\n if (isNumber(x)) {\n if (rect) {\n rect.style.left = `${x - todayWidth / 2}px`;\n rect.style.top = `${headerHeight - todayHeight}px`;\n rect.innerHTML = today.toString();\n }\n if (line) {\n line.style.left = `${x}px`;\n line.style.top = `${headerHeight}px`;\n line.style.bottom = `${-mainHeight}px`;\n }\n } else {\n todayEle.style.display = 'none';\n }\n }\n\n ngOnInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n merge(this.ganttUpper.viewChange, this.ganttUpper.view.start$)\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.setTodayPoint();\n });\n });\n }\n\n ngAfterViewInit() {}\n\n ngOnChanges(changes: SimpleChanges): void {}\n\n trackBy(index: number, point: GanttDatePoint) {\n return point.text || index;\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<div class=\"gantt-calendar-today-overlay\" [style.width.px]=\"view.width\">\n <span class=\"today-rect\" [hidden]=\"ganttUpper.viewType !== viewTypes.day\"> </span>\n <span class=\"today-line\" *ngIf=\"ganttUpper.showTodayLine\"> </span>\n</div>\n\n<svg class=\"gantt-calendar-overlay-main\" [attr.width]=\"view.width\" [attr.height]=\"headerHeight\">\n <g>\n <text class=\"primary-text\" *ngFor=\"let point of view.primaryDatePoints; trackBy: trackBy\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n <ng-container *ngFor=\"let point of view.secondaryDatePoints; trackBy: trackBy\">\n <text class=\"secondary-text\" [class.secondary-text-weekend]=\"point.additions?.isWeekend\" [attr.x]=\"point.x\" [attr.y]=\"point.y\">\n {{ point.text }}\n </text>\n </ng-container>\n\n <g>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n\n <g>\n <line [attr.x1]=\"0\" [attr.x2]=\"view.width\" [attr.y1]=\"headerHeight\" [attr.y2]=\"headerHeight\" class=\"header-line\"></line>\n </g>\n </g>\n <g>\n <g *ngIf=\"view.showTimeline\">\n <line\n *ngFor=\"let point of view.secondaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.cellWidth\"\n [attr.x2]=\"(i + 1) * view.cellWidth\"\n [attr.y1]=\"headerHeight\"\n [attr.y2]=\"mainHeight\"\n class=\"secondary-line\"\n ></line>\n <line\n *ngFor=\"let point of view.primaryDatePoints; let i = index; trackBy: trackBy\"\n [attr.x1]=\"(i + 1) * view.primaryWidth\"\n [attr.x2]=\"(i + 1) * view.primaryWidth\"\n [attr.y1]=\"0\"\n [attr.y2]=\"mainHeight\"\n class=\"primary-line\"\n ></line>\n </g>\n </g>\n</svg>\n","import { Component, OnInit, HostBinding } from '@angular/core';\n\n@Component({\n selector: 'gantt-drag-backdrop',\n templateUrl: `./drag-backdrop.component.html`\n})\nexport class GanttDragBackdropComponent implements OnInit {\n @HostBinding('class.gantt-drag-backdrop') backdropClass = true;\n\n constructor() {}\n\n ngOnInit() {}\n}\n","<div class=\"gantt-drag-mask\">\n <div class=\"date-range\">\n <span class=\"start\"></span>\n <span class=\"end\"></span>\n </div>\n</div>\n","import {\n Component,\n OnInit,\n HostBinding,\n NgZone,\n ElementRef,\n Inject,\n ContentChild,\n TemplateRef,\n Input,\n Optional,\n AfterViewInit\n} from '@angular/core';\nimport { GanttDomService, ScrollDirection } from './gantt-dom.service';\nimport { GanttDragContainer } from './gantt-drag-container';\nimport { take, takeUntil, startWith } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from './gantt-upper';\nimport { GanttPrintService } from './gantt-print.service';\n\n@Component({\n selector: 'ngx-gantt-root',\n templateUrl: './root.component.html',\n providers: [GanttDomService, GanttDragContainer]\n})\nexport class NgxGanttRootComponent implements OnInit {\n @Input() sideWidth: number;\n\n @HostBinding('class.gantt') ganttClass = true;\n\n @ContentChild('sideTemplate', { static: true }) sideTemplate: TemplateRef<any>;\n\n @ContentChild('mainTemplate', { static: true }) mainTemplate: TemplateRef<any>;\n\n private unsubscribe$ = new Subject();\n\n private get view() {\n return this.ganttUpper.view;\n }\n\n constructor(\n private elementRef: ElementRef<HTMLElement>,\n private ngZone: NgZone,\n private dom: GanttDomService,\n public dragContainer: GanttDragContainer,\n @Inject(GANTT_UPPER_TOKEN) private ganttUpper: GanttUpper,\n @Optional() private printService: GanttPrintService\n ) {\n this.ganttUpper.dragContainer = dragContainer;\n }\n\n ngOnInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.dom.initialize(this.elementRef);\n if (this.printService) {\n this.printService.register(this.elementRef);\n }\n this.setupScrollClass();\n this.setupResize();\n this.setupViewScroll();\n // 优化初始化时Scroll滚动体验问题,通过透明度解决,默认透明度为0,滚动结束后恢复\n this.elementRef.nativeElement.style.opacity = '1';\n this.ganttUpper.viewChange.pipe(startWith(null)).subscribe(() => {\n this.scrollToToday();\n });\n });\n }\n\n private setupViewScroll() {\n if (this.ganttUpper.disabledLoadOnScroll) {\n return;\n }\n this.dom\n .getViewerScroll()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe((event) => {\n if (event.direction === ScrollDirection.LEFT) {\n const dates = this.view.addStartDate();\n if (dates) {\n event.target.scrollLeft += this.view.getDateRangeWidth(dates.start, dates.end);\n this.ngZone.run(() => {\n this.ganttUpper.loadOnScroll.emit({ start: dates.start.getUnixTime(), end: dates.end.getUnixTime() });\n });\n }\n }\n if (event.direction === ScrollDirection.RIGHT) {\n const dates = this.view.addEndDate();\n if (dates) {\n this.ngZone.run(() => {\n this.ganttUpper.loadOnScroll.emit({ start: dates.start.getUnixTime(), end: dates.end.getUnixTime() });\n });\n }\n }\n });\n }\n\n private setupResize() {\n this.dom\n .getResize()\n .pipe(takeUntil(this.unsubscribe$))\n .subscribe(() => {\n this.setupScrollClass();\n });\n }\n\n private setupScrollClass() {\n const mainContainer = this.dom.mainContainer as HTMLElement;\n const height = mainContainer.offsetHeight;\n const scrollHeight = mainContainer.scrollHeight;\n if (scrollHeight > height) {\n this.elementRef.nativeElement.className = 'gantt gantt-scroll';\n } else {\n this.elementRef.nativeElement.className = 'gantt';\n }\n }\n\n private scrollToToday() {\n const x = this.view.getTodayXPoint();\n this.dom.scrollMainContainer(x);\n }\n}\n","<div class=\"gantt-side\" [style.width.px]=\"sideWidth\">\n <div class=\"gantt-side-container\">\n <ng-template [ngTemplateOutlet]=\"sideTemplate\"></ng-template>\n </div>\n</div>\n<div class=\"gantt-container\">\n <gantt-calendar-overlay></gantt-calendar-overlay>\n <gantt-drag-backdrop></gantt-drag-backdrop>\n <div class=\"gantt-main\">\n <ng-template [ngTemplateOutlet]=\"mainTemplate\"></ng-template>\n </div>\n</div>\n","import { GanttLinkItem, GanttLinkType } from '../../../class/link';\n\nexport abstract class GanttLinkLine {\n constructor() {}\n\n abstract generateSSPath(source: GanttLinkItem, target: GanttLinkItem): string;\n\n abstract generateFFPath(source: GanttLinkItem, target: GanttLinkItem): string;\n\n abstract generateFSAndSFPath(source: GanttLinkItem, target: GanttLinkItem, type?: GanttLinkType): string;\n\n generatePath(source: GanttLinkItem, target: GanttLinkItem, type: GanttLinkType) {\n if (source.before && source.after && target.before && target.after) {\n let path = '';\n\n switch (type) {\n case GanttLinkType.ss:\n path = this.generateSSPath(source, target);\n break;\n case GanttLinkType.ff:\n path = this.generateFFPath(source, target);\n break;\n\n case GanttLinkType.sf:\n path = this.generateFSAndSFPath(source, target, type);\n break;\n default:\n path = this.generateFSAndSFPath(source, target);\n }\n\n return path;\n }\n }\n}\n","import { Inject } from '@angular/core';\nimport { GanttLinkItem, GanttLinkType } from '../../../class/link';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from '../../../gantt-upper';\nimport { GanttLinkLine } from './line';\n\nexport class GanttLinkLineCurve extends GanttLinkLine {\n constructor(@Inject(GANTT_UPPER_TOKEN) private ganttUpper: GanttUpper) {\n super();\n }\n\n generateSSPath(source: GanttLinkItem, target: GanttLinkItem) {\n const x1 = source.before.x;\n const y1 = source.before.y;\n const x4 = target.before.x;\n const y4 = target.before.y;\n const isMirror = y4 > y1 ? 0 : 1;\n const radius = Math.abs(y4 - y1) / 2;\n\n if (x4 > x1) {\n return `M ${x1} ${y1}\n A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}\n L ${x4} ${y4}`;\n } else {\n return `M ${x1} ${y1}\n L ${x4} ${y1}\n A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;\n }\n }\n generateFFPath(source: GanttLinkItem, target: GanttLinkItem) {\n const x1 = source.after.x;\n const y1 = source.after.y;\n const x4 = target.after.x;\n const y4 = target.after.y;\n const isMirror = y4 > y1 ? 1 : 0;\n const radius = Math.abs(y4 - y1) / 2;\n if (x4 > x1) {\n return `M ${x1} ${y1}\n L ${x4} ${y1}\n A ${radius} ${radius} 0 1 ${isMirror} ${x4} ${y4}`;\n } else {\n return `M ${x1} ${y1}\n A ${radius} ${radius} 0 1 ${isMirror} ${x1} ${y4}\n L ${x4} ${y4}`;\n }\n }\n\n generateFSAndSFPath(source: GanttLinkItem, target: GanttLinkItem, type?: GanttLinkType) {\n let x1 = source.after.x;\n let y1 = source.after.y;\n let x4 = target.before.x;\n let y4 = target.before.y;\n const bezierWeight = 0.5;\n\n if (type === GanttLinkType.sf) {\n x1 = target.after.x;\n y1 = target.after.y;\n x4 = source.before.x;\n y4 = source.before.y;\n }\n\n let dx = Math.abs(x4 - x1) * bezierWeight;\n let x2 = x1 + dx;\n let x3 = x4 - dx;\n\n const centerX = (x1 + x4) / 2;\n const centerY = (y1 + y4) / 2;\n\n let controlX = this.ganttUpper.styles.lineHeight / 2;\n const controlY = this.ganttUpper.styles.lineHeight / 2;\n\n if (x1 >= x4) {\n if (Math.abs(y4 - y1) <= this.ganttUpper.styles.lineHeight) {\n return `M ${x1} ${y1}\n C ${x1 + controlX} ${y1} ${x1 + controlX} ${y4 > y1 ? y1 + controlX : y1 - controlX} ${x1} ${\n y4 > y1 ? y1 + controlY : y1 - controlY\n }\n L ${x4} ${y4 > y1 ? y4 - controlY : y4 + controlY}\n C ${x4 - controlY} ${y4 > y1 ? y4 - controlY : y4 + controlY} ${x4 - controlX} ${y4} ${x4} ${y4}\n `;\n } else {\n controlX = this.ganttUpper.styles.lineHeight;\n return `M ${x1} ${y1}\n C ${x1 + controlX} ${y1} ${x1 + controlX} ${y4 > y1 ? y1 + controlX : y1 - controlX} ${centerX} ${centerY}\n C ${x4 - controlX} ${y4 > y1 ? y4 - controlX : y4 + controlX} ${x4 - controlX} ${y4} ${x4} ${y4}\n `;\n }\n } else if (this.ganttUpper.linkOptions?.showArrow && x4 - x1 < 200) {\n dx = Math.max(Math.abs(y4 - y1) * bezierWeight, 60);\n x2 = x1 + dx;\n x3 = x4 - dx;\n return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;\n }\n\n return `M ${x1} ${y1} C ${x2} ${y1} ${x3} ${y4} ${x4} ${y4}`;\n }\n}\n","import { GanttLinkLine } from './line';\nimport { GanttLinkItem, GanttLinkType } from '../../../class/link';\n\nexport class GanttLinkLineStraight extends GanttLinkLine {\n private pathControl = 20;\n\n constructor() {\n super();\n }\n\n generateSSPath(source: GanttLinkItem, target: GanttLinkItem) {\n const x1 = source.before.x;\n const y1 = source.before.y;\n const x4 = target.before.x;\n const y4 = target.before.y;\n const control = this.pathControl;\n\n return `M ${x1} ${y1}\n L ${x4 > x1 ? x1 - control : x4 - control} ${y1}\n L ${x4 > x1 ? x1 - control : x4 - control} ${y4}\n L ${x4} ${y4}`;\n }\n\n generateFFPath(source: GanttLinkItem, target: GanttLinkItem) {\n const x1 = source.after.x;\n const y1 = source.after.y;\n const x4 = target.after.x;\n const y4 = target.after.y;\n const control = this.pathControl;\n\n return `M ${x1} ${y1}\n L ${x4 > x1 ? x4 + control : x1 + control} ${y1}\n L ${x4 > x1 ? x4 + control : x1 + control} ${y4}\n L ${x4} ${y4}`;\n }\n\n generateFSAndSFPath(source: GanttLinkItem, target: GanttLinkItem, type?: GanttLinkType) {\n let x1 = source.after.x;\n let y1 = source.after.y;\n let x4 = target.before.x;\n let y4 = target.before.y;\n const control = this.pathControl;\n\n if (type === GanttLinkType.sf) {\n x1 = target.after.x;\n y1 = target.after.y;\n x4 = source.before.x;\n y4 = source.before.y;\n }\n\n if (x4 - x1 >= 40) {\n return `M ${x1} ${y1}\n L ${x1 + control} ${y1}\n L ${x1 + control} ${y4}\n L ${x4} ${y4}`;\n } else {\n return `M ${x1} ${y1}\n L ${x1 + control} ${y1}\n L ${x1 + control} ${y4 > y1 ? y1 + control : y1 - control}\n L ${x4 - control} ${y4 > y1 ? y1 + control : y1 - control}\n L ${x4 - control} ${y4}\n L ${x4} ${y4}`;\n }\n }\n}\n","import { GanttLinkLineType } from '../../../class/link';\nimport { GanttUpper } from '../../../gantt-upper';\nimport { GanttLinkLineCurve } from './curve';\nimport { GanttLinkLineStraight } from './straight';\n\nexport function createLineGenerator(type: GanttLinkLineType, ganttUpper?: GanttUpper) {\n switch (type) {\n case GanttLinkLineType.curve:\n return new GanttLinkLineCurve(ganttUpper);\n case GanttLinkLineType.straight:\n return new GanttLinkLineStraight();\n default:\n throw new Error('gantt link path type invalid');\n }\n}\n","import {\n Component,\n OnInit,\n Input,\n Output,\n EventEmitter,\n HostBinding,\n Inject,\n ChangeDetectorRef,\n ElementRef,\n OnDestroy,\n OnChanges\n} from '@angular/core';\nimport { merge, Subject } from 'rxjs';\nimport { takeUntil, skip, debounceTime } from 'rxjs/operators';\nimport { GanttGroupInternal } from '../../class/group';\nimport { GanttItemInternal } from './../../class/item';\nimport { GanttLineClickEvent } from '../../class/event';\nimport { GanttDragContainer } from '../../gantt-drag-container';\nimport { recursiveItems } from '../../utils/helpers';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttLinkItem, LinkInternal, LinkColors, GanttLinkType } from '../../class/link';\nimport { GanttLinkLine } from './lines/line';\nimport { createLineGenerator } from './lines/factory';\n\n@Component({\n selector: 'gantt-links-overlay',\n templateUrl: './links.component.html'\n})\nexport class GanttLinksComponent implements OnInit, OnChanges, OnDestroy {\n @Input() groups: GanttGroupInternal[] = [];\n\n @Input() items: GanttItemInternal[] = [];\n\n @Output() lineClick = new EventEmitter<GanttLineClickEvent>();\n\n public links: LinkInternal[] = [];\n\n public ganttLinkTypes = GanttLinkType;\n\n public showArrow = false;\n\n private linkItems: GanttLinkItem[] = [];\n\n private firstChange = true;\n\n private linkLine: GanttLinkLine;\n\n private unsubscribe$ = new Subject();\n\n @HostBinding('class.gantt-links-overlay') ganttLinksOverlay = true;\n\n constructor(\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper,\n private cdr: ChangeDetectorRef,\n private elementRef: ElementRef,\n private ganttDragContainer: GanttDragContainer\n ) {}\n\n ngOnInit() {\n this.linkLine = createLineGenerator(this.ganttUpper.linkOptions.lineType, this.ganttUpper);\n\n this.showArrow = this.ganttUpper.linkOptions.showArrow;\n this.buildLinks();\n this.firstChange = false;\n\n this.ganttDragContainer.dragStarted.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.elementRef.nativeElement.style.visibility = 'hidden';\n });\n\n merge(\n this.ganttUpper.viewChange,\n this.ganttUpper.expandChange,\n this.ganttUpper.view.start$,\n this.ganttUpper.dragEnded,\n this.ganttUpper.linkDragEnded\n )\n .pipe(takeUntil(this.unsubscribe$), skip(1), debounceTime(0))\n .subscribe(() => {\n this.elementRef.nativeElement.style.visibility = 'visible';\n this.buildLinks();\n this.cdr.detectChanges();\n });\n }\n\n ngOnChanges() {\n if (!this.firstChange) {\n this.buildLinks();\n }\n }\n\n private computeItemPosition() {\n const lineHeight = this.ganttUpper.styles.lineHeight;\n const barHeight = this.ganttUpper.styles.barHeight;\n this.linkItems = [];\n if (this.groups.length > 0) {\n let itemNum = 0;\n let groupNum = 0;\n this.groups.forEach((group) => {\n groupNum++;\n if (group.expanded) {\n const items = recursiveItems(group.items);\n items.forEach((item, itemIndex) => {\n const y = (groupNum + itemNum + itemIndex) * lineHeight + item.refs.y + barHeight / 2;\n this.linkItems.push({\n ...item,\n before: {\n x: item.refs.x,\n y\n },\n after: {\n x: item.refs.x + item.refs.width,\n y\n }\n });\n });\n itemNum += items.length;\n }\n });\n } else {\n const items = recursiveItems(this.items);\n items.forEach((item, itemIndex) => {\n const y = itemIndex * lineHeight + item.refs.y + barHeight / 2;\n this.linkItems.push({\n ...item,\n before: {\n x: item.refs.x,\n y\n },\n after: {\n x: item.refs.x + item.refs.width,\n y\n }\n });\n });\n }\n }\n\n buildLinks() {\n this.computeItemPosition();\n this.links = [];\n this.linkItems.forEach((source) => {\n if (source.origin.start || source.origin.end) {\n source.links.forEach((link) => {\n const target = this.linkItems.find((item) => item.id === link.link);\n if (target && (target.origin.start || target.origin.end)) {\n let color = LinkColors.default;\n if (link.type === GanttLinkType.fs && source.end.getTime() > target.start.getTime()) {\n color = LinkColors.blocked;\n }\n this.links.push({\n path: this.linkLine.generatePath(source, target, link.type),\n source: source.origin,\n target: target.origin,\n type: link.type,\n color: link.color || color\n });\n }\n });\n }\n });\n }\n\n trackBy(index: number) {\n return index;\n }\n\n onLineClick(event: MouseEvent, link: LinkInternal) {\n this.lineClick.emit({\n event,\n source: link.source,\n target: link.target\n });\n }\n\n mouseEnterPath(link: LinkInternal) {\n if (link.color === LinkColors.default) {\n link.color = LinkColors.active;\n }\n }\n\n mouseLeavePath(link: LinkInternal) {\n if (link.color === LinkColors.active) {\n link.color = LinkColors.default;\n }\n }\n\n ngOnDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","<svg [attr.width]=\"ganttUpper.view.width\" class=\"gantt-links-overlay-main\">\n <ng-container *ngFor=\"let link of links; let i = index; trackBy: trackBy\">\n <path\n [attr.d]=\"link.path\"\n fill=\"transparent\"\n stroke-width=\"2\"\n [attr.stroke]=\"link.color\"\n pointer-events=\"none\"\n [attr.style]=\"link.type === ganttLinkTypes.sf ? 'marker-start: url(#triangle' + i + ')' : 'marker-end: url(#triangle' + i + ')'\"\n ></path>\n <g>\n <path\n class=\"link-line\"\n (click)=\"onLineClick($event, link)\"\n (mouseenter)=\"mouseEnterPath(link)\"\n (mouseleave)=\"mouseLeavePath(link)\"\n [attr.d]=\"link.path\"\n stroke=\"transparent\"\n stroke-width=\"9\"\n fill=\"none\"\n cursor=\"pointer\"\n ></path>\n </g>\n <defs *ngIf=\"showArrow\">\n <marker\n *ngIf=\"link.type === ganttLinkTypes.sf; else markerEnd\"\n [id]=\"'triangle' + i\"\n markerUnits=\"strokeWidth\"\n markerWidth=\"5\"\n markerHeight=\"4\"\n refX=\"5\"\n refY=\"2\"\n orient=\"180\"\n >\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n\n <ng-template #markerEnd>\n <marker [id]=\"'triangle' + i\" markerUnits=\"strokeWidth\" markerWidth=\"5\" markerHeight=\"4\" refX=\"5\" refY=\"2\" orient=\"auto\">\n <path [attr.fill]=\"link.color\" [attr.stroke]=\"link.color\" d=\"M 0 0 L 5 2 L 0 4 z\" />\n </marker>\n </ng-template>\n </defs>\n </ng-container>\n <line class=\"link-dragging-line\"></line>\n</svg>\n","import { Input, ElementRef, Inject, TemplateRef, Directive } from '@angular/core';\nimport { GanttItemInternal, GanttItemType } from './class';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { rangeHeight } from './gantt.styles';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from './gantt-upper';\n\n@Directive()\nexport abstract class GanttItemUpper {\n @Input() template: TemplateRef<any>;\n\n @Input() item: GanttItemInternal;\n\n public firstChange = true;\n\n public unsubscribe$ = new Subject();\n\n constructor(protected elementRef: ElementRef<HTMLElement>, @Inject(GANTT_UPPER_TOKEN) protected ganttUpper: GanttUpper) {}\n\n onInit() {\n this.firstChange = false;\n this.item.refs$.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.setPositions();\n });\n }\n\n onChanges(): void {\n if (!this.firstChange) {\n this.setPositions();\n }\n }\n\n private setPositions() {\n const itemElement = this.elementRef.nativeElement;\n itemElement.style.left = this.item.refs.x + 'px';\n itemElement.style.top = this.item.refs.y + 'px';\n itemElement.style.width = this.item.refs.width + 'px';\n if (this.item.type === GanttItemType.bar) {\n itemElement.style.height = this.ganttUpper.styles.barHeight + 'px';\n } else if (this.item.type === GanttItemType.range) {\n itemElement.style.height = rangeHeight + 'px';\n } else {\n }\n }\n\n onDestroy() {\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n }\n}\n","import { Component, OnInit, HostBinding, ElementRef, OnChanges, OnDestroy, Inject } from '@angular/core';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttItemUpper } from '../../gantt-item-upper';\n\n@Component({\n selector: 'ngx-gantt-range,gantt-range',\n templateUrl: './range.component.html'\n})\nexport class NgxGanttRangeComponent extends GanttItemUpper implements OnInit, OnChanges, OnDestroy {\n @HostBinding('class.gantt-range') ganttRangeClass = true;\n\n constructor(elementRef: ElementRef<HTMLDivElement>, @Inject(GANTT_UPPER_TOKEN) ganttUpper: GanttUpper) {\n super(elementRef, ganttUpper);\n }\n\n ngOnInit() {\n super.onInit();\n }\n\n ngOnChanges(): void {\n super.onChanges();\n }\n\n ngOnDestroy() {\n super.onDestroy();\n }\n}\n","<ng-container *ngIf=\"item.start && item.end\">\n <div class=\"gantt-range-main\">\n <div class=\"gantt-range-main-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n </div>\n <div class=\"gantt-range-triangle left\"></div>\n <div class=\"gantt-range-triangle right\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</ng-container>\n","import { Injectable, ElementRef, OnDestroy } from '@angular/core';\nimport { DragRef, DragDrop } from '@angular/cdk/drag-drop';\nimport { GanttDomService } from '../../gantt-dom.service';\nimport { GanttDragContainer, InBarPosition } from '../../gantt-drag-container';\nimport { GanttItemInternal } from '../../class/item';\nimport { GanttDate, differenceInCalendarDays } from '../../utils/date';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { GanttUpper } from '../../gantt-upper';\nimport { GanttLinkType } from '../../class/link';\n\nconst dragMinWidth = 10;\nconst activeClass = 'gantt-bar-active';\nconst dropActiveClass = 'gantt-bar-drop-active';\nconst singleDropActiveClass = 'gantt-bar-single-drop-active';\n\nfunction createSvgElement(qualifiedName: string, className: string) {\n const element = document.createElementNS('http://www.w3.org/2000/svg', qualifiedName);\n element.classList.add(className);\n return element;\n}\n\n@Injectable()\nexport class GanttBarDrag implements OnDestroy {\n private ganttUpper: GanttUpper;\n\n private barElement: HTMLElement;\n\n private item: GanttItemInternal;\n\n private get dragDisabled() {\n return !this.item.draggable || !this.ganttUpper.draggable;\n }\n\n private get linkDragDisabled() {\n return !this.item.linkable || !this.ganttUpper.linkable;\n }\n\n private linkDraggingLine: SVGElement;\n\n private barDragRef: DragRef;\n\n private dragRefs: DragRef[] = [];\n\n private destroy$ = new Subject();\n\n constructor(private dragDrop: DragDrop, private dom: GanttDomService, private dragContainer: GanttDragContainer) {}\n\n private createMouseEvents() {\n const dropClass =\n this.ganttUpper.config.linkOptions?.dependencyTypes?.length === 1 &&\n this.ganttUpper.config.linkOptions?.dependencyTypes[0] === GanttLinkType.fs\n ? singleDropActiveClass\n : dropActiveClass;\n\n fromEvent(this.barElement, 'mouseenter')\n .pipe(takeUntil(this.destroy$))\n .subscribe((event: MouseEvent) => {\n if (this.dragContainer.linkDraggingId && this.dragContainer.linkDraggingId !== this.item.id) {\n if (this.item.linkable) {\n this.barElement.classList.add(dropClass);\n this.dragContainer.emitLinkDragEntered({\n item: this.item,\n element: this.barElement\n });\n }\n } else {\n this.barElement.classList.add(activeClass);\n }\n });\n\n fromEvent(this.barElement, 'mouseleave')\n .pipe(takeUntil(this.destroy$))\n .subscribe((event: MouseEvent) => {\n if (!this.dragContainer.linkDraggingId) {\n this.barElement.classList.remove(activeClass);\n } else {\n this.dragContainer.emitLinkDragLeaved();\n }\n this.barElement.classList.remove(dropClass);\n });\n }\n\n private createBarDrag() {\n const dragRef = this.dragDrop.createDrag(this.barElement);\n dragRef.lockAxis = 'x';\n dragRef.started.subscribe(() => {\n this.setDraggingStyles();\n this.dragContainer.dragStarted.emit({ item: this.item.origin });\n });\n dragRef.moved.subscribe((event) => {\n const currentX = this.item.refs.x + event.distance.x;\n const currentDate = this.ganttUpper.view.getDateByXPoint(currentX);\n const currentStartX = this.ganttUpper.view.getXPointByDate(currentDate);\n const dayWidth = this.ganttUpper.view.getDayOccupancyWidth(currentDate);\n const diffDays = differenceInCalendarDays(this.item.end.value, this.item.start.value);\n let start = currentDate;\n let end = currentDate.addDays(diffDays);\n if (currentX > currentStartX + dayWidth / 2) {\n start = start.addDays(1);\n end = end.addDays(1);\n }\n this.openDragBackdrop(this.barElement, start, end);\n this.item.updateDate(start, end);\n this.dragContainer.dragMoved.emit({ item: this.item.origin });\n });\n dragRef.ended.subscribe((event) => {\n this.clearDraggingStyles();\n this.closeDragBackdrop();\n event.source.reset();\n this.dragContainer.dragEnded.emit({ item: this.item.origin });\n });\n this.barDragRef = dragRef;\n return dragRef;\n }\n\n private createBarHandleDrags() {\n const dragRefs = [];\n const handles = this.barElement.querySelectorAll<HTMLElement>('.drag-handles .handle');\n handles.forEach((handle, index) => {\n const isBefore = index === 0;\n const dragRef = this.dragDrop.createDrag(handle);\n dragRef.lockAxis = 'x';\n dragRef.withBoundaryElement(this.dom.root as HTMLElement);\n\n dragRef.started.subscribe(() => {\n this.setDraggingStyles();\n this.dragContainer.dragStarted.emit({ item: this.item.origin });\n });\n\n dragRef.moved.subscribe((event) => {\n if (isBefore) {\n const x = this.item.refs.x + event.distance.x;\n const width = this.item.refs.width + event.distance.x * -1;\n if (width > dragMinWidth) {\n this.barElement.style.width = width + 'px';\n this.barElement.style.left = x + 'px';\n this.openDragBackdrop(\n this.barElement,\n this.ganttUpper.view.getDateByXPoint(x),\n this.ganttUpper.view.getDateByXPoint(x + width)\n );\n this.item.updateDate(this.ganttUpper.view.getDateByXPoint(x), this.item.end);\n }\n } else {\n const width = this.item.refs.width + event.distance.x;\n if (width > dragMinWidth) {\n this.barElement.style.width = width + 'px';\n this.openDragBackdrop(\n this.barElement,\n this.ganttUpper.view.getDateByXPoint(this.item.refs.x),\n this.ganttUpper.view.getDateByXPoint(this.item.refs.x + width)\n );\n }\n this.item.updateDate(this.item.start, this.ganttUpper.view.getDateByXPoint(this.item.refs.x + width));\n }\n this.dragContainer.dragMoved.emit({ item: this.item.origin });\n event.source.reset();\n });\n\n dragRef.ended.subscribe((event) => {\n if (isBefore) {\n const width = this.item.refs.width + event.distance.x * -1;\n if (width > dragMinWidth) {\n this.item.updateDate(this.ganttUpper.view.getDateByXPoint(this.item.refs.x + event.distance.x), this.item.end);\n } else {\n this.item.updateDate(this.item.end.startOfDay(), this.item.end);\n }\n } else {\n const width = this.item.refs.width + event.distance.x;\n if (width > dragMinWidth) {\n this.item.updateDate(\n this.item.start,\n this.ganttUpper.view.getDateByXPoint(this.item.refs.x + this.item.refs.width + event.distance.x)\n );\n } else {\n this.item.updateDate(this.item.start, this.item.start.endOfDay());\n }\n }\n this.clearDraggingStyles();\n this.closeDragBackdrop();\n this.dragContainer.dragEnded.emit({ item: this.item.origin });\n });\n dragRefs.push(dragRef);\n });\n return dragRefs;\n }\n\n private createLinkHandleDrags() {\n const dragRefs = [];\n const handles = this.barElement.querySelectorAll<HTMLElement>('.link-handles .handle');\n handles.forEach((handle, index) => {\n const isBegin = index === 0;\n const dragRef = this.dragDrop.createDrag(handle);\n dragRef.withBoundaryElement(this.dom.root as HTMLElement);\n dragRef.beforeStarted.subscribe(() => {\n handle.style.pointerEvents = 'none';\n if (this.barDragRef) {\n this.barDragRef.disabled = true;\n }\n this.createLinkDraggingLine();\n this.dragContainer.emitLinkDragStarted({\n element: this.barElement,\n item: this.item,\n pos: isBegin ? InBarPosition.start : InBarPosition.finish\n });\n });\n\n dragRef.moved.subscribe(() => {\n const positions = this.calcLinkLinePositions(handle, isBegin);\n this.linkDraggingLine.setAttribute('x1', positions.x1.toString());\n this.linkDraggingLine.setAttribute('y1', positions.y1.toString());\n this.linkDraggingLine.setAttribute('x2', positions.x2.toString());\n this.linkDraggingLine.setAttribute('y2', positions.y2.toString());\n });\n\n dragRef.ended.subscribe((event) => {\n handle.style.pointerEvents = '';\n if (this.barDragRef) {\n this.barDragRef.disabled = false;\n }\n // 计算line拖动的落点位于目标Bar的值,如果值大于Bar宽度的一半,说明是拖动到Begin位置,否则则为拖动到End位置\n if (this.dragContainer.linkDragPath.to) {\n const placePointX =\n event.source.getRootElement().getBoundingClientRect().x -\n this.dragContainer.linkDragPath.to.element.getBoundingClientRect().x;\n\n this.dragContainer.emitLinkDragEnded({\n ...this.dragContainer.linkDragPath.to,\n pos:\n placePointX < this.dragContainer.linkDragPath.to.item.refs.width / 2\n ? InBarPosition.start\n : InBarPosition.finish\n });\n }\n event.source.reset();\n this.barElement.classList.remove(activeClass);\n this.destroyLinkDraggingLine();\n });\n\n dragRefs.push(dragRef);\n });\n return dragRefs;\n }\n\n private openDragBackdrop(dragElement: HTMLElement, start: GanttDate, end: GanttDate) {\n const dragMaskElement = this.dom.root.querySelector('.gantt-drag-mask') as HTMLElement;\n const dragBackdropElement = this.dom.root.querySelector('.gantt-drag-backdrop') as HTMLElement;\n const rootRect = this.dom.root.getBoundingClientRect();\n const dragRect = dragElement.getBoundingClientRect();\n const left = dragRect.left - rootRect.left - this.dom.side.clientWidth;\n const width = dragRect.right - dragRect.left;\n dragMaskElement.style.left = left + 'px';\n dragMaskElement.style.width = width + 'px';\n dragMaskElement.querySelector('.start').innerHTML = start.format('MM-dd');\n dragMaskElement.querySelector('.end').innerHTML = end.format('MM-dd');\n dragMaskElement.style.display = 'block';\n dragBackdropElement.style.display = 'block';\n }\n\n private closeDragBackdrop() {\n const dragMaskElement = this.dom.root.querySelector('.gantt-drag-mask') as HTMLElement;\n const dragBackdropElement = this.dom.root.querySelector('.gantt-drag-backdrop') as HTMLElement;\n dragMaskElement.style.display = 'none';\n dragBackdropElement.style.display = 'none';\n }\n\n private setDraggingStyles() {\n this.barElement.style.pointerEvents = 'none';\n this.barElement.classList.add('gantt-bar-draggable-drag');\n }\n\n private clearDraggingStyles() {\n this.barElement.style.pointerEvents = '';\n this.barElement.classList.remove('gantt-bar-draggable-drag');\n }\n\n private calcLinkLinePositions(target: HTMLElement, isBefore: boolean) {\n const rootRect = this.dom.root.getBoundingClientRect();\n const targetRect = target.getBoundingClientRect();\n const layerRect = target.parentElement.parentElement.getBoundingClientRect();\n return {\n x1: layerRect.left + (isBefore ? 0 : layerRect.width) - rootRect.left,\n y1: layerRect.top + layerRect.height / 2 - rootRect.top,\n x2: targetRect.left - rootRect.left + targetRect.width / 2,\n y2: targetRect.top - rootRect.top + targetRect.height / 2\n };\n }\n\n private createLinkDraggingLine() {\n if (!this.linkDraggingLine) {\n const svgElement = createSvgElement('svg', 'gantt-link-drag-container');\n const linElement = createSvgElement('line', 'link-dragging-line');\n linElement.style.pointerEvents = 'none';\n svgElement.appendChild(linElement);\n this.dom.root.appendChild(svgElement);\n this.linkDraggingLine = linElement;\n }\n }\n\n private destroyLinkDraggingLine() {\n if (this.linkDraggingLine) {\n this.linkDraggingLine.parentElement.remove();\n this.linkDraggingLine = null;\n }\n }\n\n createDrags(elementRef: ElementRef, item: GanttItemInternal, ganttUpper: GanttUpper) {\n this.item = item;\n this.barElement = elementRef.nativeElement;\n this.ganttUpper = ganttUpper;\n\n if (!item.draggable || (this.dragDisabled && this.linkDragDisabled)) {\n return;\n } else {\n this.createMouseEvents();\n if (!this.dragDisabled) {\n const dragRef = this.createBarDrag();\n const dragHandlesRefs = this.createBarHandleDrags();\n this.dragRefs.push(dragRef, ...dragHandlesRefs);\n }\n if (!this.linkDragDisabled) {\n const linkDragRefs = this.createLinkHandleDrags();\n this.dragRefs.push(...linkDragRefs);\n }\n }\n }\n\n ngOnDestroy() {\n this.closeDragBackdrop();\n this.dragRefs.forEach((dragRef) => dragRef.dispose());\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import {\n Component,\n OnInit,\n HostBinding,\n ElementRef,\n OnChanges,\n OnDestroy,\n Inject,\n ViewChild,\n Output,\n EventEmitter,\n AfterViewInit\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\nimport { GanttBarDrag } from './bar-drag';\nimport { hexToRgb } from '../../utils/helpers';\nimport { GanttDragContainer } from '../../gantt-drag-container';\nimport { barBackground } from '../../gantt.styles';\nimport { GanttBarClickEvent } from '../../class';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\nimport { GanttItemUpper } from '../../gantt-item-upper';\n\nfunction linearGradient(sideOrCorner: string, color: string, stop: string) {\n return `linear-gradient(${sideOrCorner},${color} 0%,${stop} 40%)`;\n}\n\n@Component({\n selector: 'ngx-gantt-bar,gantt-bar',\n templateUrl: './bar.component.html',\n providers: [GanttBarDrag]\n})\nexport class NgxGanttBarComponent extends GanttItemUpper implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n @Output() barClick = new EventEmitter<GanttBarClickEvent>();\n\n @ViewChild('content') contentElementRef: ElementRef<HTMLDivElement>;\n\n @HostBinding('class.gantt-bar') ganttItemClass = true;\n\n color = 'red';\n\n constructor(\n private dragContainer: GanttDragContainer,\n private drag: GanttBarDrag,\n elementRef: ElementRef<HTMLDivElement>,\n @Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper\n ) {\n super(elementRef, ganttUpper);\n }\n\n ngOnInit() {\n super.onInit();\n this.dragContainer.dragEnded.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.setContentBackground();\n });\n }\n\n ngAfterViewInit() {\n this.drag.createDrags(this.elementRef, this.item, this.ganttUpper);\n this.setContentBackground();\n }\n\n ngOnChanges(): void {\n super.onChanges();\n }\n\n onBarClick(event: Event) {\n this.barClick.emit({ event, item: this.item.origin });\n }\n\n private setContentBackground() {\n const contentElement = this.contentElementRef.nativeElement;\n const color = this.item.color || barBackground;\n const style: Partial<CSSStyleDeclaration> = this.item.barStyle || {};\n if (this.item.origin.start && this.item.origin.end) {\n style.background = color;\n style.borderRadius = '';\n }\n if (this.item.origin.start && !this.item.origin.end) {\n style.background = linearGradient('to left', hexToRgb(color, 0.55), hexToRgb(color, 1));\n style.borderRadius = '4px 12.5px 12.5px 4px';\n }\n if (!this.item.origin.start && this.item.origin.end) {\n style.background = linearGradient('to right', hexToRgb(color, 0.55), hexToRgb(color, 1));\n style.borderRadius = '12.5px 4px 4px 12.5px';\n }\n if (this.item.progress >= 0) {\n const contentProgressElement = contentElement.querySelector('.gantt-bar-content-progress') as HTMLDivElement;\n style.background = hexToRgb(color, 0.3);\n style.borderRadius = '';\n contentProgressElement.style.background = color;\n }\n\n for (const key in style) {\n if (style.hasOwnProperty(key)) {\n contentElement.style[key] = style[key];\n }\n }\n }\n\n stopPropagation(event: Event) {\n event.stopPropagation();\n }\n\n ngOnDestroy() {\n super.onDestroy();\n }\n}\n","<div class=\"gantt-bar-layer\">\n <div *ngIf=\"item.draggable && ganttUpper.draggable\" class=\"drag-handles\">\n <ng-container>\n <span class=\"handle\" (mousedown)=\"stopPropagation($event)\"></span>\n <span class=\"handle\" (mousedown)=\"stopPropagation($event)\"></span>\n </ng-container>\n </div>\n <div *ngIf=\"item.linkable && ganttUpper.linkable\" class=\"link-handles\">\n <span class=\"handle\"><span class=\"point\"></span></span>\n <span class=\"handle\"> <span class=\"point\"></span></span>\n </div>\n</div>\n<div class=\"gantt-bar-border\"></div>\n<div #content class=\"gantt-bar-content\" (click)=\"onBarClick($event)\">\n <div class=\"gantt-bar-content-progress\" *ngIf=\"item.progress >= 0\" [style.width.%]=\"item.progress * 100\"></div>\n <ng-template [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n</div>\n","import { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { SelectionModel } from '@angular/cdk/collections';\nimport { Component, OnInit, HostBinding, Inject, Input, TemplateRef, Output, EventEmitter } from '@angular/core';\nimport { GanttGroupInternal, GanttItemInternal, GanttBarClickEvent, GanttLineClickEvent } from '../../class';\nimport { GANTT_UPPER_TOKEN, GanttUpper } from '../../gantt-upper';\n\n@Component({\n selector: 'gantt-main',\n templateUrl: './gantt-main.component.html'\n})\nexport class GanttMainComponent implements OnInit {\n @Input() groups: GanttGroupInternal[];\n\n @Input() items: GanttItemInternal[];\n\n @Input() groupHeaderTemplate: TemplateRef<any>;\n\n @Input() itemTemplate: TemplateRef<any>;\n\n @Input() barTemplate: TemplateRef<any>;\n\n @Input() rangeTemplate: TemplateRef<any>;\n\n @Output() barClick = new EventEmitter<GanttBarClickEvent>();\n\n @Output() lineClick = new EventEmitter<GanttLineClickEvent>();\n\n @HostBinding('class.gantt-main-container') ganttMainClass = true;\n\n constructor(@Inject(GANTT_UPPER_TOKEN) public ganttUpper: GanttUpper) {}\n\n ngOnInit() {}\n\n trackBy(index: number, item: GanttGroupInternal | GanttItemInternal) {\n return item.id || index;\n }\n}\n","<gantt-links-overlay [groups]=\"groups\" [items]=\"items\" (lineClick)=\"lineClick.emit($event)\"></gantt-links-overlay>\n<!-- groups -->\n<div class=\"gantt-main-groups\" *ngIf=\"groups && groups.length > 0; else itemsTemplate\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-container *ngFor=\"let group of groups; trackBy: trackBy\">\n <div class=\"gantt-group\" [ngClass]=\"group.class\">\n <ng-template [ngTemplateOutlet]=\"groupHeaderTemplate\" [ngTemplateOutletContext]=\"{ group: group }\"></ng-template>\n </div>\n <div *ngIf=\"group.expanded\" class=\"gantt-items\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: group.items }\"></ng-template>\n </div>\n </ng-container>\n</div>\n<!-- items -->\n<ng-template #itemsTemplate>\n <div class=\"gantt-main-items\" [style.width.px]=\"ganttUpper.view.width\">\n <ng-template [ngTemplateOutlet]=\"ganttItems\" [ngTemplateOutletContext]=\"{ items: items }\"></ng-template>\n </div>\n</ng-template>\n\n<ng-template #ganttItems let-items=\"items\">\n <ng-container *ngFor=\"let item of items;\">\n <div\n class=\"gantt-item\"\n [style.height.px]=\"ganttUpper.styles.lineHeight\"\n [class.gantt-main-item-active]=\"ganttUpper.isSelected(item.id)\"\n >\n <ng-container *ngIf=\"item.type | isGanttCustomItem\">\n <ng-template [ngTemplateOutlet]=\"itemTemplate\" [ngTemplateOutletContext]=\"{ item: item.origin, refs: item.refs }\"></ng-template>\n </ng-container>\n <gantt-range *ngIf=\"item.type | isGanttRangeItem\" [template]=\"rangeTemplate\" [item]=\"item\"></gantt-range>\n <gantt-bar *ngIf=\"item.type | isGanttBarItem\" [item]=\"item\" [template]=\"barTemplate\" (barClick)=\"barClick.emit($event)\"></gantt-bar>\n </div>\n <ng-template\n *ngIf=\"item.children && item.expanded\"\n [ngTemplateOutlet]=\"ganttItems\"\n [ngTemplateOutletContext]=\"{ items: item.children }\"\n ></ng-template>\n </ng-container>\n</ng-template>\n","import {\n Component,\n OnInit,\n ElementRef,\n ChangeDetectionStrategy,\n Input,\n EventEmitter,\n Output,\n ChangeDetectorRef,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ContentChildren,\n QueryList,\n AfterViewInit,\n ContentChild,\n TemplateRef,\n forwardRef,\n Inject\n} from '@angular/core';\nimport { startWith, takeUntil, take, finalize } from 'rxjs/operators';\nimport { Subject, Observable } from 'rxjs';\nimport { GanttUpper, GANTT_UPPER_TOKEN } from './gantt-upper';\nimport { GanttLinkDragEvent, GanttLineClickEvent, GanttItemInternal, GanttItem, GanttSelectedEvent } from './class';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { sideWidth } from './gantt.styles';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { GANTT_ABSTRACT_TOKEN } from './gantt-abstract';\nimport { defaultColumnWidth } from './components/table/gantt-table.component';\nimport { GanttGlobalConfig, GANTT_GLOBAL_CONFIG } from './gantt.config';\n@Component({\n selector: 'ngx-gantt',\n templateUrl: './gantt.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: GANTT_UPPER_TOKEN,\n useExisting: NgxGanttComponent\n },\n {\n provide: GANTT_ABSTRACT_TOKEN,\n useExisting: forwardRef(() => NgxGanttComponent)\n }\n ]\n})\nexport class NgxGanttComponent extends GanttUpper implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n @Input() maxLevel = 2;\n\n @Input() async: boolean;\n\n @Input() childrenResolve: (GanttItem) => Observable<GanttItem[]>;\n\n @Input() linkable: boolean;\n\n @Output() linkDragStarted = new EventEmitter<GanttLinkDragEvent>();\n\n @Output() linkDragEnded = new EventEmitter<GanttLinkDragEvent>();\n\n @Output() lineClick = new EventEmitter<GanttLineClickEvent>();\n\n @Output() selectedChange = new EventEmitter<GanttSelectedEvent>();\n\n @ContentChild(NgxGanttTableComponent) table: NgxGanttTableComponent;\n\n @ContentChildren(NgxGanttTableColumnComponent, { descendants: true }) columns: QueryList<NgxGanttTableColumnComponent>;\n\n @ContentChild('tableEmpty', { static: true }) tableEmptyTemplate: TemplateRef<any>;\n\n private ngUnsubscribe$ = new Subject();\n\n public sideTableWidth = sideWidth;\n\n constructor(\n elementRef: ElementRef<HTMLElement>,\n cdr: ChangeDetectorRef,\n ngZone: NgZone,\n @Inject(GANTT_GLOBAL_CONFIG) config: GanttGlobalConfig\n ) {\n super(elementRef, cdr, ngZone, config);\n }\n\n ngOnInit() {\n super.onInit();\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.dragContainer.linkDragStarted.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((event: GanttLinkDragEvent) => {\n this.linkDragStarted.emit(event);\n });\n this.dragContainer.linkDragEnded.pipe(takeUntil(this.ngUnsubscribe$)).subscribe((event: GanttLinkDragEvent) => {\n this.linkDragEnded.emit(event);\n });\n });\n }\n\n ngAfterViewInit() {\n this.columns.changes.pipe(startWith(true), takeUntil(this.ngUnsubscribe$)).subscribe(() => {\n this.columns.forEach((column) => {\n if (!column.columnWidth) {\n column.columnWidth = coerceCssPixelValue(defaultColumnWidth);\n }\n });\n this.cdr.detectChanges();\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.onChanges(changes);\n }\n\n expandChildren(item: GanttItemInternal) {\n if (!item.expanded) {\n item.setExpand(true);\n if (this.async && this.childrenResolve && item.children.length === 0) {\n item.loading = true;\n this.childrenResolve(item.origin)\n .pipe(\n take(1),\n finalize(() => {\n item.loading = false;\n this.expandChange.emit();\n this.cdr.detectChanges();\n })\n )\n .subscribe((items) => {\n item.addChildren(items);\n this.computeItemsRefs(...item.children);\n });\n } else {\n this.computeItemsRefs(...item.children);\n this.expandChange.emit();\n }\n } else {\n item.setExpand(false);\n this.expandChange.emit();\n }\n }\n\n selectItem(selectEvent: GanttSelectedEvent) {\n if (!this.selectable) {\n return;\n }\n const { event, selectedValue } = selectEvent;\n this.selectionModel.toggle((selectedValue as GanttItem).id);\n\n const selectedIds = this.selectionModel.selected;\n if (this.multiple) {\n const _selectedValue = this.getGanttItems(selectedIds).map((item) => item.origin);\n this.selectedChange.emit({ event, selectedValue: _selectedValue });\n } else {\n const _selectedValue = this.getGanttItem(selectedIds[0])?.origin;\n this.selectedChange.emit({ event, selectedValue: _selectedValue });\n }\n }\n\n ngOnDestroy() {\n super.onDestroy();\n }\n}\n","<ngx-gantt-root>\n <ng-template #sideTemplate>\n <gantt-table\n [groups]=\"groups\"\n [items]=\"items\"\n [columns]=\"columns\"\n [groupTemplate]=\"groupTemplate\"\n [emptyTemplate]=\"tableEmptyTemplate\"\n [rowBeforeTemplate]=\"table?.rowBeforeTemplate\"\n [rowAfterTemplate]=\"table?.rowAfterTemplate\"\n (itemClick)=\"selectItem($event)\"\n ></gantt-table>\n </ng-template>\n <ng-template #mainTemplate>\n <gantt-main\n [groups]=\"groups\"\n [items]=\"items\"\n [groupHeaderTemplate]=\"groupHeaderTemplate\"\n [itemTemplate]=\"itemTemplate\"\n [barTemplate]=\"barTemplate\"\n [rangeTemplate]=\"rangeTemplate\"\n (barClick)=\"barClick.emit($event)\"\n (lineClick)=\"lineClick.emit($event)\"\n >\n </gantt-main>\n </ng-template>\n</ngx-gantt-root>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NgxGanttComponent } from './gantt.component';\nimport { NgxGanttTableComponent } from './table/gantt-table.component';\nimport { NgxGanttTableColumnComponent } from './table/gantt-column.component';\nimport { GanttCalendarComponent } from './components/calendar/calendar.component';\nimport { GanttTableComponent } from './components/table/gantt-table.component';\nimport { NgxGanttBarComponent } from './components/bar/bar.component';\nimport { GanttMainComponent } from './components/main/gantt-main.component';\nimport { GanttIconComponent } from './components/icon/icon.component';\nimport { GanttDragBackdropComponent } from './components/drag-backdrop/drag-backdrop.component';\nimport { GanttLinksComponent } from './components/links/links.component';\nimport { NgxGanttRootComponent } from './root.component';\nimport { NgxGanttRangeComponent } from './components/range/range.component';\nimport { IsGanttRangeItemPipe, IsGanttBarItemPipe, IsGanttCustomItemPipe } from './gantt.pipe';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { GANTT_GLOBAL_CONFIG, defaultConfig } from './gantt.config';\n\n@NgModule({\n imports: [CommonModule, DragDropModule],\n exports: [\n NgxGanttComponent,\n NgxGanttTableComponent,\n NgxGanttTableColumnComponent,\n NgxGanttRootComponent,\n NgxGanttBarComponent,\n NgxGanttRangeComponent\n ],\n declarations: [\n NgxGanttComponent,\n NgxGanttTableComponent,\n NgxGanttTableColumnComponent,\n GanttTableComponent,\n GanttMainComponent,\n GanttCalendarComponent,\n GanttLinksComponent,\n NgxGanttBarComponent,\n GanttIconComponent,\n GanttDragBackdropComponent,\n NgxGanttRangeComponent,\n NgxGanttRootComponent,\n IsGanttRangeItemPipe,\n IsGanttBarItemPipe,\n IsGanttCustomItemPipe\n ],\n providers: [\n {\n provide: GANTT_GLOBAL_CONFIG,\n useValue: defaultConfig\n }\n ]\n})\nexport class NgxGanttModule {}\n","/*\n * Public API Surface of gantt\n */\n\nexport * from './gantt.module';\nexport * from './gantt-upper';\nexport * from './root.component';\nexport * from './gantt.component';\nexport * from './table/gantt-table.component';\nexport * from './table/gantt-column.component';\nexport * from './components/bar/bar.component';\nexport * from './components/range/range.component';\nexport * from './utils/date';\nexport * from './class';\nexport * from './views/view';\nexport * from './gantt-item-upper';\nexport * from './gantt.pipe';\nexport * from './gantt-print.service';\nexport * from './gantt.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fromUnixTime","getWeek","getDaysInMonth","differenceInCalendarDays","setDate","addSeconds","addMinutes","addHours","addDays","addWeeks","addMonths","addQuarters","addYears","startOfDay","startOfWeek","startOfMonth","startOfQuarter","startOfYear","endOfDay","endOfWeek","endOfMonth","endOfQuarter","endOfYear","getUnixTime","format","isWeekend","isToday","GanttViewType","GanttLinkType","GanttLinkLineType","LinkColors","GanttItemType","BehaviorSubject","InjectionToken","viewOptions","differenceInDays","differenceInCalendarQuarters","eachMonthOfInterval","eachYearOfInterval","eachWeekOfInterval","eachDayOfInterval","differenceInCalendarYears","EventEmitter","Subject","coerceBooleanProperty","SelectionModel","take","skip","takeUntil","Directive","Inject","Input","Output","ContentChild","HostBinding","coerceCssPixelValue","Component","Pipe","ViewChild","merge","fromEvent","startWith","map","pairwise","auditTime","Injectable","html2canvas","Optional","debounceTime","finalize","forwardRef","ChangeDetectionStrategy","ContentChildren","CommonModule","DragDropModule","NgModule"],"mappings":"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"}