{"version":3,"file":"ganttDiagram-db1fc7f4.js","sources":["../src/diagrams/gantt/parser/gantt.jison","../src/diagrams/gantt/ganttDb.js","../src/diagrams/gantt/ganttRenderer.js","../src/diagrams/gantt/styles.js","../src/diagrams/gantt/ganttDiagram.ts"],"sourcesContent":["/** mermaid\n * https://mermaidjs.github.io/\n * (c) 2015 Knut Sveidqvist\n * MIT license.\n */\n%lex\n\n%options case-insensitive\n\n%x click\n%x href\n%x callbackname\n%x callbackargs\n%x open_directive\n%x type_directive\n%x arg_directive\n%x close_directive\n%x acc_title\n%x acc_descr\n%x acc_descr_multiline\n%%\n\\%\\%\\{ { this.begin('open_directive'); return 'open_directive'; }\n((?:(?!\\}\\%\\%)[^:.])*) { this.begin('type_directive'); return 'type_directive'; }\n\":\" { this.popState(); this.begin('arg_directive'); return ':'; }\n\\}\\%\\% { this.popState(); this.popState(); return 'close_directive'; }\n((?:(?!\\}\\%\\%).|\\n)*) return 'arg_directive';\n\naccTitle\\s*\":\"\\s* { this.begin(\"acc_title\");return 'acc_title'; }\n(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_title_value\"; }\naccDescr\\s*\":\"\\s* { this.begin(\"acc_descr\");return 'acc_descr'; }\n(?!\\n|;|#)*[^\\n]* { this.popState(); return \"acc_descr_value\"; }\naccDescr\\s*\"{\"\\s* { this.begin(\"acc_descr_multiline\");}\n[\\}] { this.popState(); }\n[^\\}]* return \"acc_descr_multiline_value\";\n\n\\%\\%(?!\\{)*[^\\n]* /* skip comments */\n[^\\}]\\%\\%*[^\\n]* /* skip comments */\n\\%\\%*[^\\n]*[\\n]* /* do nothing */\n\n[\\n]+ return 'NL';\n\\s+ /* skip whitespace */\n\\#[^\\n]* /* skip comments */\n\\%%[^\\n]* /* skip comments */\n\n/*\n---interactivity command---\n'href' adds a link to the specified task. 'href' can only be specified when the\nline was introduced with 'click'.\n'href \"\"' attaches the specified link to the task that was specified by 'click'.\n*/\n\"href\"[\\s]+[\"] this.begin(\"href\");\n[\"] this.popState();\n[^\"]* return 'href';\n\n/*\n---interactivity command---\n'call' adds a callback to the specified task. 'call' can only be specified when\nthe line was introdcued with 'click'.\n'call ()' attaches the function 'callbackname' with the specified\narguments to the task that was specified by 'click'.\nFunction arguments are optional: 'call ()' simply executes 'callbackname' without any arguments.\n*/\n\"call\"[\\s]+ this.begin(\"callbackname\");\n\\([\\s]*\\) this.popState();\n\\( this.popState(); this.begin(\"callbackargs\");\n[^(]* return 'callbackname';\n\\) this.popState();\n[^)]* return 'callbackargs';\n\n/*\n'click' is the keyword to introduce a line that contains interactivity commands.\n'click' must be followed by an existing task-id. All commands are attached to\nthat id.\n'click ' can be followed by href or call commands in any desired order\n*/\n\"click\"[\\s]+ this.begin(\"click\");\n[\\s\\n] this.popState();\n[^\\s\\n]* return 'click';\n\n\"gantt\" return 'gantt';\n\"dateFormat\"\\s[^#\\n;]+ return 'dateFormat';\n\"inclusiveEndDates\" return 'inclusiveEndDates';\n\"topAxis\" return 'topAxis';\n\"axisFormat\"\\s[^#\\n;]+ return 'axisFormat';\n\"tickInterval\"\\s[^#\\n;]+ return 'tickInterval';\n\"includes\"\\s[^#\\n;]+ return 'includes';\n\"excludes\"\\s[^#\\n;]+ return 'excludes';\n\"todayMarker\"\\s[^\\n;]+ return 'todayMarker';\n\\d\\d\\d\\d\"-\"\\d\\d\"-\"\\d\\d return 'date';\n\"title\"\\s[^#\\n;]+ return 'title';\n\"accDescription\"\\s[^#\\n;]+ return 'accDescription'\n\"section\"\\s[^#:\\n;]+ return 'section';\n[^#:\\n;]+ return 'taskTxt';\n\":\"[^#\\n;]+ return 'taskData';\n\":\" return ':';\n<> return 'EOF';\n. return 'INVALID';\n\n/lex\n\n%left '^'\n\n%start start\n\n%% /* language grammar */\n\nstart\n\t: directive start\n\t| gantt document 'EOF' { return $2; }\n\t;\n\ndocument\n\t: /* empty */ { $$ = [] }\n\t| document line {$1.push($2);$$ = $1}\n\t;\n\nline\n\t: SPACE statement { $$ = $2 }\n\t| statement { $$ = $1 }\n\t| NL { $$=[];}\n\t| EOF { $$=[];}\n\t;\n\nstatement\n : dateFormat {yy.setDateFormat($1.substr(11));$$=$1.substr(11);}\n | inclusiveEndDates {yy.enableInclusiveEndDates();$$=$1.substr(18);}\n | topAxis {yy.TopAxis();$$=$1.substr(8);}\n | axisFormat {yy.setAxisFormat($1.substr(11));$$=$1.substr(11);}\n | tickInterval {yy.setTickInterval($1.substr(13));$$=$1.substr(13);}\n | excludes {yy.setExcludes($1.substr(9));$$=$1.substr(9);}\n | includes {yy.setIncludes($1.substr(9));$$=$1.substr(9);}\n | todayMarker {yy.setTodayMarker($1.substr(12));$$=$1.substr(12);}\n | title {yy.setDiagramTitle($1.substr(6));$$=$1.substr(6);}\n | acc_title acc_title_value { $$=$2.trim();yy.setAccTitle($$); }\n | acc_descr acc_descr_value { $$=$2.trim();yy.setAccDescription($$); }\n | acc_descr_multiline_value { $$=$1.trim();yy.setAccDescription($$); } | section {yy.addSection($1.substr(8));$$=$1.substr(8);}\n | clickStatement\n | taskTxt taskData {yy.addTask($1,$2);$$='task';}\n | directive\n ;\n\ndirective\n : openDirective typeDirective closeDirective 'NL'\n | openDirective typeDirective ':' argDirective closeDirective 'NL'\n ;\n\n/*\nclick allows any combination of href and call.\n*/\nclickStatement\n : click callbackname {$$ = $1;yy.setClickEvent($1, $2, null);}\n | click callbackname callbackargs {$$ = $1;yy.setClickEvent($1, $2, $3);}\n\n | click callbackname href {$$ = $1;yy.setClickEvent($1, $2, null);yy.setLink($1,$3);}\n | click callbackname callbackargs href {$$ = $1;yy.setClickEvent($1, $2, $3);yy.setLink($1,$4);}\n\n | click href callbackname {$$ = $1;yy.setClickEvent($1, $3, null);yy.setLink($1,$2);}\n | click href callbackname callbackargs {$$ = $1;yy.setClickEvent($1, $3, $4);yy.setLink($1,$2);}\n\n | click href {$$ = $1;yy.setLink($1, $2);}\n ;\n\nclickStatementDebug\n : click callbackname {$$=$1 + ' ' + $2;}\n | click callbackname href {$$=$1 + ' ' + $2 + ' ' + $3;}\n\n | click callbackname callbackargs {$$=$1 + ' ' + $2 + ' ' + $3;}\n | click callbackname callbackargs href {$$=$1 + ' ' + $2 + ' ' + $3 + ' ' + $4;}\n\n | click href callbackname {$$=$1 + ' ' + $2 + ' ' + $3;}\n | click href callbackname callbackargs {$$=$1 + ' ' + $2 + ' ' + $3 + ' ' + $4;}\n\n | click href {$$=$1 + ' ' + $2;}\n ;\n\nopenDirective\n : open_directive { yy.parseDirective('%%{', 'open_directive'); }\n ;\n\ntypeDirective\n : type_directive { yy.parseDirective($1, 'type_directive'); }\n ;\n\nargDirective\n : arg_directive { $1 = $1.trim().replace(/'/g, '\"'); yy.parseDirective($1, 'arg_directive'); }\n ;\n\ncloseDirective\n : close_directive { yy.parseDirective('}%%', 'close_directive', 'gantt'); }\n ;\n\n%%\n","import { sanitizeUrl } from '@braintree/sanitize-url';\nimport dayjs from 'dayjs';\nimport dayjsIsoWeek from 'dayjs/plugin/isoWeek';\nimport dayjsCustomParseFormat from 'dayjs/plugin/customParseFormat';\nimport dayjsAdvancedFormat from 'dayjs/plugin/advancedFormat';\nimport { log } from '../../logger';\nimport * as configApi from '../../config';\nimport utils from '../../utils';\nimport mermaidAPI from '../../mermaidAPI';\n\nimport {\n setAccTitle,\n getAccTitle,\n getAccDescription,\n setAccDescription,\n clear as commonClear,\n setDiagramTitle,\n getDiagramTitle,\n} from '../../commonDb';\n\ndayjs.extend(dayjsIsoWeek);\ndayjs.extend(dayjsCustomParseFormat);\ndayjs.extend(dayjsAdvancedFormat);\n\nlet dateFormat = '';\nlet axisFormat = '';\nlet tickInterval = undefined;\nlet todayMarker = '';\nlet includes = [];\nlet excludes = [];\nlet links = {};\nlet sections = [];\nlet tasks = [];\nlet currentSection = '';\nconst tags = ['active', 'done', 'crit', 'milestone'];\nlet funs = [];\nlet inclusiveEndDates = false;\nlet topAxis = false;\n\n// The serial order of the task in the script\nlet lastOrder = 0;\n\nexport const parseDirective = function (statement, context, type) {\n mermaidAPI.parseDirective(this, statement, context, type);\n};\n\nexport const clear = function () {\n sections = [];\n tasks = [];\n currentSection = '';\n funs = [];\n taskCnt = 0;\n lastTask = undefined;\n lastTaskID = undefined;\n rawTasks = [];\n dateFormat = '';\n axisFormat = '';\n tickInterval = undefined;\n todayMarker = '';\n includes = [];\n excludes = [];\n inclusiveEndDates = false;\n topAxis = false;\n lastOrder = 0;\n links = {};\n commonClear();\n};\n\nexport const setAxisFormat = function (txt) {\n axisFormat = txt;\n};\n\nexport const getAxisFormat = function () {\n return axisFormat;\n};\n\nexport const setTickInterval = function (txt) {\n tickInterval = txt;\n};\n\nexport const getTickInterval = function () {\n return tickInterval;\n};\n\nexport const setTodayMarker = function (txt) {\n todayMarker = txt;\n};\n\nexport const getTodayMarker = function () {\n return todayMarker;\n};\n\nexport const setDateFormat = function (txt) {\n dateFormat = txt;\n};\n\nexport const enableInclusiveEndDates = function () {\n inclusiveEndDates = true;\n};\n\nexport const endDatesAreInclusive = function () {\n return inclusiveEndDates;\n};\n\nexport const enableTopAxis = function () {\n topAxis = true;\n};\n\nexport const topAxisEnabled = function () {\n return topAxis;\n};\n\nexport const getDateFormat = function () {\n return dateFormat;\n};\n\nexport const setIncludes = function (txt) {\n includes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getIncludes = function () {\n return includes;\n};\nexport const setExcludes = function (txt) {\n excludes = txt.toLowerCase().split(/[\\s,]+/);\n};\n\nexport const getExcludes = function () {\n return excludes;\n};\n\nexport const getLinks = function () {\n return links;\n};\n\nexport const addSection = function (txt) {\n currentSection = txt;\n sections.push(txt);\n};\n\nexport const getSections = function () {\n return sections;\n};\n\nexport const getTasks = function () {\n let allItemsPricessed = compileTasks();\n const maxDepth = 10;\n let iterationCount = 0;\n while (!allItemsPricessed && iterationCount < maxDepth) {\n allItemsPricessed = compileTasks();\n iterationCount++;\n }\n\n tasks = rawTasks;\n\n return tasks;\n};\n\nexport const isInvalidDate = function (date, dateFormat, excludes, includes) {\n if (includes.includes(date.format(dateFormat.trim()))) {\n return false;\n }\n if (date.isoWeekday() >= 6 && excludes.includes('weekends')) {\n return true;\n }\n if (excludes.includes(date.format('dddd').toLowerCase())) {\n return true;\n }\n return excludes.includes(date.format(dateFormat.trim()));\n};\n\n/**\n * TODO: fully document what this function does and what types it accepts\n *\n * @param {object} task - The task to check.\n * @param {string | Date} task.startTime - Might be a `Date` or a `string`.\n * TODO: is this always a Date?\n * @param {string | Date} task.endTime - Might be a `Date` or a `string`.\n * TODO: is this always a Date?\n * @param {string} dateFormat - Dayjs date format string.\n * @param {*} excludes\n * @param {*} includes\n */\nconst checkTaskDates = function (task, dateFormat, excludes, includes) {\n if (!excludes.length || task.manualEndTime) {\n return;\n }\n let startTime;\n if (task.startTime instanceof Date) {\n startTime = dayjs(task.startTime);\n } else {\n startTime = dayjs(task.startTime, dateFormat, true);\n }\n startTime = startTime.add(1, 'd');\n\n let originalEndTime;\n if (task.endTime instanceof Date) {\n originalEndTime = dayjs(task.endTime);\n } else {\n originalEndTime = dayjs(task.endTime, dateFormat, true);\n }\n const [fixedEndTime, renderEndTime] = fixTaskDates(\n startTime,\n originalEndTime,\n dateFormat,\n excludes,\n includes\n );\n task.endTime = fixedEndTime.toDate();\n task.renderEndTime = renderEndTime;\n};\n\n/**\n * TODO: what does this function do?\n *\n * @param {dayjs.Dayjs} startTime - The start time.\n * @param {dayjs.Dayjs} endTime - The original end time (will return a different end time if it's invalid).\n * @param {string} dateFormat - Dayjs date format string.\n * @param {*} excludes\n * @param {*} includes\n * @returns {[endTime: dayjs.Dayjs, renderEndTime: Date | null]} The new `endTime`, and the end time to render.\n * `renderEndTime` may be `null` if `startTime` is newer than `endTime`.\n */\nconst fixTaskDates = function (startTime, endTime, dateFormat, excludes, includes) {\n let invalid = false;\n let renderEndTime = null;\n while (startTime <= endTime) {\n if (!invalid) {\n renderEndTime = endTime.toDate();\n }\n invalid = isInvalidDate(startTime, dateFormat, excludes, includes);\n if (invalid) {\n endTime = endTime.add(1, 'd');\n }\n startTime = startTime.add(1, 'd');\n }\n return [endTime, renderEndTime];\n};\n\nconst getStartDate = function (prevTime, dateFormat, str) {\n str = str.trim();\n\n // Test for after\n const re = /^after\\s+([\\d\\w- ]+)/;\n const afterStatement = re.exec(str.trim());\n\n if (afterStatement !== null) {\n // check all after ids and take the latest\n let latestEndingTask = null;\n afterStatement[1].split(' ').forEach(function (id) {\n let task = findTaskById(id);\n if (task !== undefined) {\n if (!latestEndingTask) {\n latestEndingTask = task;\n } else {\n if (task.endTime > latestEndingTask.endTime) {\n latestEndingTask = task;\n }\n }\n }\n });\n\n if (!latestEndingTask) {\n const dt = new Date();\n dt.setHours(0, 0, 0, 0);\n return dt;\n } else {\n return latestEndingTask.endTime;\n }\n }\n\n // Check for actual date set\n let mDate = dayjs(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n return mDate.toDate();\n } else {\n log.debug('Invalid date:' + str);\n log.debug('With date format:' + dateFormat.trim());\n const d = new Date(str);\n if (d === undefined || isNaN(d.getTime())) {\n throw new Error('Invalid date:' + str);\n }\n return d;\n }\n};\n\n/**\n * Parse a string into the args for `dayjs.add()`.\n *\n * The string have to be compound by a value and a shorthand duration unit. For example `5d`\n * represents 5 days.\n *\n * Please be aware that 1 day may be 23 or 25 hours, if the user lives in an area\n * that has daylight savings time (or even 23.5/24.5 hours in Lord Howe Island!)\n *\n * Shorthand unit supported are:\n *\n * - `y` for years\n * - `M` for months\n * - `w` for weeks\n * - `d` for days\n * - `h` for hours\n * - `s` for seconds\n * - `ms` for milliseconds\n *\n * @param {string} str - A string representing the duration.\n * @returns {[value: number, unit: dayjs.ManipulateType]} Arguments to pass to `dayjs.add()`\n */\nconst parseDuration = function (str) {\n const statement = /^(\\d+(?:\\.\\d+)?)([Mdhmswy]|ms)$/.exec(str.trim());\n if (statement !== null) {\n return [Number.parseFloat(statement[1]), statement[2]];\n }\n // NaN means an invalid duration\n return [NaN, 'ms'];\n};\n\nconst getEndDate = function (prevTime, dateFormat, str, inclusive = false) {\n str = str.trim();\n\n // Check for actual date\n let mDate = dayjs(str, dateFormat.trim(), true);\n if (mDate.isValid()) {\n if (inclusive) {\n mDate = mDate.add(1, 'd');\n }\n return mDate.toDate();\n }\n\n let endTime = dayjs(prevTime);\n const [durationValue, durationUnit] = parseDuration(str);\n if (!Number.isNaN(durationValue)) {\n const newEndTime = endTime.add(durationValue, durationUnit);\n if (newEndTime.isValid()) {\n endTime = newEndTime;\n }\n }\n return endTime.toDate();\n};\n\nlet taskCnt = 0;\nconst parseId = function (idStr) {\n if (idStr === undefined) {\n taskCnt = taskCnt + 1;\n return 'task' + taskCnt;\n }\n return idStr;\n};\n// id, startDate, endDate\n// id, startDate, length\n// id, after x, endDate\n// id, after x, length\n// startDate, endDate\n// startDate, length\n// after x, endDate\n// after x, length\n// endDate\n// length\n\nconst compileData = function (prevTask, dataStr) {\n let ds;\n\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n let endTimeData = '';\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = prevTask.endTime;\n endTimeData = data[0];\n break;\n case 2:\n task.id = parseId();\n task.startTime = getStartDate(undefined, dateFormat, data[0]);\n endTimeData = data[1];\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = getStartDate(undefined, dateFormat, data[1]);\n endTimeData = data[2];\n break;\n default:\n }\n\n if (endTimeData) {\n task.endTime = getEndDate(task.startTime, dateFormat, endTimeData, inclusiveEndDates);\n task.manualEndTime = dayjs(endTimeData, 'YYYY-MM-DD', true).isValid();\n checkTaskDates(task, dateFormat, excludes, includes);\n }\n\n return task;\n};\n\nconst parseData = function (prevTaskId, dataStr) {\n let ds;\n if (dataStr.substr(0, 1) === ':') {\n ds = dataStr.substr(1, dataStr.length);\n } else {\n ds = dataStr;\n }\n\n const data = ds.split(',');\n\n const task = {};\n\n // Get tags like active, done, crit and milestone\n getTaskTags(data, task, tags);\n\n for (let i = 0; i < data.length; i++) {\n data[i] = data[i].trim();\n }\n\n switch (data.length) {\n case 1:\n task.id = parseId();\n task.startTime = {\n type: 'prevTaskEnd',\n id: prevTaskId,\n };\n task.endTime = {\n data: data[0],\n };\n break;\n case 2:\n task.id = parseId();\n task.startTime = {\n type: 'getStartDate',\n startData: data[0],\n };\n task.endTime = {\n data: data[1],\n };\n break;\n case 3:\n task.id = parseId(data[0]);\n task.startTime = {\n type: 'getStartDate',\n startData: data[1],\n };\n task.endTime = {\n data: data[2],\n };\n break;\n default:\n }\n\n return task;\n};\n\nlet lastTask;\nlet lastTaskID;\nlet rawTasks = [];\nconst taskDb = {};\nexport const addTask = function (descr, data) {\n const rawTask = {\n section: currentSection,\n type: currentSection,\n processed: false,\n manualEndTime: false,\n renderEndTime: null,\n raw: { data: data },\n task: descr,\n classes: [],\n };\n const taskInfo = parseData(lastTaskID, data);\n rawTask.raw.startTime = taskInfo.startTime;\n rawTask.raw.endTime = taskInfo.endTime;\n rawTask.id = taskInfo.id;\n rawTask.prevTaskId = lastTaskID;\n rawTask.active = taskInfo.active;\n rawTask.done = taskInfo.done;\n rawTask.crit = taskInfo.crit;\n rawTask.milestone = taskInfo.milestone;\n rawTask.order = lastOrder;\n\n lastOrder++;\n\n const pos = rawTasks.push(rawTask);\n\n lastTaskID = rawTask.id;\n // Store cross ref\n taskDb[rawTask.id] = pos - 1;\n};\n\nexport const findTaskById = function (id) {\n const pos = taskDb[id];\n return rawTasks[pos];\n};\n\nexport const addTaskOrg = function (descr, data) {\n const newTask = {\n section: currentSection,\n type: currentSection,\n description: descr,\n task: descr,\n classes: [],\n };\n const taskInfo = compileData(lastTask, data);\n newTask.startTime = taskInfo.startTime;\n newTask.endTime = taskInfo.endTime;\n newTask.id = taskInfo.id;\n newTask.active = taskInfo.active;\n newTask.done = taskInfo.done;\n newTask.crit = taskInfo.crit;\n newTask.milestone = taskInfo.milestone;\n lastTask = newTask;\n tasks.push(newTask);\n};\n\nconst compileTasks = function () {\n const compileTask = function (pos) {\n const task = rawTasks[pos];\n let startTime = '';\n switch (rawTasks[pos].raw.startTime.type) {\n case 'prevTaskEnd': {\n const prevTask = findTaskById(task.prevTaskId);\n task.startTime = prevTask.endTime;\n break;\n }\n case 'getStartDate':\n startTime = getStartDate(undefined, dateFormat, rawTasks[pos].raw.startTime.startData);\n if (startTime) {\n rawTasks[pos].startTime = startTime;\n }\n break;\n }\n\n if (rawTasks[pos].startTime) {\n rawTasks[pos].endTime = getEndDate(\n rawTasks[pos].startTime,\n dateFormat,\n rawTasks[pos].raw.endTime.data,\n inclusiveEndDates\n );\n if (rawTasks[pos].endTime) {\n rawTasks[pos].processed = true;\n rawTasks[pos].manualEndTime = dayjs(\n rawTasks[pos].raw.endTime.data,\n 'YYYY-MM-DD',\n true\n ).isValid();\n checkTaskDates(rawTasks[pos], dateFormat, excludes, includes);\n }\n }\n\n return rawTasks[pos].processed;\n };\n\n let allProcessed = true;\n for (const [i, rawTask] of rawTasks.entries()) {\n compileTask(i);\n\n allProcessed = allProcessed && rawTask.processed;\n }\n return allProcessed;\n};\n\n/**\n * Called by parser when a link is found. Adds the URL to the vertex data.\n *\n * @param ids Comma separated list of ids\n * @param _linkStr URL to create a link for\n */\nexport const setLink = function (ids, _linkStr) {\n let linkStr = _linkStr;\n if (configApi.getConfig().securityLevel !== 'loose') {\n linkStr = sanitizeUrl(_linkStr);\n }\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n pushFun(id, () => {\n window.open(linkStr, '_self');\n });\n links[id] = linkStr;\n }\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Called by parser when a special node is found, e.g. a clickable element.\n *\n * @param ids Comma separated list of ids\n * @param className Class to add\n */\nexport const setClass = function (ids, className) {\n ids.split(',').forEach(function (id) {\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n rawTask.classes.push(className);\n }\n });\n};\n\nconst setClickFun = function (id, functionName, functionArgs) {\n if (configApi.getConfig().securityLevel !== 'loose') {\n return;\n }\n if (functionName === undefined) {\n return;\n }\n\n let argList = [];\n if (typeof functionArgs === 'string') {\n /* Splits functionArgs by ',', ignoring all ',' in double quoted strings */\n argList = functionArgs.split(/,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)/);\n for (let i = 0; i < argList.length; i++) {\n let item = argList[i].trim();\n /* Removes all double quotes at the start and end of an argument */\n /* This preserves all starting and ending whitespace inside */\n if (item.charAt(0) === '\"' && item.charAt(item.length - 1) === '\"') {\n item = item.substr(1, item.length - 2);\n }\n argList[i] = item;\n }\n }\n\n /* if no arguments passed into callback, default to passing in id */\n if (argList.length === 0) {\n argList.push(id);\n }\n\n let rawTask = findTaskById(id);\n if (rawTask !== undefined) {\n pushFun(id, () => {\n utils.runFunc(functionName, ...argList);\n });\n }\n};\n\n/**\n * The callbackFunction is executed in a click event bound to the task with the specified id or the\n * task's assigned text\n *\n * @param id The task's id\n * @param callbackFunction A function to be executed when clicked on the task or the task's text\n */\nconst pushFun = function (id, callbackFunction) {\n funs.push(\n function () {\n // const elem = d3.select(element).select(`[id=\"${id}\"]`)\n const elem = document.querySelector(`[id=\"${id}\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n },\n function () {\n // const elem = d3.select(element).select(`[id=\"${id}-text\"]`)\n const elem = document.querySelector(`[id=\"${id}-text\"]`);\n if (elem !== null) {\n elem.addEventListener('click', function () {\n callbackFunction();\n });\n }\n }\n );\n};\n\n/**\n * Called by parser when a click definition is found. Registers an event handler.\n *\n * @param ids Comma separated list of ids\n * @param functionName Function to be called on click\n * @param functionArgs Function args the function should be called with\n */\nexport const setClickEvent = function (ids, functionName, functionArgs) {\n ids.split(',').forEach(function (id) {\n setClickFun(id, functionName, functionArgs);\n });\n setClass(ids, 'clickable');\n};\n\n/**\n * Binds all functions previously added to fun (specified through click) to the element\n *\n * @param element\n */\nexport const bindFunctions = function (element) {\n funs.forEach(function (fun) {\n fun(element);\n });\n};\n\nexport default {\n parseDirective,\n getConfig: () => configApi.getConfig().gantt,\n clear,\n setDateFormat,\n getDateFormat,\n enableInclusiveEndDates,\n endDatesAreInclusive,\n enableTopAxis,\n topAxisEnabled,\n setAxisFormat,\n getAxisFormat,\n setTickInterval,\n getTickInterval,\n setTodayMarker,\n getTodayMarker,\n setAccTitle,\n getAccTitle,\n setDiagramTitle,\n getDiagramTitle,\n setAccDescription,\n getAccDescription,\n addSection,\n getSections,\n getTasks,\n addTask,\n findTaskById,\n addTaskOrg,\n setIncludes,\n getIncludes,\n setExcludes,\n getExcludes,\n setClickEvent,\n setLink,\n getLinks,\n bindFunctions,\n parseDuration,\n isInvalidDate,\n};\n\n/**\n * @param data\n * @param task\n * @param tags\n */\nfunction getTaskTags(data, task, tags) {\n let matchFound = true;\n while (matchFound) {\n matchFound = false;\n tags.forEach(function (t) {\n const pattern = '^\\\\s*' + t + '\\\\s*$';\n const regex = new RegExp(pattern);\n if (data[0].match(regex)) {\n task[t] = true;\n data.shift(1);\n matchFound = true;\n }\n });\n }\n}\n","import dayjs from 'dayjs';\nimport { log } from '../../logger';\nimport {\n select,\n scaleTime,\n min,\n max,\n scaleLinear,\n interpolateHcl,\n axisBottom,\n axisTop,\n timeFormat,\n timeMinute,\n timeHour,\n timeDay,\n timeWeek,\n timeMonth,\n} from 'd3';\nimport common from '../common/common';\nimport { getConfig } from '../../config';\nimport { configureSvgSize } from '../../setupGraphViewbox';\n\nexport const setConf = function () {\n log.debug('Something is calling, setConf, remove the call');\n};\n\nlet w;\nexport const draw = function (text, id, version, diagObj) {\n const conf = getConfig().gantt;\n // diagObj.db.clear();\n // parser.parse(text);\n\n const securityLevel = getConfig().securityLevel;\n // Handle root and Document for when rendering in sandbox mode\n let sandboxElement;\n if (securityLevel === 'sandbox') {\n sandboxElement = select('#i' + id);\n }\n const root =\n securityLevel === 'sandbox'\n ? select(sandboxElement.nodes()[0].contentDocument.body)\n : select('body');\n const doc = securityLevel === 'sandbox' ? sandboxElement.nodes()[0].contentDocument : document;\n\n const elem = doc.getElementById(id);\n w = elem.parentElement.offsetWidth;\n\n if (w === undefined) {\n w = 1200;\n }\n\n if (conf.useWidth !== undefined) {\n w = conf.useWidth;\n }\n\n const taskArray = diagObj.db.getTasks();\n\n // Set height based on number of tasks\n const h = taskArray.length * (conf.barHeight + conf.barGap) + 2 * conf.topPadding;\n\n // Set viewBox\n elem.setAttribute('viewBox', '0 0 ' + w + ' ' + h);\n const svg = root.select(`[id=\"${id}\"]`);\n\n // Set timescale\n const timeScale = scaleTime()\n .domain([\n min(taskArray, function (d) {\n return d.startTime;\n }),\n max(taskArray, function (d) {\n return d.endTime;\n }),\n ])\n .rangeRound([0, w - conf.leftPadding - conf.rightPadding]);\n\n let categories = [];\n\n for (const element of taskArray) {\n categories.push(element.type);\n }\n\n const catsUnfiltered = categories; // for vert labels\n\n categories = checkUnique(categories);\n\n /**\n * @param a\n * @param b\n */\n function taskCompare(a, b) {\n const taskA = a.startTime;\n const taskB = b.startTime;\n let result = 0;\n if (taskA > taskB) {\n result = 1;\n } else if (taskA < taskB) {\n result = -1;\n }\n return result;\n }\n\n // Sort the task array using the above taskCompare() so that\n // tasks are created based on their order of startTime\n taskArray.sort(taskCompare);\n\n makeGant(taskArray, w, h);\n\n configureSvgSize(svg, h, w, conf.useMaxWidth);\n\n svg\n .append('text')\n .text(diagObj.db.getDiagramTitle())\n .attr('x', w / 2)\n .attr('y', conf.titleTopMargin)\n .attr('class', 'titleText');\n\n /**\n * @param tasks\n * @param pageWidth\n * @param pageHeight\n */\n function makeGant(tasks, pageWidth, pageHeight) {\n const barHeight = conf.barHeight;\n const gap = barHeight + conf.barGap;\n const topPadding = conf.topPadding;\n const leftPadding = conf.leftPadding;\n\n const colorScale = scaleLinear()\n .domain([0, categories.length])\n .range(['#00B9FA', '#F95002'])\n .interpolate(interpolateHcl);\n\n drawExcludeDays(\n gap,\n topPadding,\n leftPadding,\n pageWidth,\n pageHeight,\n tasks,\n diagObj.db.getExcludes(),\n diagObj.db.getIncludes()\n );\n makeGrid(leftPadding, topPadding, pageWidth, pageHeight);\n drawRects(tasks, gap, topPadding, leftPadding, barHeight, colorScale, pageWidth, pageHeight);\n vertLabels(gap, topPadding, leftPadding, barHeight, colorScale);\n drawToday(leftPadding, topPadding, pageWidth, pageHeight);\n }\n\n /**\n * @param theArray\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param theBarHeight\n * @param theColorScale\n * @param w\n */\n function drawRects(theArray, theGap, theTopPad, theSidePad, theBarHeight, theColorScale, w) {\n // Draw background rects covering the entire width of the graph, these form the section rows.\n svg\n .append('g')\n .selectAll('rect')\n .data(theArray)\n .enter()\n .append('rect')\n .attr('x', 0)\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad - 2;\n })\n .attr('width', function () {\n return w - conf.rightPadding / 2;\n })\n .attr('height', theGap)\n .attr('class', function (d) {\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n return 'section section' + (i % conf.numberSectionStyles);\n }\n }\n return 'section section0';\n });\n\n // Draw the rects representing the tasks\n const rectangles = svg.append('g').selectAll('rect').data(theArray).enter();\n\n const links = diagObj.db.getLinks();\n\n // Render the tasks with links\n // Render the other tasks\n rectangles\n .append('rect')\n .attr('id', function (d) {\n return d.id;\n })\n .attr('rx', 3)\n .attr('ry', 3)\n .attr('x', function (d) {\n if (d.milestone) {\n return (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) -\n 0.5 * theBarHeight\n );\n }\n return timeScale(d.startTime) + theSidePad;\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + theTopPad;\n })\n .attr('width', function (d) {\n if (d.milestone) {\n return theBarHeight;\n }\n return timeScale(d.renderEndTime || d.endTime) - timeScale(d.startTime);\n })\n .attr('height', theBarHeight)\n .attr('transform-origin', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n\n return (\n (\n timeScale(d.startTime) +\n theSidePad +\n 0.5 * (timeScale(d.endTime) - timeScale(d.startTime))\n ).toString() +\n 'px ' +\n (i * theGap + theTopPad + 0.5 * theBarHeight).toString() +\n 'px'\n );\n })\n .attr('class', function (d) {\n const res = 'task';\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskClass = '';\n if (d.active) {\n if (d.crit) {\n taskClass += ' activeCrit';\n } else {\n taskClass = ' active';\n }\n } else if (d.done) {\n if (d.crit) {\n taskClass = ' doneCrit';\n } else {\n taskClass = ' done';\n }\n } else {\n if (d.crit) {\n taskClass += ' crit';\n }\n }\n\n if (taskClass.length === 0) {\n taskClass = ' task';\n }\n\n if (d.milestone) {\n taskClass = ' milestone ' + taskClass;\n }\n\n taskClass += secNum;\n\n taskClass += ' ' + classStr;\n\n return res + taskClass;\n });\n\n // Append task labels\n rectangles\n .append('text')\n .attr('id', function (d) {\n return d.id + '-text';\n })\n .text(function (d) {\n return d.task;\n })\n .attr('font-size', conf.fontSize)\n .attr('x', function (d) {\n let startX = timeScale(d.startTime);\n let endX = timeScale(d.renderEndTime || d.endTime);\n if (d.milestone) {\n startX += 0.5 * (timeScale(d.endTime) - timeScale(d.startTime)) - 0.5 * theBarHeight;\n }\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return startX + theSidePad - 5;\n } else {\n return endX + theSidePad + 5;\n }\n } else {\n return (endX - startX) / 2 + startX + theSidePad;\n }\n })\n .attr('y', function (d, i) {\n // Ignore the incoming i value and use our order instead\n i = d.order;\n return i * theGap + conf.barHeight / 2 + (conf.fontSize / 2 - 2) + theTopPad;\n })\n .attr('text-height', theBarHeight)\n .attr('class', function (d) {\n const startX = timeScale(d.startTime);\n let endX = timeScale(d.endTime);\n if (d.milestone) {\n endX = startX + theBarHeight;\n }\n const textWidth = this.getBBox().width;\n\n let classStr = '';\n if (d.classes.length > 0) {\n classStr = d.classes.join(' ');\n }\n\n let secNum = 0;\n for (const [i, category] of categories.entries()) {\n if (d.type === category) {\n secNum = i % conf.numberSectionStyles;\n }\n }\n\n let taskType = '';\n if (d.active) {\n if (d.crit) {\n taskType = 'activeCritText' + secNum;\n } else {\n taskType = 'activeText' + secNum;\n }\n }\n\n if (d.done) {\n if (d.crit) {\n taskType = taskType + ' doneCritText' + secNum;\n } else {\n taskType = taskType + ' doneText' + secNum;\n }\n } else {\n if (d.crit) {\n taskType = taskType + ' critText' + secNum;\n }\n }\n\n if (d.milestone) {\n taskType += ' milestoneText';\n }\n\n // Check id text width > width of rectangle\n if (textWidth > endX - startX) {\n if (endX + textWidth + 1.5 * conf.leftPadding > w) {\n return classStr + ' taskTextOutsideLeft taskTextOutside' + secNum + ' ' + taskType;\n } else {\n return (\n classStr +\n ' taskTextOutsideRight taskTextOutside' +\n secNum +\n ' ' +\n taskType +\n ' width-' +\n textWidth\n );\n }\n } else {\n return classStr + ' taskText taskText' + secNum + ' ' + taskType + ' width-' + textWidth;\n }\n });\n\n const securityLevel = getConfig().securityLevel;\n\n // Wrap the tasks in an a tag for working links without javascript\n if (securityLevel === 'sandbox') {\n let sandboxElement;\n sandboxElement = select('#i' + id);\n const doc = sandboxElement.nodes()[0].contentDocument;\n\n rectangles\n .filter(function (d) {\n return links[d.id] !== undefined;\n })\n .each(function (o) {\n var taskRect = doc.querySelector('#' + o.id);\n var taskText = doc.querySelector('#' + o.id + '-text');\n const oldParent = taskRect.parentNode;\n var Link = doc.createElement('a');\n Link.setAttribute('xlink:href', links[o.id]);\n Link.setAttribute('target', '_top');\n oldParent.appendChild(Link);\n Link.appendChild(taskRect);\n Link.appendChild(taskText);\n });\n }\n }\n /**\n * @param theGap\n * @param theTopPad\n * @param theSidePad\n * @param w\n * @param h\n * @param tasks\n * @param excludes\n * @param includes\n */\n function drawExcludeDays(theGap, theTopPad, theSidePad, w, h, tasks, excludes, includes) {\n const minTime = tasks.reduce(\n (min, { startTime }) => (min ? Math.min(min, startTime) : startTime),\n 0\n );\n const maxTime = tasks.reduce((max, { endTime }) => (max ? Math.max(max, endTime) : endTime), 0);\n const dateFormat = diagObj.db.getDateFormat();\n if (!minTime || !maxTime) {\n return;\n }\n\n const excludeRanges = [];\n let range = null;\n let d = dayjs(minTime);\n while (d.valueOf() <= maxTime) {\n if (diagObj.db.isInvalidDate(d, dateFormat, excludes, includes)) {\n if (!range) {\n range = {\n start: d,\n end: d,\n };\n } else {\n range.end = d;\n }\n } else {\n if (range) {\n excludeRanges.push(range);\n range = null;\n }\n }\n d = d.add(1, 'd');\n }\n\n const rectangles = svg.append('g').selectAll('rect').data(excludeRanges).enter();\n\n rectangles\n .append('rect')\n .attr('id', function (d) {\n return 'exclude-' + d.start.format('YYYY-MM-DD');\n })\n .attr('x', function (d) {\n return timeScale(d.start) + theSidePad;\n })\n .attr('y', conf.gridLineStartPadding)\n .attr('width', function (d) {\n const renderEnd = d.end.add(1, 'day');\n return timeScale(renderEnd) - timeScale(d.start);\n })\n .attr('height', h - theTopPad - conf.gridLineStartPadding)\n .attr('transform-origin', function (d, i) {\n return (\n (\n timeScale(d.start) +\n theSidePad +\n 0.5 * (timeScale(d.end) - timeScale(d.start))\n ).toString() +\n 'px ' +\n (i * theGap + 0.5 * h).toString() +\n 'px'\n );\n })\n .attr('class', 'exclude-range');\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function makeGrid(theSidePad, theTopPad, w, h) {\n let bottomXAxis = axisBottom(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n const reTickInterval = /^([1-9]\\d*)(minute|hour|day|week|month)$/;\n const resultTickInterval = reTickInterval.exec(\n diagObj.db.getTickInterval() || conf.tickInterval\n );\n\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n switch (interval) {\n case 'minute':\n bottomXAxis.ticks(timeMinute.every(every));\n break;\n case 'hour':\n bottomXAxis.ticks(timeHour.every(every));\n break;\n case 'day':\n bottomXAxis.ticks(timeDay.every(every));\n break;\n case 'week':\n bottomXAxis.ticks(timeWeek.every(every));\n break;\n case 'month':\n bottomXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + (h - 50) + ')')\n .call(bottomXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10)\n .attr('dy', '1em');\n\n if (diagObj.db.topAxisEnabled() || conf.topAxis) {\n let topXAxis = axisTop(timeScale)\n .tickSize(-h + theTopPad + conf.gridLineStartPadding)\n .tickFormat(timeFormat(diagObj.db.getAxisFormat() || conf.axisFormat || '%Y-%m-%d'));\n\n if (resultTickInterval !== null) {\n const every = resultTickInterval[1];\n const interval = resultTickInterval[2];\n switch (interval) {\n case 'minute':\n topXAxis.ticks(timeMinute.every(every));\n break;\n case 'hour':\n topXAxis.ticks(timeHour.every(every));\n break;\n case 'day':\n topXAxis.ticks(timeDay.every(every));\n break;\n case 'week':\n topXAxis.ticks(timeWeek.every(every));\n break;\n case 'month':\n topXAxis.ticks(timeMonth.every(every));\n break;\n }\n }\n\n svg\n .append('g')\n .attr('class', 'grid')\n .attr('transform', 'translate(' + theSidePad + ', ' + theTopPad + ')')\n .call(topXAxis)\n .selectAll('text')\n .style('text-anchor', 'middle')\n .attr('fill', '#000')\n .attr('stroke', 'none')\n .attr('font-size', 10);\n // .attr('dy', '1em');\n }\n }\n\n /**\n * @param theGap\n * @param theTopPad\n */\n function vertLabels(theGap, theTopPad) {\n const numOccurances = [];\n let prevGap = 0;\n\n for (const [i, category] of categories.entries()) {\n numOccurances[i] = [category, getCount(category, catsUnfiltered)];\n }\n\n svg\n .append('g') // without doing this, impossible to put grid lines behind text\n .selectAll('text')\n .data(numOccurances)\n .enter()\n .append(function (d) {\n const rows = d[0].split(common.lineBreakRegex);\n const dy = -(rows.length - 1) / 2;\n\n const svgLabel = doc.createElementNS('http://www.w3.org/2000/svg', 'text');\n svgLabel.setAttribute('dy', dy + 'em');\n\n for (const [j, row] of rows.entries()) {\n const tspan = doc.createElementNS('http://www.w3.org/2000/svg', 'tspan');\n tspan.setAttribute('alignment-baseline', 'central');\n tspan.setAttribute('x', '10');\n if (j > 0) {\n tspan.setAttribute('dy', '1em');\n }\n tspan.textContent = row;\n svgLabel.appendChild(tspan);\n }\n return svgLabel;\n })\n .attr('x', 10)\n .attr('y', function (d, i) {\n if (i > 0) {\n for (let j = 0; j < i; j++) {\n prevGap += numOccurances[i - 1][1];\n return (d[1] * theGap) / 2 + prevGap * theGap + theTopPad;\n }\n } else {\n return (d[1] * theGap) / 2 + theTopPad;\n }\n })\n .attr('font-size', conf.sectionFontSize)\n .attr('font-size', conf.sectionFontSize)\n .attr('class', function (d) {\n for (const [i, category] of categories.entries()) {\n if (d[0] === category) {\n return 'sectionTitle sectionTitle' + (i % conf.numberSectionStyles);\n }\n }\n return 'sectionTitle';\n });\n }\n\n /**\n * @param theSidePad\n * @param theTopPad\n * @param w\n * @param h\n */\n function drawToday(theSidePad, theTopPad, w, h) {\n const todayMarker = diagObj.db.getTodayMarker();\n if (todayMarker === 'off') {\n return;\n }\n\n const todayG = svg.append('g').attr('class', 'today');\n const today = new Date();\n const todayLine = todayG.append('line');\n\n todayLine\n .attr('x1', timeScale(today) + theSidePad)\n .attr('x2', timeScale(today) + theSidePad)\n .attr('y1', conf.titleTopMargin)\n .attr('y2', h - conf.titleTopMargin)\n .attr('class', 'today');\n\n if (todayMarker !== '') {\n todayLine.attr('style', todayMarker.replace(/,/g, ';'));\n }\n }\n\n /**\n * From this stack exchange question:\n * http://stackoverflow.com/questions/1890203/unique-for-arrays-in-javascript\n *\n * @param arr\n */\n function checkUnique(arr) {\n const hash = {};\n const result = [];\n for (let i = 0, l = arr.length; i < l; ++i) {\n if (!Object.prototype.hasOwnProperty.call(hash, arr[i])) {\n // it works with objects! in FF, at least\n hash[arr[i]] = true;\n result.push(arr[i]);\n }\n }\n return result;\n }\n\n /**\n * From this stack exchange question:\n * http://stackoverflow.com/questions/14227981/count-how-many-strings-in-an-array-have-duplicates-in-the-same-array\n *\n * @param arr\n */\n function getCounts(arr) {\n let i = arr.length; // const to loop over\n const obj = {}; // obj to store results\n while (i) {\n obj[arr[--i]] = (obj[arr[i]] || 0) + 1; // count occurrences\n }\n return obj;\n }\n\n /**\n * Get specific from everything\n *\n * @param word\n * @param arr\n */\n function getCount(word, arr) {\n return getCounts(arr)[word] || 0;\n }\n};\n\nexport default {\n setConf,\n draw,\n};\n","const getStyles = (options) =>\n `\n .mermaid-main-font {\n font-family: \"trebuchet ms\", verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n .exclude-range {\n fill: ${options.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${options.sectionBkgColor};\n }\n\n .section2 {\n fill: ${options.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${options.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${options.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n // text-height: 14px;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${options.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n text {\n font-family: ${options.fontFamily};\n fill: ${options.textColor};\n }\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${options.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n\n // .taskText:not([font-size]) {\n // font-size: ${options.ganttFontSize};\n // }\n\n .taskTextOutsideRight {\n fill: ${options.taskTextDarkColor};\n text-anchor: start;\n // font-size: ${options.ganttFontSize};\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n\n }\n\n .taskTextOutsideLeft {\n fill: ${options.taskTextDarkColor};\n text-anchor: end;\n // font-size: ${options.ganttFontSize};\n }\n\n /* Special case clickable */\n .task.clickable {\n cursor: pointer;\n }\n .taskText.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${options.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${options.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${options.taskBkgColor};\n stroke: ${options.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${options.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${options.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${options.activeTaskBkgColor};\n stroke: ${options.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${options.doneTaskBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${options.critBorderColor};\n fill: ${options.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${options.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${options.textColor} ;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n`;\n\nexport default getStyles;\n","// @ts-ignore: TODO Fix ts errors\nimport ganttParser from './parser/gantt';\nimport ganttDb from './ganttDb';\nimport ganttRenderer from './ganttRenderer';\nimport ganttStyles from './styles';\nimport { DiagramDefinition } from '../../diagram-api/types';\n\nexport const diagram: DiagramDefinition = {\n parser: ganttParser,\n db: ganttDb,\n renderer: ganttRenderer,\n styles: ganttStyles,\n};\n"],"names":["o","parser","lexer","commonClear","dateFormat","excludes","includes","configApi.getConfig","tags","tasks","w","links","securityLevel","sandboxElement","doc","h","min","max","d","todayMarker"],"mappings":"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AAC,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,IAAG,GAAE,IAAG,IAAG,GAAE,EAAC,GAAE,CAAC,CAAC,EAAC,GAAE,EAAC,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,IAAG,GAAE,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,GAAE,EAAC,GAAE,EAAC,CAAC,GAAE,EAAC,IAAG,GAAE,IAAG,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,GAAE,EAAC,GAAE,IAAG,GAAE,CAAC,GAAE,EAAE,GAAE,GAAE,IAAG,GAAE,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,KAAI,IAAG,IAAG,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,IAAG,GAAE,EAAE,CAAC,IAAG,EAAE,GAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,GAAE,EAAC,GAAE,CAAC,GAAE,CAAC,EAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAC,GAAE,IAAG,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,GAAE,IAAG,KAAI,IAAG,IAAG,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,IAAG,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,CAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,IAAG,IAAG,IAAG,IAAG,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,CAAC,GAAE,EAAC,IAAG,CAAC,GAAE,EAAE,EAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,GAAE,EAAE,KAAI,CAAC,GAAE,EAAE,CAAC,CAAC;AAAA,IACzkC,gBAAgB,EAAC,GAAE,CAAC,GAAE,EAAE,GAAE,GAAE,CAAC,GAAE,CAAC,GAAE,IAAG,CAAC,GAAE,EAAE,GAAE,IAAG,CAAC,GAAE,EAAE,EAAC;AAAA,IACrD,YAAY,SAAS,WAAY,KAAK,MAAM;AACxC,UAAI,KAAK,aAAa;AAClB,aAAK,MAAM,GAAG;AAAA,MACtB,OAAW;AACH,YAAI,QAAQ,IAAI,MAAM,GAAG;AACzB,cAAM,OAAO;AACb,cAAM;AAAA,MACT;AAAA,IACL;AAAA,IACA,OAAO,SAAS,MAAM,OAAO;AACtB,UAAC,OAAO,MAAM,QAAQ,CAAC,CAAC,GAAG,SAAS,CAAE,GAAE,SAAS,CAAC,IAAI,GAAG,SAAS,CAAE,GAAE,QAAQ,KAAK,OAAO,SAAS,IAAI,WAAW,GAAG,SAAS,GAAmB,SAAS,GAAG,MAAM;AACtK,UAAI,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC;AACzC,UAAIC,SAAQ,OAAO,OAAO,KAAK,KAAK;AACpC,UAAI,cAAc,EAAE,IAAI,CAAA;AACxB,eAAS,KAAK,KAAK,IAAI;AACnB,YAAI,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI,CAAC,GAAG;AAClD,sBAAY,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;AAAA,QAChC;AAAA,MACJ;AACD,MAAAA,OAAM,SAAS,OAAO,YAAY,EAAE;AACpC,kBAAY,GAAG,QAAQA;AACvB,kBAAY,GAAG,SAAS;AACxB,UAAI,OAAOA,OAAM,UAAU,aAAa;AACpC,QAAAA,OAAM,SAAS;MAClB;AACD,UAAI,QAAQA,OAAM;AAClB,aAAO,KAAK,KAAK;AACjB,UAAI,SAASA,OAAM,WAAWA,OAAM,QAAQ;AAC5C,UAAI,OAAO,YAAY,GAAG,eAAe,YAAY;AACjD,aAAK,aAAa,YAAY,GAAG;AAAA,MACzC,OAAW;AACH,aAAK,aAAa,OAAO,eAAe,IAAI,EAAE;AAAA,MACjD;AAMO,eAAS,MAAM;AACf,YAAI;AACJ,gBAAQ,OAAO,IAAG,KAAMA,OAAM,IAAK,KAAI;AACvC,YAAI,OAAO,UAAU,UAAU;AAC3B,cAAI,iBAAiB,OAAO;AACxB,qBAAS;AACT,oBAAQ,OAAO;UAClB;AACD,kBAAQ,KAAK,SAAS,KAAK,KAAK;AAAA,QACnC;AACD,eAAO;AAAA,MACV;AACF,UAAC,QAAwB,OAAO,QAAW,GAAG,QAAQ,CAAE,GAAE,GAAG,KAAK,UAAU;AAC/E,aAAO,MAAM;AACT,gBAAQ,MAAM,MAAM,SAAS,CAAC;AAC9B,YAAI,KAAK,eAAe,KAAK,GAAG;AAC5B,mBAAS,KAAK,eAAe,KAAK;AAAA,QAC9C,OAAe;AACH,cAAI,WAAW,QAAQ,OAAO,UAAU,aAAa;AACjD,qBAAS,IAAG;AAAA,UACf;AACD,mBAAS,MAAM,KAAK,KAAK,MAAM,KAAK,EAAE,MAAM;AAAA,QAC/C;AACD,YAAI,OAAO,WAAW,eAAe,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,GAAG;AAC/D,cAAI,SAAS;AACb,qBAAW,CAAA;AACX,eAAK,KAAK,MAAM,KAAK,GAAG;AACpB,gBAAI,KAAK,WAAW,CAAC,KAAK,IAAI,QAAQ;AAClC,uBAAS,KAAK,MAAO,KAAK,WAAW,CAAC,IAAI,GAAI;AAAA,YACjD;AAAA,UACJ;AACD,cAAIA,OAAM,cAAc;AACpB,qBAAS,0BAA0B,WAAW,KAAK,QAAQA,OAAM,aAAc,IAAG,iBAAiB,SAAS,KAAK,IAAI,IAAI,aAAc,KAAK,WAAW,MAAM,KAAK,UAAU;AAAA,UAC5L,OAAmB;AACH,qBAAS,0BAA0B,WAAW,KAAK,mBAAmB,UAAU,MAAM,iBAAiB,OAAQ,KAAK,WAAW,MAAM,KAAK,UAAU;AAAA,UACvJ;AACD,eAAK,WAAW,QAAQ;AAAA,YACpB,MAAMA,OAAM;AAAA,YACZ,OAAO,KAAK,WAAW,MAAM,KAAK;AAAA,YAClC,MAAMA,OAAM;AAAA,YACZ,KAAK;AAAA,YACL;AAAA,UAChB,CAAa;AAAA,QACJ;AACD,YAAI,OAAO,CAAC,aAAa,SAAS,OAAO,SAAS,GAAG;AACjD,gBAAM,IAAI,MAAM,sDAAsD,QAAQ,cAAc,MAAM;AAAA,QACrG;AACD,gBAAQ,OAAO,CAAC,GAAC;AAAA,UACjB,KAAK;AACD,kBAAM,KAAK,MAAM;AACjB,mBAAO,KAAKA,OAAM,MAAM;AACxB,mBAAO,KAAKA,OAAM,MAAM;AACxB,kBAAM,KAAK,OAAO,CAAC,CAAC;AACpB,qBAAS;AACY;AACjB,uBAASA,OAAM;AACf,uBAASA,OAAM;AACf,yBAAWA,OAAM;AACjB,sBAAQA,OAAM;AAAA,YAOjB;AACD;AAAA,UACJ,KAAK;AACD,kBAAM,KAAK,aAAa,OAAO,CAAC,CAAC,EAAE,CAAC;AACpC,kBAAM,IAAI,OAAO,OAAO,SAAS,GAAG;AACpC,kBAAM,KAAK;AAAA,cACP,YAAY,OAAO,OAAO,UAAU,OAAO,EAAE,EAAE;AAAA,cAC/C,WAAW,OAAO,OAAO,SAAS,CAAC,EAAE;AAAA,cACrC,cAAc,OAAO,OAAO,UAAU,OAAO,EAAE,EAAE;AAAA,cACjD,aAAa,OAAO,OAAO,SAAS,CAAC,EAAE;AAAA,YACvD;AACY,gBAAI,QAAQ;AACR,oBAAM,GAAG,QAAQ;AAAA,gBACb,OAAO,OAAO,UAAU,OAAO,EAAE,EAAE,MAAM,CAAC;AAAA,gBAC1C,OAAO,OAAO,SAAS,CAAC,EAAE,MAAM,CAAC;AAAA,cACrD;AAAA,YACa;AACD,gBAAI,KAAK,cAAc,MAAM,OAAO;AAAA,cAChC;AAAA,cACA;AAAA,cACA;AAAA,cACA,YAAY;AAAA,cACZ,OAAO,CAAC;AAAA,cACR;AAAA,cACA;AAAA,YAChB,EAAc,OAAO,IAAI,CAAC;AACd,gBAAI,OAAO,MAAM,aAAa;AAC1B,qBAAO;AAAA,YACV;AACD,gBAAI,KAAK;AACL,sBAAQ,MAAM,MAAM,GAAG,KAAK,MAAM,CAAC;AACnC,uBAAS,OAAO,MAAM,GAAG,KAAK,GAAG;AACjC,uBAAS,OAAO,MAAM,GAAG,KAAK,GAAG;AAAA,YACpC;AACD,kBAAM,KAAK,KAAK,aAAa,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1C,mBAAO,KAAK,MAAM,CAAC;AACnB,mBAAO,KAAK,MAAM,EAAE;AACpB,uBAAW,MAAM,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,MAAM,MAAM,SAAS,CAAC,CAAC;AACjE,kBAAM,KAAK,QAAQ;AACnB;AAAA,UACJ,KAAK;AACD,mBAAO;AAAA,QACV;AAAA,MACJ;AACD,aAAO;AAAA,IACX;AAAA,EAAC;AAGD,MAAI,QAAS,WAAU;AACvB,QAAIA,SAAS;AAAA,MAEb,KAAI;AAAA,MAEJ,YAAW,SAAS,WAAW,KAAK,MAAM;AAClC,YAAI,KAAK,GAAG,QAAQ;AAChB,eAAK,GAAG,OAAO,WAAW,KAAK,IAAI;AAAA,QAC/C,OAAe;AACH,gBAAM,IAAI,MAAM,GAAG;AAAA,QACtB;AAAA,MACJ;AAAA;AAAA,MAGL,UAAS,SAAU,OAAO,IAAI;AACtB,aAAK,KAAK,MAAM,KAAK,MAAM,CAAA;AAC3B,aAAK,SAAS;AACd,aAAK,QAAQ,KAAK,aAAa,KAAK,OAAO;AAC3C,aAAK,WAAW,KAAK,SAAS;AAC9B,aAAK,SAAS,KAAK,UAAU,KAAK,QAAQ;AAC1C,aAAK,iBAAiB,CAAC,SAAS;AAChC,aAAK,SAAS;AAAA,UACV,YAAY;AAAA,UACZ,cAAc;AAAA,UACd,WAAW;AAAA,UACX,aAAa;AAAA,QACzB;AACQ,YAAI,KAAK,QAAQ,QAAQ;AACrB,eAAK,OAAO,QAAQ,CAAC,GAAE,CAAC;AAAA,QAC3B;AACD,aAAK,SAAS;AACd,eAAO;AAAA,MACV;AAAA;AAAA,MAGL,OAAM,WAAY;AACV,YAAI,KAAK,KAAK,OAAO,CAAC;AACtB,aAAK,UAAU;AACf,aAAK;AACL,aAAK;AACL,aAAK,SAAS;AACd,aAAK,WAAW;AAChB,YAAI,QAAQ,GAAG,MAAM,iBAAiB;AACtC,YAAI,OAAO;AACP,eAAK;AACL,eAAK,OAAO;AAAA,QACxB,OAAe;AACH,eAAK,OAAO;AAAA,QACf;AACD,YAAI,KAAK,QAAQ,QAAQ;AACrB,eAAK,OAAO,MAAM,CAAC;AAAA,QACtB;AAED,aAAK,SAAS,KAAK,OAAO,MAAM,CAAC;AACjC,eAAO;AAAA,MACV;AAAA;AAAA,MAGL,OAAM,SAAU,IAAI;AACZ,YAAI,MAAM,GAAG;AACb,YAAI,QAAQ,GAAG,MAAM,eAAe;AAEpC,aAAK,SAAS,KAAK,KAAK;AACxB,aAAK,SAAS,KAAK,OAAO,OAAO,GAAG,KAAK,OAAO,SAAS,GAAG;AAE5D,aAAK,UAAU;AACf,YAAI,WAAW,KAAK,MAAM,MAAM,eAAe;AAC/C,aAAK,QAAQ,KAAK,MAAM,OAAO,GAAG,KAAK,MAAM,SAAS,CAAC;AACvD,aAAK,UAAU,KAAK,QAAQ,OAAO,GAAG,KAAK,QAAQ,SAAS,CAAC;AAE7D,YAAI,MAAM,SAAS,GAAG;AAClB,eAAK,YAAY,MAAM,SAAS;AAAA,QACnC;AACD,YAAI,IAAI,KAAK,OAAO;AAEpB,aAAK,SAAS;AAAA,UACV,YAAY,KAAK,OAAO;AAAA,UACxB,WAAW,KAAK,WAAW;AAAA,UAC3B,cAAc,KAAK,OAAO;AAAA,UAC1B,aAAa,SACR,MAAM,WAAW,SAAS,SAAS,KAAK,OAAO,eAAe,KAC5D,SAAS,SAAS,SAAS,MAAM,MAAM,EAAE,SAAS,MAAM,CAAC,EAAE,SAChE,KAAK,OAAO,eAAe;AAAA,QACzC;AAEQ,YAAI,KAAK,QAAQ,QAAQ;AACrB,eAAK,OAAO,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,SAAS,GAAG;AAAA,QACtD;AACD,aAAK,SAAS,KAAK,OAAO;AAC1B,eAAO;AAAA,MACV;AAAA;AAAA,MAGL,MAAK,WAAY;AACT,aAAK,QAAQ;AACb,eAAO;AAAA,MACV;AAAA;AAAA,MAGL,QAAO,WAAY;AACX,YAAI,KAAK,QAAQ,iBAAiB;AAC9B,eAAK,aAAa;AAAA,QAC9B,OAAe;AACH,iBAAO,KAAK,WAAW,4BAA4B,KAAK,WAAW,KAAK,qIAAqI,KAAK,gBAAgB;AAAA,YAC9N,MAAM;AAAA,YACN,OAAO;AAAA,YACP,MAAM,KAAK;AAAA,UAC3B,CAAa;AAAA,QAEJ;AACD,eAAO;AAAA,MACV;AAAA;AAAA,MAGL,MAAK,SAAU,GAAG;AACV,aAAK,MAAM,KAAK,MAAM,MAAM,CAAC,CAAC;AAAA,MACjC;AAAA;AAAA,MAGL,WAAU,WAAY;AACd,YAAI,OAAO,KAAK,QAAQ,OAAO,GAAG,KAAK,QAAQ,SAAS,KAAK,MAAM,MAAM;AACzE,gBAAQ,KAAK,SAAS,KAAK,QAAM,MAAM,KAAK,OAAO,GAAG,EAAE,QAAQ,OAAO,EAAE;AAAA,MAC5E;AAAA;AAAA,MAGL,eAAc,WAAY;AAClB,YAAI,OAAO,KAAK;AAChB,YAAI,KAAK,SAAS,IAAI;AAClB,kBAAQ,KAAK,OAAO,OAAO,GAAG,KAAG,KAAK,MAAM;AAAA,QAC/C;AACD,gBAAQ,KAAK,OAAO,GAAE,EAAE,KAAK,KAAK,SAAS,KAAK,QAAQ,KAAK,QAAQ,OAAO,EAAE;AAAA,MACjF;AAAA;AAAA,MAGL,cAAa,WAAY;AACjB,YAAI,MAAM,KAAK;AACf,YAAI,IAAI,IAAI,MAAM,IAAI,SAAS,CAAC,EAAE,KAAK,GAAG;AAC1C,eAAO,MAAM,KAAK,cAAe,IAAG,OAAO,IAAI;AAAA,MAClD;AAAA;AAAA,MAGL,YAAW,SAAS,OAAO,cAAc;AACjC,YAAI,OACA,OACA;AAEJ,YAAI,KAAK,QAAQ,iBAAiB;AAE9B,mBAAS;AAAA,YACL,UAAU,KAAK;AAAA,YACf,QAAQ;AAAA,cACJ,YAAY,KAAK,OAAO;AAAA,cACxB,WAAW,KAAK;AAAA,cAChB,cAAc,KAAK,OAAO;AAAA,cAC1B,aAAa,KAAK,OAAO;AAAA,YAC5B;AAAA,YACD,QAAQ,KAAK;AAAA,YACb,OAAO,KAAK;AAAA,YACZ,SAAS,KAAK;AAAA,YACd,SAAS,KAAK;AAAA,YACd,QAAQ,KAAK;AAAA,YACb,QAAQ,KAAK;AAAA,YACb,OAAO,KAAK;AAAA,YACZ,QAAQ,KAAK;AAAA,YACb,IAAI,KAAK;AAAA,YACT,gBAAgB,KAAK,eAAe,MAAM,CAAC;AAAA,YAC3C,MAAM,KAAK;AAAA,UAC3B;AACY,cAAI,KAAK,QAAQ,QAAQ;AACrB,mBAAO,OAAO,QAAQ,KAAK,OAAO,MAAM,MAAM,CAAC;AAAA,UAClD;AAAA,QACJ;AAED,gBAAQ,MAAM,CAAC,EAAE,MAAM,iBAAiB;AACxC,YAAI,OAAO;AACP,eAAK,YAAY,MAAM;AAAA,QAC1B;AACD,aAAK,SAAS;AAAA,UACV,YAAY,KAAK,OAAO;AAAA,UACxB,WAAW,KAAK,WAAW;AAAA,UAC3B,cAAc,KAAK,OAAO;AAAA,UAC1B,aAAa,QACA,MAAM,MAAM,SAAS,CAAC,EAAE,SAAS,MAAM,MAAM,SAAS,CAAC,EAAE,MAAM,QAAQ,EAAE,CAAC,EAAE,SAC5E,KAAK,OAAO,cAAc,MAAM,CAAC,EAAE;AAAA,QAC5D;AACQ,aAAK,UAAU,MAAM,CAAC;AACtB,aAAK,SAAS,MAAM,CAAC;AACrB,aAAK,UAAU;AACf,aAAK,SAAS,KAAK,OAAO;AAC1B,YAAI,KAAK,QAAQ,QAAQ;AACrB,eAAK,OAAO,QAAQ,CAAC,KAAK,QAAQ,KAAK,UAAU,KAAK,MAAM;AAAA,QAC/D;AACD,aAAK,QAAQ;AACb,aAAK,aAAa;AAClB,aAAK,SAAS,KAAK,OAAO,MAAM,MAAM,CAAC,EAAE,MAAM;AAC/C,aAAK,WAAW,MAAM,CAAC;AACvB,gBAAQ,KAAK,cAAc,KAAK,MAAM,KAAK,IAAI,MAAM,cAAc,KAAK,eAAe,KAAK,eAAe,SAAS,CAAC,CAAC;AACtH,YAAI,KAAK,QAAQ,KAAK,QAAQ;AAC1B,eAAK,OAAO;AAAA,QACf;AACD,YAAI,OAAO;AACP,iBAAO;AAAA,QACnB,WAAmB,KAAK,YAAY;AAExB,mBAAS,KAAK,QAAQ;AAClB,iBAAK,CAAC,IAAI,OAAO,CAAC;AAAA,UACrB;AACD,iBAAO;AAAA,QACV;AACD,eAAO;AAAA,MACV;AAAA;AAAA,MAGL,MAAK,WAAY;AACT,YAAI,KAAK,MAAM;AACX,iBAAO,KAAK;AAAA,QACf;AACD,YAAI,CAAC,KAAK,QAAQ;AACd,eAAK,OAAO;AAAA,QACf;AAED,YAAI,OACA,OACA,WACA;AACJ,YAAI,CAAC,KAAK,OAAO;AACb,eAAK,SAAS;AACd,eAAK,QAAQ;AAAA,QAChB;AACD,YAAI,QAAQ,KAAK;AACjB,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACnC,sBAAY,KAAK,OAAO,MAAM,KAAK,MAAM,MAAM,CAAC,CAAC,CAAC;AAClD,cAAI,cAAc,CAAC,SAAS,UAAU,CAAC,EAAE,SAAS,MAAM,CAAC,EAAE,SAAS;AAChE,oBAAQ;AACR,oBAAQ;AACR,gBAAI,KAAK,QAAQ,iBAAiB;AAC9B,sBAAQ,KAAK,WAAW,WAAW,MAAM,CAAC,CAAC;AAC3C,kBAAI,UAAU,OAAO;AACjB,uBAAO;AAAA,cAC/B,WAA+B,KAAK,YAAY;AACxB,wBAAQ;AACR;AAAA,cACxB,OAA2B;AAEH,uBAAO;AAAA,cACV;AAAA,YACJ,WAAU,CAAC,KAAK,QAAQ,MAAM;AAC3B;AAAA,YACH;AAAA,UACJ;AAAA,QACJ;AACD,YAAI,OAAO;AACP,kBAAQ,KAAK,WAAW,OAAO,MAAM,KAAK,CAAC;AAC3C,cAAI,UAAU,OAAO;AACjB,mBAAO;AAAA,UACV;AAED,iBAAO;AAAA,QACV;AACD,YAAI,KAAK,WAAW,IAAI;AACpB,iBAAO,KAAK;AAAA,QACxB,OAAe;AACH,iBAAO,KAAK,WAAW,4BAA4B,KAAK,WAAW,KAAK,2BAA2B,KAAK,gBAAgB;AAAA,YACpH,MAAM;AAAA,YACN,OAAO;AAAA,YACP,MAAM,KAAK;AAAA,UAC3B,CAAa;AAAA,QACJ;AAAA,MACJ;AAAA;AAAA,MAGL,KAAI,SAAS,MAAO;AACZ,YAAI,IAAI,KAAK;AACb,YAAI,GAAG;AACH,iBAAO;AAAA,QACnB,OAAe;AACH,iBAAO,KAAK;QACf;AAAA,MACJ;AAAA;AAAA,MAGL,OAAM,SAAS,MAAO,WAAW;AACzB,aAAK,eAAe,KAAK,SAAS;AAAA,MACrC;AAAA;AAAA,MAGL,UAAS,SAAS,WAAY;AACtB,YAAI,IAAI,KAAK,eAAe,SAAS;AACrC,YAAI,IAAI,GAAG;AACP,iBAAO,KAAK,eAAe;QACvC,OAAe;AACH,iBAAO,KAAK,eAAe,CAAC;AAAA,QAC/B;AAAA,MACJ;AAAA;AAAA,MAGL,eAAc,SAAS,gBAAiB;AAChC,YAAI,KAAK,eAAe,UAAU,KAAK,eAAe,KAAK,eAAe,SAAS,CAAC,GAAG;AACnF,iBAAO,KAAK,WAAW,KAAK,eAAe,KAAK,eAAe,SAAS,CAAC,CAAC,EAAE;AAAA,QACxF,OAAe;AACH,iBAAO,KAAK,WAAW,SAAS,EAAE;AAAA,QACrC;AAAA,MACJ;AAAA;AAAA,MAGL,UAAS,SAAS,SAAU,GAAG;AACvB,YAAI,KAAK,eAAe,SAAS,IAAI,KAAK,IAAI,KAAK,CAAC;AACpD,YAAI,KAAK,GAAG;AACR,iBAAO,KAAK,eAAe,CAAC;AAAA,QACxC,OAAe;AACH,iBAAO;AAAA,QACV;AAAA,MACJ;AAAA;AAAA,MAGL,WAAU,SAAS,UAAW,WAAW;AACjC,aAAK,MAAM,SAAS;AAAA,MACvB;AAAA;AAAA,MAGL,gBAAe,SAAS,iBAAiB;AACjC,eAAO,KAAK,eAAe;AAAA,MAC9B;AAAA,MACL,SAAS,EAAC,oBAAmB,KAAI;AAAA,MACjC,eAAe,SAAS,UAAU,IAAG,KAAI,2BAA0B,UAAU;AAE7E,gBAAO,2BAAyB;AAAA,UAChC,KAAK;AAAG,iBAAK,MAAM,gBAAgB;AAAG,mBAAO;AAAA,UAE7C,KAAK;AAAG,iBAAK,MAAM,gBAAgB;AAAG,mBAAO;AAAA,UAE7C,KAAK;AAAG,iBAAK,SAAQ;AAAI,iBAAK,MAAM,eAAe;AAAG,mBAAO;AAAA,UAE7D,KAAK;AAAG,iBAAK;AAAY,iBAAK,SAAU;AAAE,mBAAO;AAAA,UAEjD,KAAK;AAAE,mBAAO;AAAA,UAEd,KAAK;AAAG,iBAAK,MAAM,WAAW;AAAE,mBAAO;AAAA,UAEvC,KAAK;AAAG,iBAAK;AAAY,mBAAO;AAAA,UAEhC,KAAK;AAAG,iBAAK,MAAM,WAAW;AAAE,mBAAO;AAAA,UAEvC,KAAK;AAAG,iBAAK;AAAY,mBAAO;AAAA,UAEhC,KAAK;AAAG,iBAAK,MAAM,qBAAqB;AACxC;AAAA,UACA,KAAK;AAAI,iBAAK;AACd;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AACL;AAAA,UACA,KAAK;AACL;AAAA,UACA,KAAK;AACL;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AACL;AAAA,UACA,KAAK;AACL;AAAA,UACA,KAAK;AACL;AAAA,UACA,KAAK;AAAG,iBAAK,MAAM,MAAM;AACzB;AAAA,UACA,KAAK;AAAG,iBAAK;AACb;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,iBAAK,MAAM,cAAc;AACjC;AAAA,UACA,KAAK;AAAG,iBAAK;AACb;AAAA,UACA,KAAK;AAAG,iBAAK,SAAU;AAAE,iBAAK,MAAM,cAAc;AAClD;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,iBAAK;AACb;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,iBAAK,MAAM,OAAO;AAC1B;AAAA,UACA,KAAK;AAAG,iBAAK;AACb;AAAA,UACA,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,UAEf,KAAK;AAAG,mBAAO;AAAA,QAEf;AAAA,MACA;AAAA,MACA,OAAO,CAAC,cAAa,8BAA6B,WAAU,cAAa,6BAA4B,yBAAwB,yBAAwB,yBAAwB,yBAAwB,0BAAyB,cAAa,gBAAe,yBAAwB,wBAAuB,wBAAuB,eAAc,aAAY,iBAAgB,iBAAgB,sBAAqB,aAAY,eAAc,mBAAkB,mBAAkB,YAAW,eAAc,YAAW,eAAc,oBAAmB,gBAAe,kBAAiB,iBAAgB,8BAA6B,6BAA4B,mBAAkB,8BAA6B,gCAA+B,4BAA2B,4BAA2B,8BAA6B,8BAA6B,yBAAwB,kCAAiC,4BAA2B,mBAAkB,mBAAkB,WAAU,WAAU,SAAS;AAAA,MAC98B,YAAY,EAAC,uBAAsB,EAAC,SAAQ,CAAC,IAAG,EAAE,GAAE,aAAY,MAAK,GAAE,aAAY,EAAC,SAAQ,CAAC,CAAC,GAAE,aAAY,MAAK,GAAE,aAAY,EAAC,SAAQ,CAAC,CAAC,GAAE,aAAY,MAAK,GAAE,mBAAkB,EAAC,SAAQ,CAAA,GAAG,aAAY,MAAK,GAAE,iBAAgB,EAAC,SAAQ,CAAC,GAAE,CAAC,GAAE,aAAY,MAAK,GAAE,kBAAiB,EAAC,SAAQ,CAAC,GAAE,CAAC,GAAE,aAAY,MAAK,GAAE,kBAAiB,EAAC,SAAQ,CAAC,CAAC,GAAE,aAAY,MAAK,GAAE,gBAAe,EAAC,SAAQ,CAAC,IAAG,EAAE,GAAE,aAAY,MAAK,GAAE,gBAAe,EAAC,SAAQ,CAAC,IAAG,IAAG,EAAE,GAAE,aAAY,MAAK,GAAE,QAAO,EAAC,SAAQ,CAAC,IAAG,EAAE,GAAE,aAAY,MAAK,GAAE,SAAQ,EAAC,SAAQ,CAAC,IAAG,EAAE,GAAE,aAAY,MAAK,GAAE,WAAU,EAAC,SAAQ,CAAC,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,EAAE,GAAE,aAAY,KAAI,EAAC;AAAA,IACxqB;AACA,WAAOA;AAAA,EACP;AACA,EAAAD,QAAO,QAAQ;AACf,WAAS,SAAU;AACjB,SAAK,KAAK;EACZ;AACA,SAAO,YAAYA;AAAO,EAAAA,QAAO,SAAS;AAC1C,SAAO,IAAI;AACX;AACC,OAAO,SAAS;AAEhB,oBAAe;ACrvBhB,MAAM,OAAO,YAAY;AACzB,MAAM,OAAO,sBAAsB;AACnC,MAAM,OAAO,mBAAmB;AAEhC,IAAI,aAAa;AACjB,IAAI,aAAa;AACjB,IAAI,eAAe;AACnB,IAAI,cAAc;AAClB,IAAI,WAAW,CAAA;AACf,IAAI,WAAW,CAAA;AACf,IAAI,QAAQ,CAAA;AACZ,IAAI,WAAW,CAAA;AACf,IAAI,QAAQ,CAAA;AACZ,IAAI,iBAAiB;AACrB,MAAM,OAAO,CAAC,UAAU,QAAQ,QAAQ,WAAW;AACnD,IAAI,OAAO,CAAA;AACX,IAAI,oBAAoB;AACxB,IAAI,UAAU;AAGd,IAAI,YAAY;AAET,MAAM,iBAAiB,SAAU,WAAW,SAAS,MAAM;AAChE,aAAW,eAAe,MAAM,WAAW,SAAS,IAAI;AAC1D;AAEO,MAAM,QAAQ,WAAY;AAC/B,aAAW,CAAA;AACX,UAAQ,CAAA;AACR,mBAAiB;AACjB,SAAO,CAAA;AACP,YAAU;AACV,aAAW;AACX,eAAa;AACb,aAAW,CAAA;AACX,eAAa;AACb,eAAa;AACb,iBAAe;AACf,gBAAc;AACd,aAAW,CAAA;AACX,aAAW,CAAA;AACX,sBAAoB;AACpB,YAAU;AACV,cAAY;AACZ,UAAQ,CAAA;AACRE;AACF;AAEO,MAAM,gBAAgB,SAAU,KAAK;AAC1C,eAAa;AACf;AAEO,MAAM,gBAAgB,WAAY;AACvC,SAAO;AACT;AAEO,MAAM,kBAAkB,SAAU,KAAK;AAC5C,iBAAe;AACjB;AAEO,MAAM,kBAAkB,WAAY;AACzC,SAAO;AACT;AAEO,MAAM,iBAAiB,SAAU,KAAK;AAC3C,gBAAc;AAChB;AAEO,MAAM,iBAAiB,WAAY;AACxC,SAAO;AACT;AAEO,MAAM,gBAAgB,SAAU,KAAK;AAC1C,eAAa;AACf;AAEO,MAAM,0BAA0B,WAAY;AACjD,sBAAoB;AACtB;AAEO,MAAM,uBAAuB,WAAY;AAC9C,SAAO;AACT;AAEO,MAAM,gBAAgB,WAAY;AACvC,YAAU;AACZ;AAEO,MAAM,iBAAiB,WAAY;AACxC,SAAO;AACT;AAEO,MAAM,gBAAgB,WAAY;AACvC,SAAO;AACT;AAEO,MAAM,cAAc,SAAU,KAAK;AACxC,aAAW,IAAI,YAAa,EAAC,MAAM,QAAQ;AAC7C;AAEO,MAAM,cAAc,WAAY;AACrC,SAAO;AACT;AACO,MAAM,cAAc,SAAU,KAAK;AACxC,aAAW,IAAI,YAAa,EAAC,MAAM,QAAQ;AAC7C;AAEO,MAAM,cAAc,WAAY;AACrC,SAAO;AACT;AAEO,MAAM,WAAW,WAAY;AAClC,SAAO;AACT;AAEO,MAAM,aAAa,SAAU,KAAK;AACvC,mBAAiB;AACjB,WAAS,KAAK,GAAG;AACnB;AAEO,MAAM,cAAc,WAAY;AACrC,SAAO;AACT;AAEO,MAAM,WAAW,WAAY;AAClC,MAAI,oBAAoB;AACxB,QAAM,WAAW;AACjB,MAAI,iBAAiB;AACrB,SAAO,CAAC,qBAAqB,iBAAiB,UAAU;AACtD,wBAAoB,aAAY;AAChC;AAAA,EACD;AAED,UAAQ;AAER,SAAO;AACT;AAEO,MAAM,gBAAgB,SAAU,MAAMC,aAAYC,WAAUC,WAAU;AAC3E,MAAIA,UAAS,SAAS,KAAK,OAAOF,YAAW,KAAM,CAAA,CAAC,GAAG;AACrD,WAAO;AAAA,EACR;AACD,MAAI,KAAK,gBAAgB,KAAKC,UAAS,SAAS,UAAU,GAAG;AAC3D,WAAO;AAAA,EACR;AACD,MAAIA,UAAS,SAAS,KAAK,OAAO,MAAM,EAAE,YAAW,CAAE,GAAG;AACxD,WAAO;AAAA,EACR;AACD,SAAOA,UAAS,SAAS,KAAK,OAAOD,YAAW,KAAM,CAAA,CAAC;AACzD;AAcA,MAAM,iBAAiB,SAAU,MAAMA,aAAYC,WAAUC,WAAU;AACrE,MAAI,CAACD,UAAS,UAAU,KAAK,eAAe;AAC1C;AAAA,EACD;AACD,MAAI;AACJ,MAAI,KAAK,qBAAqB,MAAM;AAClC,gBAAY,MAAM,KAAK,SAAS;AAAA,EACpC,OAAS;AACL,gBAAY,MAAM,KAAK,WAAWD,aAAY,IAAI;AAAA,EACnD;AACD,cAAY,UAAU,IAAI,GAAG,GAAG;AAEhC,MAAI;AACJ,MAAI,KAAK,mBAAmB,MAAM;AAChC,sBAAkB,MAAM,KAAK,OAAO;AAAA,EACxC,OAAS;AACL,sBAAkB,MAAM,KAAK,SAASA,aAAY,IAAI;AAAA,EACvD;AACD,QAAM,CAAC,cAAc,aAAa,IAAI;AAAA,IACpC;AAAA,IACA;AAAA,IACAA;AAAA,IACAC;AAAA,IACAC;AAAA,EACJ;AACE,OAAK,UAAU,aAAa;AAC5B,OAAK,gBAAgB;AACvB;AAaA,MAAM,eAAe,SAAU,WAAW,SAASF,aAAYC,WAAUC,WAAU;AACjF,MAAI,UAAU;AACd,MAAI,gBAAgB;AACpB,SAAO,aAAa,SAAS;AAC3B,QAAI,CAAC,SAAS;AACZ,sBAAgB,QAAQ;IACzB;AACD,cAAU,cAAc,WAAWF,aAAYC,WAAUC,SAAQ;AACjE,QAAI,SAAS;AACX,gBAAU,QAAQ,IAAI,GAAG,GAAG;AAAA,IAC7B;AACD,gBAAY,UAAU,IAAI,GAAG,GAAG;AAAA,EACjC;AACD,SAAO,CAAC,SAAS,aAAa;AAChC;AAEA,MAAM,eAAe,SAAU,UAAUF,aAAY,KAAK;AACxD,QAAM,IAAI;AAGV,QAAM,KAAK;AACX,QAAM,iBAAiB,GAAG,KAAK,IAAI,KAAM,CAAA;AAEzC,MAAI,mBAAmB,MAAM;AAE3B,QAAI,mBAAmB;AACvB,mBAAe,CAAC,EAAE,MAAM,GAAG,EAAE,QAAQ,SAAU,IAAI;AACjD,UAAI,OAAO,aAAa,EAAE;AAC1B,UAAI,SAAS,QAAW;AACtB,YAAI,CAAC,kBAAkB;AACrB,6BAAmB;AAAA,QAC7B,OAAe;AACL,cAAI,KAAK,UAAU,iBAAiB,SAAS;AAC3C,+BAAmB;AAAA,UACpB;AAAA,QACF;AAAA,MACF;AAAA,IACP,CAAK;AAED,QAAI,CAAC,kBAAkB;AACrB,YAAM,KAAK,IAAI;AACf,SAAG,SAAS,GAAG,GAAG,GAAG,CAAC;AACtB,aAAO;AAAA,IACb,OAAW;AACL,aAAO,iBAAiB;AAAA,IACzB;AAAA,EACF;AAGD,MAAI,QAAQ,MAAM,KAAKA,YAAW,KAAI,GAAI,IAAI;AAC9C,MAAI,MAAM,WAAW;AACnB,WAAO,MAAM;EACjB,OAAS;AACL,QAAI,MAAM,kBAAkB,GAAG;AAC/B,QAAI,MAAM,sBAAsBA,YAAW,KAAM,CAAA;AACjD,UAAM,IAAI,IAAI,KAAK,GAAG;AACtB,QAAI,MAAM,UAAa,MAAM,EAAE,QAAS,CAAA,GAAG;AACzC,YAAM,IAAI,MAAM,kBAAkB,GAAG;AAAA,IACtC;AACD,WAAO;AAAA,EACR;AACH;AAwBA,MAAM,gBAAgB,SAAU,KAAK;AACnC,QAAM,YAAY,kCAAkC,KAAK,IAAI,KAAM,CAAA;AACnE,MAAI,cAAc,MAAM;AACtB,WAAO,CAAC,OAAO,WAAW,UAAU,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAAA,EACtD;AAED,SAAO,CAAC,KAAK,IAAI;AACnB;AAEA,MAAM,aAAa,SAAU,UAAUA,aAAY,KAAK,YAAY,OAAO;AACzE,QAAM,IAAI;AAGV,MAAI,QAAQ,MAAM,KAAKA,YAAW,KAAI,GAAI,IAAI;AAC9C,MAAI,MAAM,WAAW;AACnB,QAAI,WAAW;AACb,cAAQ,MAAM,IAAI,GAAG,GAAG;AAAA,IACzB;AACD,WAAO,MAAM;EACd;AAED,MAAI,UAAU,MAAM,QAAQ;AAC5B,QAAM,CAAC,eAAe,YAAY,IAAI,cAAc,GAAG;AACvD,MAAI,CAAC,OAAO,MAAM,aAAa,GAAG;AAChC,UAAM,aAAa,QAAQ,IAAI,eAAe,YAAY;AAC1D,QAAI,WAAW,WAAW;AACxB,gBAAU;AAAA,IACX;AAAA,EACF;AACD,SAAO,QAAQ;AACjB;AAEA,IAAI,UAAU;AACd,MAAM,UAAU,SAAU,OAAO;AAC/B,MAAI,UAAU,QAAW;AACvB,cAAU,UAAU;AACpB,WAAO,SAAS;AAAA,EACjB;AACD,SAAO;AACT;AAYA,MAAM,cAAc,SAAU,UAAU,SAAS;AAC/C,MAAI;AAEJ,MAAI,QAAQ,OAAO,GAAG,CAAC,MAAM,KAAK;AAChC,SAAK,QAAQ,OAAO,GAAG,QAAQ,MAAM;AAAA,EACzC,OAAS;AACL,SAAK;AAAA,EACN;AAED,QAAM,OAAO,GAAG,MAAM,GAAG;AAEzB,QAAM,OAAO,CAAA;AAGb,cAAY,MAAM,MAAM,IAAI;AAE5B,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,SAAK,CAAC,IAAI,KAAK,CAAC,EAAE,KAAI;AAAA,EACvB;AAED,MAAI,cAAc;AAClB,UAAQ,KAAK,QAAM;AAAA,IACjB,KAAK;AACH,WAAK,KAAK;AACV,WAAK,YAAY,SAAS;AAC1B,oBAAc,KAAK,CAAC;AACpB;AAAA,IACF,KAAK;AACH,WAAK,KAAK;AACV,WAAK,YAAY,aAAa,QAAW,YAAY,KAAK,CAAC,CAAC;AAC5D,oBAAc,KAAK,CAAC;AACpB;AAAA,IACF,KAAK;AACH,WAAK,KAAK,QAAQ,KAAK,CAAC,CAAC;AACzB,WAAK,YAAY,aAAa,QAAW,YAAY,KAAK,CAAC,CAAC;AAC5D,oBAAc,KAAK,CAAC;AACpB;AAAA,EAEH;AAED,MAAI,aAAa;AACf,SAAK,UAAU,WAAW,KAAK,WAAW,YAAY,aAAa,iBAAiB;AACpF,SAAK,gBAAgB,MAAM,aAAa,cAAc,IAAI,EAAE;AAC5D,mBAAe,MAAM,YAAY,UAAU,QAAQ;AAAA,EACpD;AAED,SAAO;AACT;AAEA,MAAM,YAAY,SAAU,YAAY,SAAS;AAC/C,MAAI;AACJ,MAAI,QAAQ,OAAO,GAAG,CAAC,MAAM,KAAK;AAChC,SAAK,QAAQ,OAAO,GAAG,QAAQ,MAAM;AAAA,EACzC,OAAS;AACL,SAAK;AAAA,EACN;AAED,QAAM,OAAO,GAAG,MAAM,GAAG;AAEzB,QAAM,OAAO,CAAA;AAGb,cAAY,MAAM,MAAM,IAAI;AAE5B,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,SAAK,CAAC,IAAI,KAAK,CAAC,EAAE,KAAI;AAAA,EACvB;AAED,UAAQ,KAAK,QAAM;AAAA,IACjB,KAAK;AACH,WAAK,KAAK;AACV,WAAK,YAAY;AAAA,QACf,MAAM;AAAA,QACN,IAAI;AAAA,MACZ;AACM,WAAK,UAAU;AAAA,QACb,MAAM,KAAK,CAAC;AAAA,MACpB;AACM;AAAA,IACF,KAAK;AACH,WAAK,KAAK;AACV,WAAK,YAAY;AAAA,QACf,MAAM;AAAA,QACN,WAAW,KAAK,CAAC;AAAA,MACzB;AACM,WAAK,UAAU;AAAA,QACb,MAAM,KAAK,CAAC;AAAA,MACpB;AACM;AAAA,IACF,KAAK;AACH,WAAK,KAAK,QAAQ,KAAK,CAAC,CAAC;AACzB,WAAK,YAAY;AAAA,QACf,MAAM;AAAA,QACN,WAAW,KAAK,CAAC;AAAA,MACzB;AACM,WAAK,UAAU;AAAA,QACb,MAAM,KAAK,CAAC;AAAA,MACpB;AACM;AAAA,EAEH;AAED,SAAO;AACT;AAEA,IAAI;AACJ,IAAI;AACJ,IAAI,WAAW,CAAA;AACf,MAAM,SAAS,CAAA;AACR,MAAM,UAAU,SAAU,OAAO,MAAM;AAC5C,QAAM,UAAU;AAAA,IACd,SAAS;AAAA,IACT,MAAM;AAAA,IACN,WAAW;AAAA,IACX,eAAe;AAAA,IACf,eAAe;AAAA,IACf,KAAK,EAAE,KAAY;AAAA,IACnB,MAAM;AAAA,IACN,SAAS,CAAE;AAAA,EACf;AACE,QAAM,WAAW,UAAU,YAAY,IAAI;AAC3C,UAAQ,IAAI,YAAY,SAAS;AACjC,UAAQ,IAAI,UAAU,SAAS;AAC/B,UAAQ,KAAK,SAAS;AACtB,UAAQ,aAAa;AACrB,UAAQ,SAAS,SAAS;AAC1B,UAAQ,OAAO,SAAS;AACxB,UAAQ,OAAO,SAAS;AACxB,UAAQ,YAAY,SAAS;AAC7B,UAAQ,QAAQ;AAEhB;AAEA,QAAM,MAAM,SAAS,KAAK,OAAO;AAEjC,eAAa,QAAQ;AAErB,SAAO,QAAQ,EAAE,IAAI,MAAM;AAC7B;AAEO,MAAM,eAAe,SAAU,IAAI;AACxC,QAAM,MAAM,OAAO,EAAE;AACrB,SAAO,SAAS,GAAG;AACrB;AAEO,MAAM,aAAa,SAAU,OAAO,MAAM;AAC/C,QAAM,UAAU;AAAA,IACd,SAAS;AAAA,IACT,MAAM;AAAA,IACN,aAAa;AAAA,IACb,MAAM;AAAA,IACN,SAAS,CAAE;AAAA,EACf;AACE,QAAM,WAAW,YAAY,UAAU,IAAI;AAC3C,UAAQ,YAAY,SAAS;AAC7B,UAAQ,UAAU,SAAS;AAC3B,UAAQ,KAAK,SAAS;AACtB,UAAQ,SAAS,SAAS;AAC1B,UAAQ,OAAO,SAAS;AACxB,UAAQ,OAAO,SAAS;AACxB,UAAQ,YAAY,SAAS;AAC7B,aAAW;AACX,QAAM,KAAK,OAAO;AACpB;AAEA,MAAM,eAAe,WAAY;AAC/B,QAAM,cAAc,SAAU,KAAK;AACjC,UAAM,OAAO,SAAS,GAAG;AACzB,QAAI,YAAY;AAChB,YAAQ,SAAS,GAAG,EAAE,IAAI,UAAU,MAAI;AAAA,MACtC,KAAK,eAAe;AAClB,cAAM,WAAW,aAAa,KAAK,UAAU;AAC7C,aAAK,YAAY,SAAS;AAC1B;AAAA,MACD;AAAA,MACD,KAAK;AACH,oBAAY,aAAa,QAAW,YAAY,SAAS,GAAG,EAAE,IAAI,UAAU,SAAS;AACrF,YAAI,WAAW;AACb,mBAAS,GAAG,EAAE,YAAY;AAAA,QAC3B;AACD;AAAA,IACH;AAED,QAAI,SAAS,GAAG,EAAE,WAAW;AAC3B,eAAS,GAAG,EAAE,UAAU;AAAA,QACtB,SAAS,GAAG,EAAE;AAAA,QACd;AAAA,QACA,SAAS,GAAG,EAAE,IAAI,QAAQ;AAAA,QAC1B;AAAA,MACR;AACM,UAAI,SAAS,GAAG,EAAE,SAAS;AACzB,iBAAS,GAAG,EAAE,YAAY;AAC1B,iBAAS,GAAG,EAAE,gBAAgB;AAAA,UAC5B,SAAS,GAAG,EAAE,IAAI,QAAQ;AAAA,UAC1B;AAAA,UACA;AAAA,QACD,EAAC,QAAO;AACT,uBAAe,SAAS,GAAG,GAAG,YAAY,UAAU,QAAQ;AAAA,MAC7D;AAAA,IACF;AAED,WAAO,SAAS,GAAG,EAAE;AAAA,EACzB;AAEE,MAAI,eAAe;AACnB,aAAW,CAAC,GAAG,OAAO,KAAK,SAAS,QAAO,GAAI;AAC7C,gBAAY,CAAC;AAEb,mBAAe,gBAAgB,QAAQ;AAAA,EACxC;AACD,SAAO;AACT;AAQO,MAAM,UAAU,SAAU,KAAK,UAAU;AAC9C,MAAI,UAAU;AACd,MAAIG,UAAmB,EAAG,kBAAkB,SAAS;AACnD,cAAU,YAAY,QAAQ;AAAA,EAC/B;AACD,MAAI,MAAM,GAAG,EAAE,QAAQ,SAAU,IAAI;AACnC,QAAI,UAAU,aAAa,EAAE;AAC7B,QAAI,YAAY,QAAW;AACzB,cAAQ,IAAI,MAAM;AAChB,eAAO,KAAK,SAAS,OAAO;AAAA,MACpC,CAAO;AACD,YAAM,EAAE,IAAI;AAAA,IACb;AAAA,EACL,CAAG;AACD,WAAS,KAAK,WAAW;AAC3B;AAQO,MAAM,WAAW,SAAU,KAAK,WAAW;AAChD,MAAI,MAAM,GAAG,EAAE,QAAQ,SAAU,IAAI;AACnC,QAAI,UAAU,aAAa,EAAE;AAC7B,QAAI,YAAY,QAAW;AACzB,cAAQ,QAAQ,KAAK,SAAS;AAAA,IAC/B;AAAA,EACL,CAAG;AACH;AAEA,MAAM,cAAc,SAAU,IAAI,cAAc,cAAc;AAC5D,MAAIA,UAAmB,EAAG,kBAAkB,SAAS;AACnD;AAAA,EACD;AACD,MAAI,iBAAiB,QAAW;AAC9B;AAAA,EACD;AAED,MAAI,UAAU,CAAA;AACd,MAAI,OAAO,iBAAiB,UAAU;AAEpC,cAAU,aAAa,MAAM,+BAA+B;AAC5D,aAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,UAAI,OAAO,QAAQ,CAAC,EAAE,KAAI;AAG1B,UAAI,KAAK,OAAO,CAAC,MAAM,OAAO,KAAK,OAAO,KAAK,SAAS,CAAC,MAAM,KAAK;AAClE,eAAO,KAAK,OAAO,GAAG,KAAK,SAAS,CAAC;AAAA,MACtC;AACD,cAAQ,CAAC,IAAI;AAAA,IACd;AAAA,EACF;AAGD,MAAI,QAAQ,WAAW,GAAG;AACxB,YAAQ,KAAK,EAAE;AAAA,EAChB;AAED,MAAI,UAAU,aAAa,EAAE;AAC7B,MAAI,YAAY,QAAW;AACzB,YAAQ,IAAI,MAAM;AAChB,YAAM,QAAQ,cAAc,GAAG,OAAO;AAAA,IAC5C,CAAK;AAAA,EACF;AACH;AASA,MAAM,UAAU,SAAU,IAAI,kBAAkB;AAC9C,OAAK;AAAA,IACH,WAAY;AAEV,YAAM,OAAO,SAAS,cAAc,QAAQ,MAAM;AAClD,UAAI,SAAS,MAAM;AACjB,aAAK,iBAAiB,SAAS,WAAY;AACzC;QACV,CAAS;AAAA,MACF;AAAA,IACF;AAAA,IACD,WAAY;AAEV,YAAM,OAAO,SAAS,cAAc,QAAQ,WAAW;AACvD,UAAI,SAAS,MAAM;AACjB,aAAK,iBAAiB,SAAS,WAAY;AACzC;QACV,CAAS;AAAA,MACF;AAAA,IACF;AAAA,EACL;AACA;AASO,MAAM,gBAAgB,SAAU,KAAK,cAAc,cAAc;AACtE,MAAI,MAAM,GAAG,EAAE,QAAQ,SAAU,IAAI;AACnC,gBAAY,IAAI,cAAc,YAAY;AAAA,EAC9C,CAAG;AACD,WAAS,KAAK,WAAW;AAC3B;AAOO,MAAM,gBAAgB,SAAU,SAAS;AAC9C,OAAK,QAAQ,SAAU,KAAK;AAC1B,QAAI,OAAO;AAAA,EACf,CAAG;AACH;AAEA,MAAe,UAAA;AAAA,EACb;AAAA,EACA,WAAW,MAAMA,UAAmB,EAAG;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOA,SAAS,YAAY,MAAM,MAAMC,OAAM;AACrC,MAAI,aAAa;AACjB,SAAO,YAAY;AACjB,iBAAa;AACb,IAAAA,MAAK,QAAQ,SAAU,GAAG;AACxB,YAAM,UAAU,UAAU,IAAI;AAC9B,YAAM,QAAQ,IAAI,OAAO,OAAO;AAChC,UAAI,KAAK,CAAC,EAAE,MAAM,KAAK,GAAG;AACxB,aAAK,CAAC,IAAI;AACV,aAAK,MAAM,CAAC;AACZ,qBAAa;AAAA,MACd;AAAA,IACP,CAAK;AAAA,EACF;AACH;ACluBO,MAAM,UAAU,WAAY;AACjC,MAAI,MAAM,gDAAgD;AAC5D;AAEA,IAAI;AACG,MAAM,OAAO,SAAU,MAAM,IAAI,SAAS,SAAS;AACxD,QAAM,OAAO,UAAW,EAAC;AAIzB,QAAM,gBAAgB,UAAW,EAAC;AAElC,MAAI;AACJ,MAAI,kBAAkB,WAAW;AAC/B,qBAAiB,OAAO,OAAO,EAAE;AAAA,EAClC;AACD,QAAM,OACJ,kBAAkB,YACd,OAAO,eAAe,MAAK,EAAG,CAAC,EAAE,gBAAgB,IAAI,IACrD,OAAO,MAAM;AACnB,QAAM,MAAM,kBAAkB,YAAY,eAAe,MAAK,EAAG,CAAC,EAAE,kBAAkB;AAEtF,QAAM,OAAO,IAAI,eAAe,EAAE;AAClC,MAAI,KAAK,cAAc;AAEvB,MAAI,MAAM,QAAW;AACnB,QAAI;AAAA,EACL;AAED,MAAI,KAAK,aAAa,QAAW;AAC/B,QAAI,KAAK;AAAA,EACV;AAED,QAAM,YAAY,QAAQ,GAAG,SAAQ;AAGrC,QAAM,IAAI,UAAU,UAAU,KAAK,YAAY,KAAK,UAAU,IAAI,KAAK;AAGvE,OAAK,aAAa,WAAW,SAAS,IAAI,MAAM,CAAC;AACjD,QAAM,MAAM,KAAK,OAAO,QAAQ,MAAM;AAGtC,QAAM,YAAY,UAAW,EAC1B,OAAO;AAAA,IACN,IAAI,WAAW,SAAU,GAAG;AAC1B,aAAO,EAAE;AAAA,IACjB,CAAO;AAAA,IACD,IAAI,WAAW,SAAU,GAAG;AAC1B,aAAO,EAAE;AAAA,IACjB,CAAO;AAAA,EACP,CAAK,EACA,WAAW,CAAC,GAAG,IAAI,KAAK,cAAc,KAAK,YAAY,CAAC;AAE3D,MAAI,aAAa,CAAA;AAEjB,aAAW,WAAW,WAAW;AAC/B,eAAW,KAAK,QAAQ,IAAI;AAAA,EAC7B;AAED,QAAM,iBAAiB;AAEvB,eAAa,YAAY,UAAU;AAMnC,WAAS,YAAY,GAAG,GAAG;AACzB,UAAM,QAAQ,EAAE;AAChB,UAAM,QAAQ,EAAE;AAChB,QAAI,SAAS;AACb,QAAI,QAAQ,OAAO;AACjB,eAAS;AAAA,IACf,WAAe,QAAQ,OAAO;AACxB,eAAS;AAAA,IACV;AACD,WAAO;AAAA,EACR;AAID,YAAU,KAAK,WAAW;AAE1B,WAAS,WAAW,GAAG,CAAC;AAExB,mBAAiB,KAAK,GAAG,GAAG,KAAK,WAAW;AAE5C,MACG,OAAO,MAAM,EACb,KAAK,QAAQ,GAAG,iBAAiB,EACjC,KAAK,KAAK,IAAI,CAAC,EACf,KAAK,KAAK,KAAK,cAAc,EAC7B,KAAK,SAAS,WAAW;AAO5B,WAAS,SAASC,QAAO,WAAW,YAAY;AAC9C,UAAM,YAAY,KAAK;AACvB,UAAM,MAAM,YAAY,KAAK;AAC7B,UAAM,aAAa,KAAK;AACxB,UAAM,cAAc,KAAK;AAEzB,UAAM,aAAa,YAAa,EAC7B,OAAO,CAAC,GAAG,WAAW,MAAM,CAAC,EAC7B,MAAM,CAAC,WAAW,SAAS,CAAC,EAC5B,YAAY,cAAc;AAE7B;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAA;AAAA,MACA,QAAQ,GAAG,YAAa;AAAA,MACxB,QAAQ,GAAG,YAAa;AAAA,IAC9B;AACI,aAAS,aAAa,YAAY,WAAW,UAAU;AACvD,cAAUA,QAAO,KAAK,YAAY,aAAa,WAAW,YAAY,SAAqB;AAC3F,eAAW,KAAK,UAA8C;AAC9D,cAAU,aAAa,YAAY,WAAW,UAAU;AAAA,EACzD;AAWD,WAAS,UAAU,UAAU,QAAQ,WAAW,YAAY,cAAc,eAAeC,IAAG;AAE1F,QACG,OAAO,GAAG,EACV,UAAU,MAAM,EAChB,KAAK,QAAQ,EACb,MAAO,EACP,OAAO,MAAM,EACb,KAAK,KAAK,CAAC,EACX,KAAK,KAAK,SAAU,GAAG,GAAG;AAEzB,UAAI,EAAE;AACN,aAAO,IAAI,SAAS,YAAY;AAAA,IACxC,CAAO,EACA,KAAK,SAAS,WAAY;AACzB,aAAOA,KAAI,KAAK,eAAe;AAAA,IACvC,CAAO,EACA,KAAK,UAAU,MAAM,EACrB,KAAK,SAAS,SAAU,GAAG;AAC1B,iBAAW,CAAC,GAAG,QAAQ,KAAK,WAAW,QAAO,GAAI;AAChD,YAAI,EAAE,SAAS,UAAU;AACvB,iBAAO,oBAAqB,IAAI,KAAK;AAAA,QACtC;AAAA,MACF;AACD,aAAO;AAAA,IACf,CAAO;AAGH,UAAM,aAAa,IAAI,OAAO,GAAG,EAAE,UAAU,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAK;AAEzE,UAAMC,SAAQ,QAAQ,GAAG,SAAQ;AAIjC,eACG,OAAO,MAAM,EACb,KAAK,MAAM,SAAU,GAAG;AACvB,aAAO,EAAE;AAAA,IACjB,CAAO,EACA,KAAK,MAAM,CAAC,EACZ,KAAK,MAAM,CAAC,EACZ,KAAK,KAAK,SAAU,GAAG;AACtB,UAAI,EAAE,WAAW;AACf,eACE,UAAU,EAAE,SAAS,IACrB,aACA,OAAO,UAAU,EAAE,OAAO,IAAI,UAAU,EAAE,SAAS,KACnD,MAAM;AAAA,MAET;AACD,aAAO,UAAU,EAAE,SAAS,IAAI;AAAA,IACxC,CAAO,EACA,KAAK,KAAK,SAAU,GAAG,GAAG;AAEzB,UAAI,EAAE;AACN,aAAO,IAAI,SAAS;AAAA,IAC5B,CAAO,EACA,KAAK,SAAS,SAAU,GAAG;AAC1B,UAAI,EAAE,WAAW;AACf,eAAO;AAAA,MACR;AACD,aAAO,UAAU,EAAE,iBAAiB,EAAE,OAAO,IAAI,UAAU,EAAE,SAAS;AAAA,IAC9E,CAAO,EACA,KAAK,UAAU,YAAY,EAC3B,KAAK,oBAAoB,SAAU,GAAG,GAAG;AAExC,UAAI,EAAE;AAEN,cAEI,UAAU,EAAE,SAAS,IACrB,aACA,OAAO,UAAU,EAAE,OAAO,IAAI,UAAU,EAAE,SAAS,IACnD,SAAU,IACZ,SACC,IAAI,SAAS,YAAY,MAAM,cAAc,SAAU,IACxD;AAAA,IAEV,CAAO,EACA,KAAK,SAAS,SAAU,GAAG;AAC1B,YAAM,MAAM;AAEZ,UAAI,WAAW;AACf,UAAI,EAAE,QAAQ,SAAS,GAAG;AACxB,mBAAW,EAAE,QAAQ,KAAK,GAAG;AAAA,MAC9B;AAED,UAAI,SAAS;AACb,iBAAW,CAAC,GAAG,QAAQ,KAAK,WAAW,QAAO,GAAI;AAChD,YAAI,EAAE,SAAS,UAAU;AACvB,mBAAS,IAAI,KAAK;AAAA,QACnB;AAAA,MACF;AAED,UAAI,YAAY;AAChB,UAAI,EAAE,QAAQ;AACZ,YAAI,EAAE,MAAM;AACV,uBAAa;AAAA,QACzB,OAAiB;AACL,sBAAY;AAAA,QACb;AAAA,MACX,WAAmB,EAAE,MAAM;AACjB,YAAI,EAAE,MAAM;AACV,sBAAY;AAAA,QACxB,OAAiB;AACL,sBAAY;AAAA,QACb;AAAA,MACX,OAAe;AACL,YAAI,EAAE,MAAM;AACV,uBAAa;AAAA,QACd;AAAA,MACF;AAED,UAAI,UAAU,WAAW,GAAG;AAC1B,oBAAY;AAAA,MACb;AAED,UAAI,EAAE,WAAW;AACf,oBAAY,gBAAgB;AAAA,MAC7B;AAED,mBAAa;AAEb,mBAAa,MAAM;AAEnB,aAAO,MAAM;AAAA,IACrB,CAAO;AAGH,eACG,OAAO,MAAM,EACb,KAAK,MAAM,SAAU,GAAG;AACvB,aAAO,EAAE,KAAK;AAAA,IACtB,CAAO,EACA,KAAK,SAAU,GAAG;AACjB,aAAO,EAAE;AAAA,IACjB,CAAO,EACA,KAAK,aAAa,KAAK,QAAQ,EAC/B,KAAK,KAAK,SAAU,GAAG;AACtB,UAAI,SAAS,UAAU,EAAE,SAAS;AAClC,UAAI,OAAO,UAAU,EAAE,iBAAiB,EAAE,OAAO;AACjD,UAAI,EAAE,WAAW;AACf,kBAAU,OAAO,UAAU,EAAE,OAAO,IAAI,UAAU,EAAE,SAAS,KAAK,MAAM;AAAA,MACzE;AACD,UAAI,EAAE,WAAW;AACf,eAAO,SAAS;AAAA,MACjB;AACD,YAAM,YAAY,KAAK,QAAO,EAAG;AAGjC,UAAI,YAAY,OAAO,QAAQ;AAC7B,YAAI,OAAO,YAAY,MAAM,KAAK,cAAcD,IAAG;AACjD,iBAAO,SAAS,aAAa;AAAA,QACzC,OAAiB;AACL,iBAAO,OAAO,aAAa;AAAA,QAC5B;AAAA,MACX,OAAe;AACL,gBAAQ,OAAO,UAAU,IAAI,SAAS;AAAA,MACvC;AAAA,IACT,CAAO,EACA,KAAK,KAAK,SAAU,GAAG,GAAG;AAEzB,UAAI,EAAE;AACN,aAAO,IAAI,SAAS,KAAK,YAAY,KAAK,KAAK,WAAW,IAAI,KAAK;AAAA,IAC3E,CAAO,EACA,KAAK,eAAe,YAAY,EAChC,KAAK,SAAS,SAAU,GAAG;AAC1B,YAAM,SAAS,UAAU,EAAE,SAAS;AACpC,UAAI,OAAO,UAAU,EAAE,OAAO;AAC9B,UAAI,EAAE,WAAW;AACf,eAAO,SAAS;AAAA,MACjB;AACD,YAAM,YAAY,KAAK,QAAO,EAAG;AAEjC,UAAI,WAAW;AACf,UAAI,EAAE,QAAQ,SAAS,GAAG;AACxB,mBAAW,EAAE,QAAQ,KAAK,GAAG;AAAA,MAC9B;AAED,UAAI,SAAS;AACb,iBAAW,CAAC,GAAG,QAAQ,KAAK,WAAW,QAAO,GAAI;AAChD,YAAI,EAAE,SAAS,UAAU;AACvB,mBAAS,IAAI,KAAK;AAAA,QACnB;AAAA,MACF;AAED,UAAI,WAAW;AACf,UAAI,EAAE,QAAQ;AACZ,YAAI,EAAE,MAAM;AACV,qBAAW,mBAAmB;AAAA,QAC1C,OAAiB;AACL,qBAAW,eAAe;AAAA,QAC3B;AAAA,MACF;AAED,UAAI,EAAE,MAAM;AACV,YAAI,EAAE,MAAM;AACV,qBAAW,WAAW,kBAAkB;AAAA,QACpD,OAAiB;AACL,qBAAW,WAAW,cAAc;AAAA,QACrC;AAAA,MACX,OAAe;AACL,YAAI,EAAE,MAAM;AACV,qBAAW,WAAW,cAAc;AAAA,QACrC;AAAA,MACF;AAED,UAAI,EAAE,WAAW;AACf,oBAAY;AAAA,MACb;AAGD,UAAI,YAAY,OAAO,QAAQ;AAC7B,YAAI,OAAO,YAAY,MAAM,KAAK,cAAcA,IAAG;AACjD,iBAAO,WAAW,yCAAyC,SAAS,MAAM;AAAA,QACtF,OAAiB;AACL,iBACE,WACA,0CACA,SACA,MACA,WACA,YACA;AAAA,QAEH;AAAA,MACX,OAAe;AACL,eAAO,WAAW,uBAAuB,SAAS,MAAM,WAAW,YAAY;AAAA,MAChF;AAAA,IACT,CAAO;AAEH,UAAME,iBAAgB,UAAW,EAAC;AAGlC,QAAIA,mBAAkB,WAAW;AAC/B,UAAIC;AACJ,MAAAA,kBAAiB,OAAO,OAAO,EAAE;AACjC,YAAMC,OAAMD,gBAAe,MAAO,EAAC,CAAC,EAAE;AAEtC,iBACG,OAAO,SAAU,GAAG;AACnB,eAAOF,OAAM,EAAE,EAAE,MAAM;AAAA,MACjC,CAAS,EACA,KAAK,SAAU,GAAG;AACjB,YAAI,WAAWG,KAAI,cAAc,MAAM,EAAE,EAAE;AAC3C,YAAI,WAAWA,KAAI,cAAc,MAAM,EAAE,KAAK,OAAO;AACrD,cAAM,YAAY,SAAS;AAC3B,YAAI,OAAOA,KAAI,cAAc,GAAG;AAChC,aAAK,aAAa,cAAcH,OAAM,EAAE,EAAE,CAAC;AAC3C,aAAK,aAAa,UAAU,MAAM;AAClC,kBAAU,YAAY,IAAI;AAC1B,aAAK,YAAY,QAAQ;AACzB,aAAK,YAAY,QAAQ;AAAA,MACnC,CAAS;AAAA,IACJ;AAAA,EACF;AAWD,WAAS,gBAAgB,QAAQ,WAAW,YAAYD,IAAGK,IAAGN,QAAOJ,WAAUC,WAAU;AACvF,UAAM,UAAUG,OAAM;AAAA,MACpB,CAACO,MAAK,EAAE,UAAS,MAAQA,OAAM,KAAK,IAAIA,MAAK,SAAS,IAAI;AAAA,MAC1D;AAAA,IACN;AACI,UAAM,UAAUP,OAAM,OAAO,CAACQ,MAAK,EAAE,cAAeA,OAAM,KAAK,IAAIA,MAAK,OAAO,IAAI,SAAU,CAAC;AAC9F,UAAMb,cAAa,QAAQ,GAAG,cAAa;AAC3C,QAAI,CAAC,WAAW,CAAC,SAAS;AACxB;AAAA,IACD;AAED,UAAM,gBAAgB,CAAA;AACtB,QAAI,QAAQ;AACZ,QAAI,IAAI,MAAM,OAAO;AACrB,WAAO,EAAE,QAAS,KAAI,SAAS;AAC7B,UAAI,QAAQ,GAAG,cAAc,GAAGA,aAAYC,WAAUC,SAAQ,GAAG;AAC/D,YAAI,CAAC,OAAO;AACV,kBAAQ;AAAA,YACN,OAAO;AAAA,YACP,KAAK;AAAA,UACjB;AAAA,QACA,OAAe;AACL,gBAAM,MAAM;AAAA,QACb;AAAA,MACT,OAAa;AACL,YAAI,OAAO;AACT,wBAAc,KAAK,KAAK;AACxB,kBAAQ;AAAA,QACT;AAAA,MACF;AACD,UAAI,EAAE,IAAI,GAAG,GAAG;AAAA,IACjB;AAED,UAAM,aAAa,IAAI,OAAO,GAAG,EAAE,UAAU,MAAM,EAAE,KAAK,aAAa,EAAE,MAAK;AAE9E,eACG,OAAO,MAAM,EACb,KAAK,MAAM,SAAUY,IAAG;AACvB,aAAO,aAAaA,GAAE,MAAM,OAAO,YAAY;AAAA,IACvD,CAAO,EACA,KAAK,KAAK,SAAUA,IAAG;AACtB,aAAO,UAAUA,GAAE,KAAK,IAAI;AAAA,IACpC,CAAO,EACA,KAAK,KAAK,KAAK,oBAAoB,EACnC,KAAK,SAAS,SAAUA,IAAG;AAC1B,YAAM,YAAYA,GAAE,IAAI,IAAI,GAAG,KAAK;AACpC,aAAO,UAAU,SAAS,IAAI,UAAUA,GAAE,KAAK;AAAA,IACvD,CAAO,EACA,KAAK,UAAUH,KAAI,YAAY,KAAK,oBAAoB,EACxD,KAAK,oBAAoB,SAAUG,IAAG,GAAG;AACxC,cAEI,UAAUA,GAAE,KAAK,IACjB,aACA,OAAO,UAAUA,GAAE,GAAG,IAAI,UAAUA,GAAE,KAAK,IAC3C,SAAU,IACZ,SACC,IAAI,SAAS,MAAMH,IAAG,SAAU,IACjC;AAAA,IAEV,CAAO,EACA,KAAK,SAAS,eAAe;AAAA,EACjC;AAQD,WAAS,SAAS,YAAY,WAAWL,IAAGK,IAAG;AAC7C,QAAI,cAAc,WAAW,SAAS,EACnC,SAAS,CAACA,KAAI,YAAY,KAAK,oBAAoB,EACnD,WAAW,WAAW,QAAQ,GAAG,cAAe,KAAI,KAAK,cAAc,UAAU,CAAC;AAErF,UAAM,iBAAiB;AACvB,UAAM,qBAAqB,eAAe;AAAA,MACxC,QAAQ,GAAG,gBAAiB,KAAI,KAAK;AAAA,IAC3C;AAEI,QAAI,uBAAuB,MAAM;AAC/B,YAAM,QAAQ,mBAAmB,CAAC;AAClC,YAAM,WAAW,mBAAmB,CAAC;AACrC,cAAQ,UAAQ;AAAA,QACd,KAAK;AACH,sBAAY,MAAM,WAAW,MAAM,KAAK,CAAC;AACzC;AAAA,QACF,KAAK;AACH,sBAAY,MAAM,SAAS,MAAM,KAAK,CAAC;AACvC;AAAA,QACF,KAAK;AACH,sBAAY,MAAM,QAAQ,MAAM,KAAK,CAAC;AACtC;AAAA,QACF,KAAK;AACH,sBAAY,MAAM,SAAS,MAAM,KAAK,CAAC;AACvC;AAAA,QACF,KAAK;AACH,sBAAY,MAAM,UAAU,MAAM,KAAK,CAAC;AACxC;AAAA,MACH;AAAA,IACF;AAED,QACG,OAAO,GAAG,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,aAAa,eAAe,aAAa,QAAQA,KAAI,MAAM,GAAG,EACnE,KAAK,WAAW,EAChB,UAAU,MAAM,EAChB,MAAM,eAAe,QAAQ,EAC7B,KAAK,QAAQ,MAAM,EACnB,KAAK,UAAU,MAAM,EACrB,KAAK,aAAa,EAAE,EACpB,KAAK,MAAM,KAAK;AAEnB,QAAI,QAAQ,GAAG,eAAc,KAAM,KAAK,SAAS;AAC/C,UAAI,WAAW,QAAQ,SAAS,EAC7B,SAAS,CAACA,KAAI,YAAY,KAAK,oBAAoB,EACnD,WAAW,WAAW,QAAQ,GAAG,cAAe,KAAI,KAAK,cAAc,UAAU,CAAC;AAErF,UAAI,uBAAuB,MAAM;AAC/B,cAAM,QAAQ,mBAAmB,CAAC;AAClC,cAAM,WAAW,mBAAmB,CAAC;AACrC,gBAAQ,UAAQ;AAAA,UACd,KAAK;AACH,qBAAS,MAAM,WAAW,MAAM,KAAK,CAAC;AACtC;AAAA,UACF,KAAK;AACH,qBAAS,MAAM,SAAS,MAAM,KAAK,CAAC;AACpC;AAAA,UACF,KAAK;AACH,qBAAS,MAAM,QAAQ,MAAM,KAAK,CAAC;AACnC;AAAA,UACF,KAAK;AACH,qBAAS,MAAM,SAAS,MAAM,KAAK,CAAC;AACpC;AAAA,UACF,KAAK;AACH,qBAAS,MAAM,UAAU,MAAM,KAAK,CAAC;AACrC;AAAA,QACH;AAAA,MACF;AAED,UACG,OAAO,GAAG,EACV,KAAK,SAAS,MAAM,EACpB,KAAK,aAAa,eAAe,aAAa,OAAO,YAAY,GAAG,EACpE,KAAK,QAAQ,EACb,UAAU,MAAM,EAChB,MAAM,eAAe,QAAQ,EAC7B,KAAK,QAAQ,MAAM,EACnB,KAAK,UAAU,MAAM,EACrB,KAAK,aAAa,EAAE;AAAA,IAExB;AAAA,EACF;AAMD,WAAS,WAAW,QAAQ,WAAW;AACrC,UAAM,gBAAgB,CAAA;AACtB,QAAI,UAAU;AAEd,eAAW,CAAC,GAAG,QAAQ,KAAK,WAAW,QAAO,GAAI;AAChD,oBAAc,CAAC,IAAI,CAAC,UAAU,SAAS,UAAU,cAAc,CAAC;AAAA,IACjE;AAED,QACG,OAAO,GAAG,EACV,UAAU,MAAM,EAChB,KAAK,aAAa,EAClB,MAAO,EACP,OAAO,SAAU,GAAG;AACnB,YAAM,OAAO,EAAE,CAAC,EAAE,MAAM,OAAO,cAAc;AAC7C,YAAM,KAAK,EAAE,KAAK,SAAS,KAAK;AAEhC,YAAM,WAAW,IAAI,gBAAgB,8BAA8B,MAAM;AACzE,eAAS,aAAa,MAAM,KAAK,IAAI;AAErC,iBAAW,CAAC,GAAG,GAAG,KAAK,KAAK,QAAO,GAAI;AACrC,cAAM,QAAQ,IAAI,gBAAgB,8BAA8B,OAAO;AACvE,cAAM,aAAa,sBAAsB,SAAS;AAClD,cAAM,aAAa,KAAK,IAAI;AAC5B,YAAI,IAAI,GAAG;AACT,gBAAM,aAAa,MAAM,KAAK;AAAA,QAC/B;AACD,cAAM,cAAc;AACpB,iBAAS,YAAY,KAAK;AAAA,MAC3B;AACD,aAAO;AAAA,IACf,CAAO,EACA,KAAK,KAAK,EAAE,EACZ,KAAK,KAAK,SAAU,GAAG,GAAG;AACzB,UAAI,IAAI,GAAG;AACT,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,qBAAW,cAAc,IAAI,CAAC,EAAE,CAAC;AACjC,iBAAQ,EAAE,CAAC,IAAI,SAAU,IAAI,UAAU,SAAS;AAAA,QACjD;AAAA,MACX,OAAe;AACL,eAAQ,EAAE,CAAC,IAAI,SAAU,IAAI;AAAA,MAC9B;AAAA,IACT,CAAO,EACA,KAAK,aAAa,KAAK,eAAe,EACtC,KAAK,aAAa,KAAK,eAAe,EACtC,KAAK,SAAS,SAAU,GAAG;AAC1B,iBAAW,CAAC,GAAG,QAAQ,KAAK,WAAW,QAAO,GAAI;AAChD,YAAI,EAAE,CAAC,MAAM,UAAU;AACrB,iBAAO,8BAA+B,IAAI,KAAK;AAAA,QAChD;AAAA,MACF;AACD,aAAO;AAAA,IACf,CAAO;AAAA,EACJ;AAQD,WAAS,UAAU,YAAY,WAAWL,IAAGK,IAAG;AAC9C,UAAMI,eAAc,QAAQ,GAAG,eAAc;AAC7C,QAAIA,iBAAgB,OAAO;AACzB;AAAA,IACD;AAED,UAAM,SAAS,IAAI,OAAO,GAAG,EAAE,KAAK,SAAS,OAAO;AACpD,UAAM,QAAQ,IAAI;AAClB,UAAM,YAAY,OAAO,OAAO,MAAM;AAEtC,cACG,KAAK,MAAM,UAAU,KAAK,IAAI,UAAU,EACxC,KAAK,MAAM,UAAU,KAAK,IAAI,UAAU,EACxC,KAAK,MAAM,KAAK,cAAc,EAC9B,KAAK,MAAMJ,KAAI,KAAK,cAAc,EAClC,KAAK,SAAS,OAAO;AAExB,QAAII,iBAAgB,IAAI;AACtB,gBAAU,KAAK,SAASA,aAAY,QAAQ,MAAM,GAAG,CAAC;AAAA,IACvD;AAAA,EACF;AAQD,WAAS,YAAY,KAAK;AACxB,UAAM,OAAO,CAAA;AACb,UAAM,SAAS,CAAA;AACf,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,IAAI,GAAG,EAAE,GAAG;AAC1C,UAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,IAAI,CAAC,CAAC,GAAG;AAEvD,aAAK,IAAI,CAAC,CAAC,IAAI;AACf,eAAO,KAAK,IAAI,CAAC,CAAC;AAAA,MACnB;AAAA,IACF;AACD,WAAO;AAAA,EACR;AAQD,WAAS,UAAU,KAAK;AACtB,QAAI,IAAI,IAAI;AACZ,UAAM,MAAM,CAAA;AACZ,WAAO,GAAG;AACR,UAAI,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK;AAAA,IACtC;AACD,WAAO;AAAA,EACR;AAQD,WAAS,SAAS,MAAM,KAAK;AAC3B,WAAO,UAAU,GAAG,EAAE,IAAI,KAAK;AAAA,EAChC;AACH;AAEA,MAAe,gBAAA;AAAA,EACb;AAAA,EACA;AACF;AC1sBA,MAAM,YAAY,CAAC,YACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMU,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YASR,QAAQ;AAAA;AAAA;AAAA;AAAA,YAIR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKR,QAAQ;AAAA;AAAA;AAAA;AAAA,YAIR,QAAQ;AAAA;AAAA;AAAA;AAAA,YAIR,QAAQ;AAAA;AAAA;AAAA;AAAA,YAIR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKA,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAWd,QAAQ;AAAA;AAAA;AAAA;AAAA,qBAID,QAAQ;AAAA,cACf,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAaR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAoBF,QAAQ;AAAA;AAAA;AAAA;AAAA,YAIhB,QAAQ;AAAA;AAAA,oBAEA,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOhB,QAAQ;AAAA;AAAA,oBAEA,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAShB,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAUR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOR,QAAQ;AAAA,cACN,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAUR,QAAQ;AAAA,cACN,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAUN,QAAQ;AAAA,YACV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAQR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAUN,QAAQ;AAAA,YACV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQN,QAAQ;AAAA,YACV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAQN,QAAQ;AAAA,YACV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAiBR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAOR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAMR,QAAQ;AAAA;AAAA;AAAA;AAAA;AAMpB,MAAA,cAAe;AChQR,MAAM,UAA6B;AAAA,EACxC,QAAQ;AAAA,EACR,IAAI;AAAA,EACJ,UAAU;AAAA,EACV,QAAQ;AACV;"}