UNPKG

329 kBSource Map (JSON)View Raw
1{"version":3,"file":"americancollegeofradiology-acr-assist-simulator.js","sources":["ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/models/simulator-state.model.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/models/computed-dataelement-id.model.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/services/utility.service.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/services/simulator-engine.service.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/core.module.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/models/report-text.model.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/acr-assist-simulator/acr-assist-simulator.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/models/input-data.model.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/shared/services/simulator-communication.service.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/elements/models/repeatedElement.model.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/elements/models/RepeatedElementSections.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/shared/services/reset-communication.service.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/models/tabular-report.model.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/models/tabular-report-elements.model.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/assist-data-element/assist-data-element.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/assist-data-element/hint-diagram/hint-diagram.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/models/executed-result.model.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/assist-data-element/assist-numeric-element/assist-numeric-element.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/core/models/choice-element-display.enum.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/assist-data-element/assist-choice-element/assist-choice-element.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/assist-data-element/assist-multi-choice-element/assist-multi-choice-element.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/assist-data-element/image-map/image-map.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/assist-report-text/assist-report-text.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/shared/directives/dynamicheight.directive.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/shared/directives/numeric-only.directive.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/assist-data-element/assist-duration-element/assist-duration-element.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/assist-data-element/assist-date-time-element/assist-date-time-element.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/shared/directives/integer-restrict-value-greaterthan-max.directive.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/shared/services/clipboard.service.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/shared/directives/clipboard.directive.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/shared/services/url-helper.service.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/shared/pipes/secure.pipe.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/acr-assist-simulator/acr-assist-simulator.module.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/simulatorloader/shared/models/dictionary.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/simulatorloader/shared/services/globals.service.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/simulatorloader/view-upload-loader/view-upload-loader.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/simulatorloader/shared/models/file-details.model.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/simulatorloader/file-upload-loader/file-upload-loader.component.ts","ng://@americancollegeofradiology/acr-assist-simulator/src/app/modules/simulatorloader/simulatorloader.module.ts","ng://@americancollegeofradiology/acr-assist-simulator/americancollegeofradiology-acr-assist-simulator.ts"],"sourcesContent":["import { MainReportText } from \"testruleengine/Library/Models/Class\";\r\n\r\nexport class SimulatorState {\r\n nonRelevantDataElementIds: string[] = [];\r\n endPointId = '';\r\n selectedDecisionPointId = '';\r\n selectedDecisionPointLabel = '';\r\n selectedBranchLabel = '';\r\n endPointIds: string[] = [];\r\n mainReportText: MainReportText[];\r\n showKeyDiagram: string;\r\n}\r\n","export class ComputedDataElementId {\r\n dataElementId_org: string;\r\n dataElememntId_dynamic: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n constructor() { }\r\n\r\n isValidInstance(data: any) {\r\n return (data !== undefined && data !== null);\r\n }\r\n\r\n isNotEmptyArray(data: any[]) {\r\n let isValid = this.isValidInstance(data);\r\n if (isValid) {\r\n isValid = data.length > 0;\r\n }\r\n return isValid;\r\n }\r\n\r\n isNotEmptyString(data: any) {\r\n let isValid = this.isValidInstance(data);\r\n if (isValid) {\r\n isValid = data.toString().trim().length > 0;\r\n }\r\n return isValid;\r\n }\r\n\r\n isNotEmptyGuid(data: any) {\r\n const emptyGuid = '00000000-0000-0000-0000-000000000000';\r\n return data !== emptyGuid;\r\n }\r\n\r\n isImageDataUrl(data: string) {\r\n // tslint:disable-next-line:max-line-length\r\n const isDataURL = /^\\s*data:([a-z]+\\/[a-z]+(;[a-z\\-]+\\=[a-z\\-]+)?)?(;base64)?,[a-z0-9\\!\\$\\&\\'\\,\\(\\)\\*\\+\\,\\;\\=\\-\\.\\_\\~\\:\\@\\/\\?\\%\\s]*\\s*$/i;\r\n return !! data.match(isDataURL);\r\n }\r\n\r\n isValidUrl(data: string) {\r\n // tslint:disable-next-line:max-line-length\r\n const urlRegex = /(http(s)?:\\/\\/.)?(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)/g;\r\n return !! data.match(urlRegex);\r\n }\r\n\r\n formatDateTime(data: string) {\r\n const isValid = this.isNotEmptyString(data);\r\n if (isValid) {\r\n const localDateTime = new Date(data);\r\n return localDateTime.toLocaleString();\r\n }\r\n return data;\r\n }\r\n\r\n trimWhiteSpaces(data: string): string {\r\n const isValid = this.isNotEmptyString(data);\r\n if (isValid) {\r\n const trimmedData = data.replace(/\\s/g, '');\r\n return trimmedData;\r\n }\r\n return data;\r\n }\r\n\r\n trimAndRemoveSpecialChars(data: string): string {\r\n const isValid = this.isNotEmptyString(data);\r\n if (isValid) {\r\n const trimmedData = data.replace(/\\s/g, '').replace(/[`~!@#$%^&*()_|+\\-=��?;:'\",.<>\\{\\}\\[\\]\\\\\\/]/gi, '');\r\n return trimmedData;\r\n }\r\n return data;\r\n }\r\n\r\n textifyData(data: string): string {\r\n const isValid = this.isNotEmptyString(data);\r\n if (isValid) {\r\n const textifiedData = data.replace(/&nbsp;/g, ' ').replace(/\\r?\\n|\\r/g, ' ').replace(/\\t/g, '').\r\n replace(/\\s\\s+/g, ' ').replace(/<br>/g, '\\n');\r\n return textifiedData;\r\n }\r\n return data;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SimulatorState } from '../models/simulator-state.model';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { isArray } from 'util';\r\nimport {\r\n ChoiceDataElement, MultiChoiceDataElement, NumericDataElement, EndpointItem, DecisionPoint, ArithmeticExpression,\r\n IntegerDataElement, DurationDataElement, ComputedDataElement, DataElementValues, TemplatePartial,\r\n InsertPartial, InsertValue, BaseDataElement, Template\r\n} from 'testruleengine/Library/Models/Class';\r\nimport { EvaluateRulesAndGenerateReportText } from 'testruleengine/Library/Utilities/RuleEvaluator';\r\n\r\nimport { generateReportText } from 'testruleengine/Library/Utilities/GenerateReportText';\r\nimport { NonRelevantPushPopService } from 'testruleengine/Library/Services/NonRelevantPushPop';\r\nimport { FindDecisionPoints } from 'testruleengine/Library/Utilities/FindEndPoint';\r\nimport { ComputedDataElementId } from '../models/computed-dataelement-id.model';\r\nimport { UtilityService } from '../../core/services/utility.service';\r\n\r\nconst expressionParser = require('expr-eval').Parser;\r\nimport * as _ from 'lodash';\r\n\r\n@Injectable()\r\nexport class SimulatorEngineService {\r\n private ComputedDataElementIds = new Array<ComputedDataElementId>();\r\n private template: Template;\r\n private dataElementValues: Map<string, any>;\r\n private dataElementTexts: Map<string, any>;\r\n private endOfRoadReached = false;\r\n private lastConditionMetBranchLevel = 1;\r\n private nonRelevantDataElementIds = new Array<string>();\r\n private showKeyDiagram: string;\r\n private DynamicallyTemplatePartialIds = [];\r\n private endpoints = [];\r\n private branchCounter = 0;\r\n\r\n simulatorStateChanged = new BehaviorSubject<SimulatorState>(new SimulatorState());\r\n\r\n constructor(private utilityService: UtilityService) {\r\n this.dataElementValues = new Map<string, any>();\r\n this.dataElementTexts = new Map<string, any>();\r\n this.nonRelevantDataElementIds = new Array<string>();\r\n }\r\n\r\n getTemplate(): Template {\r\n return this.template;\r\n }\r\n\r\n getAllDataElementValues(): Map<string, any> {\r\n return this.dataElementValues;\r\n }\r\n\r\n getAllDataElementTexts(): Map<string, any> {\r\n return this.dataElementTexts;\r\n }\r\n\r\n getDataElementValue(dataElementId: string): any {\r\n return this.dataElementValues.get(dataElementId);\r\n }\r\n\r\n getDataElementText(dataElementId: string): any {\r\n return this.dataElementTexts.get(dataElementId);\r\n }\r\n\r\n addOrUpdateDataElement(dataElementId: string, value: any, text: any) {\r\n // debugger;\r\n this.dataElementValues.set(dataElementId, value);\r\n this.dataElementTexts.set(dataElementId, text);\r\n this.evaluateDecisionPoints();\r\n }\r\n\r\n private resetValuesOfNonRelevantDataElements(nonRelevantDataElementIds: string[]) {\r\n if (nonRelevantDataElementIds !== undefined) {\r\n for (const nonRelevantDataElementId of nonRelevantDataElementIds) {\r\n let defaultValue: any;\r\n for (const dataElement of this.template.dataElements) {\r\n if (dataElement.id === nonRelevantDataElementId) {\r\n defaultValue = dataElement.defaultValue;\r\n break;\r\n }\r\n }\r\n\r\n this.dataElementValues.set(nonRelevantDataElementId, defaultValue);\r\n }\r\n }\r\n }\r\n\r\n evaluateComputedElementDecisionPoint(elementId: string, decisionPoint: DecisionPoint, branchingLevel) {\r\n let currentBranchCount = 0;\r\n const totalBranchesInDecisionPoint = decisionPoint.branches.length;\r\n for (const branch of decisionPoint.branches) {\r\n\r\n currentBranchCount++;\r\n let conditionMet = false;\r\n\r\n if (branch.compositeCondition !== undefined) {\r\n conditionMet = branch.compositeCondition.evaluate(new DataElementValues(this.dataElementValues));\r\n } else if (branch.condition !== undefined) {\r\n conditionMet = branch.condition.evaluate(new DataElementValues(this.dataElementValues));\r\n }\r\n\r\n if (conditionMet) {\r\n this.lastConditionMetBranchLevel = branchingLevel;\r\n if (branch.decisionPoints !== undefined && branch.decisionPoints.length) {\r\n for (const branchDecisionPoint of branch.decisionPoints) {\r\n const newBranchingLevel = branchingLevel + 1;\r\n this.evaluateComputedElementDecisionPoint(elementId, branchDecisionPoint, newBranchingLevel);\r\n }\r\n } else if (branch.computedValue !== undefined) {\r\n this.dataElementValues.set(elementId, branch.computedValue.expressionText);\r\n if (branch.computedValue instanceof ArithmeticExpression) {\r\n this.dataElementValues.set(elementId, this.evaluateArithmeticExpression(branch.computedValue.expressionText));\r\n } else {\r\n if (this.IsExpressionReferedtoComputedDataElement(branch.computedValue.expressionText)) {\r\n this.FindAndSetValueForComputedDataElement(branch.computedValue.expressionText, elementId);\r\n } else {\r\n this.dataElementValues.set(elementId, branch.computedValue.expressionText);\r\n }\r\n }\r\n break;\r\n }\r\n } else {\r\n if (currentBranchCount >= totalBranchesInDecisionPoint) {\r\n this.dataElementValues.set(elementId, undefined);\r\n return;\r\n } else {\r\n continue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private FindAndSetValueForComputedDataElement(expressionText, parentelementId) {\r\n const elementId = expressionText.match(/{([^}]+)}/);\r\n const result = this.template.dataElements.filter(function(obj) {\r\n return obj.id === elementId[1] && (obj.dataElementType === 'ComputedDataElement');\r\n });\r\n\r\n if (result !== undefined && result != null && result.length > 0) {\r\n const computedElement: ComputedDataElement = result[0] as ComputedDataElement;\r\n for (const decisionPoint of computedElement.decisionPoints) {\r\n this.dataElementValues.set(parentelementId, this.dataElementValues.get(computedElement.id));\r\n }\r\n }\r\n }\r\n\r\n private IsExpressionReferedtoComputedDataElement(expressionText): boolean {\r\n const text = expressionText.match(/{([^}]+)}/);\r\n if (text !== null && text !== undefined && text.length > 0) {\r\n const result = this.template.dataElements.filter(function(obj) {\r\n return obj.id === text[1] && (obj.dataElementType === 'ComputedDataElement');\r\n });\r\n\r\n if (result != null && result !== undefined && result.length > 0) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private evaluateArithmeticExpression(computedValue: string): any {\r\n let startIndex = 0;\r\n let endIndex = 0;\r\n while (startIndex !== -1 && endIndex !== -1) {\r\n startIndex = computedValue.indexOf('{');\r\n endIndex = computedValue.indexOf('}');\r\n if (startIndex !== -1 && endIndex !== -1) {\r\n const dataElementId = computedValue.substring(startIndex + 1, endIndex);\r\n const replacingValue = computedValue.substring(startIndex, endIndex + 1);\r\n let dataElementValue = this.dataElementValues.get(dataElementId);\r\n if (isArray(dataElementValue)) {\r\n let sum = 0;\r\n dataElementValue.forEach(val => {\r\n if (isNaN(val)) {\r\n val = 0;\r\n }\r\n sum += +val;\r\n });\r\n dataElementValue = sum;\r\n }\r\n\r\n if (dataElementValue === undefined) {\r\n dataElementValue = 0;\r\n }\r\n\r\n computedValue = computedValue.replace(replacingValue, dataElementValue);\r\n\r\n }\r\n }\r\n\r\n return expressionParser.evaluate(computedValue).toString();\r\n }\r\n\r\n private evaluateComputedExpressions() {\r\n this.endOfRoadReached = false;\r\n let expressionValue: any;\r\n for (const element of this.template.dataElements) {\r\n if (element.dataElementType === 'ComputedDataElement') {\r\n expressionValue = undefined;\r\n const computedElement: ComputedDataElement = element as ComputedDataElement;\r\n for (const decisionPoint of computedElement.decisionPoints) {\r\n this.evaluateComputedElementDecisionPoint(element.id, decisionPoint, 1);\r\n if (this.dataElementValues.get(element.id) === undefined && decisionPoint.defaultBranch &&\r\n decisionPoint.defaultBranch.computedValue) {\r\n const expressionText = decisionPoint.defaultBranch.computedValue.expressionText;\r\n if (this.IsExpressionReferedtoComputedDataElement(expressionText)) {\r\n this.FindAndSetValueForComputedDataElement(expressionText, element.id);\r\n } else {\r\n this.dataElementValues.set(element.id, expressionText);\r\n }\r\n }\r\n this.endOfRoadReached = false;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private evaluateConditionalProperty(dataelement, nonRelevantDataElementIds: string[] = []): Array<string> {\r\n if (dataelement.conditionalProperties !== undefined) {\r\n let conditionMet = false;\r\n let isCompositeCondition = false;\r\n for (const conditionalProperty of dataelement.conditionalProperties) {\r\n if (conditionalProperty.condition !== undefined) {\r\n conditionMet = conditionalProperty.condition.evaluate(new DataElementValues(this.dataElementValues));\r\n isCompositeCondition = false;\r\n } else if (conditionalProperty.compositeCondition !== undefined) {\r\n conditionMet = conditionalProperty.compositeCondition.evaluate(new DataElementValues(this.dataElementValues));\r\n isCompositeCondition = true;\r\n }\r\n\r\n if (conditionMet) {\r\n if (nonRelevantDataElementIds === undefined) {\r\n this.nonRelevantDataElementIds = new Array<string>();\r\n }\r\n\r\n if (conditionalProperty.isRelevant === 'false') {\r\n this.nonRelevantDataElementIds.push(dataelement.id);\r\n } else {\r\n if (conditionalProperty.DisplaySequence !== undefined) {\r\n dataelement.displaySequence = conditionalProperty.DisplaySequence;\r\n }\r\n\r\n dataelement.isRequired = conditionalProperty.isRequired !== undefined ?\r\n (conditionalProperty.isRequired.toLowerCase() === 'true' ? true : false)\r\n : true;\r\n\r\n if (conditionalProperty.Minimum !== undefined && conditionalProperty.Minimum != null) {\r\n dataelement.minimum = +conditionalProperty.Minimum;\r\n }\r\n if (conditionalProperty.Maximum !== undefined && conditionalProperty.Maximum != null) {\r\n dataelement.maximum = +conditionalProperty.Maximum;\r\n }\r\n\r\n if (dataelement.dataElementType === 'ChoiceDataElement') {\r\n (dataelement as ChoiceDataElement).ChoiceNotRelevant = conditionalProperty.ChoiceNotRelevant;\r\n //#region uncomment\r\n this.updateChoiceDataElementValues((dataelement as ChoiceDataElement));\r\n //#endregion\r\n }\r\n\r\n if (dataelement.dataElementType === 'MultiChoiceDataElement') {\r\n (dataelement as MultiChoiceDataElement).ChoiceNotRelevant = conditionalProperty.ChoiceNotRelevant;\r\n //#region uncomment\r\n this.updateMultiChoiceDataElementValues((dataelement as MultiChoiceDataElement));\r\n\r\n if (this.utilityService.isNotEmptyArray(dataelement.ChoiceNotRelevant)) {\r\n if (dataelement.currentValue !== undefined && Array.isArray(dataelement.currentValue)) {\r\n const _filteredItems = dataelement.currentValue.filter((item: any) => !dataelement.ChoiceNotRelevant.includes(item));\r\n dataelement.currentValue = _filteredItems;\r\n }\r\n }\r\n //#endregion\r\n }\r\n\r\n if (dataelement.dataElementType === 'DurationDataElement') {\r\n (dataelement as DurationDataElement).MinimumDay = +conditionalProperty.MinimumDay;\r\n (dataelement as DurationDataElement).MaximumDay = +conditionalProperty.MaximumDay;\r\n (dataelement as DurationDataElement).MinimumHours = +conditionalProperty.MinimumHours;\r\n (dataelement as DurationDataElement).MaximumHours = +conditionalProperty.MaximumHours;\r\n (dataelement as DurationDataElement).MinimumMinutes = +conditionalProperty.MinimumMinutes;\r\n (dataelement as DurationDataElement).MaxmimumMinutes = +conditionalProperty.MaxmimumMinutes;\r\n (dataelement as DurationDataElement).MinimumSeconds = +conditionalProperty.MinimumSeconds;\r\n (dataelement as DurationDataElement).MaxmimumSeconds = +conditionalProperty.MaxmimumSeconds;\r\n }\r\n }\r\n\r\n\r\n return this.nonRelevantDataElementIds;\r\n } else {\r\n if (dataelement.dataElementType === 'ChoiceDataElement') {\r\n (dataelement as ChoiceDataElement).ChoiceNotRelevant = new Array<string>();\r\n }\r\n if (dataelement.dataElementType === 'MultiChoiceDataElement') {\r\n (dataelement as ChoiceDataElement).ChoiceNotRelevant = new Array<string>();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n updateChoiceDataElementValues(dataElement: ChoiceDataElement) {\r\n if (this.utilityService.isNotEmptyArray(dataElement.ChoiceNotRelevant)) {\r\n dataElement.ChoiceNotRelevant.forEach((x: any) => {\r\n if (this.dataElementValues.get(dataElement.id) !== undefined && this.dataElementValues.get(dataElement.id) === x) {\r\n this.dataElementValues.set(dataElement.id, undefined);\r\n }\r\n });\r\n }\r\n }\r\n\r\n updateMultiChoiceDataElementValues(dataElement: MultiChoiceDataElement) {\r\n if (this.utilityService.isNotEmptyArray(dataElement.ChoiceNotRelevant) && this.dataElementValues.get(dataElement.id) !== undefined) {\r\n const filteredItems = this.dataElementValues.get(dataElement.id).filter((item: any) => !dataElement.ChoiceNotRelevant.includes(item));\r\n this.dataElementValues.set(dataElement.id, filteredItems);\r\n }\r\n }\r\n\r\n evaluateDecisionAndConditionalProperty(): Array<string> {\r\n this.nonRelevantDataElementIds = new Array<string>();\r\n this.RevertConditionValues();\r\n for (const dataelement of this.template.dataElements) {\r\n this.evaluateConditionalProperty(dataelement, new Array<string>());\r\n }\r\n\r\n this.resetValuesOfNonRelevantDataElements(this.nonRelevantDataElementIds);\r\n NonRelevantPushPopService.SetNonRelevantDataElements(this.nonRelevantDataElementIds);\r\n return this.nonRelevantDataElementIds;\r\n }\r\n\r\n private RevertConditionValues() {\r\n for (const dataelement of this.template.dataElements) {\r\n dataelement.isRequired = dataelement.isRequiredOverrider;\r\n dataelement.displaySequence = dataelement.displaySequenceOverrider;\r\n if (dataelement.dataElementType === 'NumericDataElement') {\r\n (dataelement as NumericDataElement).minimum = +(dataelement as NumericDataElement).minimumOverrider;\r\n (dataelement as NumericDataElement).maximum = +(dataelement as NumericDataElement).maximumOverrider;\r\n }\r\n if (dataelement.dataElementType === 'IntegerDataElement') {\r\n (dataelement as IntegerDataElement).minimum = +(dataelement as IntegerDataElement).minimumOverrider;\r\n (dataelement as IntegerDataElement).maximum = +(dataelement as IntegerDataElement).maximumOverrider;\r\n }\r\n\r\n if (dataelement.dataElementType === 'DurationDataElement') {\r\n (dataelement as DurationDataElement).MinimumDay = +(dataelement as DurationDataElement).MinimumDayOverrider;\r\n (dataelement as DurationDataElement).MaximumDay = +(dataelement as DurationDataElement).MaximumDayOverrider;\r\n (dataelement as DurationDataElement).MinimumHours = +(dataelement as DurationDataElement).MinimumHoursOverrider;\r\n (dataelement as DurationDataElement).MaximumHours = +(dataelement as DurationDataElement).MaximumHoursOverrider;\r\n (dataelement as DurationDataElement).MinimumMinutes = +(dataelement as DurationDataElement).MinimumMinutesOverrider;\r\n (dataelement as DurationDataElement).MaxmimumMinutes = +(dataelement as DurationDataElement).MaxmimumMinutesOverrider;\r\n\r\n (dataelement as DurationDataElement).MaxmimumSeconds = +(dataelement as DurationDataElement).MaxmimumSecondsOverrider;\r\n (dataelement as DurationDataElement).MinimumSeconds = +(dataelement as DurationDataElement).MinimumSecondsOverrider;\r\n\r\n }\r\n }\r\n }\r\n\r\n private GetRepeatableValue(repeatCount) {\r\n const $dataElement = _.find(this.template.dataElements, { id: repeatCount }) as BaseDataElement;\r\n return $dataElement !== undefined ? $dataElement.currentValue : 0;\r\n }\r\n\r\n private RemoveDynamicallyAddedComputedDataElementIds() {\r\n this.ComputedDataElementIds = [];\r\n }\r\n\r\n private RemoveManuallyAddedBranches() {\r\n for (const decisionPoint of this.template.rules.decisionPoints) {\r\n _.remove(decisionPoint.branches, { isManuallyAdded: true });\r\n }\r\n }\r\n\r\n private RemoveManuallyAddedComputedDataElements() {\r\n _.remove(this.template.dataElements, { isManuallyAdded: true });\r\n }\r\n\r\n private RemoveManuallyAddedEndPoints() {\r\n _.remove(this.template.endpoint.endpoints, { isManuallyAdded: true });\r\n }\r\n\r\n private RemoveManuallyAddedTemplatePartials() {\r\n _.remove(this.template.endpoint.templatePartials, { isManuallyAdded: true });\r\n }\r\n\r\n private ProcessRepetationDataElements() {\r\n this.AddRepeatableBranchesInsideRule();\r\n this.AddRepeatableComputedDataElement();\r\n this.AddRepeatableEndpoints();\r\n this.AddRepeatableTemplatePartials();\r\n }\r\n\r\n private AddRepeatableTemplatePartials() {\r\n this.RemoveManuallyAddedTemplatePartials();\r\n for (const templatePartialId of this.DynamicallyTemplatePartialIds) {\r\n const templatePartialId_org = templatePartialId.split('_')[0];\r\n const templatePartial_org = _.filter(this.template.endpoint.templatePartials, { id: templatePartialId_org })[0];\r\n if (templatePartial_org !== undefined) {\r\n const templatePartial_cloned = _.cloneDeep(templatePartial_org) as TemplatePartial;\r\n templatePartial_cloned.id = templatePartialId;\r\n templatePartial_cloned.isManuallyAdded = true;\r\n let $conditions = [];\r\n for (const _branch of templatePartial_cloned.branches) {\r\n if (_branch.compositeCondition !== undefined) {\r\n const dataElementIds = this.template.dataElements.map(dataElement => dataElement.id);\r\n $conditions = [];\r\n\r\n for (let _conditions of _branch.compositeCondition.conditions) {\r\n if (_conditions.isManuallyAdded === undefined || !_conditions.isManuallyAdded) {\r\n for (const _dataElement of dataElementIds) {\r\n // tslint:disable-next-line: max-line-length\r\n _conditions = this.replacePropertyValue(_dataElement.split('_')[0], _dataElement.split('_')[0] + '_' + templatePartialId.split('_')[1], _conditions);\r\n }\r\n }\r\n\r\n _conditions.isManuallyAdded = true;\r\n $conditions.push(_conditions);\r\n }\r\n\r\n _branch.compositeCondition.conditions = $conditions;\r\n }\r\n\r\n if (_branch.condition !== undefined && typeof (_branch.condition) === 'object') {\r\n _branch.condition.conditionType.dataElementId = _branch.condition.conditionType.dataElementId.split('_')[0]\r\n + '_' + templatePartialId.split('_')[1];\r\n }\r\n\r\n for (const reportText of _branch.reportText) {\r\n const $reportText = reportText.GetPropertyType();\r\n if ($reportText instanceof InsertPartial) {\r\n reportText.insertPartial.partialId = reportText.insertPartial.manupulateId(templatePartialId.split('_')[1]);\r\n }\r\n\r\n if ($reportText instanceof InsertValue) {\r\n reportText.insertValue.dataElementId = reportText.insertValue.manupulateId(templatePartialId.split('_')[1]);\r\n }\r\n }\r\n }\r\n\r\n this.template.endpoint.templatePartials.push(templatePartial_cloned);\r\n }\r\n }\r\n }\r\n\r\n private AddRepeatableEndpoints() {\r\n this.DynamicallyTemplatePartialIds = [];\r\n this.RemoveManuallyAddedEndPoints();\r\n let dynamicEndPoints = [];\r\n for (const decisionPoint of this.template.rules.decisionPoints) {\r\n dynamicEndPoints = _.filter(decisionPoint.branches, { isManuallyAdded: true });\r\n }\r\n\r\n for (const dynamicEndpoint of dynamicEndPoints) {\r\n const endpoint_org = _.filter(this.template.endpoint.endpoints, { id: dynamicEndpoint.endPointRef.endPointId.split('_')[0] })[0];\r\n const endpoint_cloned = _.cloneDeep(endpoint_org) as EndpointItem;\r\n endpoint_cloned.id = dynamicEndpoint.endPointRef.endPointId;\r\n endpoint_cloned.isManuallyAdded = true;\r\n\r\n const dynamicId = dynamicEndpoint.endPointRef.endPointId.split('_')[1];\r\n for (const reportSection of endpoint_cloned.reportSections) {\r\n for (const _branch of reportSection.branch) {\r\n\r\n if (_branch.compositeCondition !== undefined) {\r\n const dataElementIds = this.template.dataElements.map(dataElement => dataElement.id);\r\n for (let _conditions of _branch.compositeCondition.conditions) {\r\n if (_conditions.isManuallyAdded === undefined || !_conditions.isManuallyAdded) {\r\n for (const _dataElement of dataElementIds) {\r\n // tslint:disable-next-line: max-line-length\r\n _conditions = this.replacePropertyValue(_dataElement.split('_')[0], _dataElement.split('_')[0] + '_' + dynamicId, _conditions);\r\n }\r\n }\r\n\r\n _conditions.isManuallyAdded = true;\r\n _branch.compositeCondition.conditions.push(_conditions);\r\n }\r\n }\r\n\r\n if (_branch.condition !== undefined && typeof (_branch.condition) === 'object') {\r\n _branch.condition.conditionType.dataElementId = _branch.condition.conditionType.dataElementId.split('_')[0]\r\n + '_' + dynamicId;\r\n }\r\n\r\n for (const reportText of _branch.reportText) {\r\n const $reportText = reportText.GetPropertyType();\r\n if ($reportText instanceof InsertPartial) {\r\n reportText.insertPartial.partialId = reportText.insertPartial.manupulateId(dynamicId);\r\n this.DynamicallyTemplatePartialIds.push(reportText.insertPartial.partialId);\r\n }\r\n\r\n if ($reportText instanceof InsertValue) {\r\n reportText.insertValue.dataElementId = reportText.insertValue.manupulateId(dynamicId);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.template.endpoint.endpoints.push(endpoint_cloned);\r\n }\r\n }\r\n\r\n private AddRepeatableComputedDataElement() {\r\n this.RemoveManuallyAddedComputedDataElements();\r\n\r\n for (const computedDataElementId of this.ComputedDataElementIds) {\r\n const dataElementId_org = computedDataElementId.dataElementId_org;\r\n const dataElementId_dynamic = computedDataElementId.dataElememntId_dynamic;\r\n\r\n if (dataElementId_org !== '' || dataElementId_dynamic !== '') {\r\n if (_.find(this.template.dataElements, { id: dataElementId_dynamic }) === undefined) {\r\n const computedDataElement = _.find(this.template.dataElements, { id: dataElementId_org }) as ComputedDataElement;\r\n if (computedDataElement !== undefined && computedDataElement.dataElementType === 'ComputedDataElement') {\r\n const $computedDataElement_cloned = _.cloneDeep(computedDataElement) as ComputedDataElement;\r\n $computedDataElement_cloned.id = dataElementId_dynamic;\r\n $computedDataElement_cloned.isManuallyAdded = true;\r\n const dataElementIds = this.template.dataElements.map(dataElement => dataElement.id);\r\n for (let index = 0; index < computedDataElement.decisionPoints.length; index++) {\r\n $computedDataElement_cloned.decisionPoints[index].branches = [];\r\n for (let $branchModified of computedDataElement.decisionPoints[index].branches) {\r\n for (const _dataElement of dataElementIds) {\r\n // tslint:disable-next-line: max-line-length\r\n $branchModified = this.replacePropertyValue(_dataElement.split('_')[0], _dataElement.split('_')[0] + '_' + dataElementId_dynamic.split('_')[1], $branchModified);\r\n // tslint:disable-next-line: max-line-length\r\n $branchModified = this.replaceTextExpression(_dataElement.split('_')[0], _dataElement.split('_')[0] + '_' + dataElementId_dynamic.split('_')[1], $branchModified);\r\n }\r\n\r\n $branchModified.isManuallyAdded = true;\r\n $computedDataElement_cloned.decisionPoints[index].branches.push($branchModified);\r\n }\r\n }\r\n\r\n this.template.dataElements.push($computedDataElement_cloned);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n replaceTextExpression(prevVal, newVal, object) {\r\n const newObject = _.clone(object);\r\n _.each(object, (val, key) => {\r\n if (val instanceof ArithmeticExpression) {\r\n newObject[key].expressionText = newObject[key].expressionText.replace(prevVal, newVal);\r\n }\r\n });\r\n\r\n return newObject;\r\n }\r\n\r\n replacePropertyValue(prevVal, newVal, object) {\r\n const newObject = _.clone(object);\r\n _.each(object, (val, key) => {\r\n if (val === prevVal) {\r\n newObject[key] = newVal;\r\n } else if (typeof (val) === 'object' || val instanceof Array) {\r\n newObject[key] = this.replacePropertyValue(prevVal, newVal, val);\r\n }\r\n });\r\n\r\n return newObject;\r\n }\r\n\r\n private AddRepeatableBranchesInsideRule() {\r\n this.RemoveManuallyAddedBranches();\r\n this.RemoveDynamicallyAddedComputedDataElementIds();\r\n for (const decisionPoint of this.template.rules.decisionPoints) {\r\n for (const branch of decisionPoint.branches) {\r\n // tslint:disable-next-line: max-line-length\r\n if (branch.endPointRef !== undefined && branch.endPointRef.isRepeatable && (branch.isManuallyAdded === undefined || !branch.isManuallyAdded)) {\r\n const $currentValue = +this.GetRepeatableValue(branch.endPointRef.repeatCount);\r\n if ($currentValue !== undefined && $currentValue > 0) {\r\n for (let index = 0; index < $currentValue; index++) {\r\n const $repeatGroupName = branch.endPointRef.repeatGroup;\r\n const $branch = _.cloneDeep(branch);\r\n $branch.isManuallyAdded = true;\r\n if ($branch.endPointRef !== undefined) {\r\n $branch.endPointRef.isRepeatable = false;\r\n $branch.endPointRef.endPointId = branch.endPointRef.endPointId.split('_')[0]\r\n + '_' + $repeatGroupName + (index + 1);\r\n }\r\n\r\n if ($branch.ICompositeCondition !== undefined) {\r\n const dataElementIds = this.template.dataElements.map(dataElement => dataElement.id);\r\n $branch.ICompositeCondition.conditions = [];\r\n for (let _conditions of branch.ICompositeCondition.conditions) {\r\n for (const _dataElement of dataElementIds) {\r\n // tslint:disable-next-line: max-line-length\r\n _conditions = this.replacePropertyValue(_dataElement.split('_')[0], _dataElement.split('_')[0] + '_' + $repeatGroupName + (index + 1), _conditions);\r\n // tslint:disable-next-line: max-line-length\r\n this.CheckIfDataElementisComputedDataElement(_dataElement.split('_')[0], _dataElement.split('_')[0] + '_' + $repeatGroupName + (index + 1));\r\n }\r\n\r\n $branch.ICompositeCondition.conditions.push(_conditions);\r\n }\r\n }\r\n\r\n if (branch.condition !== undefined && typeof (branch.condition) === 'object') {\r\n $branch.condition.conditionType.dataElementId = branch.condition.conditionType.dataElementId.split('_')[0]\r\n + '_' + $repeatGroupName + (index + 1);\r\n }\r\n\r\n decisionPoint.branches.push($branch);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private CheckIfDataElementisComputedDataElement(dataElementId_org, dataElementId_dynamic) {\r\n const $computedDataElement = new ComputedDataElementId();\r\n const computedDataElement = _.find(this.template.dataElements, { id: dataElementId_org }) as BaseDataElement;\r\n if (computedDataElement !== undefined && computedDataElement.dataElementType === 'ComputedDataElement') {\r\n $computedDataElement.dataElememntId_dynamic = dataElementId_dynamic;\r\n $computedDataElement.dataElementId_org = dataElementId_org;\r\n this.ComputedDataElementIds.push(Object.assign({}, $computedDataElement));\r\n }\r\n }\r\n\r\n getDataElementValues() { }\r\n\r\n public evaluateDecisionPoints() {\r\n if (this.template.rules !== undefined && this.template.rules.decisionPoints !== undefined) {\r\n this.showKeyDiagram = undefined;\r\n this.evaluateComputedExpressions();\r\n this.evaluateDecisionAndConditionalProperty();\r\n this.ProcessRepetationDataElements();\r\n this.endOfRoadReached = false;\r\n this.branchCounter++;\r\n const decisionPoints = FindDecisionPoints(this.template.rules.decisionPoints, this.dataElementValues);\r\n this.endpoints = decisionPoints.finalEndPoints;\r\n this.showKeyDiagram = decisionPoints.keyDiagramId;\r\n\r\n const reportText = EvaluateRulesAndGenerateReportText(this.template, this.endpoints, this.dataElementValues);\r\n const $simulatorState = new SimulatorState();\r\n if (reportText.allReportText.length > 0) {\r\n $simulatorState.mainReportText = reportText;\r\n for (const _endpoint of this.endpoints) {\r\n $simulatorState.endPointIds.push(_endpoint);\r\n }\r\n }\r\n\r\n $simulatorState.showKeyDiagram = this.showKeyDiagram;\r\n $simulatorState.nonRelevantDataElementIds = this.nonRelevantDataElementIds;\r\n this.simulatorStateChanged.next($simulatorState);\r\n }\r\n }\r\n\r\n initialize(template: Template) {\r\n this.template = template;\r\n this.dataElementValues = new Map<string, any>();\r\n this.dataElementTexts = new Map<string, any>();\r\n for (const dataElement of this.template.dataElements) {\r\n this.dataElementValues.set(dataElement.id, dataElement.currentValue);\r\n }\r\n }\r\n}\r\n","import { NgModule , ModuleWithProviders } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SimulatorEngineService } from './services/simulator-engine.service';\r\nimport { UtilityService } from './services/utility.service';\r\nimport { ToastrModule } from 'ngx-toastr';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ToastrModule.forRoot()\r\n ],\r\n declarations: []\r\n})\r\nexport class CoreModule {\r\n static forRoot(): ModuleWithProviders {\r\n return {\r\n ngModule: CoreModule,\r\n providers: [\r\n SimulatorEngineService,\r\n UtilityService\r\n ]\r\n };\r\n }\r\n }\r\n","export class AllTextReport {\r\n repeatedSectionName: string;\r\n allTextResultReport: AllTextResultReport;\r\n constructor () {\r\n this.allTextResultReport = new AllTextResultReport();\r\n }\r\n}\r\n\r\nexport class AllReportTextGroup {\r\n repeatedSectionName: string;\r\n allTextResultReport: Array<AllTextResultReport>;\r\n}\r\n\r\nexport class AllTextResultReport {\r\n heading: string;\r\n content: string;\r\n}\r\n\r\nexport enum ReportTextPosition {\r\n Top,\r\n Right\r\n}\r\n","import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, OnChanges, OnInit, OnDestroy } from '@angular/core';\r\nimport { FinalExecutedHistory } from '../assist-data-element/assist-data-element.component';\r\nimport { SimulatorEngineService } from '../../core/services/simulator-engine.service';\r\nimport { InputData } from '../../core/models/input-data.model';\r\nimport { ReportTextPosition } from '../../core/models/report-text.model';\r\nimport { ChoiceDataElement, BaseDataElement, Template, Diagram, MainReportText } from 'testruleengine/Library/Models/Class';\r\nimport { SubscriptionLike as ISubscription, Subject } from 'rxjs';\r\nimport { UtilityService } from '../../core/services/utility.service';\r\nimport { ChoiceElementDisplayEnum } from '../../core/models/choice-element-display.enum';\r\nimport { getTemplate } from 'testruleengine/Library/Utilities/TemplateManager';\r\nimport { AIInputData } from '../../core/models/ai-input-data.model';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\nconst $ = require('jquery');\r\n\r\n@Component({\r\n selector: 'acr-assist-simulator',\r\n templateUrl: './acr-assist-simulator.component.html',\r\n styleUrls: ['./acr-assist-simulator.component.css', '../styles.css']\r\n})\r\nexport class AcrAssistSimulatorComponent implements OnChanges, OnInit, OnDestroy {\r\n\r\n template: Template;\r\n isEmptyContent: boolean;\r\n keyDiagrams: Diagram[] = [];\r\n resultText: MainReportText;\r\n isReset: boolean;\r\n dataElements: BaseDataElement[];\r\n position = ReportTextPosition;\r\n isInvalidFile: boolean;\r\n moduleName: string;\r\n acceptedFileTypes = ['image/png', 'image/gif', 'image/jpg', 'image/jpeg'];\r\n resetValuesSubscription: ISubscription;\r\n\r\n @Input() alignLabelAndControlToTopAndBottom: boolean;\r\n @Input() resetValuesNotifier: Subject<any>;\r\n @Input() templateContent: string;\r\n @Input() assetsBaseUrl: string;\r\n @Input() showKeyDiagram: boolean;\r\n @Input() reportTextPosition: ReportTextPosition;\r\n @Input() inputValues: InputData[] = [];\r\n @Input() inputData: string;\r\n @Input() showResetButton = true;\r\n @Input() showReportText = true;\r\n @Input() fontSize: string;\r\n @Input() fontFamily: string;\r\n @Input() fontColor: string;\r\n @Input() backgroundColor: string;\r\n @Input() cssClass: string[];\r\n @Input() choiceElementDisplay: ChoiceElementDisplayEnum;\r\n @Input() aiInputs: AIInputData[] = [];\r\n @Input() showTabularReportText = false;\r\n @Output() returnExecutionHistory: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() returnDataElementChanged: EventEmitter<InputData[]> = new EventEmitter<InputData[]>();\r\n @Output() returnDefaultElements = new EventEmitter();\r\n @Output() returnReportText: EventEmitter<MainReportText> = new EventEmitter<MainReportText>();\r\n @Output() callBackAfterGettingShowKeyDiagram: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @ViewChild('imageUpload', { static: false }) imageUpload: any;\r\n @ViewChild('simulatorBlock', { read: ElementRef, static: false }) private simulatorBlock: ElementRef;\r\n\r\n constructor(\r\n private simulatorEngineService: SimulatorEngineService,\r\n private toastr: ToastrService,\r\n private utilityService: UtilityService) {\r\n }\r\n\r\n ngOnInit() {\r\n if (this.resetValuesNotifier != null) {\r\n this.resetValuesSubscription = this.resetValuesNotifier.subscribe((event) => {\r\n this.resetElements();\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.isReset = true;\r\n this.resultText = undefined;\r\n\r\n this.isEmptyContent = this.templateContent === undefined || this.templateContent.length === 0 && this.inputValues.length === 0 &&\r\n this.inputData === undefined;\r\n\r\n if (this.isEmptyContent) {\r\n return;\r\n }\r\n if (this.utilityService.isNotEmptyString(this.inputData)) {\r\n this.inputValues = JSON.parse(this.inputData);\r\n }\r\n if (this.utilityService.isValidInstance(this.imageUpload)) {\r\n this.imageUpload.nativeElement.value = '';\r\n }\r\n\r\n this.template = getTemplate(this.templateContent);\r\n if (this.utilityService.isNotEmptyArray(this.inputValues)) {\r\n this.populateTestCaseData();\r\n }\r\n\r\n this.simulatorEngineService.initialize(this.template);\r\n this.dataElements = this.template.dataElements;\r\n\r\n if (this.moduleName !== this.template.metadata.id) {\r\n this.keyDiagrams = new Array<Diagram>();\r\n }\r\n\r\n if (!this.keyDiagrams.length) {\r\n this.template.metadata.diagrams.forEach(diag => {\r\n const element = new Diagram();\r\n element.label = diag.label;\r\n element.location = diag.location;\r\n element.keyDiagram = diag.keyDiagram;\r\n this.keyDiagrams.push(element);\r\n });\r\n }\r\n\r\n if (this.utilityService.isNotEmptyArray(this.aiInputs)) {\r\n const element = this.dataElements.find(x => x.id === this.aiInputs[0].id);\r\n if (this.utilityService.isValidInstance(element)) {\r\n element.sources = this.aiInputs;\r\n }\r\n }\r\n\r\n const context = this;\r\n setTimeout(function (e) {\r\n context.applyInputStyles();\r\n }, 100);\r\n }\r\n\r\n setDefaultImage(event, diagram) {\r\n event.target.src = 'assets/img/default.gif';\r\n diagram.isError = true;\r\n }\r\n\r\n imageLoaded(event, diagram) {\r\n if (event.target.src.includes('/assets/img/default.gif')) {\r\n diagram.isError = true;\r\n } else {\r\n diagram.isError = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.utilityService.isValidInstance(this.resetValuesSubscription)) {\r\n this.resetValuesSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n applyInputStyles() {\r\n if (this.utilityService.isNotEmptyString(this.fontSize)) {\r\n this.simulatorBlock.nativeElement.style.fontSize = this.fontSize;\r\n }\r\n\r\n if (this.utilityService.isNotEmptyString(this.fontColor)) {\r\n this.simulatorBlock.nativeElement.style.color = this.fontColor;\r\n }\r\n\r\n if (this.utilityService.isNotEmptyString(this.fontFamily)) {\r\n this.simulatorBlock.nativeElement.style.fontFamily = this.fontFamily;\r\n }\r\n\r\n if (this.utilityService.isNotEmptyString(this.backgroundColor)) {\r\n this.simulatorBlock.nativeElement.style.backgroundColor = this.backgroundColor;\r\n }\r\n\r\n this.simulatorBlock.nativeElement.className = 'box box-primary box-solid margin-b-0';\r\n if (this.utilityService.isNotEmptyArray(this.cssClass)) {\r\n const classes = this.simulatorBlock.nativeElement.className;\r\n const classesArray = classes.split(' ');\r\n const classesNeedToApply = new Array<string>();\r\n classesArray.forEach(classItem => {\r\n this.cssClass.forEach(css => {\r\n if (classItem.trim() !== css.trim() && classesNeedToApply.indexOf(css) <= -1) {\r\n classesNeedToApply.push(css);\r\n }\r\n });\r\n });\r\n\r\n if (this.utilityService.isNotEmptyArray(classesNeedToApply)) {\r\n classesNeedToApply.forEach(classNeedToApply => {\r\n var nativeClasses = this.simulatorBlock.nativeElement.className.split(' ');\r\n if (this.utilityService.isNotEmptyArray(nativeClasses)) {\r\n if (nativeClasses.indexOf(classNeedToApply) <= -1) {\r\n this.simulatorBlock.nativeElement.className = this.simulatorBlock.nativeElement.className + ' ' + classNeedToApply;\r\n }\r\n } else {\r\n this.simulatorBlock.nativeElement.className = this.simulatorBlock.nativeElement.className + ' ' + classNeedToApply;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n getImageDataUrl(label: string): string {\r\n if (this.utilityService.isNotEmptyString(label)) {\r\n if (this.utilityService.isImageDataUrl(label)) {\r\n return label;\r\n } else if (this.utilityService.isValidInstance(this.assetsBaseUrl)) {\r\n return `${this.assetsBaseUrl}/${label}`;\r\n }\r\n }\r\n }\r\n\r\n diagramExist(diagram: Diagram) {\r\n return this.keyDiagrams.some(function (el) {\r\n return el.location === diagram.location;\r\n });\r\n }\r\n\r\n resetElements() {\r\n this.moduleName = this.template.metadata.id;\r\n this.template = getTemplate(this.templateContent);\r\n this.simulatorEngineService.initialize(this.template);\r\n this.dataElements = Object.assign({}, this.template.dataElements);\r\n this.resultText = undefined;\r\n const $this = this;\r\n setTimeout(function (e) {\r\n $this.resizeKeyImages();\r\n }, 100);\r\n this.returnDefaultElements.emit();\r\n }\r\n\r\n recieveReportText(textReport: MainReportText) {\r\n this.resultText = textReport;\r\n this.returnReportText.emit(textReport);\r\n\r\n console.log(this.resultText);\r\n if (this.utilityService.isValidInstance(this.resultText)) {\r\n $('#tab1_reportText').prop('checked', true);\r\n }\r\n }\r\n\r\n recievedExecutionHistory(finalExecutionHistory: FinalExecutedHistory) {\r\n this.returnExecutionHistory.emit(finalExecutionHistory);\r\n }\r\n\r\n recivedOnDataElementChanged(data: InputData[]) {\r\n this.returnDataElementChanged.emit(data);\r\n }\r\n\r\n gettingShowKeyDiagram(data: string) {\r\n this.callBackAfterGettingShowKeyDiagram.emit(data);\r\n }\r\n\r\n changeListener(event): void {\r\n this.isInvalidFile = false;\r\n this.keyDiagrams = new Array<Diagram>();\r\n for (let i = 0; i < event.target.files.length; i++) {\r\n const reader = new FileReader();\r\n const diagram = new Diagram();\r\n diagram.label = event.target.files[i].name;\r\n diagram.keyDiagram = i === 0 ? true : false;\r\n\r\n if (!(this.acceptedFileTypes.indexOf(event.target.files[i].type) > -1)) {\r\n this.isInvalidFile = true;\r\n }\r\n\r\n reader.onload = (event1: any) => {\r\n diagram.location = reader.result.toString();\r\n };\r\n\r\n reader.readAsDataURL(event.target.files[i]);\r\n\r\n reader.onloadend = (event1: any) => {\r\n this.keyDiagrams.push(diagram);\r\n };\r\n }\r\n\r\n if ($('#icon_keydiagram').hasClass('fa fa-plus')) {\r\n this.collapseKeyDiagram();\r\n }\r\n }\r\n\r\n resizeKeyImages() {\r\n const windowHeight = window.innerHeight;\r\n const reportTextHeight = $('#div-right-reportText').height();\r\n const height = windowHeight - reportTextHeight - 150;\r\n if (reportTextHeight === 1) {\r\n $('#carousel-example-generic').height('auto');\r\n } else {\r\n $('#carousel-example-generic').height(height + 'px');\r\n }\r\n }\r\n\r\n collapseKeyDiagram() {\r\n if ($('#icon_keydiagram').hasClass('fa fa-minus')) {\r\n $('#icon_keydiagram').removeClass('fa fa-minus');\r\n $('#icon_keydiagram').addClass('fa fa-plus');\r\n $('#body_keydiagram').css({\r\n display: 'none'\r\n });\r\n } else {\r\n $('#icon_keydiagram').removeClass('fa fa-plus');\r\n $('#icon_keydiagram').addClass('fa fa-minus');\r\n $('#body_keydiagram').removeAttr('style');\r\n }\r\n }\r\n\r\n collapseReportText() {\r\n if ($('#icon_reporttext').hasClass('fa fa-minus')) {\r\n $('#icon_reporttext').removeClass('fa fa-minus');\r\n $('#icon_reporttext').addClass('fa fa-plus');\r\n $('#body_reporttext').css({\r\n display: 'none'\r\n });\r\n } else {\r\n $('#icon_reporttext').removeClass('fa fa-plus');\r\n $('#icon_reporttext').addClass('fa fa-minus');\r\n $('#body_reporttext').removeAttr('style');\r\n }\r\n }\r\n\r\n populateTestCaseData() {\r\n this.template.dataElements.forEach(dataeElement => {\r\n const inputValue = this.inputValues.filter(x => x.dataElementId.toUpperCase() === dataeElement.id.toUpperCase());\r\n if (inputValue !== undefined && inputValue.length > 0) {\r\n if (dataeElement.dataElementType === 'ChoiceDataElement' || dataeElement.dataElementType === 'MultiChoiceDataElement') {\r\n const choiceElement = dataeElement as ChoiceDataElement;\r\n if (Array.isArray(inputValue[0].dataElementValue)) {\r\n const values = [];\r\n choiceElement.choiceInfo.forEach(choice => {\r\n inputValue[0].dataElementValue.forEach(value => {\r\n if (choice.value.toUpperCase() === value.toUpperCase()) {\r\n values.push(choice.value);\r\n }\r\n });\r\n });\r\n inputValue[0].dataElementValue = values;\r\n } else {\r\n choiceElement.choiceInfo.forEach(choice => {\r\n\r\n if (inputValue[0].dataElementValue !== undefined) {\r\n if (choice.value.toUpperCase() === inputValue[0].dataElementValue.toUpperCase()) {\r\n inputValue[0].dataElementValue = choice.value;\r\n return;\r\n }\r\n }\r\n\r\n });\r\n }\r\n }\r\n dataeElement.currentValue = inputValue[0].dataElementValue;\r\n }\r\n });\r\n }\r\n\r\n clipboardError(error: Error): void {\r\n this.toastr.error('Failed to copy to clipboard');\r\n }\r\n\r\n clipboardSuccess(value: string): void {\r\n this.toastr.success('Successfully copied to clipboard');\r\n }\r\n\r\n getReportTextInnerContent(reportTextContentForEmptySectionName) {\r\n if (this.utilityService.isValidInstance(reportTextContentForEmptySectionName)) {\r\n var msgb = reportTextContentForEmptySectionName.innerText.trim();\r\n let selBox = document.createElement('textarea');\r\n selBox.style.position = 'fixed';\r\n selBox.style.left = '0';\r\n selBox.style.top = '0';\r\n selBox.style.opacity = '0';\r\n selBox.value = msgb;\r\n document.body.appendChild(selBox);\r\n selBox.focus();\r\n selBox.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(selBox);\r\n this.toastr.success('Successfully copied to clipboard');\r\n } else {\r\n this.toastr.error('Failed to copy to clipboard');\r\n }\r\n // return '';\r\n }\r\n}\r\n","export class InputData {\r\n dataElementId: string;\r\n dataElementLabel: string;\r\n dataElementValue: any;\r\n dataElementDisplayValue: any;\r\n constructor() {\r\n this.dataElementLabel = '';\r\n this.dataElementDisplayValue = '';\r\n\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs/internal/Subject';\r\n\r\n@Injectable()\r\nexport class SimulatorCommunicationService {\r\n // Observable string sources\r\n private simulatorSource = new Subject<string>();\r\n\r\n // Observable string streams\r\n simulatorSource$ = this.simulatorSource.asObservable();\r\n\r\n // Service message commands\r\n messageEmitter(mission: string) {\r\n this.simulatorSource.next(mission);\r\n }\r\n}\r\n","import { RepeatedElementSections } from './RepeatedElementSections';\r\n\r\nexport class RepeatedElementModel {\r\n ParentElement: any;\r\n ParentElementId: string;\r\n RepeatedElementSections: RepeatedElementSections[];\r\n constructor() {\r\n this.RepeatedElementSections = new Array<RepeatedElementSections>();\r\n }\r\n}\r\n\r\n\r\n","export class RepeatedElementSections {\r\n SectionName: string;\r\n ChildElements: any[] = [];\r\n SectionId: string;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs/internal/Subject';\r\n\r\n@Injectable()\r\nexport class ResetCommunicationService {\r\n // Observable string sources\r\n private ResetSource = new Subject<string>();\r\n\r\n // Observable string streams\r\n resetSource$ = this.ResetSource.asObservable();\r\n\r\n // Service message commands\r\n messageEmitter(mission: string) {\r\n this.ResetSource.next(mission);\r\n }\r\n}\r\n","import { TabularReportElements } from './tabular-report-elements.model';\r\n\r\nexport class TabularReport {\r\n label: string;\r\n identifier: string;\r\n elements: TabularReportElements[];\r\n}\r\n\r\n","export class TabularReportElements {\r\n dataElement: string;\r\n radElement: string;\r\n values: any;\r\n}\r\n","import { Component, Input, Output, EventEmitter, OnChanges, OnInit, OnDestroy } from '@angular/core';\r\nimport { SubscriptionLike as ISubscription } from 'rxjs';\r\nimport { SimulatorEngineService } from '../../core/services/simulator-engine.service';\r\nimport { SimulatorState } from '../../core/models/simulator-state.model';\r\nimport { InputData } from '../../core/models/input-data.model';\r\nimport { BaseDataElement, ChoiceDataElement } from 'testruleengine/Library/Models/Class';\r\nimport { SimulatorCommunicationService } from '../shared/services/simulator-communication.service';\r\nimport { RepeatedElementModel } from '../../core/elements/models/repeatedElement.model';\r\nimport { RepeatedElementSections } from '../../core/elements/models/RepeatedElementSections';\r\nimport { ResetCommunicationService } from '../shared/services/reset-communication.service';\r\nimport { ChoiceElementDisplayEnum } from '../../core/models/choice-element-display.enum';\r\nimport { TabularReport } from '../../core/models/tabular-report.model';\r\nimport { UtilityService } from '../../core/services/utility.service';\r\nimport { MainReportText } from 'testruleengine/Library/Models/Class';\r\n\r\nimport * as _ from 'lodash';\r\nimport { TabularReportElements } from '../../core/models/tabular-report-elements.model';\r\nconst $ = require('jquery');\r\n\r\n@Component({\r\n selector: 'acr-assist-data-element',\r\n templateUrl: './assist-data-element.component.html',\r\n styleUrls: ['./assist-data-element.component.css', '../styles.css']\r\n})\r\n\r\nexport class AssistDataElementComponent implements OnInit, OnChanges, OnDestroy {\r\n\r\n mainReportTextObj: MainReportText;\r\n simulatorState: SimulatorState;\r\n dataElementValues: Map<string, any>;\r\n selectedChoiceValues: string[] = [];\r\n executedResultIds: any[] = [];\r\n executedResultHistories: ExecutedResultHistory[] = [];\r\n IsRepeating: boolean;\r\n $RepeatedElementModel: any[] = [];\r\n resetSourceSubscription: ISubscription;\r\n simulatorStateSubscription: ISubscription;\r\n\r\n @Input() showTabularReportText: boolean;\r\n @Input() choiceElementDisplay: ChoiceElementDisplayEnum;\r\n @Input() alignLabelAndControlToTopAndBottom: boolean;\r\n @Input() dataElements: BaseDataElement[];\r\n @Input() assetsBaseUrl: string;\r\n @Input() $dataElements: BaseDataElement[];\r\n @Input() Endpoints = [];\r\n @Input() templatePartial: string[];\r\n @Input() endPointXMLString: string[];\r\n @Input() xmlContent: string;\r\n @Input() isReset: boolean;\r\n @Input() inputValues: InputData[] = [];\r\n @Output() callBackAfterGettingShowKeyDiagram: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() returnReportText: EventEmitter<MainReportText> = new EventEmitter<MainReportText>();\r\n @Output() returnExecutionHistory: EventEmitter<FinalExecutedHistory> = new EventEmitter<FinalExecutedHistory>();\r\n @Output() returnDataElementChanged: EventEmitter<InputData[]> = new EventEmitter<InputData[]>();\r\n @Output() callBackAfterAIInputReset: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n constructor(\r\n private simulatorEngineService: SimulatorEngineService,\r\n private utilityService: UtilityService,\r\n private simulatorCommunicationService: SimulatorCommunicationService,\r\n resetCommunicationService: ResetCommunicationService\r\n ) {\r\n this.resetSourceSubscription = resetCommunicationService.resetSource$.subscribe(\r\n mission => {\r\n this.IsRepeating = false;\r\n this.$RepeatedElementModel = [];\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.IsRepeating = false;\r\n this.simulatorStateSubscription = this.simulatorEngineService.simulatorStateChanged.subscribe((message) => {\r\n this.simulatorState = message as SimulatorState;\r\n\r\n this.dataElements.filter(x => x.canPrefillFromSource === true).forEach(_dataElement => {\r\n _dataElement.currentValue = undefined;\r\n this.dataElementValues.set(_dataElement.id, undefined);\r\n });\r\n\r\n this.mainReportTextObj = this.simulatorState.mainReportText;\r\n if (this.mainReportTextObj !== undefined && this.mainReportTextObj.setValues !== undefined\r\n && this.mainReportTextObj.setValues.setDataElementValue !== undefined &&\r\n this.mainReportTextObj.setValues.setDataElementValue.length > 0) {\r\n this.mainReportTextObj.setValues.setDataElementValue.forEach(_setValues => {\r\n const _dataElementWithFilter = this.dataElements.filter(x => x.id === _setValues.dataElementId\r\n && x.canPrefillFromSource === true);\r\n if (_dataElementWithFilter !== undefined && _dataElementWithFilter[0] !== undefined) {\r\n _dataElementWithFilter[0].currentValue = _setValues.value;\r\n this.dataElementValues.set(_setValues.dataElementId, _setValues.value);\r\n }\r\n });\r\n }\r\n\r\n this.dataElementValues = this.simulatorEngineService.getAllDataElementValues();\r\n\r\n const showKeyDiagram = this.simulatorState.showKeyDiagram;\r\n const nonRelevantIDs = this.simulatorState.nonRelevantDataElementIds;\r\n for (const dataElement of this.dataElements) {\r\n if (nonRelevantIDs && nonRelevantIDs.length > 0) {\r\n if (nonRelevantIDs.indexOf(dataElement.id) >= 0) {\r\n dataElement.isVisible = false;\r\n } else {\r\n dataElement.isVisible = true;\r\n }\r\n } else {\r\n dataElement.isVisible = true;\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n if (this.dataElementValues.get(dataElement.id) !== undefined && dataElement.currentValue !== this.dataElementValues.get(dataElement.id)) {\r\n dataElement.currentValue = this.dataElementValues.get(dataElement.id);\r\n }\r\n // tslint:disable-next-line: max-line-length\r\n dataElement.currentValue = (dataElement.currentValue !== undefined) ? dataElement.currentValue : this.dataElementValues.get(dataElement.id);\r\n }\r\n\r\n this.dataElements = Object.keys(this.dataElements).map(i => this.dataElements[i]);\r\n // tslint:disable-next-line: max-line-length\r\n this.dataElements = this.dataElements.filter(x => x.displaySequence != null).sort(function(DE_1, DE_2) { return DE_1.displaySequence - DE_2.displaySequence; });\r\n\r\n if (this.showTabularReportText) {\r\n this.mainReportTextObj = new MainReportText();\r\n this.mainReportTextObj.tabularReport = this.createTabularReport();\r\n if (this.utilityService.isValidInstance(this.mainReportTextObj.tabularReport) &&\r\n this.utilityService.isNotEmptyArray(this.mainReportTextObj.tabularReport.elements)) {\r\n this.returnReportText.emit(this.mainReportTextObj);\r\n } else {\r\n this.returnReportText.emit(undefined);\r\n }\r\n } else if (this.mainReportTextObj !== undefined && this.mainReportTextObj.allReportText.length > 0) {\r\n this.returnReportText.emit(this.mainReportTextObj);\r\n } else {\r\n this.returnReportText.emit(undefined);\r\n }\r\n\r\n this.$dataElements = [];\r\n for (const dataelement of this.dataElements) {\r\n if (!dataelement.isRepeatable) {\r\n this.$dataElements.push(dataelement);\r\n }\r\n }\r\n\r\n this.callBackAfterGettingShowKeyDiagram.emit(showKeyDiagram);\r\n this.simulatorCommunicationService.messageEmitter('');\r\n });\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.dataElements = Object.keys(this.dataElements).map(i => this.dataElements[i]);\r\n // tslint:disable-next-line: max-line-length\r\n this.dataElements = this.dataElements.filter(x => x.displaySequence != null).sort(function(DE_1, DE_2) { return DE_1.displaySequence - DE_2.displaySequence; });\r\n this.executedResultIds = [];\r\n\r\n this.$dataElements = [];\r\n for (const dataelement of this.dataElements) {\r\n if (!dataelement.isRepeatable) {\r\n this.$dataElements.push(dataelement);\r\n }\r\n }\r\n\r\n this.simulatorEngineService.evaluateDecisionPoints();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.utilityService.isValidInstance(this.resetSourceSubscription)) {\r\n this.resetSourceSubscription.unsubscribe();\r\n }\r\n if (this.utilityService.isValidInstance(this.simulatorStateSubscription)) {\r\n this.simulatorStateSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n choiceSelected($event) {\r\n if ($event !== undefined) {\r\n if ($event.receivedElement !== undefined && $event.selectedCondition !== undefined) {\r\n this.selectedChoiceValues[$event.receivedElement.elementId + 'SelectedValue'] = $event.receivedElement.selectedText;\r\n this.simulatorEngineService.addOrUpdateDataElement($event.receivedElement.elementId, $event.receivedElement.selectedValue,\r\n $event.receivedElement.selectedText);\r\n const executedResults: string[] = [];\r\n executedResults[$event.selectedCondition.selectedCondition] = $event.selectedCondition.selectedValue;\r\n this.executedResultIds[$event.selectedCondition.selectedConditionId] = executedResults;\r\n this.generateExecutionHistory();\r\n this.afterDataElementChanged();\r\n }\r\n } else {\r\n this.afterDataElementChanged();\r\n }\r\n }\r\n\r\n numericSelected($event) {\r\n if ($event !== undefined) {\r\n if ($event.receivedElement !== undefined && $event.selectedCondition !== undefined) {\r\n this.FindRepeatedElements($event);\r\n this.simulatorEngineService.addOrUpdateDataElement($event.receivedElement.elementId, $event.receivedElement.selectedValue,\r\n $event.receivedElement.selectedValue);\r\n const executedResults: string[] = [];\r\n executedResults[$event.selectedCondition.selectedCondition] = $event.selectedCondition.selectedValue;\r\n this.executedResultIds[$event.selectedCondition.selectedConditionId] = executedResults;\r\n this.generateExecutionHistory();\r\n this.afterDataElementChanged();\r\n }\r\n } else {\r\n this.afterDataElementChanged();\r\n }\r\n }\r\n\r\n onAIInputReset(event) {\r\n this.callBackAfterAIInputReset.emit(event);\r\n }\r\n\r\n IsAnyRepeatElementsExist(event): boolean {\r\n let isExist = false;\r\n for (const item of this.dataElements) {\r\n if (item.isRepeatable === true && item.repeatRefID === event.receivedElement.elementId) {\r\n isExist = true;\r\n break;\r\n }\r\n }\r\n\r\n return isExist;\r\n }\r\n\r\n FindRepeatedElements($event) {\r\n // RepeatableElementRegisterService.ClearRepeatableDataElementsGroupName();\r\n if (this.IsAnyRepeatElementsExist($event)) {\r\n this.IsRepeating = false;\r\n const $repeatedElementModel = new RepeatedElementModel();\r\n\r\n this.resetRepeatedElements($event);\r\n for (const item of this.dataElements) {\r\n if (item.id === $event.receivedElement.elementId) {\r\n $repeatedElementModel.ParentElement = item;\r\n $repeatedElementModel.ParentElementId = $event.receivedElement.elementId;\r\n }\r\n }\r\n\r\n for (let i = 0; i < $event.receivedElement.selectedValue; i++) {\r\n const repeatedElementSection = new RepeatedElementSections();\r\n for (const item of this.dataElements) {\r\n if (item.isRepeatable === true && item.repeatRefID === $event.receivedElement.elementId) {\r\n // this.IsRepeating = true;\r\n repeatedElementSection.SectionName = item.repeatGroup + ' ' + + (i + 1);\r\n repeatedElementSection.SectionId = item.repeatGroup.replace(/[\\s]/g, '') + +(i + 1);\r\n item.id = item.id.split('_')[0] + '_' + item.repeatGroup.replace(/[\\s]/g, '') + +(i + 1);\r\n item.currentValue = undefined;\r\n this.dataElementValues.set(item.id, undefined);\r\n const $item = Object.assign([], item);\r\n repeatedElementSection.ChildElements.push($item);\r\n }\r\n }\r\n\r\n $repeatedElementModel.RepeatedElementSections.push(repeatedElementSection);\r\n }\r\n\r\n // RepeatableElementRegisterService.SetRepeatableDataElementsGroupName($repeatedElementModel);\r\n this.$RepeatedElementModel.push($repeatedElementModel);\r\n this.IsRepeating = this.$RepeatedElementModel.length > 0 ? true : false;\r\n }\r\n }\r\n\r\n resetRepeatedElements($event) {\r\n for (let index = 0; index < this.$RepeatedElementModel.length; index++) {\r\n if (this.$RepeatedElementModel[index].ParentElementId === $event.receivedElement.elementId) {\r\n this.$RepeatedElementModel.splice(index, 1);\r\n }\r\n }\r\n }\r\n\r\n dateTimeSelected($event) {\r\n if ($event !== undefined) {\r\n if ($event.receivedElement !== undefined && $event.selectedCondition !== undefined) {\r\n this.simulatorEngineService.addOrUpdateDataElement($event.receivedElement.elementId, $event.receivedElement.selectedValue,\r\n $event.receivedElement.selectedValue);\r\n const executedResults: string[] = [];\r\n executedResults[$event.selectedCondition.selectedCondition] = $event.selectedCondition.selectedValue;\r\n this.executedResultIds[$event.selectedCondition.selectedConditionId] = executedResults;\r\n this.generateExecutionHistory();\r\n this.afterDataElementChanged();\r\n }\r\n } else {\r\n this.afterDataElementChanged();\r\n }\r\n }\r\n\r\n multiSelected($event) {\r\n if ($event !== undefined) {\r\n if ($event.receivedElement !== undefined && $event.selectedCondition !== undefined) {\r\n // tslint:disable-next-line: max-line-length\r\n this.simulatorEngineService.addOrUpdateDataElement($event.receivedElement.elementId, $event.receivedElement.selectedValues,\r\n $event.receivedElement.selectedTexts);\r\n const executedResults: string[] = [];\r\n executedResults[$event.selectedCondition.selectedCondition] = $event.selectedCondition.selectedValue;\r\n this.executedResultIds[$event.selectedCondition.selectedConditionId] = executedResults;\r\n this.generateExecutionHistory();\r\n this.afterDataElementChanged();\r\n }\r\n } else {\r\n this.afterDataElementChanged();\r\n }\r\n }\r\n\r\n afterDataElementChanged() {\r\n const deValues: InputData[] = [];\r\n for (const de of this.dataElements) {\r\n if (de.isVisible && de.dataElementType !== 'ComputedDataElement' && de.dataElementType !== 'GlobalValue') {\r\n const inputData = new InputData();\r\n inputData.dataElementId = de.id;\r\n inputData.dataElementLabel = de.label;\r\n if (de.dataElementType !== 'MultiChoiceDataElement') {\r\n inputData.dataElementValue = de.currentValue;\r\n }\r\n\r\n if (de.currentValue === undefined || de.currentValue === '') {\r\n inputData.dataElementDisplayValue = undefined;\r\n } else {\r\n if (de.dataElementType === 'ChoiceDataElement') {\r\n const choices = (de as ChoiceDataElement).choiceInfo;\r\n const choice = choices.filter(ch => ch.value === de.currentValue);\r\n if (choice !== undefined && choice.length) {\r\n inputData.dataElementDisplayValue = choices.filter(ch => ch.value === de.currentValue)[0].label;\r\n } else {\r\n inputData.dataElementDisplayValue = de.currentValue;\r\n }\r\n } else if (de.dataElementType === 'MultiChoiceDataElement') {\r\n const choices = (de as ChoiceDataElement).choiceInfo;\r\n inputData.dataElementDisplayValue = [];\r\n\r\n if (!(de.currentValue instanceof Array)) {\r\n inputData.dataElementValue = [de.currentValue];\r\n } else {\r\n inputData.dataElementValue = de.currentValue;\r\n }\r\n\r\n choices.forEach(choice => {\r\n if (Array.isArray(de.currentValue)) {\r\n de.currentValue.forEach(element => {\r\n if (choice.value === element) {\r\n inputData.dataElementDisplayValue.push(choice.label);\r\n }\r\n });\r\n } else {\r\n if (choice.value === de.currentValue) {\r\n inputData.dataElementDisplayValue.push(choice.label);\r\n }\r\n }\r\n });\r\n\r\n if (inputData.dataElementDisplayValue === undefined && inputData.dataElementDisplayValue !== null) {\r\n inputData.dataElementDisplayValue = this.removeDuplicates(inputData.dataElementDisplayValue);\r\n }\r\n\r\n if (inputData.dataElementValue !== undefined && inputData.dataElementValue != null) {\r\n inputData.dataElementValue = this.removeDuplicates(inputData.dataElementValue);\r\n }\r\n } else {\r\n inputData.dataElementDisplayValue = de.currentValue;\r\n }\r\n }\r\n deValues.push(inputData);\r\n }\r\n }\r\n\r\n this.returnDataElementChanged.emit(deValues);\r\n }\r\n\r\n removeDuplicates(arr) {\r\n const unique_array = [];\r\n // tslint:disable-next-line: prefer-for-of\r\n for (let i = 0; i < arr.length; i++) {\r\n if (unique_array.indexOf(arr[i]) === -1) {\r\n unique_array.push(arr[i]);\r\n }\r\n }\r\n\r\n return unique_array;\r\n }\r\n\r\n private generateExecutionHistory() {\r\n this.executedResultHistories = [];\r\n let isNonRelevant: boolean;\r\n isNonRelevant = false;\r\n // tslint:disable-next-line:forin\r\n for (const resultId in this.executedResultIds) {\r\n for (const nonRelevantDataElement of this.simulatorState.nonRelevantDataElementIds) {\r\n if (nonRelevantDataElement === resultId) {\r\n isNonRelevant = true;\r\n break;\r\n } else {\r\n isNonRelevant = false;\r\n }\r\n }\r\n if (!isNonRelevant) {\r\n // tslint:disable-next-line:forin\r\n for (const label in this.executedResultIds[resultId]) {\r\n // tslint:disable-next-line: no-use-before-declare\r\n const executedResultHistory = new ExecutedResultHistory();\r\n\r\n executedResultHistory.resultCondition = label;\r\n executedResultHistory.resultValue = this.executedResultIds[resultId][label];\r\n\r\n this.executedResultHistories.push(executedResultHistory);\r\n }\r\n }\r\n }\r\n // tslint:disable-next-line: no-use-before-declare\r\n const finalExecution = new FinalExecutedHistory();\r\n if (this.executedResultHistories.length > 0) {\r\n finalExecution.executionHistories = this.executedResultHistories;\r\n finalExecution.resultText = this.mainReportTextObj;\r\n finalExecution.inputData = [];\r\n\r\n for (const de of this.dataElements) {\r\n if (de.isVisible && de.dataElementType !== 'ComputedDataElement' && de.dataElementType !== 'GlobalValue') {\r\n const inputData = new InputData();\r\n inputData.dataElementId = de.id;\r\n inputData.dataElementValue = de.currentValue;\r\n finalExecution.inputData.push(inputData);\r\n }\r\n }\r\n }\r\n\r\n this.returnExecutionHistory.emit(finalExecution);\r\n }\r\n\r\n private createTabularReport(): TabularReport {\r\n const dataElementTexts = this.simulatorEngineService.getAllDataElementTexts()[Symbol.iterator]();\r\n const template = this.simulatorEngineService.getTemplate();\r\n const tabularReport = new TabularReport();\r\n tabularReport.elements = new Array<TabularReportElements>();\r\n tabularReport.label = template.metadata.label;\r\n\r\n if (this.utilityService.isValidInstance(template.metadata.codableConcept) &&\r\n this.utilityService.isNotEmptyArray(template.metadata.codableConcept.coding)) {\r\n tabularReport.identifier = template.metadata.codableConcept.coding[0].code;\r\n }\r\n\r\n for (const value of dataElementTexts) {\r\n const hasValidValue = Array.isArray(value[1]) ?\r\n this.utilityService.isNotEmptyArray(value[1]) : this.utilityService.isNotEmptyString(value[1]);\r\n if (hasValidValue) {\r\n const dataElement = template.dataElements.find(x => x.id === value[0] &&\r\n x.dataElementType !== 'ComputedDataElement' && x.dataElementType !== 'GlobalValue');\r\n if (this.utilityService.isValidInstance(dataElement)) {\r\n let radElementId: string;\r\n if (this.utilityService.isValidInstance(dataElement.codableConcept) &&\r\n this.utilityService.isNotEmptyArray(dataElement.codableConcept.coding)) {\r\n radElementId = dataElement.codableConcept.coding[0].code;\r\n }\r\n\r\n const element = new TabularReportElements();\r\n element.dataElement = dataElement.label;\r\n element.radElement = radElementId;\r\n element.values = value[1];\r\n tabularReport.elements.push(element);\r\n }\r\n }\r\n }\r\n\r\n return tabularReport;\r\n }\r\n}\r\n\r\nexport class ChoiceElement {\r\n elementId: string;\r\n selectedValue: string;\r\n selectedText: string;\r\n}\r\n\r\nexport class NumericElement {\r\n elementId: string;\r\n selectedValue: number;\r\n}\r\n\r\nexport class DateTimeElement {\r\n elementId: string;\r\n selectedValue: string;\r\n}\r\n\r\nexport class MultiChoiceElement {\r\n elementId: string;\r\n selectedValues: string[];\r\n selectedTexts: string[];\r\n}\r\n\r\nexport class AllElements {\r\n elementId: string;\r\n selectedValues: any[];\r\n}\r\n\r\nexport class ExecutedResultHistory {\r\n resultCondition: string;\r\n resultValue: any;\r\n}\r\n\r\nexport class FinalExecutedHistory {\r\n executionHistories: ExecutedResultHistory[];\r\n resultText: MainReportText;\r\n inputData: InputData[];\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { BaseDataElement } from 'testruleengine/Library/Models/Class';\r\nimport { UtilityService } from '../../../core/services/utility.service';\r\n\r\n@Component({\r\n selector: 'acr-hint-diagram',\r\n templateUrl: './hint-diagram.component.html',\r\n styleUrls: ['./hint-diagram.component.css', '../../styles.css']\r\n})\r\nexport class HintDiagramComponent {\r\n\r\n activeSlideIndex = 0;\r\n\r\n @Input() dataElement: BaseDataElement;\r\n @Input() assetsBaseUrl: string;\r\n\r\n constructor(\r\n private utilityService: UtilityService\r\n ) {\r\n }\r\n\r\n resetCarouselIndex() {\r\n this.activeSlideIndex = 0;\r\n }\r\n\r\n getImageDataUrl(label: string): string {\r\n if (this.utilityService.isNotEmptyString(label)) {\r\n if (this.utilityService.isImageDataUrl(label)) {\r\n return label;\r\n } else if (this.utilityService.isValidInstance(this.assetsBaseUrl)) {\r\n return `${this.assetsBaseUrl}/${label}`;\r\n }\r\n }\r\n }\r\n}\r\n","export class SelectedCondition {\r\n selectedConditionId: string;\r\n selectedCondition: any;\r\n selectedValue: any;\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, AfterViewInit, OnDestroy } from '@angular/core';\r\nimport { SubscriptionLike as ISubscription } from 'rxjs';\r\nimport { NumericDataElement } from 'testruleengine/Library/Models/Class';\r\nimport { NumericElement } from '../assist-data-element.component';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { SelectedCondition } from '../../../core/models/executed-result.model';\r\nimport { SimulatorEngineService } from '../../../core/services/simulator-engine.service';\r\nimport { SimulatorCommunicationService } from '../../shared/services/simulator-communication.service';\r\nimport { ResetCommunicationService } from '../../shared/services/reset-communication.service';\r\nimport { UtilityService } from '../../../core/services/utility.service';\r\n\r\n@Component({\r\n selector: 'acr-assist-numeric-element',\r\n templateUrl: './assist-numeric-element.component.html',\r\n styleUrls: ['./assist-numeric-element.component.css', '../../styles.css']\r\n})\r\nexport class AssistNumericElementComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n numericElementForm: FormGroup;\r\n selectedCondition: SelectedCondition;\r\n simulatorStateSubscription: ISubscription;\r\n resetSubscription: ISubscription;\r\n\r\n @Input() alignLabelAndControlToTopAndBottom: boolean;\r\n @Input() assetsBaseUrl: string;\r\n @Input() numericDataElement: NumericDataElement;\r\n @Output() returnNumericElement = new EventEmitter();\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private simulatorEngineService: SimulatorEngineService,\r\n private utilityService: UtilityService,\r\n simulatorCommunicationService: SimulatorCommunicationService,\r\n resetCommunicationService: ResetCommunicationService) {\r\n this.simulatorStateSubscription = simulatorCommunicationService.simulatorSource$.subscribe(\r\n mission => {\r\n this.updateFormValidator();\r\n });\r\n\r\n this.resetSubscription = resetCommunicationService.resetSource$.subscribe(\r\n mission => { });\r\n }\r\n\r\n ngOnInit() {\r\n this.createNumericElementForm();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.numericDataElement.currentValue !== undefined && this.numericDataElement.currentValue !== 0) {\r\n this.simulatorEngineService.addOrUpdateDataElement(this.numericDataElement.id, this.numericDataElement.currentValue,\r\n this.numericDataElement.currentValue);\r\n this.numericElementForm.controls.numericElement.setValue(this.numericDataElement.currentValue);\r\n this.loadedNumericValue(this.numericDataElement.id, this.numericDataElement.currentValue, this.numericDataElement.label);\r\n } else {\r\n this.returnNumericElement.emit(undefined);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.utilityService.isValidInstance(this.simulatorStateSubscription)) {\r\n this.simulatorStateSubscription.unsubscribe();\r\n }\r\n if (this.utilityService.isValidInstance(this.resetSubscription)) {\r\n this.resetSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n loadedNumericValue(id, value, selectedCondition) {\r\n const choiceElement = new NumericElement();\r\n choiceElement.elementId = id;\r\n choiceElement.selectedValue = value;\r\n\r\n this.selectedCondition = new SelectedCondition();\r\n\r\n this.selectedCondition.selectedConditionId = id;\r\n this.selectedCondition.selectedCondition = selectedCondition;\r\n this.selectedCondition.selectedValue = value;\r\n this.returnNumericElement.emit({ receivedElement: choiceElement, selectedCondition: this.selectedCondition });\r\n }\r\n\r\n choiceSelected(element, selectedCondition) {\r\n const choiceElement = new NumericElement();\r\n choiceElement.elementId = element.id;\r\n choiceElement.selectedValue = element.value;\r\n\r\n this.selectedCondition = new SelectedCondition();\r\n\r\n this.selectedCondition.selectedConditionId = element.id;\r\n this.selectedCondition.selectedCondition = selectedCondition;\r\n this.selectedCondition.selectedValue = element.value;\r\n\r\n this.returnNumericElement.emit({ receivedElement: choiceElement, selectedCondition: this.selectedCondition });\r\n }\r\n\r\n _keyUp(event: any) {\r\n // const $this = this;\r\n // if ($this.numericDataElement.maximum != undefined && parseFloat(value) > $this.numericDataElement.maximum) {\r\n // event.preventDefault();\r\n // if (value.toString().substring(0, value.toString().length - 1) == '') {\r\n // $this.numberValue = undefined;\r\n // } else {\r\n // $this.numberValue = parseFloat(value.toString().substring(0, value.toString().length - 1));\r\n // }\r\n // }\r\n }\r\n\r\n _keyUpInteger(event: any) {\r\n // const $this = this;\r\n // if ($this.numericDataElement.maximum != undefined && parseInt(value) > $this.numericDataElement.maximum) {\r\n // event.preventDefault();\r\n // if (value.toString().substring(0, value.toString().length - 1) == '') {\r\n // $this.numberValue = undefined;\r\n // } else {\r\n // $this.numberValue = parseInt(value.toString().substring(0, value.toString().length - 1));\r\n // }\r\n // }\r\n }\r\n\r\n onlyIntegerKey(event) {\r\n return (event.charCode === 8 || event.charCode === 0) ? null : event.charCode >= 48 && event.charCode <= 57;\r\n }\r\n\r\n hasAIInputStyle() {\r\n if (this.utilityService.isNotEmptyArray(this.numericDataElement.sources)) {\r\n const elem = this.numericDataElement.sources.find(x => x.id === this.numericDataElement.id);\r\n if (this.utilityService.isValidInstance(elem)) {\r\n return elem.value === this.numericElementForm.controls.numericElement.value;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n isNumericElementRequired(): boolean {\r\n return this.numericElementForm.controls.numericElement.invalid &&\r\n this.numericElementForm.controls.numericElement.errors.required &&\r\n this.numericDataElement.isRequired;\r\n }\r\n\r\n isNumericElementMin(): boolean {\r\n return this.numericElementForm.controls.numericElement.invalid &&\r\n this.numericElementForm.controls.numericElement.errors.min;\r\n }\r\n\r\n isNumericElementMax(): boolean {\r\n return this.numericElementForm.controls.numericElement.invalid &&\r\n this.numericElementForm.controls.numericElement.errors.max;\r\n }\r\n\r\n updateFormValidator() {\r\n this.numericElementForm.controls.numericElement.setValidators([Validators.compose([Validators.required,\r\n Validators.min(+this.numericDataElement.minimum), Validators.max(+this.numericDataElement.maximum)])]);\r\n this.numericElementForm.controls.numericElement.updateValueAndValidity();\r\n }\r\n\r\n private createNumericElementForm() {\r\n this.numericElementForm = this.formBuilder.group({\r\n // tslint:disable-next-line:max-line-length\r\n numericElement: ['', Validators.compose([Validators.required, Validators.min(+this.numericDataElement.minimum), Validators.max(+this.numericDataElement.maximum)])],\r\n });\r\n }\r\n}\r\n","export enum ChoiceElementDisplayEnum {\r\n SelectBox,\r\n ListBox,\r\n RadioButton\r\n}","import { Component, OnInit, Input, EventEmitter, Output, AfterViewInit, ChangeDetectorRef, OnDestroy, HostListener } from '@angular/core';\r\nimport { ChoiceDataElement } from 'testruleengine/Library/Models/Class';\r\nimport { ChoiceElement } from '../assist-data-element.component';\r\nimport { SelectedCondition } from '../../../core/models/executed-result.model';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { RepeatedElementSections } from '../../../core/elements/models/RepeatedElementSections';\r\nimport { ChoiceElementDisplayEnum } from '../../../core/models/choice-element-display.enum';\r\nimport { UtilityService } from '../../../core/services/utility.service';\r\nimport { SimulatorCommunicationService } from '../../shared/services/simulator-communication.service';\r\nimport { SubscriptionLike as ISubscription } from 'rxjs';\r\n\r\nconst $ = require('jquery');\r\n\r\n@Component({\r\n selector: 'acr-assist-choice-element',\r\n templateUrl: './assist-choice-element.component.html',\r\n styleUrls: ['./assist-choice-element.component.css', '../../styles.css']\r\n})\r\nexport class AssistChoiceElementComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n isFreeText = false;\r\n freeTextValue: string;\r\n choiceElementForm: FormGroup;\r\n selectedCondition: SelectedCondition;\r\n selectedIndex: number;\r\n selectedChoiceReportText: string;\r\n selectedChoiceReportLabel: string;\r\n elementDisplay: ChoiceElementDisplayEnum;\r\n simulatorStateSubscription: ISubscription;\r\n\r\n @Input() choiceElementDisplay: ChoiceElementDisplayEnum;\r\n @Input() assetsBaseUrl: string;\r\n @Input() alignLabelAndControlToTopAndBottom: boolean;\r\n @Input() repeatedElementSections: RepeatedElementSections;\r\n @Input() choiceDataElement: ChoiceDataElement;\r\n @Input() disabled: boolean;\r\n\r\n @Output() returnChoiceElement = new EventEmitter();\r\n @Output() choiceChange = new EventEmitter();\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private cdr: ChangeDetectorRef,\r\n private utilityService: UtilityService,\r\n private simulatorCommunicationService: SimulatorCommunicationService) {\r\n // this.simulatorStateSubscription = simulatorCommunicationService.simulatorSource$.subscribe(\r\n // mission => {\r\n // // if ($('#' + this.choiceDataElement.id) !== undefined && $('#' + this.choiceDataElement.id) !== null) {\r\n // // this.dropdownChoiceSelected($('#' + this.choiceDataElement.id).get(0), this.choiceDataElement.label);\r\n // // }\r\n // });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.utilityService.isValidInstance(this.simulatorStateSubscription)) {\r\n this.simulatorStateSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.choiceDataElement.choiceInfo.diagrams !== undefined &&\r\n this.choiceDataElement.choiceInfo.diagrams !== null) {\r\n this.choiceDataElement.choiceInfo.choice.forEach(choice => {\r\n if (choice.diagrams.diagram !== undefined\r\n && choice.diagrams.diagram !== null && choice.diagrams.diagram.length > 0) {\r\n choice.diagrams.diagram.forEach(_diagram => {\r\n this.choiceDataElement.diagrams.push(_diagram);\r\n });\r\n }\r\n });\r\n }\r\n\r\n this.createChoiceElementForm();\r\n if (!this.utilityService.isValidInstance(this.choiceElementDisplay)) {\r\n if (this.choiceDataElement.choiceInfo.length <= 2) {\r\n this.elementDisplay = ChoiceElementDisplayEnum.RadioButton;\r\n } else if (this.choiceDataElement.choiceInfo.length > 2 && this.choiceDataElement.choiceInfo.length <= 5) {\r\n this.elementDisplay = ChoiceElementDisplayEnum.ListBox;\r\n } else if (this.choiceDataElement.choiceInfo.length > 2 && this.choiceDataElement.choiceInfo.length > 5) {\r\n this.elementDisplay = ChoiceElementDisplayEnum.SelectBox;\r\n }\r\n } else {\r\n this.elementDisplay = JSON.parse(JSON.stringify(this.choiceElementDisplay));\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.showOrHideFreeText(this.choiceDataElement.id, '');\r\n if (this.choiceDataElement.currentValue !== undefined) {\r\n $('#' + this.choiceDataElement.currentValue + '_' + this.choiceDataElement.id).prop('checked', true);\r\n this.choiceElementForm.controls.checkBox.setValue(this.choiceDataElement.currentValue);\r\n for (const choice in this.choiceDataElement.choiceInfo) {\r\n if (this.choiceDataElement.choiceInfo[choice].value === this.choiceDataElement.currentValue) {\r\n if (this.choiceDataElement.choiceInfo[choice].reportText !== undefined) {\r\n this.selectedChoiceReportText = this.choiceDataElement.choiceInfo[choice].reportText;\r\n } else {\r\n this.selectedChoiceReportLabel = this.choiceDataElement.choiceInfo[choice].label;\r\n }\r\n }\r\n }\r\n\r\n // tslint:disable-next-line:max-line-length\r\n if (this.choiceDataElement.allowFreetext && this.selectedChoiceReportText === undefined && this.selectedChoiceReportLabel === undefined) {\r\n this.isFreeText = true;\r\n this.freeTextValue = this.choiceDataElement.currentValue;\r\n this.showOrHideFreeText(this.choiceDataElement.id, 'freetext');\r\n }\r\n\r\n let currentLabel = this.selectedChoiceReportText !== undefined ? this.selectedChoiceReportText : this.selectedChoiceReportLabel;\r\n if (currentLabel === undefined && this.isFreeText) {\r\n currentLabel = this.choiceDataElement.currentValue;\r\n }\r\n this.setChoiceValue(this.choiceDataElement.id, this.choiceDataElement.label, currentLabel, this.choiceDataElement.currentValue);\r\n } else {\r\n this.returnChoiceElement.emit(undefined);\r\n }\r\n\r\n this.cdr.detectChanges();\r\n if (this.choiceDataElement.choiceInfo.length > 2 && this.choiceDataElement.choiceInfo.length <= 5) {\r\n $('#' + this.choiceDataElement.id).attr('size', this.choiceDataElement.choiceInfo.length + 1);\r\n }\r\n\r\n // tslint:disable-next-line:max-line-length\r\n if (this.choiceDataElement.choiceInfo.length > 2 && this.choiceDataElement.choiceInfo.length <= 5 && this.choiceDataElement.allowFreetext) {\r\n $('#' + this.choiceDataElement.id).attr('size', this.choiceDataElement.choiceInfo.length + 2);\r\n }\r\n }\r\n\r\n isRadioButton(): boolean {\r\n return this.elementDisplay === ChoiceElementDisplayEnum.RadioButton;\r\n }\r\n\r\n isListBox(): boolean {\r\n\r\n return this.elementDisplay === ChoiceElementDisplayEnum.ListBox;\r\n }\r\n\r\n isSelectBox(): boolean {\r\n return this.elementDisplay === ChoiceElementDisplayEnum.SelectBox;\r\n }\r\n\r\n setChoiceValue(elementId: string, selectedElement: string, selectedText: string, selectedValue: string) {\r\n if (selectedValue !== undefined) {\r\n this.emitChoiceElementData(elementId, selectedElement, selectedText, selectedValue);\r\n }\r\n }\r\n\r\n hasAIInputStyle() {\r\n if (this.utilityService.isNotEmptyArray(this.choiceDataElement.sources)) {\r\n const elem = this.choiceDataElement.sources.find(x => x.id === this.choiceDataElement.id);\r\n if (this.utilityService.isValidInstance(elem)) {\r\n return elem.value === this.choiceElementForm.controls.checkBox.value;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n choiceSelected(elementId: string, selectedElement: string, selectedText: string, selectedValue: string) {\r\n this.showOrHideFreeText(elementId, selectedValue);\r\n if (selectedText !== 'Other, please specify…' && selectedValue !== 'freetext') {\r\n this.emitChoiceElementData(elementId, selectedElement, selectedText, selectedValue);\r\n } else {\r\n this.emitChoiceElementData(elementId, selectedElement, '', '');\r\n }\r\n }\r\n\r\n dropdownChoiceSelected(element, selectedCondition) {\r\n const elementId = element.id;\r\n const selectedElement = selectedCondition;\r\n let selectedText = element.options[element.selectedIndex].text;\r\n let selectedValue = element.value;\r\n\r\n this.showOrHideFreeText(element.id, selectedValue);\r\n const choiceValue = this.choiceElementForm.controls.checkBox.value;\r\n\r\n if (choiceValue === 'Select one' || choiceValue === undefined || choiceValue === '') {\r\n selectedText = '';\r\n selectedValue = '';\r\n }\r\n\r\n if (selectedText !== 'Other, please specify…' && selectedValue !== 'freetext') {\r\n this.emitChoiceElementData(elementId, selectedElement, selectedText, selectedValue);\r\n } else {\r\n this.emitChoiceElementData(elementId, selectedElement, '', '');\r\n }\r\n }\r\n\r\n updateFreeText(element, elementId, selectedCondition) {\r\n const selectedValue = (element.value === 'Other') ? 'freetext' : element.value;\r\n const selectedText = element.value;\r\n\r\n this.emitChoiceElementData(elementId, selectedCondition, selectedText, selectedValue);\r\n }\r\n\r\n showOrHideFreeText(elementId: string, selectedValue: string) {\r\n if (selectedValue === 'freetext') {\r\n $('#div_' + elementId + '_other').show();\r\n } else {\r\n $('#div_' + elementId + '_other').hide();\r\n this.freeTextValue = '';\r\n this.isFreeText = false;\r\n }\r\n }\r\n\r\n isChoiceElementRequired(): boolean {\r\n return this.choiceElementForm.controls.checkBox.invalid && this.choiceDataElement.isRequired;\r\n }\r\n\r\n emitChoiceElementData(elementId: string, selectedElement: string, selectedText: string, selectedValue: string) {\r\n const choiceElement = new ChoiceElement();\r\n choiceElement.elementId = elementId;\r\n choiceElement.selectedValue = selectedValue;\r\n choiceElement.selectedText = selectedText;\r\n\r\n this.selectedCondition = new SelectedCondition();\r\n this.selectedCondition.selectedConditionId = elementId;\r\n this.selectedCondition.selectedCondition = selectedElement;\r\n this.selectedCondition.selectedValue = selectedText;\r\n\r\n this.returnChoiceElement.emit({ receivedElement: choiceElement, selectedCondition: this.selectedCondition });\r\n }\r\n\r\n private createChoiceElementForm() {\r\n this.choiceElementForm = this.formBuilder.group({\r\n checkBox: ['', Validators.required],\r\n }, {\r\n validator: this.specificValueInsideRange('checkBox')\r\n });\r\n }\r\n\r\n private specificValueInsideRange(checkBox: string) {\r\n return (group: FormGroup) => {\r\n const choiceControl = group.controls.checkBox;\r\n if ((choiceControl.value === undefined || choiceControl.value === '' || choiceControl.value === 'Select one')) {\r\n return choiceControl.setErrors({ notEquivalent: true });\r\n } else {\r\n return choiceControl.setErrors(null);\r\n }\r\n };\r\n }\r\n\r\n onImgModelClick(event) {\r\n console.log(event);\r\n debugger;\r\n if (event.target.tagName !== 'IMG') {\r\n this.onImgPopupClose();\r\n }\r\n }\r\n\r\n onChoiceDiagramClick(choice, event) {\r\n // console.log(event);\r\n var modal = document.getElementById(\"immgModal\");\r\n var modalImg = document.getElementById(\"img01\") as any;\r\n const img_src = event.target.src;\r\n modal.style.display = \"block\";\r\n modalImg.src = img_src;\r\n // captionText.innerHTML = this.alt;\r\n }\r\n\r\n isChoiceHasDiagrams(choiceDataElement: ChoiceDataElement) {\r\n const choiceDataElementWithDigrams = this.choiceDataElement.choiceInfo.filter(x => this.utilityService.isNotEmptyArray(x.diagrams));\r\n return this.utilityService.isNotEmptyArray(choiceDataElementWithDigrams) ? true : false;\r\n }\r\n\r\n getImageDataUrl(label: string): string {\r\n if (this.utilityService.isNotEmptyString(label)) {\r\n if (this.utilityService.isImageDataUrl(label)) {\r\n return label;\r\n } else if (this.utilityService.isValidInstance(this.assetsBaseUrl)) {\r\n return `${this.assetsBaseUrl}/${label}`;\r\n }\r\n }\r\n }\r\n\r\n onImgPopupClose() {\r\n var modal = document.getElementById(\"immgModal\");\r\n modal.style.display = \"none\";\r\n }\r\n\r\n @HostListener('window:keyup.esc') onKeyUp() {\r\n this.onImgPopupClose();\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, AfterViewInit, OnDestroy, HostListener } from '@angular/core';\r\nimport { MultiChoiceDataElement } from 'testruleengine/Library/Models/Class';\r\nimport { MultiChoiceElement } from '../assist-data-element.component';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { SelectedCondition } from '../../../core/models/executed-result.model';\r\nimport { UtilityService } from '../../../core/services/utility.service';\r\nimport { SubscriptionLike as ISubscription } from 'rxjs';\r\n\r\nconst $ = require('jquery');\r\nimport * as _ from 'lodash';\r\nimport { SimulatorCommunicationService } from '../../shared/services/simulator-communication.service';\r\n\r\n@Component({\r\n selector: 'acr-assist-multi-choice-element',\r\n templateUrl: './assist-multi-choice-element.component.html',\r\n styleUrls: ['./assist-multi-choice-element.component.css', '../../styles.css']\r\n})\r\nexport class AssistMultiChoiceElementComponent implements OnInit, AfterViewInit, OnDestroy {\r\n\r\n multiElements: MultiChoiceElement[] = [];\r\n multiChoiceValues: string[] = [];\r\n multiChoiceComaprisonValues: string[] = [];\r\n multiChoiceElementForm: FormGroup;\r\n selectedCondition: SelectedCondition;\r\n isFreeText = false;\r\n freeTextValue: string;\r\n simulatorStateSubscription: ISubscription;\r\n\r\n @Input() alignLabelAndControlToTopAndBottom: boolean;\r\n @Input() assetsBaseUrl: string;\r\n @Input() multiChoiceElement: MultiChoiceDataElement;\r\n @Output() returnMultiChoice = new EventEmitter();\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private utilityService: UtilityService, simulatorCommunicationService: SimulatorCommunicationService) {\r\n // this.simulatorStateSubscription = simulatorCommunicationService.simulatorSource$.subscribe(\r\n // mission => {\r\n // this.ngAfterViewInit();\r\n // });\r\n }\r\n\r\n ngOnInit() {\r\n this.createMultiChoiceElementForm();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.utilityService.isValidInstance(this.simulatorStateSubscription)) {\r\n this.simulatorStateSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.showOrHideFreeText(this.multiChoiceElement.id, '', false);\r\n if (this.multiChoiceElement.currentValue !== undefined) {\r\n // debugger;\r\n const values: any = [];\r\n const labels: any = [];\r\n for (const choice in this.multiChoiceElement.choiceInfo) {\r\n if (Array.isArray(this.multiChoiceElement.currentValue)) {\r\n for (const currValue of this.multiChoiceElement.currentValue) {\r\n // tslint:disable-next-line:max-line-length\r\n if (currValue === this.multiChoiceElement.choiceInfo[choice].value && this.multiChoiceElement.choiceInfo[choice].value !== undefined) {\r\n $('#' + this.multiChoiceElement.id + '_' + this.multiChoiceElement.choiceInfo[choice].value).prop('checked', true);\r\n values.push(currValue);\r\n labels.push(this.multiChoiceElement.choiceInfo[choice].label);\r\n break;\r\n }\r\n }\r\n } else {\r\n // tslint:disable-next-line:max-line-length\r\n if (this.multiChoiceElement.currentValue === this.multiChoiceElement.choiceInfo[choice].value && this.multiChoiceElement.choiceInfo[choice].value !== undefined) {\r\n $('#' + this.multiChoiceElement.id + '_' + this.multiChoiceElement.currentValue).prop('checked', true);\r\n values.push(this.multiChoiceElement.currentValue);\r\n labels.push(this.multiChoiceElement.choiceInfo[choice].label);\r\n }\r\n }\r\n }\r\n this.selectedMultiChoice(this.multiChoiceElement.id, this.multiChoiceElement.label, values, labels);\r\n } else {\r\n this.returnMultiChoice.emit(undefined);\r\n }\r\n }\r\n\r\n selectedMultiChoice(elementId: string, selectedCondition: string, choiceValue: any, choiceLabel: any) {\r\n const multiElement = new MultiChoiceElement();\r\n if ($('#' + elementId + '_' + choiceValue).is(':checked')) {\r\n this.multiChoiceComaprisonValues = choiceValue;\r\n } else {\r\n const index = this.multiChoiceValues.indexOf(choiceLabel);\r\n const comparisonIndex = this.multiChoiceComaprisonValues.indexOf(choiceValue);\r\n if (index > -1) {\r\n this.multiChoiceValues.splice(index, 1);\r\n }\r\n if (comparisonIndex > -1) {\r\n this.multiChoiceComaprisonValues.splice(comparisonIndex, 1);\r\n }\r\n }\r\n\r\n setTimeout(() => {\r\n const selectedValues = this.getSelectedItems();\r\n const selectedTexts = this.getSelectedItemTexts(selectedValues);\r\n\r\n multiElement.elementId = elementId;\r\n multiElement.selectedValues = selectedValues;\r\n multiElement.selectedTexts = selectedTexts;\r\n\r\n this.selectedCondition = new SelectedCondition();\r\n this.selectedCondition.selectedConditionId = elementId;\r\n this.selectedCondition.selectedCondition = selectedCondition;\r\n this.selectedCondition.selectedValue = selectedValues;\r\n this.returnMultiChoice.emit({ receivedElement: multiElement, selectedCondition: this.selectedCondition });\r\n });\r\n }\r\n\r\n choiceSelected(elementId: string, selectedElement: string, selectedText: string, selectedValue: string, event) {\r\n if (event.target.checked) {\r\n this.showOrHideFreeText(elementId, selectedValue, true);\r\n } else {\r\n $('#txt_other_' + this.multiChoiceElement.id).val('');\r\n this.freeTextValue = '';\r\n this.showOrHideFreeText(elementId, selectedValue, false);\r\n }\r\n\r\n this.updateMultiChoice(elementId, selectedElement, this.freeTextValue, event);\r\n }\r\n\r\n updateFreeText(element, elementId, selectedCondition) {\r\n const selectedValues = this.getSelectedItems();\r\n const selectedTexts = this.getSelectedItemTexts(selectedValues);\r\n\r\n const multiElement = new MultiChoiceElement();\r\n multiElement.elementId = elementId;\r\n multiElement.selectedValues = selectedValues;\r\n multiElement.selectedTexts = selectedTexts;\r\n\r\n this.selectedCondition = new SelectedCondition();\r\n this.selectedCondition.selectedConditionId = elementId;\r\n this.selectedCondition.selectedCondition = selectedCondition;\r\n this.selectedCondition.selectedValue = selectedValues;\r\n this.returnMultiChoice.emit({ receivedElement: multiElement, selectedCondition: this.selectedCondition });\r\n }\r\n\r\n updateMultiChoice(elementId: string, selectedCondition: string, value: string, event) {\r\n const multiElement = new MultiChoiceElement();\r\n if (event.currentTarget !== undefined && event.currentTarget.checked) {\r\n if (value !== '') {\r\n if (this.multiChoiceValues.indexOf(value) === -1) {\r\n this.multiChoiceValues.push(value);\r\n }\r\n if (this.multiChoiceComaprisonValues.indexOf(value) === -1) {\r\n this.multiChoiceComaprisonValues.push(event.currentTarget.value);\r\n }\r\n }\r\n } else {\r\n const index = this.multiChoiceValues.indexOf(value);\r\n const comparisonIndex = this.multiChoiceComaprisonValues.indexOf(event.currentTarget.value);\r\n if (index > -1) {\r\n this.multiChoiceValues.splice(index, 1);\r\n }\r\n if (comparisonIndex > -1) {\r\n this.multiChoiceComaprisonValues.splice(comparisonIndex, 1);\r\n }\r\n }\r\n\r\n const selectedValues = this.getSelectedItems();\r\n const selectedTexts = this.getSelectedItemTexts(selectedValues);\r\n\r\n multiElement.elementId = elementId;\r\n multiElement.selectedValues = selectedValues;\r\n multiElement.selectedTexts = selectedTexts;\r\n\r\n this.selectedCondition = new SelectedCondition();\r\n this.selectedCondition.selectedConditionId = elementId;\r\n this.selectedCondition.selectedCondition = selectedCondition;\r\n this.selectedCondition.selectedValue = selectedValues;\r\n this.returnMultiChoice.emit({ receivedElement: multiElement, selectedCondition: this.selectedCondition });\r\n }\r\n\r\n private getSelectedItems() {\r\n const items = document.getElementsByClassName('multiselectItems_' + this.multiChoiceElement.id) as any;\r\n let selectedItems = [];\r\n // tslint:disable-next-line:prefer-for-of\r\n for (let i = 0; i < items.length; i++) {\r\n if (items[i].checked === true) {\r\n selectedItems.push(items[i].value);\r\n }\r\n }\r\n\r\n let selectedValues = selectedItems;\r\n if ($('#txt_other_' + this.multiChoiceElement.id).val() !== '') {\r\n selectedValues.push($('#txt_other_' + this.multiChoiceElement.id).val());\r\n }\r\n\r\n if (selectedValues !== undefined && this.multiChoiceElement.ChoiceNotRelevant !== undefined) {\r\n const filteredItems = selectedValues.filter((item: any) => !this.multiChoiceElement.ChoiceNotRelevant.includes(item));\r\n selectedValues = filteredItems;\r\n }\r\n\r\n return selectedValues;\r\n }\r\n\r\n private getSelectedItemTexts(selectedValues: any) {\r\n const selectedItems = [];\r\n for (const value of selectedValues) {\r\n const choice = this.multiChoiceElement.choiceInfo.find(x => x.value === value);\r\n if (this.utilityService.isValidInstance(choice)) {\r\n selectedItems.push(choice.label);\r\n } else {\r\n selectedItems.push(value);\r\n }\r\n }\r\n\r\n return selectedItems;\r\n }\r\n\r\n isMultiChoiceElementRequired(): boolean {\r\n return this.multiChoiceElementForm.controls.multiCheckBox.invalid &&\r\n this.multiChoiceElement.isRequired && !this.multiChoiceValues.length;\r\n }\r\n\r\n isMultiChoiceLabelHidden(value: string): boolean {\r\n if (this.multiChoiceElement.currentValue !== undefined && this.multiChoiceElement.ChoiceNotRelevant !== undefined &&\r\n Array.isArray(this.multiChoiceElement.currentValue)) {\r\n const filteredItems = this.multiChoiceElement.currentValue.filter((item: any) => !this.multiChoiceElement.ChoiceNotRelevant.includes(item));\r\n this.multiChoiceElement.currentValue = filteredItems;\r\n }\r\n\r\n // #region uncomment\r\n if (this.utilityService.isNotEmptyArray(this.multiChoiceElement.ChoiceNotRelevant) && this.multiChoiceElement.ChoiceNotRelevant.indexOf(value) > -1) {\r\n $('#' + this.multiChoiceElement.id + '_' + value).prop('checked', false);\r\n }\r\n // #endregion\r\n\r\n return this.multiChoiceElement.ChoiceNotRelevant !== undefined ?\r\n this.multiChoiceElement.ChoiceNotRelevant.indexOf(value) > -1 ? true : null\r\n : null;\r\n }\r\n\r\n showOrHideFreeText(elementId: string, selectedValue: string, isChecked) {\r\n if (selectedValue === 'freetext' && isChecked) {\r\n $('#div_' + elementId + '_other').show();\r\n if (selectedValue === 'freetext') {\r\n this.freeTextValue = $('#txt_other_' + this.multiChoiceElement.id).val();\r\n }\r\n } else if (!isChecked) {\r\n $('#div_' + elementId + '_other').hide();\r\n this.freeTextValue = '';\r\n this.isFreeText = false;\r\n }\r\n }\r\n\r\n private createMultiChoiceElementForm() {\r\n this.multiChoiceElementForm = this.formBuilder.group({\r\n multiCheckBox: ['', Validators.required],\r\n }, {\r\n validator: this.specificValueInsideRange('multiCheckBox')\r\n });\r\n }\r\n\r\n private specificValueInsideRange(multiCheckBox: string) {\r\n return (group: FormGroup) => {\r\n const choiceControl = group.controls.multiCheckBox;\r\n if (this.multiChoiceElement.isRequired) {\r\n return choiceControl.setErrors({ notEquivalent: true });\r\n } else {\r\n return choiceControl.setErrors(null);\r\n }\r\n };\r\n }\r\n\r\n\r\n onImgModelClick(event) {\r\n console.log(event);\r\n debugger;\r\n if (event.target.tagName !== 'IMG') {\r\n this.onImgPopupClose();\r\n }\r\n }\r\n\r\n onChoiceDiagramClick(choice, event) {\r\n debugger;\r\n // console.log(event);\r\n var modal = document.getElementById(\"immgModalmulti\");\r\n var modalImg = document.getElementById(\"img01multi\") as any;\r\n const img_src = event.target.src;\r\n modal.style.display = \"block\";\r\n modalImg.src = img_src;\r\n // captionText.innerHTML = this.alt;\r\n }\r\n\r\n isChoiceHasDiagrams(multiChoiceElement: MultiChoiceElement) {\r\n const multiChoiceElementWithDigrams = this.multiChoiceElement.choiceInfo.filter(x => this.utilityService.isNotEmptyArray(x.diagrams));\r\n return this.utilityService.isNotEmptyArray(multiChoiceElementWithDigrams) ? true : false;\r\n }\r\n\r\n getImageDataUrl(label: string): string {\r\n if (this.utilityService.isNotEmptyString(label)) {\r\n if (this.utilityService.isImageDataUrl(label)) {\r\n return label;\r\n } else if (this.utilityService.isValidInstance(this.assetsBaseUrl)) {\r\n return `${this.assetsBaseUrl}/${label}`;\r\n }\r\n }\r\n }\r\n\r\n onImgPopupClose() {\r\n var modal = document.getElementById(\"immgModalmulti\");\r\n modal.style.display = \"none\";\r\n }\r\n\r\n @HostListener('window:keyup.esc') onKeyUp() {\r\n this.onImgPopupClose();\r\n }\r\n}\r\n","import { Component, OnInit, Input, ViewChild, ViewChildren, QueryList, ElementRef } from '@angular/core';\r\nimport { UtilityService } from '../../../core/services/utility.service';\r\nimport { SimulatorEngineService } from '../../../core/services/simulator-engine.service';\r\nimport { ChoiceDataElement, MultiChoiceDataElement } from 'testruleengine/Library/Models/Class';\r\n\r\nconst $ = require('jquery');\r\n\r\n@Component({\r\n selector: 'acr-image-map',\r\n templateUrl: './image-map.component.html',\r\n styleUrls: ['./image-map.component.css']\r\n})\r\nexport class ImageMapComponent implements OnInit {\r\n\r\n selectionValue = '';\r\n map_selector_class = 'cursor-pointer map-selector';\r\n formValues: object = {};\r\n isOverlayLoading = false;\r\n selectedValues = [];\r\n hoverDefaultColour = 'rgba(56, 59, 60, 0.5)';\r\n filledDefaultColour = 'rgba(40, 179, 109, 0.52)';\r\n borderDefaultColour = 'rgba(0, 0, 0, 1)';\r\n\r\n @Input() dataElement: ChoiceDataElement | MultiChoiceDataElement;\r\n @Input() assetsBaseUrl: string;\r\n @ViewChildren('imageMapAreas') imageMapAreas: QueryList<ElementRef>;\r\n @ViewChildren('canvases') canvases: QueryList<ElementRef<HTMLCanvasElement>>;\r\n\r\n constructor(\r\n private simulatorEngineService: SimulatorEngineService,\r\n private utilityService: UtilityService\r\n ) {\r\n }\r\n\r\n ngOnInit() {\r\n this.selectedValues = [];\r\n this.dataElement.imageMap.location = '../../../../../assets/XMLFIles/hello_assist/COVID19.jpg';\r\n }\r\n\r\n initializeSelectedOverlayData() {\r\n const values = this.simulatorEngineService.getAllDataElementValues().get(this.dataElement.id);\r\n if (Array.isArray(values) && this.utilityService.isNotEmptyArray(values)) {\r\n this.selectedValues = values;\r\n }\r\n this.isOverlayLoading = true;\r\n setTimeout(() => {\r\n let filledColor;\r\n let outlineColor;\r\n\r\n for (let index = 0; index < this.dataElement.imageMap.map.areas.length; index++) {\r\n if (this.utilityService.isValidInstance(this.imageMapAreas)) {\r\n let hasValueSelected = false;\r\n if (this.utilityService.isNotEmptyArray(values)) {\r\n if (Array.isArray(values)) {\r\n hasValueSelected = values.indexOf(this.dataElement.imageMap.map.areas[index].choiceValue) >= 0;\r\n } else {\r\n hasValueSelected = values === this.dataElement.imageMap.map.areas[index].choiceValue;\r\n }\r\n }\r\n const currentArea = this.imageMapAreas.toArray()[index];\r\n const coords = currentArea.nativeElement.attributes.coords.value.split(',');\r\n const shape = currentArea.nativeElement.attributes.shape.value;\r\n const canvas = this.canvases.toArray()[index];\r\n const elementDrawStyle = this.dataElement.imageMap.drawStyle;\r\n\r\n if (this.utilityService.isValidInstance(currentArea.nativeElement.attributes.selectedFill) &&\r\n this.utilityService.isNotEmptyString(currentArea.nativeElement.attributes.selectedFill.value)) {\r\n filledColor = currentArea.nativeElement.attributes.selectedFill.value;\r\n } else if (this.utilityService.isValidInstance(elementDrawStyle) &&\r\n this.utilityService.isNotEmptyString(elementDrawStyle.selectedFill)) {\r\n filledColor = elementDrawStyle.selectedFill;\r\n } else {\r\n filledColor = this.filledDefaultColour;\r\n }\r\n\r\n if (this.utilityService.isValidInstance(currentArea.nativeElement.attributes.outline) &&\r\n this.utilityService.isNotEmptyString(currentArea.nativeElement.attributes.outline.value)) {\r\n outlineColor = currentArea.nativeElement.attributes.outline.value;\r\n } else if (this.utilityService.isValidInstance(elementDrawStyle) &&\r\n this.utilityService.isNotEmptyString(elementDrawStyle.outline)) {\r\n outlineColor = elementDrawStyle.outline;\r\n } else {\r\n outlineColor = this.borderDefaultColour;\r\n }\r\n\r\n if (this.utilityService.isValidInstance(canvas)) {\r\n if (canvas.nativeElement.className.includes('hover') || canvas.nativeElement.className.includes('selected')) {\r\n canvas.nativeElement.style.position = '';\r\n canvas.nativeElement.style.display = 'none';\r\n canvas.nativeElement.className = this.map_selector_class;\r\n }\r\n if (hasValueSelected) {\r\n canvas.nativeElement.style.position = 'absolute';\r\n canvas.nativeElement.style.display = 'block';\r\n\r\n this.drawStyleBasedOnShape(canvas, filledColor, outlineColor, shape, coords);\r\n canvas.nativeElement.className = this.map_selector_class + ' selected';\r\n }\r\n }\r\n }\r\n }\r\n this.isOverlayLoading = false;\r\n }, 1000);\r\n }\r\n\r\n setSelectedValue(index) {\r\n if (this.utilityService.isValidInstance(this.imageMapAreas)) {\r\n const currentArea = this.imageMapAreas.toArray()[index];\r\n if (this.utilityService.isValidInstance(currentArea)) {\r\n if (this.utilityService.isNotEmptyString(currentArea.nativeElement.attributes.choice.value)) {\r\n this.setOverLaysforImageMap(index, currentArea);\r\n this.setSelectedValues(currentArea.nativeElement.attributes.choice.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n getSelectedValue() {\r\n if (this.utilityService.isNotEmptyArray(this.selectedValues)) {\r\n return 'Selected Values : ' + this.selectedValues.join(' | ');\r\n } else {\r\n return 'Image Map Diagram';\r\n }\r\n }\r\n\r\n getImageDataUrl(label: string): string {\r\n if (this.utilityService.isNotEmptyString(label)) {\r\n if (this.utilityService.isImageDataUrl(label)) {\r\n return label;\r\n } else if (this.utilityService.isValidInstance(this.assetsBaseUrl)) {\r\n return `${this.assetsBaseUrl}/${label}`;\r\n }\r\n }\r\n\r\n // return 'assets/images/COVID19.jpg';\r\n }\r\n\r\n addRemoveHoverClass(index, isAdd) {\r\n let hoverColor;\r\n let filledColor;\r\n let outlineColor;\r\n\r\n if (this.utilityService.isValidInstance(this.imageMapAreas)) {\r\n const currentArea = this.imageMapAreas.toArray()[index];\r\n if (this.utilityService.isValidInstance(currentArea)) {\r\n const coords = currentArea.nativeElement.attributes.coords.value.split(',');\r\n const shape = currentArea.nativeElement.attributes.shape.value;\r\n const canvas = this.canvases.toArray()[index];\r\n const elementDrawStyle = this.dataElement.imageMap.drawStyle;\r\n\r\n if (this.utilityService.isValidInstance(currentArea.nativeElement.attributes.hoverFill) &&\r\n this.utilityService.isNotEmptyString(currentArea.nativeElement.attributes.hoverFill.value)) {\r\n hoverColor = currentArea.nativeElement.attributes.hoverFill.value;\r\n } else if (this.utilityService.isValidInstance(elementDrawStyle) &&\r\n this.utilityService.isNotEmptyString(elementDrawStyle.hoverFill)) {\r\n hoverColor = elementDrawStyle.hoverFill;\r\n } else {\r\n hoverColor = this.hoverDefaultColour;\r\n }\r\n\r\n if (this.utilityService.isValidInstance(currentArea.nativeElement.attributes.selectedFill) &&\r\n this.utilityService.isNotEmptyString(currentArea.nativeElement.attributes.selectedFill.value)) {\r\n filledColor = currentArea.nativeElement.attributes.selectedFill.value;\r\n } else if (this.utilityService.isValidInstance(elementDrawStyle) &&\r\n this.utilityService.isNotEmptyString(elementDrawStyle.selectedFill)) {\r\n filledColor = elementDrawStyle.selectedFill;\r\n } else {\r\n filledColor = this.filledDefaultColour;\r\n }\r\n\r\n if (hoverColor === filledColor) {\r\n hoverColor = this.hoverDefaultColour;\r\n }\r\n\r\n if (this.utilityService.isValidInstance(currentArea.nativeElement.attributes.outline) &&\r\n this.utilityService.isNotEmptyString(currentArea.nativeElement.attributes.outline.value)) {\r\n outlineColor = currentArea.nativeElement.attributes.outline.value;\r\n } else if (this.utilityService.isValidInstance(elementDrawStyle) &&\r\n this.utilityService.isNotEmptyString(elementDrawStyle.outline)) {\r\n outlineColor = elementDrawStyle.outline;\r\n } else {\r\n outlineColor = this.borderDefaultColour;\r\n }\r\n\r\n if (this.utilityService.isValidInstance(canvas)) {\r\n if (isAdd) {\r\n if (!canvas.nativeElement.className.includes('hover') && !canvas.nativeElement.className.includes('selected')) {\r\n canvas.nativeElement.style.position = 'absolute';\r\n canvas.nativeElement.style.display = 'block';\r\n canvas.nativeElement.className += ' hover';\r\n this.drawStyleBasedOnShape(canvas, hoverColor, outlineColor, shape, coords);\r\n }\r\n } else {\r\n if (!canvas.nativeElement.className.includes('selected')) {\r\n canvas.nativeElement.style.position = '';\r\n canvas.nativeElement.style.display = 'none';\r\n }\r\n canvas.nativeElement.className = canvas.nativeElement.className.replace('hover', '').trim();\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private setSelectedValues(selectedValue: string) {\r\n const choice = this.dataElement.choiceInfo.find(x => x.value.toLowerCase() === selectedValue.toLowerCase());\r\n if (this.utilityService.isValidInstance(choice)) {\r\n const customEvent = document.createEvent('Event');\r\n customEvent.initEvent('change', true, true);\r\n\r\n if (this.dataElement.dataElementType === 'MultiChoiceDataElement') {\r\n const values = this.simulatorEngineService.getAllDataElementValues().get(this.dataElement.id);\r\n let checked = true;\r\n if (this.utilityService.isNotEmptyArray(values) && values.indexOf(selectedValue) >= 0) {\r\n checked = false;\r\n }\r\n checked ? this.selectedValues.push(choice.value) : this.selectedValues.splice(this.selectedValues.indexOf(choice.value));\r\n $('#' + this.dataElement.id + '_' + choice.value).prop('checked', checked);\r\n $('#' + this.dataElement.id + '_' + choice.value)[0].dispatchEvent(customEvent);\r\n\r\n } else if (choice.value === selectedValue) {\r\n if (!this.isChoiceHasDiagrams(this.dataElement)) {\r\n if (this.dataElement.choiceInfo.length <= 2 && this.dataElement.choiceInfo.length > 0) {\r\n $('#' + choice.value + '_' + this.dataElement.id).prop('checked', true);\r\n $('#' + choice.value + '_' + this.dataElement.id)[0].dispatchEvent(customEvent);\r\n } else {\r\n $('#' + this.dataElement.id).val(choice.value);\r\n $('#' + this.dataElement.id)[0].dispatchEvent(customEvent);\r\n }\r\n } else {\r\n $('#' + choice.value + '_' + this.dataElement.id).prop('checked', true);\r\n $('#' + choice.value + '_' + this.dataElement.id)[0].dispatchEvent(customEvent);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private isChoiceHasDiagrams(dataElement: any) {\r\n if (this.utilityService.isValidInstance(this.dataElement.choiceInfo)) {\r\n const choiceDataElementWithDigrams = this.dataElement.choiceInfo.filter(x => this.utilityService.isNotEmptyArray(x.diagrams));\r\n return this.utilityService.isNotEmptyArray(choiceDataElementWithDigrams) ? true : false;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private setOverLaysforImageMap(index: number, currentArea: ElementRef) {\r\n let filledColor;\r\n let outlineColor;\r\n\r\n const coords = currentArea.nativeElement.attributes.coords.value.split(',');\r\n const shape = currentArea.nativeElement.attributes.shape.value;\r\n const canvas = this.canvases.toArray()[index];\r\n const elementDrawStyle = this.dataElement.imageMap.drawStyle;\r\n\r\n if (this.utilityService.isValidInstance(currentArea.nativeElement.attributes.selectedFill) &&\r\n this.utilityService.isNotEmptyString(currentArea.nativeElement.attributes.selectedFill.value)) {\r\n filledColor = currentArea.nativeElement.attributes.selectedFill.value;\r\n } else if (this.utilityService.isValidInstance(elementDrawStyle) &&\r\n this.utilityService.isNotEmptyString(elementDrawStyle.selectedFill)) {\r\n filledColor = elementDrawStyle.selectedFill;\r\n } else {\r\n filledColor = this.filledDefaultColour;\r\n }\r\n\r\n if (this.utilityService.isValidInstance(currentArea.nativeElement.attributes.outline) &&\r\n this.utilityService.isNotEmptyString(currentArea.nativeElement.attributes.outline.value)) {\r\n outlineColor = currentArea.nativeElement.attributes.outline.value;\r\n } else if (this.utilityService.isValidInstance(elementDrawStyle) &&\r\n this.utilityService.isNotEmptyString(elementDrawStyle.outline)) {\r\n outlineColor = elementDrawStyle.outline;\r\n } else {\r\n outlineColor = this.borderDefaultColour;\r\n }\r\n\r\n if (this.utilityService.isValidInstance(canvas)) {\r\n if (canvas.nativeElement.className.includes('selected')) {\r\n canvas.nativeElement.style.position = '';\r\n canvas.nativeElement.style.display = 'none';\r\n canvas.nativeElement.className = this.map_selector_class;\r\n } else {\r\n canvas.nativeElement.style.position = 'absolute';\r\n canvas.nativeElement.style.display = 'block';\r\n\r\n this.drawStyleBasedOnShape(canvas, filledColor, outlineColor, shape, coords);\r\n canvas.nativeElement.className = this.map_selector_class + ' selected';\r\n }\r\n }\r\n }\r\n\r\n private drawStyleBasedOnShape(canvas: ElementRef, fillStyle: string, outlineStyle: string, shape: string, coords: number[]) {\r\n const ctx = canvas.nativeElement.getContext('2d');\r\n if (shape.toLowerCase() === 'rect') {\r\n canvas.nativeElement.style.left = coords[0] + 'px';\r\n canvas.nativeElement.style.top = coords[1] + 'px';\r\n canvas.nativeElement.width = coords[2] - coords[0];\r\n canvas.nativeElement.height = coords[3] - coords[1];\r\n\r\n ctx.fillStyle = fillStyle;\r\n ctx.strokeStyle = outlineStyle;\r\n ctx.fillRect(0, 0, canvas.nativeElement.width, canvas.nativeElement.height);\r\n ctx.strokeRect(0, 0, canvas.nativeElement.width, canvas.nativeElement.height);\r\n\r\n } else if (shape.toLowerCase() === 'circle') {\r\n canvas.nativeElement.style.left = (coords[0] - coords[2]) + 'px';\r\n canvas.nativeElement.style.top = (coords[1] - coords[2]) + 'px';\r\n canvas.nativeElement.width = 2 * coords[2];\r\n canvas.nativeElement.height = 2 * coords[2];\r\n\r\n ctx.beginPath();\r\n ctx.arc(canvas.nativeElement.width / 2, canvas.nativeElement.height / 2, coords[2], 0, 2 * Math.PI, true);\r\n ctx.closePath();\r\n\r\n ctx.fillStyle = fillStyle;\r\n ctx.strokeStyle = outlineStyle;\r\n ctx.fill();\r\n ctx.stroke();\r\n\r\n } else if (shape.toLowerCase() === 'poly') {\r\n const size = coords.length;\r\n ctx.beginPath();\r\n ctx.moveTo(coords[0], coords[1]);\r\n for (let i = 2; i < size; i += 2) {\r\n ctx.lineTo(coords[i], coords[i + 1]);\r\n }\r\n ctx.lineTo(coords[0], coords[1]);\r\n ctx.closePath();\r\n\r\n ctx.fillStyle = fillStyle;\r\n ctx.strokeStyle = outlineStyle;\r\n ctx.fill();\r\n ctx.stroke();\r\n }\r\n }\r\n}\r\n","import { Component, Input, OnChanges } from '@angular/core';\r\nimport { AllReportText, MainReportText } from 'testruleengine/Library/Models/Class';\r\nimport { AllTextReport, AllReportTextGroup } from '../../core/models/report-text.model';\r\nimport { TabularReport } from '../../core/models/tabular-report.model';\r\nimport { UtilityService } from '../../core/services/utility.service';\r\nimport * as _ from 'lodash';\r\nimport { ToastrService } from 'ngx-toastr';\r\n\r\n@Component({\r\n selector: 'acr-assist-report-text',\r\n templateUrl: './assist-report-text.component.html',\r\n styleUrls: ['./assist-report-text.component.css', '../styles.css']\r\n})\r\nexport class AssistReportTextComponent implements OnChanges {\r\n\r\n prevSectionId: string;\r\n selectedSectionId: string;\r\n selectedSection: string;\r\n allReportTextGroup: AllReportTextGroup[] = [];\r\n allReportTexts: AllReportText[] = [];\r\n mainReportTexts: MainReportText;\r\n allTextReport: AllTextReport[];\r\n tabularReport: TabularReport;\r\n sections: string[] = [];\r\n\r\n @Input() reportText: MainReportText;\r\n\r\n constructor(\r\n private toastr: ToastrService,\r\n private utilityService: UtilityService\r\n ) {\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.mainReportTexts = new MainReportText();\r\n this.onSelect(this.selectedSectionId);\r\n }\r\n\r\n onSelect(sectionId) {\r\n this.selectedSectionId = sectionId;\r\n this.sections = [];\r\n this.selectedSection = null;\r\n this.tabularReport = this.reportText.tabularReport;\r\n for (const section in this.reportText.allReportText) {\r\n if (this.reportText.allReportText[section].allReportResult.reportText !== '') {\r\n this.sections.push(section);\r\n }\r\n }\r\n if (sectionId === 'undefined' || sectionId === undefined || sectionId === 'All') {\r\n let allText: string;\r\n this.allTextReport = [];\r\n allText = '';\r\n for (const section in this.reportText.allReportText) {\r\n if (this.reportText.allReportText[section].allReportResult.reportText !== '') {\r\n const textReport: AllTextReport = new AllTextReport();\r\n textReport.allTextResultReport.heading =\r\n this.reportText.allReportText[section].allReportResult.subSectionName !== undefined\r\n && this.reportText.allReportText[section].allReportResult.subSectionName !== '' ?\r\n this.reportText.allReportText[section].allReportResult.subSectionName\r\n : this.reportText.allReportText[section].allReportResult.sectionId;\r\n // tslint:disable-next-line:max-line-length\r\n textReport.allTextResultReport.content = this.addEmptyBreakLines(this.reportText.allReportText[section].allReportResult.reportText);\r\n textReport.repeatedSectionName = this.reportText.allReportText[section].repeatedSectionName;\r\n this.allTextReport.push(Object.assign({}, textReport));\r\n }\r\n }\r\n\r\n const results = _.chain(this.allTextReport).groupBy('repeatedSectionName').map(function (v, i) {\r\n return {\r\n repeatedSectionName: i,\r\n allTextResultReport: _.map(v, 'allTextResultReport')\r\n };\r\n }).value();\r\n\r\n const sortedResult = _.orderBy(results, [result => result.repeatedSectionName], ['asc']);\r\n this.allReportTextGroup = sortedResult;\r\n this.selectedSectionId = 'All';\r\n }\r\n\r\n for (const section in this.reportText.allReportText) {\r\n if (this.reportText.allReportText[section].allReportResult.sectionId === sectionId) {\r\n this.selectedSection = this.reportText.allReportText[section].allReportResult.reportText;\r\n // tslint:disable-next-line:max-line-length\r\n this.selectedSection = this.reportText.reportTextMainContent + ((this.selectedSection !== undefined && this.selectedSection !== '') ? this.addEmptyBreakLines(this.selectedSection) : '');\r\n break;\r\n }\r\n }\r\n\r\n this.mainReportTexts = new MainReportText();\r\n this.allReportTexts = [];\r\n // tslint:disable-next-line:forin\r\n for (const section in this.reportText.allReportText) {\r\n const allreportText = new AllReportText();\r\n allreportText.allReportResult.reportText = this.addEmptyBreakLines(this.reportText.allReportText[section].allReportResult.reportText);\r\n allreportText.allReportResult.sectionId = this.reportText.allReportText[section].allReportResult.sectionId;\r\n allreportText.repeatedSectionName = this.reportText.allReportText[section].repeatedSectionName;\r\n this.allReportTexts.push(Object.assign({}, allreportText));\r\n }\r\n this.mainReportTexts.allReportText = this.allReportTexts;\r\n this.mainReportTexts.reportTextMainContent = this.reportText.reportTextMainContent;\r\n }\r\n\r\n getReportIdentifier(identifer: string) {\r\n return this.utilityService.isNotEmptyString(identifer) ? `( ${identifer} )` : '';\r\n }\r\n\r\n addEmptyBreakLines(inputText: string): string {\r\n const hasEmptyLineBreak = inputText.trimRight().endsWith('<br>');\r\n if (!hasEmptyLineBreak) {\r\n return inputText + '<br>';\r\n }\r\n\r\n return inputText;\r\n }\r\n\r\n clipboardError(error: Error): void {\r\n this.toastr.error('Failed to copy to clipboard');\r\n }\r\n\r\n clipboardSuccess(value: string): void {\r\n this.toastr.success('Successfully copied to clipboard');\r\n }\r\n\r\n getReportTextInnerContent(reportTextContentForEmptySectionName) {\r\n if (this.utilityService.isValidInstance(reportTextContentForEmptySectionName)) {\r\n // document.execCommand('copy');\r\n // debugger;\r\n var msgb = reportTextContentForEmptySectionName.innerText.trim();\r\n let selBox = document.createElement('textarea');\r\n selBox.style.position = 'fixed';\r\n selBox.style.left = '0';\r\n selBox.style.top = '0';\r\n selBox.style.opacity = '0';\r\n selBox.value = msgb;\r\n document.body.appendChild(selBox);\r\n selBox.focus();\r\n selBox.select();\r\n document.execCommand('copy');\r\n document.body.removeChild(selBox);\r\n this.toastr.success('Successfully copied to clipboard');\r\n } else {\r\n this.toastr.error('Failed to copy to clipboard');\r\n }\r\n\r\n // return '';\r\n }\r\n}\r\n","import { Directive, Input, ElementRef, AfterViewChecked } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[acrDynamicHeightDirective]'\r\n})\r\nexport class DynamicHeightDirective implements AfterViewChecked {\r\n\r\n @Input() simulatorElement: any;\r\n @Input() carouselElement: any;\r\n\r\n constructor(private dynamicElement: ElementRef) { }\r\n\r\n ngAfterViewChecked() {\r\n if (this.dynamicElement !== undefined) {\r\n if (this.simulatorElement !== undefined) {\r\n this.setDynamicHeightForSimualtorDiv(this.simulatorElement);\r\n } else if (this.carouselElement !== undefined) {\r\n this.setDynamicHeightForCarouselDiv(this.carouselElement);\r\n }\r\n }\r\n }\r\n\r\n private setDynamicHeightForSimualtorDiv(simulatorElement: any) {\r\n const simulatorResultsBlockHeight = simulatorElement.offsetHeight;\r\n this.dynamicElement.nativeElement.style.height = (window.innerHeight - 100) - simulatorResultsBlockHeight + 'px';\r\n }\r\n\r\n private setDynamicHeightForCarouselDiv(carouselElement: any) {\r\n const simulatorResultsBlockHeight = carouselElement.offsetHeight;\r\n this.dynamicElement.nativeElement.style.height = (window.innerHeight - 200) - simulatorResultsBlockHeight + 'px';\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[acrNumericOnly]'\r\n})\r\nexport class NumericOnlyDirective {\r\n\r\n private regex: RegExp = new RegExp(/^[0-9]+(\\.[0-9]*){0,1}$/g);\r\n\r\n // Allow key codes for special events. Reflect :\r\n // Backspace, tab, end, home\r\n private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight'];\r\n\r\n constructor(private el: ElementRef) {\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n // // Allow Backspace, tab, end, and home keys\r\n // if (this.specialKeys.indexOf(event.key) !== -1) {\r\n // return;\r\n // }\r\n // let current: string = this.el.nativeElement.value;\r\n // let next: string = current.concat(event.key);\r\n // let value: number = +next;\r\n // if (next && (next === '.' || value > 100.00 || !String(next).match(this.regex))) {\r\n // event.preventDefault();\r\n // }\r\n\r\n if (this.specialKeys.indexOf(event.key) !== -1 ||\r\n // to allow backspace, enter, escape, arrows\r\n (event.which === 65 && event.ctrlKey === true) ||\r\n // Allow: Ctrl+C\r\n (event.which === 67 && event.ctrlKey === true) ||\r\n // Allow: Ctrl+X\r\n (event.which === 88 && event.ctrlKey === true)\r\n ) {\r\n return;\r\n }\r\n // Do not use event.keycode this is deprecated.\r\n // See: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode\r\n const current: string = this.el.nativeElement.value;\r\n const next: string = current.concat(event.key);\r\n if (next && !String(next).match(this.regex)) {\r\n event.preventDefault();\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, OnDestroy } from '@angular/core';\r\nimport { DurationDataElement } from 'testruleengine/Library/Models/Class';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { SubscriptionLike as ISubscription } from 'rxjs';\r\nimport { SimulatorCommunicationService } from '../../shared/services/simulator-communication.service';\r\nimport { UtilityService } from '../../../core/services/utility.service';\r\n\r\n@Component({\r\n selector: 'acr-assist-duration-element',\r\n templateUrl: './assist-duration-element.component.html',\r\n styleUrls: ['./assist-duration-element.component.css']\r\n})\r\nexport class AssistDurationElementComponent implements OnInit, OnDestroy {\r\n\r\n supportedUnits: any = {\r\n millisecond: {\r\n label: 'Millisecond',\r\n max: 999,\r\n min: 0,\r\n value: 0,\r\n step: 1\r\n },\r\n second: {\r\n label: 'S',\r\n max: 59,\r\n min: 0,\r\n value: 0,\r\n step: 1\r\n },\r\n minute: {\r\n label: 'M',\r\n max: 59,\r\n min: 0,\r\n value: 0,\r\n step: 1\r\n },\r\n hour: {\r\n label: 'H',\r\n max: 23,\r\n min: 0,\r\n value: 0,\r\n step: 1\r\n },\r\n day: {\r\n label: 'D',\r\n max: 7,\r\n min: 0,\r\n value: 0,\r\n step: 1\r\n },\r\n week: {\r\n label: 'Week',\r\n max: 51,\r\n min: 0,\r\n value: 0,\r\n step: 1\r\n }\r\n };\r\n\r\n\r\n durationVal = 'PT0S';\r\n durationOptions = {\r\n showNegative: false,\r\n showPreview: false,\r\n showYears: false,\r\n showMonths: false,\r\n showWeeks: false,\r\n min: 0\r\n };\r\n\r\n showdayminValidation = false;\r\n showdaymaxValidation = false;\r\n showminutemaxValidation = false;\r\n showminuteminValidation = false;\r\n showhourminValidation = false;\r\n showhourmaxValidation = false;\r\n showsecondsminValidation = false;\r\n showsecondsmaxValidation = false;\r\n\r\n durationElementForm: FormGroup;\r\n simulatorSourceSubscription: ISubscription;\r\n\r\n @Input() alignLabelAndControlToTopAndBottom: boolean;\r\n @Input() assetsBaseUrl: string;\r\n @Input() durationDataElement: DurationDataElement;\r\n\r\n constructor(\r\n private formBuilder: FormBuilder,\r\n private utilityService: UtilityService,\r\n simulatorCommunicationService: SimulatorCommunicationService) {\r\n this.simulatorSourceSubscription = simulatorCommunicationService.simulatorSource$.subscribe(\r\n mission => {\r\n this.SetRangeValuesForDurationPicker();\r\n this.updateFormValidator();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.SetRangeValuesForDurationPicker();\r\n this.createDurationElementForm();\r\n this.onChanges();\r\n }\r\n\r\n ResetValidationVisibility(): void {\r\n this.showdayminValidation = false;\r\n this.showdaymaxValidation = false;\r\n this.showminutemaxValidation = false;\r\n this.showminuteminValidation = false;\r\n this.showhourminValidation = false;\r\n this.showhourmaxValidation = false;\r\n this.showsecondsminValidation = false;\r\n this.showsecondsmaxValidation = false;\r\n }\r\n\r\n onChanges(): void {\r\n this.durationElementForm.statusChanges\r\n .subscribe(val => {\r\n this.ResetValidationVisibility();\r\n if (this.durationElementForm.controls.durationdayselement !== undefined &&\r\n this.durationElementForm.controls.durationdayselement.invalid\r\n && this.durationElementForm.controls.durationdayselement.errors.max) {\r\n this.showdaymaxValidation = true;\r\n } else if (this.durationElementForm.controls.durationdayselement !== undefined &&\r\n this.durationElementForm.controls.durationdayselement.invalid\r\n && this.durationElementForm.controls.durationdayselement.errors.min) {\r\n this.showdayminValidation = true;\r\n } else if (this.durationElementForm.controls.durationdayselement !== undefined &&\r\n this.durationElementForm.controls.durationminuteselement.invalid\r\n && this.durationElementForm.controls.durationminuteselement.errors.min) {\r\n this.showminuteminValidation = true;\r\n } else if (this.durationElementForm.controls.durationminuteselement !== undefined &&\r\n this.durationElementForm.controls.durationminuteselement.invalid\r\n && this.durationElementForm.controls.durationminuteselement.errors.max) {\r\n this.showminutemaxValidation = true;\r\n } else if (this.durationElementForm.controls.durationhourselement !== undefined &&\r\n this.durationElementForm.controls.durationhourselement.invalid\r\n && this.durationElementForm.controls.durationhourselement.errors.min) {\r\n this.showhourminValidation = true;\r\n } else if (this.durationElementForm.controls.durationhourselement !== undefined &&\r\n this.durationElementForm.controls.durationhourselement.invalid\r\n && this.durationElementForm.controls.durationhourselement.errors.max) {\r\n this.showhourmaxValidation = true;\r\n\r\n } else if (this.durationElementForm.controls.durationsecondselement !== undefined &&\r\n this.durationElementForm.controls.durationsecondselement.invalid\r\n && this.durationElementForm.controls.durationsecondselement.errors.min) {\r\n this.showsecondsminValidation = true;\r\n } else if (this.durationElementForm.controls.durationsecondselement !== undefined &&\r\n this.durationElementForm.controls.durationsecondselement.invalid\r\n && this.durationElementForm.controls.durationsecondselement.errors.max) {\r\n this.showsecondsmaxValidation = true;\r\n }\r\n });\r\n }\r\n\r\n onlyInteger(event) {\r\n return (event.charCode === 8 || event.charCode === 0) ? null : event.charCode >= 48 && event.charCode <= 57;\r\n }\r\n\r\n updateFormValidator() {\r\n this.durationElementForm.controls.durationdayselement.setValidators([Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.day.min), Validators.max(+this.supportedUnits.day.max)])]);\r\n this.durationElementForm.controls.durationdayselement.updateValueAndValidity();\r\n\r\n this.durationElementForm.controls.durationminuteselement.setValidators([Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.minute.min), Validators.max(+this.supportedUnits.minute.max)])]);\r\n this.durationElementForm.controls.durationminuteselement.updateValueAndValidity();\r\n\r\n this.durationElementForm.controls.durationhourselement.setValidators([Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.hour.min), Validators.max(+this.supportedUnits.hour.max)])]);\r\n this.durationElementForm.controls.durationhourselement.updateValueAndValidity();\r\n\r\n this.durationElementForm.controls.durationsecondselement.setValidators([Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.second.min), Validators.max(+this.supportedUnits.second.max)])]);\r\n this.durationElementForm.controls.durationsecondselement.updateValueAndValidity();\r\n }\r\n\r\n increaseValue(property): void {\r\n let currentValue = 0;\r\n const daysValue = this.durationElementForm.controls.durationdayselement.value;\r\n const hoursValue = this.durationElementForm.controls.durationhourselement.value;\r\n const minsValue = this.durationElementForm.controls.durationminuteselement.value;\r\n const secondsValue = this.durationElementForm.controls.durationsecondselement.value;\r\n\r\n switch (property) {\r\n case 'days':\r\n currentValue = daysValue === undefined || daysValue == null ? 0 : daysValue;\r\n if (currentValue < this.supportedUnits.day.max) {\r\n currentValue = currentValue + this.supportedUnits.day.step;\r\n }\r\n\r\n this.durationElementForm.controls.durationdayselement.setValue(currentValue);\r\n break;\r\n\r\n case 'hour':\r\n currentValue = hoursValue === undefined || hoursValue == null ? 0 : hoursValue;\r\n if (currentValue < this.supportedUnits.hour.max) {\r\n currentValue = currentValue + this.supportedUnits.hour.step;\r\n }\r\n\r\n this.durationElementForm.controls.durationhourselement.setValue(currentValue);\r\n break;\r\n\r\n case 'minute':\r\n currentValue = minsValue === undefined || minsValue == null ? 0 : minsValue;\r\n if (currentValue < this.supportedUnits.minute.max) {\r\n currentValue = currentValue + this.supportedUnits.minute.step;\r\n }\r\n\r\n this.durationElementForm.controls.durationminuteselement.setValue(currentValue);\r\n break;\r\n\r\n case 'second':\r\n currentValue = secondsValue === undefined || secondsValue == null ? 0 : secondsValue;\r\n if (currentValue < this.supportedUnits.second.max) {\r\n currentValue = currentValue + this.supportedUnits.second.step;\r\n }\r\n\r\n this.durationElementForm.controls.durationsecondselement.setValue(currentValue);\r\n break;\r\n }\r\n }\r\n\r\n decreaseValue(property): void {\r\n let currentValue = 0;\r\n const daysValue = this.durationElementForm.controls.durationdayselement.value;\r\n const hoursValue = this.durationElementForm.controls.durationhourselement.value;\r\n const minsValue = this.durationElementForm.controls.durationminuteselement.value;\r\n const secondsValue = this.durationElementForm.controls.durationsecondselement.value;\r\n\r\n switch (property) {\r\n case 'days':\r\n currentValue = daysValue;\r\n if (currentValue > this.supportedUnits.day.min) {\r\n currentValue = currentValue - this.supportedUnits.day.step;\r\n }\r\n\r\n this.durationElementForm.controls.durationdayselement.setValue(currentValue);\r\n break;\r\n\r\n case 'hour':\r\n currentValue = hoursValue;\r\n if (currentValue > this.supportedUnits.hour.min) {\r\n currentValue = currentValue - this.supportedUnits.hour.step;\r\n }\r\n\r\n this.durationElementForm.controls.durationhourselement.setValue(currentValue);\r\n break;\r\n\r\n case 'minute':\r\n currentValue = minsValue;\r\n if (currentValue > this.supportedUnits.minute.min) {\r\n currentValue = currentValue - this.supportedUnits.minute.step;\r\n }\r\n\r\n this.durationElementForm.controls.durationminuteselement.setValue(currentValue);\r\n break;\r\n\r\n case 'second':\r\n currentValue = secondsValue;\r\n if (currentValue > this.supportedUnits.second.min) {\r\n currentValue = currentValue - this.supportedUnits.second.step;\r\n }\r\n\r\n this.durationElementForm.controls.durationsecondselement.setValue(currentValue);\r\n break;\r\n }\r\n }\r\n\r\n checkValue(event: any, property) {\r\n let currentValue = 0;\r\n const daysValue = this.durationElementForm.controls.durationdayselement.value;\r\n const hoursValue = this.durationElementForm.controls.durationhourselement.value;\r\n const minsValue = this.durationElementForm.controls.durationminuteselement.value;\r\n const secondsValue = this.durationElementForm.controls.durationsecondselement.value;\r\n\r\n switch (property) {\r\n case 'days':\r\n currentValue = daysValue;\r\n if (currentValue === undefined || currentValue == null) {\r\n currentValue = 0;\r\n }\r\n\r\n this.durationElementForm.controls.durationdayselement.setValue(currentValue);\r\n break;\r\n\r\n case 'hour':\r\n currentValue = hoursValue;\r\n if (currentValue === undefined || currentValue == null) {\r\n currentValue = 0;\r\n }\r\n\r\n this.durationElementForm.controls.durationhourselement.setValue(currentValue);\r\n break;\r\n\r\n case 'minute':\r\n currentValue = minsValue;\r\n if (currentValue === undefined || currentValue == null) {\r\n currentValue = 0;\r\n }\r\n\r\n this.durationElementForm.controls.durationminuteselement.setValue(currentValue);\r\n break;\r\n\r\n case 'second':\r\n currentValue = secondsValue;\r\n if (currentValue === undefined || currentValue == null) {\r\n currentValue = 0;\r\n }\r\n\r\n this.durationElementForm.controls.durationsecondselement.setValue(currentValue);\r\n break;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.utilityService.isValidInstance(this.simulatorSourceSubscription)) {\r\n this.simulatorSourceSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n isDurationElementRequired(): boolean {\r\n return (this.durationDataElement.isRequired &&\r\n (!this.showdayminValidation && !this.showdaymaxValidation && !this.showminuteminValidation &&\r\n !this.showminutemaxValidation && !this.showhourminValidation && !this.showhourmaxValidation &&\r\n !this.showsecondsmaxValidation && !this.showsecondsminValidation)) &&\r\n (this.durationElementForm.controls.durationdayselement !== undefined &&\r\n this.durationElementForm.controls.durationdayselement.invalid &&\r\n this.durationElementForm.controls.durationdayselement.errors != null &&\r\n this.durationElementForm.controls.durationdayselement.errors.required) ||\r\n (this.durationElementForm.controls.durationhourselement !== undefined &&\r\n this.durationElementForm.controls.durationhourselement.invalid &&\r\n this.durationElementForm.controls.durationhourselement.errors != null &&\r\n this.durationElementForm.controls.durationhourselement.errors.required) ||\r\n (this.durationElementForm.controls.durationminuteselement !== undefined &&\r\n this.durationElementForm.controls.durationminuteselement.invalid &&\r\n this.durationElementForm.controls.durationminuteselement.errors != null &&\r\n this.durationElementForm.controls.durationminuteselement.errors.required) ||\r\n (this.durationElementForm.controls.durationsecondselement !== undefined &&\r\n this.durationElementForm.controls.durationsecondselement.invalid &&\r\n this.durationElementForm.controls.durationsecondselement.errors != null &&\r\n this.durationElementForm.controls.durationsecondselement.errors.required);\r\n }\r\n\r\n private SetRangeValuesForDurationPicker() {\r\n const $element = this.durationDataElement;\r\n this.supportedUnits.day.min = $element.MinimumDay !== undefined && $element.MinimumDay != null ?\r\n $element.MinimumDay : 0;\r\n this.supportedUnits.hour.min = $element.MinimumHours !== undefined && $element.MinimumHours != null ?\r\n $element.MinimumHours : 0;\r\n this.supportedUnits.minute.min = $element.MinimumMinutes !== undefined && $element.MinimumMinutes != null ?\r\n $element.MinimumMinutes : 0;\r\n this.supportedUnits.second.min = $element.MinimumSeconds !== undefined && $element.MinimumSeconds != null ?\r\n $element.MinimumSeconds : 0;\r\n this.supportedUnits.day.max = $element.MaximumDay !== undefined && $element.MaximumDay != null ?\r\n $element.MaximumDay : 9007199254740991;\r\n this.supportedUnits.hour.max = $element.MaximumHours !== undefined && $element.MaximumHours != null ?\r\n $element.MaximumHours : 9007199254740991;\r\n this.supportedUnits.minute.max = $element.MaxmimumMinutes !== undefined && $element.MaxmimumMinutes != null ?\r\n $element.MaxmimumMinutes : 9007199254740991;\r\n this.supportedUnits.second.max = $element.MaxmimumSeconds !== undefined && $element.MaxmimumSeconds != null ?\r\n $element.MaxmimumSeconds : 9007199254740991;\r\n }\r\n\r\n private createDurationElementForm() {\r\n if (this.durationDataElement.ShowDays && this.durationDataElement.ShowHours\r\n && this.durationDataElement.ShowMinutes\r\n && this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationdayselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.day.min), Validators.max(+this.supportedUnits.day.max)])],\r\n durationminuteselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.minute.min), Validators.max(+this.supportedUnits.minute.max)])],\r\n durationhourselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.hour.min), Validators.max(+this.supportedUnits.hour.max)])],\r\n durationsecondselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.second.min), Validators.max(+this.supportedUnits.second.max)])]\r\n });\r\n } else if (!this.durationDataElement.ShowDays && !this.durationDataElement.ShowHours\r\n && this.durationDataElement.ShowMinutes\r\n && this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationminuteselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.minute.min), Validators.max(+this.supportedUnits.minute.max)])],\r\n durationsecondselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.second.min), Validators.max(+this.supportedUnits.second.max)])]\r\n });\r\n } else if (this.durationDataElement.ShowDays && !this.durationDataElement.ShowHours\r\n && !this.durationDataElement.ShowMinutes\r\n && this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationdayselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.day.min), Validators.max(+this.supportedUnits.day.max)])],\r\n durationsecondselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.second.min), Validators.max(+this.supportedUnits.second.max)])]\r\n });\r\n } else if (this.durationDataElement.ShowDays && this.durationDataElement.ShowHours\r\n && !this.durationDataElement.ShowMinutes\r\n && !this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationdayselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.day.min), Validators.max(+this.supportedUnits.day.max)])],\r\n durationhourselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.hour.min), Validators.max(+this.supportedUnits.hour.max)])]\r\n });\r\n } else if (!this.durationDataElement.ShowDays && this.durationDataElement.ShowHours\r\n && this.durationDataElement.ShowMinutes\r\n && !this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationminuteselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.minute.min), Validators.max(+this.supportedUnits.minute.max)])],\r\n durationhourselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.hour.min), Validators.max(+this.supportedUnits.hour.max)])]\r\n });\r\n } else if (!this.durationDataElement.ShowDays && this.durationDataElement.ShowHours\r\n && this.durationDataElement.ShowMinutes\r\n && this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationminuteselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.minute.min), Validators.max(+this.supportedUnits.minute.max)])],\r\n durationhourselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.hour.min), Validators.max(+this.supportedUnits.hour.max)])],\r\n durationsecondselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.second.min), Validators.max(+this.supportedUnits.second.max)])]\r\n });\r\n } else if (this.durationDataElement.ShowDays && !this.durationDataElement.ShowHours\r\n && this.durationDataElement.ShowMinutes\r\n && this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationdayselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.day.min), Validators.max(+this.supportedUnits.day.max)])],\r\n durationminuteselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.minute.min), Validators.max(+this.supportedUnits.minute.max)])],\r\n durationsecondselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.second.min), Validators.max(+this.supportedUnits.second.max)])]\r\n });\r\n } else if (this.durationDataElement.ShowDays && this.durationDataElement.ShowHours\r\n && !this.durationDataElement.ShowMinutes\r\n && this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationdayselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.day.min), Validators.max(+this.supportedUnits.day.max)])],\r\n durationhourselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.hour.min), Validators.max(+this.supportedUnits.hour.max)])],\r\n durationsecondselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.second.min), Validators.max(+this.supportedUnits.second.max)])]\r\n });\r\n } else if (this.durationDataElement.ShowDays && this.durationDataElement.ShowHours\r\n && this.durationDataElement.ShowMinutes\r\n && !this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationdayselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.day.min), Validators.max(+this.supportedUnits.day.max)])],\r\n durationminuteselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.minute.min), Validators.max(+this.supportedUnits.minute.max)])],\r\n durationhourselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.hour.min), Validators.max(+this.supportedUnits.hour.max)])]\r\n });\r\n } else if (this.durationDataElement.ShowDays && !this.durationDataElement.ShowHours\r\n && !this.durationDataElement.ShowMinutes\r\n && !this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationdayselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.day.min), Validators.max(+this.supportedUnits.day.max)])]\r\n });\r\n } else if (!this.durationDataElement.ShowDays && this.durationDataElement.ShowHours\r\n && !this.durationDataElement.ShowMinutes\r\n && !this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationhourselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.hour.min), Validators.max(+this.supportedUnits.hour.max)])]\r\n });\r\n } else if (!this.durationDataElement.ShowDays && !this.durationDataElement.ShowHours\r\n && this.durationDataElement.ShowMinutes\r\n && !this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationminuteselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.minute.min), Validators.max(+this.supportedUnits.minute.max)])]\r\n });\r\n } else if (!this.durationDataElement.ShowDays && !this.durationDataElement.ShowHours\r\n && !this.durationDataElement.ShowMinutes\r\n && this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationsecondselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.second.min), Validators.max(+this.supportedUnits.second.max)])]\r\n });\r\n } else if (!this.durationDataElement.ShowDays && !this.durationDataElement.ShowHours\r\n && !this.durationDataElement.ShowMinutes\r\n && !this.durationDataElement.ShowSeconds) {\r\n this.durationElementForm = this.formBuilder.group({\r\n durationdayselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.day.min), Validators.max(+this.supportedUnits.day.max)])],\r\n durationminuteselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.minute.min), Validators.max(+this.supportedUnits.minute.max)])],\r\n durationhourselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.hour.min), Validators.max(+this.supportedUnits.hour.max)])],\r\n durationsecondselement: [0, Validators.compose([Validators.required,\r\n Validators.min(+this.supportedUnits.second.min), Validators.max(+this.supportedUnits.second.max)])]\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms';\r\nimport { SelectedCondition } from '../../../core/models/executed-result.model';\r\nimport { DateTimeDataElement } from 'testruleengine/Library/Models/Class';\r\nimport { SimulatorEngineService } from '../../../core/services/simulator-engine.service';\r\nimport { DateTimeElement } from '../assist-data-element.component';\r\n\r\n@Component({\r\n selector: 'acr-assist-date-time-element',\r\n templateUrl: './assist-date-time-element.component.html',\r\n styleUrls: ['./assist-date-time-element.component.css']\r\n})\r\nexport class AssistDateTimeElementComponent implements OnInit, AfterViewInit {\r\n\r\n selectedCondition: SelectedCondition;\r\n dateTimeElementForm: FormGroup;\r\n settings = {\r\n bigBanner: true,\r\n format: 'dd-MMM-yyyy hh:mm a',\r\n defaultOpen: false,\r\n timePicker: true,\r\n closeOnSelect: true\r\n };\r\n\r\n @Input() alignLabelAndControlToTopAndBottom: boolean;\r\n @Input() assetsBaseUrl: string;\r\n @Input() dateTimeDataElement: DateTimeDataElement;\r\n @Output() returnDateTimeElement = new EventEmitter();\r\n\r\n constructor(private formBuilder: FormBuilder, private simulatorEngineService: SimulatorEngineService) { }\r\n\r\n ngOnInit() {\r\n this.createDateTimeElementForm();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.dateTimeDataElement.currentValue !== undefined) {\r\n this.dateTimeElementForm.controls.dateTimeElement.setValue(new Date(this.dateTimeDataElement.currentValue));\r\n this.onDateTimeSelected();\r\n } else {\r\n this.returnDateTimeElement.emit(undefined);\r\n }\r\n }\r\n\r\n onDateTimeSelected() {\r\n const date = this.dateTimeElementForm.controls.dateTimeElement.value;\r\n if (date != null) {\r\n const localDateTime = new Date(date.toString()).toLocaleString();\r\n const dateTimeElement = new DateTimeElement();\r\n dateTimeElement.elementId = this.dateTimeDataElement.id;\r\n dateTimeElement.selectedValue = localDateTime;\r\n\r\n this.selectedCondition = new SelectedCondition();\r\n\r\n this.selectedCondition.selectedConditionId = this.dateTimeDataElement.id;\r\n this.selectedCondition.selectedCondition = this.dateTimeDataElement.label;\r\n this.selectedCondition.selectedValue = localDateTime;\r\n this.returnDateTimeElement.emit({ receivedElement: dateTimeElement, selectedCondition: this.selectedCondition });\r\n }\r\n }\r\n\r\n isDateTimeElementRequired(): boolean {\r\n return this.dateTimeElementForm.controls.dateTimeElement.invalid &&\r\n this.dateTimeElementForm.controls.dateTimeElement.errors.required &&\r\n this.dateTimeDataElement.isRequired;\r\n }\r\n\r\n private createDateTimeElementForm() {\r\n this.dateTimeElementForm = this.formBuilder.group({\r\n dateTimeElement: ['', Validators.compose([Validators.required, Validators.min(+0), Validators.max(+1)])],\r\n });\r\n }\r\n}\r\n\r\n","import { Directive, ElementRef, HostListener } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[acrIntegerMaxRestrict]'\r\n})\r\nexport class IntegerMaxRestrictDirective {\r\n\r\n// private regex: RegExp = new RegExp(/^(?:[0-9]{0,3}(?:\\.[0-9]{0,2})?)?$/);\r\n\r\n // Allow key codes for special events. Reflect :\r\n // Backspace, tab, end, home\r\n private specialKeys: Array<string> = ['Backspace', 'Tab', 'End', 'Home', 'ArrowLeft', 'ArrowRight'];\r\n\r\n constructor(private el: ElementRef) {\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: KeyboardEvent) {\r\n // Allow Backspace, tab, end, and home keys\r\n if (this.specialKeys.indexOf(event.key) !== -1) {\r\n return;\r\n }\r\n const current: string = this.el.nativeElement.value;\r\n const next: string = current.concat(event.key);\r\n const value: number = +next;\r\n // if (next && (next === '.' || value > 100.00 || !String(next).match(this.regex))) {\r\n // event.preventDefault();\r\n // }\r\n }\r\n}\r\n","import { Inject } from '@angular/core';\r\nimport { Injectable } from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable()\r\nexport class ClipboardService {\r\n\r\n private dom: Document;\r\n\r\n constructor(@Inject(DOCUMENT) dom: any) {\r\n this.dom = dom;\r\n }\r\n\r\n public copy(value: string): Promise<string> {\r\n return new Promise(\r\n (resolve, reject): void => {\r\n let textarea = null;\r\n\r\n try {\r\n textarea = this.dom.createElement('textarea');\r\n textarea.style.height = '0px';\r\n textarea.style.left = '-100px';\r\n textarea.style.opacity = '0';\r\n textarea.style.position = 'fixed';\r\n textarea.style.top = '-100px';\r\n textarea.style.width = '0px';\r\n this.dom.body.appendChild(textarea);\r\n textarea.value = value;\r\n textarea.select();\r\n this.dom.execCommand('copy');\r\n resolve(value);\r\n } finally {\r\n if (textarea && textarea.parentNode) {\r\n textarea.parentNode.removeChild(textarea);\r\n }\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","import { Directive, Output, Input, HostListener } from '@angular/core';\r\nimport { EventEmitter } from '@angular/core';\r\nimport { ClipboardService } from '../services/clipboard.service';\r\n\r\n@Directive({\r\n selector: '[acrClipboard]'\r\n})\r\nexport class ClipboardDirective {\r\n\r\n @Input() clipboard: any;\r\n @Output() clipboardCopy: EventEmitter<string> = new EventEmitter<string>();\r\n @Output() clipboardError: EventEmitter<Error> = new EventEmitter<Error>();\r\n\r\n constructor(\r\n private clipboardService: ClipboardService) {\r\n }\r\n\r\n @HostListener('click', ['$event.target'])\r\n copyToClipboard(event: any) {\r\n this.clipboardService\r\n .copy(this.clipboard)\r\n .then(\r\n (value: string): void => {\r\n this.clipboardCopy.emit(value);\r\n }\r\n )\r\n .catch(\r\n (error: Error): void => {\r\n this.clipboardError.emit(error);\r\n }\r\n );\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, Subscriber } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class UrlHelperService {\r\n constructor(\r\n private http: HttpClient,\r\n ) {\r\n }\r\n\r\n getImageData(url: string): Observable<any> {\r\n return new Observable((observer: Subscriber<any>) => {\r\n let objectUrl: string = null;\r\n\r\n this.http.get(url, { responseType: 'blob' }).subscribe(\r\n m => {\r\n objectUrl = URL.createObjectURL(m);\r\n observer.next(objectUrl);\r\n });\r\n\r\n return () => {\r\n if (objectUrl) {\r\n URL.revokeObjectURL(objectUrl);\r\n objectUrl = null;\r\n }\r\n };\r\n });\r\n }\r\n}\r\n","import { Pipe, PipeTransform, OnDestroy, WrappedValue, ChangeDetectorRef } from '@angular/core';\r\nimport { SubscriptionLike as ISubscription, Observable, BehaviorSubject } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { UrlHelperService } from '../services/url-helper.service';\r\n\r\n@Pipe({\r\n name: 'secure',\r\n pure: false\r\n})\r\nexport class SecurePipe implements PipeTransform, OnDestroy {\r\n private _latestValue: any = null;\r\n private _latestReturnedValue: any = null;\r\n private _subscription: ISubscription = null;\r\n private _obj: Observable<any> = null;\r\n\r\n private previousUrl: string;\r\n private _result: BehaviorSubject<any> = new BehaviorSubject<any>(null);\r\n private result: Observable<any> = this._result.asObservable();\r\n private _internalSubscription: ISubscription = null;\r\n\r\n constructor(\r\n private _ref: ChangeDetectorRef,\r\n private urlHelperService: UrlHelperService,\r\n private sanitizer: DomSanitizer\r\n ) { }\r\n\r\n ngOnDestroy(): void {\r\n if (this._subscription) {\r\n this._dispose();\r\n }\r\n }\r\n\r\n transform(url: string): any {\r\n const obj = this.internalTransform(url);\r\n return this.asyncTrasnform(obj);\r\n }\r\n\r\n private internalTransform(url: string): Observable<any> {\r\n if (!url) {\r\n return this.result;\r\n }\r\n\r\n if (this.previousUrl !== url) {\r\n this.previousUrl = url;\r\n this._internalSubscription = this.urlHelperService.getImageData(url).subscribe(m => {\r\n const sanitized = this.sanitizer.bypassSecurityTrustUrl(m);\r\n this._result.next(sanitized);\r\n });\r\n }\r\n\r\n return this.result;\r\n }\r\n\r\n private asyncTrasnform(obj: Observable<any>): any {\r\n if (!this._obj) {\r\n if (obj) {\r\n this._subscribe(obj);\r\n }\r\n this._latestReturnedValue = this._latestValue;\r\n return this._latestValue;\r\n }\r\n if (obj !== this._obj) {\r\n this._dispose();\r\n return this.asyncTrasnform(obj);\r\n }\r\n if (this._latestValue === this._latestReturnedValue) {\r\n return this._latestReturnedValue;\r\n }\r\n this._latestReturnedValue = this._latestValue;\r\n return WrappedValue.wrap(this._latestValue);\r\n }\r\n\r\n private _subscribe(obj: Observable<any>) {\r\n const _this = this;\r\n this._obj = obj;\r\n\r\n this._subscription = obj.subscribe({\r\n next(value) {\r\n return _this._updateLatestValue(obj, value);\r\n }, error: (e: any) => { throw e; }\r\n });\r\n }\r\n\r\n private _dispose() {\r\n this._subscription.unsubscribe(); if (this._internalSubscription) {\r\n this._internalSubscription.unsubscribe();\r\n }\r\n this._internalSubscription = null;\r\n this._latestValue = null;\r\n this._latestReturnedValue = null;\r\n this._subscription = null;\r\n this._obj = null;\r\n }\r\n\r\n private _updateLatestValue(async: any, value: object) {\r\n if (async === this._obj) {\r\n this._latestValue = value;\r\n this._ref.markForCheck();\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CoreModule } from '../core/core.module';\r\nimport { AcrAssistSimulatorComponent } from './acr-assist-simulator/acr-assist-simulator.component';\r\nimport { AssistDataElementComponent } from './assist-data-element/assist-data-element.component';\r\nimport { HintDiagramComponent } from './assist-data-element/hint-diagram/hint-diagram.component';\r\nimport { AssistNumericElementComponent } from './assist-data-element/assist-numeric-element/assist-numeric-element.component';\r\nimport { AssistChoiceElementComponent } from './assist-data-element/assist-choice-element/assist-choice-element.component';\r\nimport { AssistMultiChoiceElementComponent } from './assist-data-element/assist-multi-choice-element/assist-multi-choice-element.component';\r\nimport { ImageMapComponent } from './assist-data-element/image-map/image-map.component';\r\nimport { AssistReportTextComponent } from './assist-report-text/assist-report-text.component';\r\nimport { SimulatorEngineService } from '../core/services/simulator-engine.service';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { DynamicHeightDirective } from './shared/directives/dynamicheight.directive';\r\nimport { NumericOnlyDirective } from './shared/directives/numeric-only.directive';\r\nimport { DragScrollModule } from 'ngx-drag-scroll';\r\nimport { NgxLoadingModule } from 'ngx-loading';\r\nimport { AssistDurationElementComponent } from './assist-data-element/assist-duration-element/assist-duration-element.component';\r\nimport { SimulatorCommunicationService } from './shared/services/simulator-communication.service';\r\nimport { ResetCommunicationService } from './shared/services/reset-communication.service';\r\nimport { OwlDateTimeModule, OwlNativeDateTimeModule } from 'ng-pick-datetime';\r\nimport { AssistDateTimeElementComponent } from './assist-data-element/assist-date-time-element/assist-date-time-element.component';\r\nimport { CarouselModule } from 'ngx-bootstrap/carousel';\r\nimport { IntegerMaxRestrictDirective } from './shared/directives/integer-restrict-value-greaterthan-max.directive';\r\nimport { ClipboardDirective } from './shared/directives/clipboard.directive';\r\nimport { ClipboardService } from './shared/services/clipboard.service';\r\nimport { SecurePipe } from './shared/pipes/secure.pipe';\r\nimport { UrlHelperService } from './shared/services/url-helper.service';\r\n\r\nconst components = [\r\n AcrAssistSimulatorComponent, AssistDataElementComponent, HintDiagramComponent,\r\n AssistNumericElementComponent, AssistChoiceElementComponent, AssistMultiChoiceElementComponent,\r\n ImageMapComponent, AssistReportTextComponent, DynamicHeightDirective, NumericOnlyDirective, SecurePipe,\r\n IntegerMaxRestrictDirective, ClipboardDirective, AssistDateTimeElementComponent, AssistDurationElementComponent];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n CoreModule,\r\n FormsModule,\r\n CarouselModule,\r\n ReactiveFormsModule,\r\n DragScrollModule,\r\n OwlDateTimeModule,\r\n OwlNativeDateTimeModule,\r\n NgxLoadingModule\r\n ],\r\n declarations: components,\r\n providers: [\r\n SimulatorEngineService,\r\n SimulatorCommunicationService,\r\n ResetCommunicationService,\r\n ClipboardService,\r\n UrlHelperService\r\n ],\r\n exports: components\r\n})\r\nexport class AcrAssistSimulatorModule { }\r\n","export interface IDictionary<T> {\r\n Add(key: string, value: T);\r\n ContainsKey(key: string): boolean;\r\n Count(): number;\r\n Item(key: string): T;\r\n Keys(): string[];\r\n Remove(key: string): T;\r\n Values(): T[];\r\n}\r\nexport class Dictionary<T> implements IDictionary<T> {\r\n private items: { [index: string]: T } = {};\r\n\r\n private count = 0;\r\n\r\n public ContainsKey(key: string): boolean {\r\n return this.items.hasOwnProperty(key);\r\n }\r\n\r\n public Count(): number {\r\n return this.count;\r\n }\r\n\r\n public Add(key: string, value: T) {\r\n if (!this.items.hasOwnProperty(key)) {\r\n this.count++;\r\n }\r\n\r\n this.items[key] = value;\r\n }\r\n\r\n public Remove(key: string): T {\r\n const val = this.items[key];\r\n delete this.items[key];\r\n this.count--;\r\n return val;\r\n }\r\n\r\n public Item(key: string): T {\r\n return this.items[key];\r\n }\r\n\r\n public Keys(): string[] {\r\n const keySet: string[] = [];\r\n\r\n for (const prop in this.items) {\r\n if (this.items.hasOwnProperty(prop)) {\r\n keySet.push(prop);\r\n }\r\n }\r\n\r\n return keySet;\r\n }\r\n\r\n public Values(): T[] {\r\n const values: T[] = [];\r\n\r\n for (const prop in this.items) {\r\n if (this.items.hasOwnProperty(prop)) {\r\n values.push(this.items[prop]);\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { FileDetails } from '../models/file-details.model';\r\nimport { Dictionary } from '../models/dictionary';\r\nimport { Observable } from 'rxjs';\r\nimport { HttpClient } from '@angular/common/http';\r\n\r\n@Injectable()\r\nexport class GlobalsService {\r\n\r\n defaultModule = 'assets/XMLFIles/hello_assist/Hello_Assist.xml';\r\n defaultTestModule = 'assets/XMLFIles/test_module/Test_Module.xml';\r\n\r\n public XMLList: Dictionary<FileDetails> = new Dictionary<FileDetails>();\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getDefaultModulePath(): Observable<string> {\r\n return this.http.get(this.defaultModule, { responseType: 'text' });\r\n }\r\n\r\n getDefaultTestModulePath(): Observable<string> {\r\n return this.http.get(this.defaultTestModule, { responseType: 'text' });\r\n }\r\n}\r\n\r\n","import { Component, OnInit, EventEmitter, Output } from '@angular/core';\r\nimport { FileDetails } from '../shared/models/file-details.model';\r\nimport { GlobalsService } from '../shared/services/globals.service';\r\nimport { ResetCommunicationService } from '../../acr-assist-simulator/shared/services/reset-communication.service';\r\n\r\nconst $ = require('jquery');\r\n\r\n@Component({\r\n selector: 'acr-view-upload-loader',\r\n templateUrl: './view-upload-loader.component.html',\r\n styleUrls: ['./view-upload-loader.component.css']\r\n})\r\nexport class ViewUploadLoaderComponent {\r\n\r\n @Output() fileSelected: EventEmitter<FileDetails> = new EventEmitter<FileDetails>();\r\n\r\n selectedXML: FileDetails;\r\n globalsService: GlobalsService;\r\n\r\n constructor(\r\n globalsService: GlobalsService,\r\n private resetCommunicationService: ResetCommunicationService) {\r\n this.globalsService = globalsService;\r\n }\r\n\r\n fileContentRead(fileDetails: FileDetails) {\r\n this.selectedXML = fileDetails;\r\n if (this.globalsService.XMLList.ContainsKey(fileDetails.fileLabel)) {\r\n this.globalsService.XMLList.Remove(fileDetails.fileLabel);\r\n }\r\n this.globalsService.XMLList.Add(fileDetails.fileLabel, fileDetails);\r\n this.fileSelected.emit(fileDetails);\r\n }\r\n\r\n onFileClick(fileDetails: FileDetails) {\r\n this.selectedXML = fileDetails;\r\n this.fileSelected.emit(fileDetails);\r\n\r\n $('#xmlOnlyMsg').hide();\r\n\r\n this.resetCommunicationService.messageEmitter('');\r\n }\r\n}\r\n","export class FileDetails {\r\n fileName: string;\r\n fileContents: string;\r\n fileLabel: string;\r\n constructor(fileLabel: string, fileName: string, fileContents: string) {\r\n this.fileLabel = fileLabel;\r\n this.fileName = fileName ;\r\n this.fileContents = fileContents;\r\n }\r\n}\r\n","import { Component, Output , EventEmitter, OnInit, OnDestroy } from '@angular/core';\r\nimport { SubscriptionLike as ISubscription } from 'rxjs';\r\nimport { FileDetails } from '../shared/models/file-details.model';\r\nimport { GlobalsService } from '../shared/services/globals.service';\r\nimport { UtilityService } from '../../core/services/utility.service';\r\nconst $ = require('jquery');\r\n\r\n@Component({\r\n selector: 'acr-file-upload-loader',\r\n templateUrl: './file-upload-loader.component.html',\r\n styleUrls: ['./file-upload-loader.component.css']\r\n})\r\n\r\nexport class FileUploadLoaderComponent implements OnInit, OnDestroy {\r\n\r\n fileReader: FileReader = new FileReader();\r\n readFile: File;\r\n defaultModuleSubscription: ISubscription;\r\n testModuleSubscription: ISubscription;\r\n\r\n @Output() fileContentRead: EventEmitter<FileDetails> = new EventEmitter<FileDetails>();\r\n\r\n constructor(\r\n private configService: GlobalsService,\r\n private utilityService: UtilityService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.hideMessage();\r\n this.showTestModule();\r\n this.showDefaultModule();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.utilityService.isValidInstance(this.defaultModuleSubscription)) {\r\n this.defaultModuleSubscription.unsubscribe();\r\n }\r\n if (this.utilityService.isValidInstance(this.testModuleSubscription)) {\r\n this.testModuleSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n changeListener($event): void {\r\n let fileName: string;\r\n fileName = $event.target.value;\r\n if (fileName.includes('.xml') || fileName.includes('.Xml') || fileName.includes('.XML') ||\r\n fileName.includes('.zip') || fileName.includes('.Zip') || fileName.includes('.ZIP')) {\r\n this.hideMessage();\r\n this.readThis($event.target);\r\n } else {\r\n if (fileName !== '' && fileName !== undefined) {\r\n $('#xmlOnlyMsg').show();\r\n }\r\n }\r\n\r\n const target = $event.target || $event.srcElement;\r\n target.value = '';\r\n }\r\n\r\n hideMessage() {\r\n $('#xmlOnlyMsg').hide();\r\n }\r\n\r\n private showDefaultModule() {\r\n this.configService.getDefaultModulePath()\r\n .subscribe(data => {\r\n const self = this;\r\n self.fileContentRead.emit( new FileDetails('Hello Assist 2.0', 'Hello_Assist.xml', data));\r\n });\r\n }\r\n\r\n private showTestModule() {\r\n this.configService.getDefaultTestModulePath()\r\n .subscribe(data => {\r\n const self = this;\r\n self.fileContentRead.emit( new FileDetails('Test Module', 'Test_Module.xml', data));\r\n });\r\n }\r\n\r\n private readThis(inputValue: any): void {\r\n this.readFile = inputValue.files[0];\r\n const self = this;\r\n const extensionStartPosition = self.readFile.name.lastIndexOf('.');\r\n this.fileReader.onloadend = (e) => {\r\n self.fileContentRead.emit(\r\n new FileDetails(self.readFile.name.substring(0, extensionStartPosition), self.readFile.name, this.fileReader.result.toString()));\r\n };\r\n\r\n this.fileReader.readAsText(this.readFile);\r\n }\r\n}\r\n","import { ViewUploadLoaderComponent } from './view-upload-loader/view-upload-loader.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FileUploadLoaderComponent } from './file-upload-loader/file-upload-loader.component';\r\nimport { GlobalsService } from './shared/services/globals.service';\r\n\r\nconst components = [FileUploadLoaderComponent, ViewUploadLoaderComponent];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [components],\r\n providers : [GlobalsService],\r\n exports: [components]\r\n})\r\nexport class SimulatorLoaderModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {AcrAssistSimulatorComponent as ɵd} from './src/app/modules/acr-assist-simulator/acr-assist-simulator/acr-assist-simulator.component';\nexport {AssistChoiceElementComponent as ɵj} from './src/app/modules/acr-assist-simulator/assist-data-element/assist-choice-element/assist-choice-element.component';\nexport {AssistDataElementComponent as ɵe} from './src/app/modules/acr-assist-simulator/assist-data-element/assist-data-element.component';\nexport {AssistDateTimeElementComponent as ɵu} from './src/app/modules/acr-assist-simulator/assist-data-element/assist-date-time-element/assist-date-time-element.component';\nexport {AssistDurationElementComponent as ɵv} from './src/app/modules/acr-assist-simulator/assist-data-element/assist-duration-element/assist-duration-element.component';\nexport {AssistMultiChoiceElementComponent as ɵk} from './src/app/modules/acr-assist-simulator/assist-data-element/assist-multi-choice-element/assist-multi-choice-element.component';\nexport {AssistNumericElementComponent as ɵi} from './src/app/modules/acr-assist-simulator/assist-data-element/assist-numeric-element/assist-numeric-element.component';\nexport {HintDiagramComponent as ɵh} from './src/app/modules/acr-assist-simulator/assist-data-element/hint-diagram/hint-diagram.component';\nexport {ImageMapComponent as ɵl} from './src/app/modules/acr-assist-simulator/assist-data-element/image-map/image-map.component';\nexport {AssistReportTextComponent as ɵm} from './src/app/modules/acr-assist-simulator/assist-report-text/assist-report-text.component';\nexport {ClipboardDirective as ɵs} from './src/app/modules/acr-assist-simulator/shared/directives/clipboard.directive';\nexport {DynamicHeightDirective as ɵn} from './src/app/modules/acr-assist-simulator/shared/directives/dynamicheight.directive';\nexport {IntegerMaxRestrictDirective as ɵr} from './src/app/modules/acr-assist-simulator/shared/directives/integer-restrict-value-greaterthan-max.directive';\nexport {NumericOnlyDirective as ɵo} from './src/app/modules/acr-assist-simulator/shared/directives/numeric-only.directive';\nexport {SecurePipe as ɵp} from './src/app/modules/acr-assist-simulator/shared/pipes/secure.pipe';\nexport {ClipboardService as ɵt} from './src/app/modules/acr-assist-simulator/shared/services/clipboard.service';\nexport {ResetCommunicationService as ɵg} from './src/app/modules/acr-assist-simulator/shared/services/reset-communication.service';\nexport {SimulatorCommunicationService as ɵf} from './src/app/modules/acr-assist-simulator/shared/services/simulator-communication.service';\nexport {UrlHelperService as ɵq} from './src/app/modules/acr-assist-simulator/shared/services/url-helper.service';\nexport {CoreModule as ɵa} from './src/app/modules/core/core.module';\nexport {SimulatorEngineService as ɵb} from './src/app/modules/core/services/simulator-engine.service';\nexport {UtilityService as ɵc} from './src/app/modules/core/services/utility.service';\nexport {FileUploadLoaderComponent as ɵw} from './src/app/modules/simulatorloader/file-upload-loader/file-upload-loader.component';\nexport {GlobalsService as ɵx} from './src/app/modules/simulatorloader/shared/services/globals.service';\nexport {ViewUploadLoaderComponent as ɵy} from './src/app/modules/simulatorloader/view-upload-loader/view-upload-loader.component';"],"names":["tslib_1.__values","_.find","_.remove","_.filter","_.cloneDeep","_.clone","_.each","tslib_1.__decorate","$","_.chain","_.map","_.orderBy","tslib_1.__param","components"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAEA;IAAA;QACE,8BAAyB,GAAa,EAAE,CAAC;QACzC,eAAU,GAAG,EAAE,CAAC;QAChB,4BAAuB,GAAG,EAAE,CAAC;QAC7B,+BAA0B,GAAG,EAAE,CAAC;QAChC,wBAAmB,GAAG,EAAE,CAAC;QACzB,gBAAW,GAAa,EAAE,CAAC;KAG5B;IAAD,qBAAC;CAAA,IAAA;;ACXD;IAAA;KAGC;IAAD,4BAAC;CAAA,IAAA;;;ICIC;KAAiB;IAEjB,wCAAe,GAAf,UAAgB,IAAS;QACvB,QAAQ,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE;KAC9C;IAED,wCAAe,GAAf,UAAgB,IAAW;QACzB,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE;YACX,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3B;QACD,OAAO,OAAO,CAAC;KAChB;IAED,yCAAgB,GAAhB,UAAiB,IAAS;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE;YACX,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SAC7C;QACD,OAAO,OAAO,CAAC;KAChB;IAED,uCAAc,GAAd,UAAe,IAAS;QACtB,IAAM,SAAS,GAAG,sCAAsC,CAAC;QACzD,OAAO,IAAI,KAAK,SAAS,CAAC;KAC3B;IAED,uCAAc,GAAd,UAAe,IAAY;;QAEzB,IAAM,SAAS,GAAG,uHAAuH,CAAC;QAC1I,OAAO,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;KACjC;IAED,mCAAU,GAAV,UAAW,IAAY;;QAErB,IAAM,QAAQ,GAAG,oGAAoG,CAAC;QACtH,OAAO,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KAChC;IAED,uCAAc,GAAd,UAAe,IAAY;QACzB,IAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE;YACX,IAAM,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,aAAa,CAAC,cAAc,EAAE,CAAC;SACvC;QACD,OAAO,IAAI,CAAC;KACb;IAED,wCAAe,GAAf,UAAgB,IAAY;QAC1B,IAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE;YACX,IAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5C,OAAO,WAAW,CAAC;SACpB;QACD,OAAO,IAAI,CAAC;KACb;IAED,kDAAyB,GAAzB,UAA0B,IAAY;QACpC,IAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE;YACX,IAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;YACzG,OAAO,WAAW,CAAC;SACpB;QACD,OAAO,IAAI,CAAC;KACb;IAED,oCAAW,GAAX,UAAY,IAAY;QACtB,IAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE;YACX,IAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;gBACpE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACzE,OAAO,aAAa,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;KACb;;IA5EU,cAAc;QAH1B,UAAU,CAAC;YACV,UAAU,EAAE,MAAM;SACnB,CAAC;OACW,cAAc,CA6E1B;yBAlFD;CAKA;;ACYA,IAAM,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;AACrD;IAkBE,gCAAoB,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QAd1C,2BAAsB,GAAG,IAAI,KAAK,EAAyB,CAAC;QAI5D,qBAAgB,GAAG,KAAK,CAAC;QACzB,gCAA2B,GAAG,CAAC,CAAC;QAChC,8BAAyB,GAAG,IAAI,KAAK,EAAU,CAAC;QAEhD,kCAA6B,GAAG,EAAE,CAAC;QACnC,cAAS,GAAG,EAAE,CAAC;QACf,kBAAa,GAAG,CAAC,CAAC;QAE1B,0BAAqB,GAAG,IAAI,eAAe,CAAiB,IAAI,cAAc,EAAE,CAAC,CAAC;QAGhF,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAe,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAe,CAAC;QAC/C,IAAI,CAAC,yBAAyB,GAAG,IAAI,KAAK,EAAU,CAAC;KACtD;IAED,4CAAW,GAAX;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,wDAAuB,GAAvB;QACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IAED,uDAAsB,GAAtB;QACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;IAED,oDAAmB,GAAnB,UAAoB,aAAqB;QACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;KAClD;IAED,mDAAkB,GAAlB,UAAmB,aAAqB;QACtC,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;KACjD;IAED,uDAAsB,GAAtB,UAAuB,aAAqB,EAAE,KAAU,EAAE,IAAS;;QAEjE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAEO,qEAAoC,GAA5C,UAA6C,yBAAmC;;QAC9E,IAAI,yBAAyB,KAAK,SAAS,EAAE;;gBAC3C,KAAuC,IAAA,8BAAAA,SAAA,yBAAyB,CAAA,oEAAA,2GAAE;oBAA7D,IAAM,wBAAwB,sCAAA;oBACjC,IAAI,YAAY,SAAK,CAAC;;wBACtB,KAA0B,IAAA,oBAAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;4BAAjD,IAAM,WAAW,WAAA;4BACpB,IAAI,WAAW,CAAC,EAAE,KAAK,wBAAwB,EAAE;gCAC/C,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;gCACxC,MAAM;6BACP;yBACF;;;;;;;;;oBAED,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;iBACpE;;;;;;;;;SACF;KACF;IAED,qEAAoC,GAApC,UAAqC,SAAiB,EAAE,aAA4B,EAAE,cAAc;;QAClG,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAM,4BAA4B,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC;;YACnE,KAAqB,IAAA,KAAAA,SAAA,aAAa,CAAC,QAAQ,CAAA,gBAAA,4BAAE;gBAAxC,IAAM,MAAM,WAAA;gBAEf,kBAAkB,EAAE,CAAC;gBACrB,IAAI,YAAY,GAAG,KAAK,CAAC;gBAEzB,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE;oBAC3C,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;iBAClG;qBAAM,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;oBACzC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;iBACzF;gBAED,IAAI,YAAY,EAAE;oBAChB,IAAI,CAAC,2BAA2B,GAAG,cAAc,CAAC;oBAClD,IAAI,MAAM,CAAC,cAAc,KAAK,SAAS,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE;;4BACvE,KAAkC,IAAA,oBAAAA,SAAA,MAAM,CAAC,cAAc,CAAA,CAAA,gBAAA,4BAAE;gCAApD,IAAM,mBAAmB,WAAA;gCAC5B,IAAM,iBAAiB,GAAG,cAAc,GAAG,CAAC,CAAC;gCAC7C,IAAI,CAAC,oCAAoC,CAAC,SAAS,EAAE,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;6BAC9F;;;;;;;;;qBACF;yBAAM,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS,EAAE;wBAC7C,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;wBAC3E,IAAI,MAAM,CAAC,aAAa,YAAY,oBAAoB,EAAE;4BACxD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;yBAC/G;6BAAM;4BACL,IAAI,IAAI,CAAC,wCAAwC,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE;gCACtF,IAAI,CAAC,qCAAqC,CAAC,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;6BAC5F;iCAAM;gCACL,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;6BAC5E;yBACF;wBACD,MAAM;qBACP;iBACF;qBAAM;oBACL,IAAI,kBAAkB,IAAI,4BAA4B,EAAE;wBACtD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;wBACjD,OAAO;qBACR;yBAAM;wBACL,SAAS;qBACV;iBACF;aACF;;;;;;;;;KACF;IAEO,sEAAqC,GAA7C,UAA8C,cAAc,EAAE,eAAe;;QAC3E,IAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACpD,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,UAAS,GAAG;YAC3D,OAAO,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,eAAe,KAAK,qBAAqB,CAAC,CAAC;SACnF,CAAC,CAAC;QAEH,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/D,IAAM,eAAe,GAAwB,MAAM,CAAC,CAAC,CAAwB,CAAC;;gBAC9E,KAA4B,IAAA,KAAAA,SAAA,eAAe,CAAC,cAAc,CAAA,gBAAA,4BAAE;oBAAvD,IAAM,aAAa,WAAA;oBACtB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC7F;;;;;;;;;SACF;KACF;IAEO,yEAAwC,GAAhD,UAAiD,cAAc;QAC7D,IAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1D,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,UAAS,GAAG;gBAC3D,OAAO,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,eAAe,KAAK,qBAAqB,CAAC,CAAC;aAC9E,CAAC,CAAC;YAEH,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/D,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;KACd;IAEO,6DAA4B,GAApC,UAAqC,aAAqB;QACxD,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;;YAEf,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE;gBACxC,IAAM,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACxE,IAAM,cAAc,GAAG,aAAa,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACzE,IAAI,gBAAgB,GAAG,OAAK,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBACjE,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE;oBAC7B,IAAI,KAAG,GAAG,CAAC,CAAC;oBACZ,gBAAgB,CAAC,OAAO,CAAC,UAAA,GAAG;wBAC1B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;4BACd,GAAG,GAAG,CAAC,CAAC;yBACT;wBACD,KAAG,IAAI,CAAC,GAAG,CAAC;qBACb,CAAC,CAAC;oBACH,gBAAgB,GAAG,KAAG,CAAC;iBACxB;gBAED,IAAI,gBAAgB,KAAK,SAAS,EAAE;oBAClC,gBAAgB,GAAG,CAAC,CAAC;iBACtB;gBAED,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;aAEzE;;;QAxBH,OAAO,UAAU,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC;;SAyB1C;QAED,OAAO,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;KAC5D;IAEO,4DAA2B,GAAnC;;QACE,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,eAAoB,CAAC;;YACzB,KAAsB,IAAA,KAAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA,gBAAA,4BAAE;gBAA7C,IAAM,OAAO,WAAA;gBAChB,IAAI,OAAO,CAAC,eAAe,KAAK,qBAAqB,EAAE;oBACrD,eAAe,GAAG,SAAS,CAAC;oBAC5B,IAAM,eAAe,GAAwB,OAA8B,CAAC;;wBAC5E,KAA4B,IAAA,oBAAAA,SAAA,eAAe,CAAC,cAAc,CAAA,CAAA,gBAAA,4BAAE;4BAAvD,IAAM,aAAa,WAAA;4BACtB,IAAI,CAAC,oCAAoC,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;4BACxE,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,SAAS,IAAI,aAAa,CAAC,aAAa;gCACrF,aAAa,CAAC,aAAa,CAAC,aAAa,EAAE;gCAC3C,IAAM,cAAc,GAAG,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC;gCAChF,IAAI,IAAI,CAAC,wCAAwC,CAAC,cAAc,CAAC,EAAE;oCACjE,IAAI,CAAC,qCAAqC,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;iCACxE;qCAAM;oCACL,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;iCACxD;6BACF;4BACD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;yBAC/B;;;;;;;;;iBACF;aACF;;;;;;;;;KACF;IAEO,4DAA2B,GAAnC,UAAoC,WAAW,EAAE,yBAAwC;;QAAxC,0CAAA,EAAA,8BAAwC;QACvF,IAAI,WAAW,CAAC,qBAAqB,KAAK,SAAS,EAAE;YACnD,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,oBAAoB,GAAG,KAAK,CAAC;;gBACjC,KAAkC,IAAA,KAAAA,SAAA,WAAW,CAAC,qBAAqB,CAAA,gBAAA,4BAAE;oBAAhE,IAAM,mBAAmB,WAAA;oBAC5B,IAAI,mBAAmB,CAAC,SAAS,KAAK,SAAS,EAAE;wBAC/C,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;wBACrG,oBAAoB,GAAG,KAAK,CAAC;qBAC9B;yBAAM,IAAI,mBAAmB,CAAC,kBAAkB,KAAK,SAAS,EAAE;wBAC/D,YAAY,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;wBAC9G,oBAAoB,GAAG,IAAI,CAAC;qBAC7B;oBAED,IAAI,YAAY,EAAE;wBAChB,IAAI,yBAAyB,KAAK,SAAS,EAAE;4BAC3C,IAAI,CAAC,yBAAyB,GAAG,IAAI,KAAK,EAAU,CAAC;yBACtD;wBAED,IAAI,mBAAmB,CAAC,UAAU,KAAK,OAAO,EAAE;4BAC9C,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;yBACrD;6BAAM;4BACL,IAAI,mBAAmB,CAAC,eAAe,KAAK,SAAS,EAAE;gCACrD,WAAW,CAAC,eAAe,GAAG,mBAAmB,CAAC,eAAe,CAAC;6BACnE;4BAED,WAAW,CAAC,UAAU,GAAG,mBAAmB,CAAC,UAAU,KAAK,SAAS;iCAClE,mBAAmB,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,MAAM,GAAG,IAAI,GAAG,KAAK;kCACrE,IAAI,CAAC;4BAET,IAAI,mBAAmB,CAAC,OAAO,KAAK,SAAS,IAAI,mBAAmB,CAAC,OAAO,IAAI,IAAI,EAAE;gCACpF,WAAW,CAAC,OAAO,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC;6BACpD;4BACD,IAAI,mBAAmB,CAAC,OAAO,KAAK,SAAS,IAAI,mBAAmB,CAAC,OAAO,IAAI,IAAI,EAAE;gCACpF,WAAW,CAAC,OAAO,GAAG,CAAC,mBAAmB,CAAC,OAAO,CAAC;6BACpD;4BAED,IAAI,WAAW,CAAC,eAAe,KAAK,mBAAmB,EAAE;gCACtD,WAAiC,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;;gCAE7F,IAAI,CAAC,6BAA6B,CAAE,WAAiC,CAAC,CAAC;;6BAExE;4BAED,IAAI,WAAW,CAAC,eAAe,KAAK,wBAAwB,EAAE;gCAC3D,WAAsC,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC;;gCAElG,IAAI,CAAC,kCAAkC,CAAE,WAAsC,CAAC,CAAC;gCAEjF,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE;oCACtE,IAAI,WAAW,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE;wCACrF,IAAM,cAAc,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,UAAC,IAAS,IAAK,OAAA,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAA,CAAC,CAAC;wCACrH,WAAW,CAAC,YAAY,GAAG,cAAc,CAAC;qCAC3C;iCACF;;6BAEF;4BAED,IAAI,WAAW,CAAC,eAAe,KAAK,qBAAqB,EAAE;gCACxD,WAAmC,CAAC,UAAU,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC;gCACjF,WAAmC,CAAC,UAAU,GAAG,CAAC,mBAAmB,CAAC,UAAU,CAAC;gCACjF,WAAmC,CAAC,YAAY,GAAG,CAAC,mBAAmB,CAAC,YAAY,CAAC;gCACrF,WAAmC,CAAC,YAAY,GAAG,CAAC,mBAAmB,CAAC,YAAY,CAAC;gCACrF,WAAmC,CAAC,cAAc,GAAG,CAAC,mBAAmB,CAAC,cAAc,CAAC;gCACzF,WAAmC,CAAC,eAAe,GAAG,CAAC,mBAAmB,CAAC,eAAe,CAAC;gCAC3F,WAAmC,CAAC,cAAc,GAAG,CAAC,mBAAmB,CAAC,cAAc,CAAC;gCACzF,WAAmC,CAAC,eAAe,GAAG,CAAC,mBAAmB,CAAC,eAAe,CAAC;6BAC7F;yBACF;wBAGD,OAAO,IAAI,CAAC,yBAAyB,CAAC;qBACvC;yBAAM;wBACL,IAAI,WAAW,CAAC,eAAe,KAAK,mBAAmB,EAAE;4BACtD,WAAiC,CAAC,iBAAiB,GAAG,IAAI,KAAK,EAAU,CAAC;yBAC5E;wBACD,IAAI,WAAW,CAAC,eAAe,KAAK,wBAAwB,EAAE;4BAC3D,WAAiC,CAAC,iBAAiB,GAAG,IAAI,KAAK,EAAU,CAAC;yBAC5E;qBACF;iBACF;;;;;;;;;SACF;KACF;IAED,8DAA6B,GAA7B,UAA8B,WAA8B;QAA5D,iBAQC;QAPC,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE;YACtE,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAC,CAAM;gBAC3C,IAAI,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,SAAS,IAAI,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;oBAChH,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;iBACvD;aACF,CAAC,CAAC;SACJ;KACF;IAED,mEAAkC,GAAlC,UAAmC,WAAmC;QACpE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,SAAS,EAAE;YAClI,IAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,UAAC,IAAS,IAAK,OAAA,CAAC,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAA,CAAC,CAAC;YACtI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;SAC3D;KACF;IAED,uEAAsC,GAAtC;;QACE,IAAI,CAAC,yBAAyB,GAAG,IAAI,KAAK,EAAU,CAAC;QACrD,IAAI,CAAC,qBAAqB,EAAE,CAAC;;YAC7B,KAA0B,IAAA,KAAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA,gBAAA,4BAAE;gBAAjD,IAAM,WAAW,WAAA;gBACpB,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,IAAI,KAAK,EAAU,CAAC,CAAC;aACpE;;;;;;;;;QAED,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC1E,yBAAyB,CAAC,0BAA0B,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC,yBAAyB,CAAC;KACvC;IAEO,sDAAqB,GAA7B;;;YACE,KAA0B,IAAA,KAAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA,gBAAA,4BAAE;gBAAjD,IAAM,WAAW,WAAA;gBACpB,WAAW,CAAC,UAAU,GAAG,WAAW,CAAC,mBAAmB,CAAC;gBACzD,WAAW,CAAC,eAAe,GAAG,WAAW,CAAC,wBAAwB,CAAC;gBACnE,IAAI,WAAW,CAAC,eAAe,KAAK,oBAAoB,EAAE;oBACvD,WAAkC,CAAC,OAAO,GAAG,CAAE,WAAkC,CAAC,gBAAgB,CAAC;oBACnG,WAAkC,CAAC,OAAO,GAAG,CAAE,WAAkC,CAAC,gBAAgB,CAAC;iBACrG;gBACD,IAAI,WAAW,CAAC,eAAe,KAAK,oBAAoB,EAAE;oBACvD,WAAkC,CAAC,OAAO,GAAG,CAAE,WAAkC,CAAC,gBAAgB,CAAC;oBACnG,WAAkC,CAAC,OAAO,GAAG,CAAE,WAAkC,CAAC,gBAAgB,CAAC;iBACrG;gBAED,IAAI,WAAW,CAAC,eAAe,KAAK,qBAAqB,EAAE;oBACxD,WAAmC,CAAC,UAAU,GAAG,CAAE,WAAmC,CAAC,mBAAmB,CAAC;oBAC3G,WAAmC,CAAC,UAAU,GAAG,CAAE,WAAmC,CAAC,mBAAmB,CAAC;oBAC3G,WAAmC,CAAC,YAAY,GAAG,CAAE,WAAmC,CAAC,qBAAqB,CAAC;oBAC/G,WAAmC,CAAC,YAAY,GAAG,CAAE,WAAmC,CAAC,qBAAqB,CAAC;oBAC/G,WAAmC,CAAC,cAAc,GAAG,CAAE,WAAmC,CAAC,uBAAuB,CAAC;oBACnH,WAAmC,CAAC,eAAe,GAAG,CAAE,WAAmC,CAAC,wBAAwB,CAAC;oBAErH,WAAmC,CAAC,eAAe,GAAG,CAAE,WAAmC,CAAC,wBAAwB,CAAC;oBACrH,WAAmC,CAAC,cAAc,GAAG,CAAE,WAAmC,CAAC,uBAAuB,CAAC;iBAErH;aACF;;;;;;;;;KACF;IAEO,mDAAkB,GAA1B,UAA2B,WAAW;QACpC,IAAM,YAAY,GAAGC,IAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,CAAoB,CAAC;QAChG,OAAO,YAAY,KAAK,SAAS,GAAG,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;KACnE;IAEO,6EAA4C,GAApD;QACE,IAAI,CAAC,sBAAsB,GAAG,EAAE,CAAC;KAClC;IAEO,4DAA2B,GAAnC;;;YACE,KAA4B,IAAA,KAAAD,SAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAA,gBAAA,4BAAE;gBAA3D,IAAM,aAAa,WAAA;gBACtBE,MAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;aAC7D;;;;;;;;;KACF;IAEO,wEAAuC,GAA/C;QACEA,MAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KACjE;IAEO,6DAA4B,GAApC;QACEA,MAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KACvE;IAEO,oEAAmC,GAA3C;QACEA,MAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9E;IAEO,8DAA6B,GAArC;QACE,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,gCAAgC,EAAE,CAAC;QACxC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,6BAA6B,EAAE,CAAC;KACtC;IAEO,8DAA6B,GAArC;;QACE,IAAI,CAAC,mCAAmC,EAAE,CAAC;;YAC3C,KAAgC,IAAA,KAAAF,SAAA,IAAI,CAAC,6BAA6B,CAAA,gBAAA,4BAAE;gBAA/D,IAAM,iBAAiB,WAAA;gBAC1B,IAAM,qBAAqB,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9D,IAAM,mBAAmB,GAAGG,MAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChH,IAAI,mBAAmB,KAAK,SAAS,EAAE;oBACrC,IAAM,sBAAsB,GAAGC,SAAW,CAAC,mBAAmB,CAAoB,CAAC;oBACnF,sBAAsB,CAAC,EAAE,GAAG,iBAAiB,CAAC;oBAC9C,sBAAsB,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC9C,IAAI,WAAW,GAAG,EAAE,CAAC;;wBACrB,KAAsB,IAAA,qBAAAJ,SAAA,sBAAsB,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;4BAAlD,IAAM,OAAO,WAAA;4BAChB,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE;gCAC5C,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,UAAA,WAAW,IAAI,OAAA,WAAW,CAAC,EAAE,GAAA,CAAC,CAAC;gCACrF,WAAW,GAAG,EAAE,CAAC;;oCAEjB,KAAwB,IAAA,qBAAAA,SAAA,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAA,CAAA,gBAAA,4BAAE;wCAA1D,IAAI,WAAW,WAAA;wCAClB,IAAI,WAAW,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;;gDAC7E,KAA2B,IAAA,mCAAAA,SAAA,cAAc,CAAA,CAAA,8CAAA,0EAAE;oDAAtC,IAAM,YAAY,2BAAA;;oDAErB,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;iDACtJ;;;;;;;;;yCACF;wCAED,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC;wCACnC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;qCAC/B;;;;;;;;;gCAED,OAAO,CAAC,kBAAkB,CAAC,UAAU,GAAG,WAAW,CAAC;6BACrD;4BAED,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE;gCAC9E,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;sCACvG,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;6BAC3C;;gCAED,KAAyB,IAAA,qBAAAA,SAAA,OAAO,CAAC,UAAU,CAAA,CAAA,gBAAA,4BAAE;oCAAxC,IAAM,UAAU,WAAA;oCACnB,IAAM,WAAW,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;oCACjD,IAAI,WAAW,YAAY,aAAa,EAAE;wCACxC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qCAC7G;oCAED,IAAI,WAAW,YAAY,WAAW,EAAE;wCACtC,UAAU,CAAC,WAAW,CAAC,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qCAC7G;iCACF;;;;;;;;;yBACF;;;;;;;;;oBAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;iBACtE;aACF;;;;;;;;;KACF;IAEO,uDAAsB,GAA9B;;QACE,IAAI,CAAC,6BAA6B,GAAG,EAAE,CAAC;QACxC,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,gBAAgB,GAAG,EAAE,CAAC;;YAC1B,KAA4B,IAAA,KAAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAA,gBAAA,4BAAE;gBAA3D,IAAM,aAAa,WAAA;gBACtB,gBAAgB,GAAGG,MAAQ,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;aAChF;;;;;;;;;;YAED,KAA8B,IAAA,qBAAAH,SAAA,gBAAgB,CAAA,kDAAA,gFAAE;gBAA3C,IAAM,eAAe,6BAAA;gBACxB,IAAM,YAAY,GAAGG,MAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjI,IAAM,eAAe,GAAGC,SAAW,CAAC,YAAY,CAAiB,CAAC;gBAClE,eAAe,CAAC,EAAE,GAAG,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC;gBAC5D,eAAe,CAAC,eAAe,GAAG,IAAI,CAAC;gBAEvC,IAAM,SAAS,GAAG,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;;oBACvE,KAA4B,IAAA,qBAAAJ,SAAA,eAAe,CAAC,cAAc,CAAA,CAAA,gBAAA,4BAAE;wBAAvD,IAAM,aAAa,WAAA;;4BACtB,KAAsB,IAAA,qBAAAA,SAAA,aAAa,CAAC,MAAM,CAAA,CAAA,gBAAA,4BAAE;gCAAvC,IAAM,OAAO,WAAA;gCAEhB,IAAI,OAAO,CAAC,kBAAkB,KAAK,SAAS,EAAE;oCAC5C,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,UAAA,WAAW,IAAI,OAAA,WAAW,CAAC,EAAE,GAAA,CAAC,CAAC;;wCACrF,KAAwB,IAAA,qBAAAA,SAAA,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAA,CAAA,gBAAA,4BAAE;4CAA1D,IAAI,WAAW,WAAA;4CAClB,IAAI,WAAW,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE;;oDAC7E,KAA2B,IAAA,mCAAAA,SAAA,cAAc,CAAA,CAAA,8CAAA,0EAAE;wDAAtC,IAAM,YAAY,2BAAA;;wDAErB,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC;qDAChI;;;;;;;;;6CACF;4CAED,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC;4CACnC,OAAO,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;yCACzD;;;;;;;;;iCACF;gCAED,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,OAAO,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE;oCAC9E,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;0CACvG,GAAG,GAAG,SAAS,CAAC;iCACrB;;oCAED,KAAyB,IAAA,qBAAAA,SAAA,OAAO,CAAC,UAAU,CAAA,CAAA,gBAAA,4BAAE;wCAAxC,IAAM,UAAU,WAAA;wCACnB,IAAM,WAAW,GAAG,UAAU,CAAC,eAAe,EAAE,CAAC;wCACjD,IAAI,WAAW,YAAY,aAAa,EAAE;4CACxC,UAAU,CAAC,aAAa,CAAC,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;4CACtF,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;yCAC7E;wCAED,IAAI,WAAW,YAAY,WAAW,EAAE;4CACtC,UAAU,CAAC,WAAW,CAAC,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;yCACvF;qCACF;;;;;;;;;6BACF;;;;;;;;;qBACF;;;;;;;;;gBAED,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACxD;;;;;;;;;KACF;IAEO,iEAAgC,GAAxC;;QACE,IAAI,CAAC,uCAAuC,EAAE,CAAC;;YAE/C,KAAoC,IAAA,KAAAA,SAAA,IAAI,CAAC,sBAAsB,CAAA,gBAAA,4BAAE;gBAA5D,IAAM,qBAAqB,WAAA;gBAC9B,IAAM,iBAAiB,GAAG,qBAAqB,CAAC,iBAAiB,CAAC;gBAClE,IAAM,qBAAqB,GAAG,qBAAqB,CAAC,sBAAsB,CAAC;gBAE3E,IAAI,iBAAiB,KAAK,EAAE,IAAI,qBAAqB,KAAK,EAAE,EAAE;oBAC5D,IAAIC,IAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,qBAAqB,EAAE,CAAC,KAAK,SAAS,EAAE;wBACnF,IAAM,mBAAmB,GAAGA,IAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAwB,CAAC;wBACjH,IAAI,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,CAAC,eAAe,KAAK,qBAAqB,EAAE;4BACtG,IAAM,2BAA2B,GAAGG,SAAW,CAAC,mBAAmB,CAAwB,CAAC;4BAC5F,2BAA2B,CAAC,EAAE,GAAG,qBAAqB,CAAC;4BACvD,2BAA2B,CAAC,eAAe,GAAG,IAAI,CAAC;4BACnD,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,UAAA,WAAW,IAAI,OAAA,WAAW,CAAC,EAAE,GAAA,CAAC,CAAC;4BACrF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,mBAAmB,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gCAC9E,2BAA2B,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;;oCAChE,KAA4B,IAAA,qBAAAJ,SAAA,mBAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;wCAA3E,IAAI,eAAe,WAAA;;4CACtB,KAA2B,IAAA,mCAAAA,SAAA,cAAc,CAAA,CAAA,8CAAA,0EAAE;gDAAtC,IAAM,YAAY,2BAAA;;gDAErB,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;;gDAEjK,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;6CACnK;;;;;;;;;wCAED,eAAe,CAAC,eAAe,GAAG,IAAI,CAAC;wCACvC,2BAA2B,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;qCAClF;;;;;;;;;6BACF;4BAED,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;yBAC9D;qBACF;iBACF;aACF;;;;;;;;;KACF;IAED,sDAAqB,GAArB,UAAsB,OAAO,EAAE,MAAM,EAAE,MAAM;QAC3C,IAAM,SAAS,GAAGK,KAAO,CAAC,MAAM,CAAC,CAAC;QAClCC,IAAM,CAAC,MAAM,EAAE,UAAC,GAAG,EAAE,GAAG;YACtB,IAAI,GAAG,YAAY,oBAAoB,EAAE;gBACvC,SAAS,CAAC,GAAG,CAAC,CAAC,cAAc,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aACxF;SACF,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;KAClB;IAED,qDAAoB,GAApB,UAAqB,OAAO,EAAE,MAAM,EAAE,MAAM;QAA5C,iBAWC;QAVC,IAAM,SAAS,GAAGD,KAAO,CAAC,MAAM,CAAC,CAAC;QAClCC,IAAM,CAAC,MAAM,EAAE,UAAC,GAAG,EAAE,GAAG;YACtB,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;aACzB;iBAAM,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,YAAY,KAAK,EAAE;gBAC5D,SAAS,CAAC,GAAG,CAAC,GAAG,KAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;aAClE;SACF,CAAC,CAAC;QAEH,OAAO,SAAS,CAAC;KAClB;IAEO,gEAA+B,GAAvC;;QACE,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,4CAA4C,EAAE,CAAC;;YACpD,KAA4B,IAAA,KAAAN,SAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAA,gBAAA,4BAAE;gBAA3D,IAAM,aAAa,WAAA;;oBACtB,KAAqB,IAAA,qBAAAA,SAAA,aAAa,CAAC,QAAQ,CAAA,CAAA,gBAAA,4BAAE;wBAAxC,IAAM,MAAM,WAAA;;wBAEf,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,CAAC,YAAY,KAAK,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE;4BAC5I,IAAM,aAAa,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;4BAC/E,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,GAAG,CAAC,EAAE;gCACpD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,EAAE,KAAK,EAAE,EAAE;oCAClD,IAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC;oCACxD,IAAM,OAAO,GAAGI,SAAW,CAAC,MAAM,CAAC,CAAC;oCACpC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;oCAC/B,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE;wCACrC,OAAO,CAAC,WAAW,CAAC,YAAY,GAAG,KAAK,CAAC;wCACzC,OAAO,CAAC,WAAW,CAAC,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;8CACxE,GAAG,GAAG,gBAAgB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;qCAC1C;oCAED,IAAI,OAAO,CAAC,mBAAmB,KAAK,SAAS,EAAE;wCAC7C,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,UAAA,WAAW,IAAI,OAAA,WAAW,CAAC,EAAE,GAAA,CAAC,CAAC;wCACrF,OAAO,CAAC,mBAAmB,CAAC,UAAU,GAAG,EAAE,CAAC;;4CAC5C,KAAwB,IAAA,qBAAAJ,SAAA,MAAM,CAAC,mBAAmB,CAAC,UAAU,CAAA,CAAA,gBAAA,4BAAE;gDAA1D,IAAI,WAAW,WAAA;;oDAClB,KAA2B,IAAA,mCAAAA,SAAA,cAAc,CAAA,CAAA,8CAAA,0EAAE;wDAAtC,IAAM,YAAY,2BAAA;;wDAErB,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,gBAAgB,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;;wDAEpJ,IAAI,CAAC,uCAAuC,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,gBAAgB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;qDAC7I;;;;;;;;;gDAED,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;6CAC1D;;;;;;;;;qCACF;oCAED,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,QAAQ,MAAM,CAAC,SAAS,CAAC,KAAK,QAAQ,EAAE;wCAC5E,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;8CACtG,GAAG,GAAG,gBAAgB,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;qCAC1C;oCAED,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iCACtC;6BACF;yBACF;qBACF;;;;;;;;;aACF;;;;;;;;;KACF;IAEO,wEAAuC,GAA/C,UAAgD,iBAAiB,EAAE,qBAAqB;QACtF,IAAM,oBAAoB,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACzD,IAAM,mBAAmB,GAAGC,IAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAoB,CAAC;QAC7G,IAAI,mBAAmB,KAAK,SAAS,IAAI,mBAAmB,CAAC,eAAe,KAAK,qBAAqB,EAAE;YACtG,oBAAoB,CAAC,sBAAsB,GAAG,qBAAqB,CAAC;YACpE,oBAAoB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAC3D,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;SAC3E;KACF;IAED,qDAAoB,GAApB,eAA0B;IAEnB,uDAAsB,GAA7B;;QACE,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE;YACzF,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAChC,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,sCAAsC,EAAE,CAAC;YAC9C,IAAI,CAAC,6BAA6B,EAAE,CAAC;YACrC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACtG,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC;YAC/C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC;YAElD,IAAM,UAAU,GAAG,kCAAkC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7G,IAAM,eAAe,GAAG,IAAI,cAAc,EAAE,CAAC;YAC7C,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,eAAe,CAAC,cAAc,GAAG,UAAU,CAAC;;oBAC5C,KAAwB,IAAA,KAAAD,SAAA,IAAI,CAAC,SAAS,CAAA,gBAAA,4BAAE;wBAAnC,IAAM,SAAS,WAAA;wBAClB,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBAC7C;;;;;;;;;aACF;YAED,eAAe,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;YACrD,eAAe,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;YAC3E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SAClD;KACF;IAED,2CAAU,GAAV,UAAW,QAAkB;;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,EAAe,CAAC;QAChD,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAe,CAAC;;YAC/C,KAA0B,IAAA,KAAAA,SAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAA,gBAAA,4BAAE;gBAAjD,IAAM,WAAW,WAAA;gBACpB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;aACtE;;;;;;;;;KACF;;gBAxmBmC,cAAc;;IAfvC,sBAAsB;QADlC,UAAU,EAAE;OACA,sBAAsB,CAwnBlC;IAAD,6BAAC;CAxnBD;;;ICRA;KAUE;mBAVW,UAAU;IACd,kBAAO,GAAd;QACE,OAAO;YACL,QAAQ,EAAE,YAAU;YACpB,SAAS,EAAE;gBACT,sBAAsB;gBACtB,cAAc;aACf;SACF,CAAC;KACH;;IATU,UAAU;QAPtB,QAAQ,CAAC;YACR,OAAO,EAAE;gBACP,YAAY;gBACZ,YAAY,CAAC,OAAO,EAAE;aACvB;YACD,YAAY,EAAE,EAAE;SACjB,CAAC;OACW,UAAU,CAUrB;IAAD,iBAAC;CAVF;;ACbA;IAGI;QACI,IAAI,CAAC,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;KACxD;IACL,oBAAC;CAAA,IAAA;AAED;IAAA;KAGC;IAAD,yBAAC;CAAA,IAAA;AAED;IAAA;KAGC;IAAD,0BAAC;CAAA,IAAA;AAED,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC1B,yDAAG,CAAA;IACH,6DAAK,CAAA;CACR,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B;;ACRD,IAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAO5B;IAyCE,qCACU,sBAA8C,EAC9C,MAAqB,EACrB,cAA8B;QAF9B,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,WAAM,GAAN,MAAM,CAAe;QACrB,mBAAc,GAAd,cAAc,CAAgB;QAxCxC,gBAAW,GAAc,EAAE,CAAC;QAI5B,aAAQ,GAAG,kBAAkB,CAAC;QAG9B,sBAAiB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QASjE,gBAAW,GAAgB,EAAE,CAAC;QAE9B,oBAAe,GAAG,IAAI,CAAC;QACvB,mBAAc,GAAG,IAAI,CAAC;QAOtB,aAAQ,GAAkB,EAAE,CAAC;QAC7B,0BAAqB,GAAG,KAAK,CAAC;QAC7B,2BAAsB,GAAsB,IAAI,YAAY,EAAO,CAAC;QACpE,6BAAwB,GAA8B,IAAI,YAAY,EAAe,CAAC;QACtF,0BAAqB,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3C,qBAAgB,GAAiC,IAAI,YAAY,EAAkB,CAAC;QACpF,uCAAkC,GAAyB,IAAI,YAAY,EAAU,CAAC;KAS/F;IAED,8CAAQ,GAAR;QAAA,iBAMC;QALC,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,EAAE;YACpC,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,UAAC,KAAK;gBACtE,KAAI,CAAC,aAAa,EAAE,CAAC;aACtB,CAAC,CAAC;SACJ;KACF;IAED,iDAAW,GAAX;QAAA,iBAkDC;QAjDC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAE5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAC5H,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;QAE/B,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;SACR;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACxD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/C;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACzD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;SAC3C;QAED,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACzD,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;QAED,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAE/C,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE;YACjD,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,EAAW,CAAC;SACzC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC5B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,IAAI;gBAC1C,IAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC9B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBAC3B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACjC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBACrC,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAChC,CAAC,CAAC;SACJ;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACtD,IAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,KAAK,KAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAA,CAAC,CAAC;YAC1E,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;gBAChD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;aACjC;SACF;QAED,IAAM,OAAO,GAAG,IAAI,CAAC;QACrB,UAAU,CAAC,UAAU,CAAC;YACpB,OAAO,CAAC,gBAAgB,EAAE,CAAC;SAC5B,EAAE,GAAG,CAAC,CAAC;KACT;IAED,qDAAe,GAAf,UAAgB,KAAK,EAAE,OAAO;QAC5B,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,wBAAwB,CAAC;QAC5C,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;KACxB;IAED,iDAAW,GAAX,UAAY,KAAK,EAAE,OAAO;QACxB,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE;YACxD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;SACxB;aAAM;YACL,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;SACzB;KACF;IAED,iDAAW,GAAX;QACE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE;YACrE,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;SAC5C;KACF;IAED,sDAAgB,GAAhB;QAAA,iBA2CC;QA1CC,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACvD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;SAClE;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACxD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;SAChE;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACzD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;SACtE;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;YAC9D,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;SAChF;QAED,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,GAAG,sCAAsC,CAAC;QACrF,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACtD,IAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC;YAC5D,IAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,IAAM,oBAAkB,GAAG,IAAI,KAAK,EAAU,CAAC;YAC/C,YAAY,CAAC,OAAO,CAAC,UAAA,SAAS;gBAC5B,KAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,GAAG;oBACvB,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,oBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;wBAC5E,oBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBAC9B;iBACF,CAAC,CAAC;aACJ,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,oBAAkB,CAAC,EAAE;gBAC3D,oBAAkB,CAAC,OAAO,CAAC,UAAA,gBAAgB;oBACzC,IAAI,aAAa,GAAG,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC3E,IAAI,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,aAAa,CAAC,EAAE;wBACtD,IAAI,aAAa,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,EAAE;4BACjD,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,GAAG,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,GAAG,GAAG,GAAG,gBAAgB,CAAC;yBACpH;qBACF;yBAAM;wBACL,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,GAAG,KAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,GAAG,GAAG,GAAG,gBAAgB,CAAC;qBACpH;iBACF,CAAC,CAAC;aACJ;SACF;KACF;IAED,qDAAe,GAAf,UAAgB,KAAa;QAC3B,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;YAC/C,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAC7C,OAAO,KAAK,CAAC;aACd;iBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBAClE,OAAU,IAAI,CAAC,aAAa,SAAI,KAAO,CAAC;aACzC;SACF;KACF;IAED,kDAAY,GAAZ,UAAa,OAAgB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,EAAE;YACvC,OAAO,EAAE,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC;SACzC,CAAC,CAAC;KACJ;IAED,mDAAa,GAAb;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAM,KAAK,GAAG,IAAI,CAAC;QACnB,UAAU,CAAC,UAAU,CAAC;YACpB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;KACnC;IAED,uDAAiB,GAAjB,UAAkB,UAA0B;QAC1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEvC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACxD,CAAC,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;SAC7C;KACF;IAED,8DAAwB,GAAxB,UAAyB,qBAA2C;QAClE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;KACzD;IAED,iEAA2B,GAA3B,UAA4B,IAAiB;QAC3C,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1C;IAED,2DAAqB,GAArB,UAAsB,IAAY;QAChC,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpD;IAED,oDAAc,GAAd,UAAe,KAAK;QAApB,iBA2BC;QA1BC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,EAAW,CAAC;gCAC/B,CAAC;YACR,IAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAChC,IAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC3C,OAAO,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;YAE5C,IAAI,EAAE,OAAK,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACtE,OAAK,aAAa,GAAG,IAAI,CAAC;aAC3B;YAED,MAAM,CAAC,MAAM,GAAG,UAAC,MAAW;gBAC1B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;aAC7C,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAE5C,MAAM,CAAC,SAAS,GAAG,UAAC,MAAW;gBAC7B,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAChC,CAAC;;;QAlBJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE;oBAAzC,CAAC;SAmBT;QAED,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YAChD,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;KACF;IAED,qDAAe,GAAf;QACE,IAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QACxC,IAAM,gBAAgB,GAAG,CAAC,CAAC,uBAAuB,CAAC,CAAC,MAAM,EAAE,CAAC;QAC7D,IAAM,MAAM,GAAG,YAAY,GAAG,gBAAgB,GAAG,GAAG,CAAC;QACrD,IAAI,gBAAgB,KAAK,CAAC,EAAE;YAC1B,CAAC,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC/C;aAAM;YACL,CAAC,CAAC,2BAA2B,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;SACtD;KACF;IAED,wDAAkB,GAAlB;QACE,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACjD,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YACjD,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC7C,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;gBACxB,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC;SACJ;aAAM;YACL,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAChD,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC9C,CAAC,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC3C;KACF;IAED,wDAAkB,GAAlB;QACE,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;YACjD,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YACjD,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC7C,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC;gBACxB,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC;SACJ;aAAM;YACL,CAAC,CAAC,kBAAkB,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAChD,CAAC,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC9C,CAAC,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC3C;KACF;IAED,0DAAoB,GAApB;QAAA,iBAgCC;QA/BC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,YAAY;YAC7C,IAAM,UAAU,GAAG,KAAI,CAAC,WAAW,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,GAAA,CAAC,CAAC;YACjH,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrD,IAAI,YAAY,CAAC,eAAe,KAAK,mBAAmB,IAAI,YAAY,CAAC,eAAe,KAAK,wBAAwB,EAAE;oBACrH,IAAM,aAAa,GAAG,YAAiC,CAAC;oBACxD,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,EAAE;wBACjD,IAAM,QAAM,GAAG,EAAE,CAAC;wBAClB,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,MAAM;4BACrC,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAA,KAAK;gCAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE,EAAE;oCACtD,QAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iCAC3B;6BACF,CAAC,CAAC;yBACJ,CAAC,CAAC;wBACH,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,QAAM,CAAC;qBACzC;yBAAM;wBACL,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,MAAM;4BAErC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,KAAK,SAAS,EAAE;gCAChD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE;oCAC/E,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC;oCAC9C,OAAO;iCACR;6BACF;yBAEF,CAAC,CAAC;qBACJ;iBACF;gBACD,YAAY,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;aAC5D;SACF,CAAC,CAAC;KACJ;IAED,oDAAc,GAAd,UAAe,KAAY;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAClD;IAED,sDAAgB,GAAhB,UAAiB,KAAa;QAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;KACzD;IAED,+DAAyB,GAAzB,UAA0B,oCAAoC;QAC5D,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,oCAAoC,CAAC,EAAE;YAC7E,IAAI,IAAI,GAAG,oCAAoC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAC3B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;SACzD;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAClD;;KAEF;;gBArTiC,sBAAsB;gBACtC,aAAa;gBACL,cAAc;;IA9B/BO;QAAR,KAAK,EAAE;2FAA6C;IAC5CA;QAAR,KAAK,EAAE;4EAAmC;IAClCA;QAAR,KAAK,EAAE;wEAAyB;IACxBA;QAAR,KAAK,EAAE;sEAAuB;IACtBA;QAAR,KAAK,EAAE;uEAAyB;IACxBA;QAAR,KAAK,EAAE;2EAAwC;IACvCA;QAAR,KAAK,EAAE;oEAA+B;IAC9BA;QAAR,KAAK,EAAE;kEAAmB;IAClBA;QAAR,KAAK,EAAE;wEAAwB;IACvBA;QAAR,KAAK,EAAE;uEAAuB;IACtBA;QAAR,KAAK,EAAE;iEAAkB;IACjBA;QAAR,KAAK,EAAE;mEAAoB;IACnBA;QAAR,KAAK,EAAE;kEAAmB;IAClBA;QAAR,KAAK,EAAE;wEAAyB;IACxBA;QAAR,KAAK,EAAE;iEAAoB;IACnBA;QAAR,KAAK,EAAE;6EAAgD;IAC/CA;QAAR,KAAK,EAAE;iEAA8B;IAC7BA;QAAR,KAAK,EAAE;8EAA+B;IAC7BA;QAAT,MAAM,EAAE;+EAAqE;IACpEA;QAAT,MAAM,EAAE;iFAAuF;IACtFA;QAAT,MAAM,EAAE;8EAA4C;IAC3CA;QAAT,MAAM,EAAE;yEAAqF;IACpFA;QAAT,MAAM,EAAE;2FAAuF;IAEnDA;QAA5C,SAAS,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;oEAAkB;IACIA;QAAjE,SAAS,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;uEAAoC;IAvC1F,2BAA2B;QALvC,SAAS,CAAC;YACT,QAAQ,EAAE,sBAAsB;YAChC,02gBAAoD;;SAErD,CAAC;OACW,2BAA2B,CAgWvC;IAAD,kCAAC;CAhWD;;ACpBA;IAKI;QACI,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;KAErC;IACL,gBAAC;CAAA,IAAA;;;ICPD;;QAGY,oBAAe,GAAG,IAAI,OAAO,EAAU,CAAC;;QAGhD,qBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAM1D;;IAHG,sDAAc,GAAd,UAAe,OAAe;QAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACtC;IAVQ,6BAA6B;QADzC,UAAU,EAAE;OACA,6BAA6B,CAWzC;IAAD,oCAAC;CAXD;;ACFA;IAII;QACG,IAAI,CAAC,uBAAuB,GAAG,IAAI,KAAK,EAA2B,CAAC;KACtE;IACL,2BAAC;CAAA,IAAA;;ACTD;IAAA;QAEI,kBAAa,GAAU,EAAE,CAAC;KAE7B;IAAD,8BAAC;CAAA,IAAA;;;ICDD;;QAGY,gBAAW,GAAG,IAAI,OAAO,EAAU,CAAC;;QAG5C,iBAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KAMlD;;IAHG,kDAAc,GAAd,UAAe,OAAe;QAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAClC;IAVQ,yBAAyB;QADrC,UAAU,EAAE;OACA,yBAAyB,CAWrC;IAAD,gCAAC;CAXD;;ACFA;IAAA;KAIC;IAAD,oBAAC;CAAA,IAAA;;ACND;IAAA;KAIC;IAAD,4BAAC;CAAA,IAAA;;ACaD,IAAMC,GAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAQ5B;IA+BE,oCACU,sBAA8C,EAC9C,cAA8B,EAC9B,6BAA4D,EACpE,yBAAoD;QAJtD,iBAWC;QAVS,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,mBAAc,GAAd,cAAc,CAAgB;QAC9B,kCAA6B,GAA7B,6BAA6B,CAA+B;QA7BtE,yBAAoB,GAAa,EAAE,CAAC;QACpC,sBAAiB,GAAU,EAAE,CAAC;QAC9B,4BAAuB,GAA4B,EAAE,CAAC;QAEtD,0BAAqB,GAAU,EAAE,CAAC;QAUzB,cAAS,GAAG,EAAE,CAAC;QAKf,gBAAW,GAAgB,EAAE,CAAC;QAC7B,uCAAkC,GAAyB,IAAI,YAAY,EAAU,CAAC;QACtF,qBAAgB,GAAiC,IAAI,YAAY,EAAkB,CAAC;QACpF,2BAAsB,GAAuC,IAAI,YAAY,EAAwB,CAAC;QACtG,6BAAwB,GAA8B,IAAI,YAAY,EAAe,CAAC;QACtF,8BAAyB,GAA0B,IAAI,YAAY,EAAW,CAAC;QAQvF,IAAI,CAAC,uBAAuB,GAAG,yBAAyB,CAAC,YAAY,CAAC,SAAS,CAC7E,UAAA,OAAO;YACL,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,KAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;SACjC,CAAC,CAAC;KACN;IAED,6CAAQ,GAAR;QAAA,iBA2EC;QA1EC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,SAAS,CAAC,UAAC,OAAO;;YACpG,KAAI,CAAC,cAAc,GAAG,OAAyB,CAAC;YAEhD,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,oBAAoB,KAAK,IAAI,GAAA,CAAC,CAAC,OAAO,CAAC,UAAA,YAAY;gBACjF,YAAY,CAAC,YAAY,GAAG,SAAS,CAAC;gBACtC,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;aACxD,CAAC,CAAC;YAEH,KAAI,CAAC,iBAAiB,GAAG,KAAI,CAAC,cAAc,CAAC,cAAc,CAAC;YAC5D,IAAI,KAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,KAAI,CAAC,iBAAiB,CAAC,SAAS,KAAK,SAAS;mBACrF,KAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,mBAAmB,KAAK,SAAS;gBACrE,KAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjE,KAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,UAAA,UAAU;oBACrE,IAAM,sBAAsB,GAAG,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,aAAa;2BACzF,CAAC,CAAC,oBAAoB,KAAK,IAAI,GAAA,CAAC,CAAC;oBACtC,IAAI,sBAAsB,KAAK,SAAS,IAAI,sBAAsB,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;wBACnF,sBAAsB,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC;wBAC1D,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;qBACxE;iBACF,CAAC,CAAC;aACJ;YAED,KAAI,CAAC,iBAAiB,GAAG,KAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC;YAE/E,IAAM,cAAc,GAAG,KAAI,CAAC,cAAc,CAAC,cAAc,CAAC;YAC1D,IAAM,cAAc,GAAG,KAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC;;gBACrE,KAA0B,IAAA,KAAAR,SAAA,KAAI,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAAxC,IAAM,WAAW,WAAA;oBACpB,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC/C,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;4BAC/C,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;yBAC/B;6BAAM;4BACL,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;yBAC9B;qBACF;yBAAM;wBACL,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;qBAC9B;;oBAED,IAAI,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,SAAS,IAAI,WAAW,CAAC,YAAY,KAAK,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;wBACvI,WAAW,CAAC,YAAY,GAAG,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;qBACvE;;oBAED,WAAW,CAAC,YAAY,GAAG,CAAC,WAAW,CAAC,YAAY,KAAK,SAAS,IAAI,WAAW,CAAC,YAAY,GAAG,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;iBAC7I;;;;;;;;;YAED,KAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;;YAElF,KAAI,CAAC,YAAY,GAAG,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,eAAe,IAAI,IAAI,GAAA,CAAC,CAAC,IAAI,CAAC,UAAS,IAAI,EAAE,IAAI,IAAI,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAEhK,IAAI,KAAI,CAAC,qBAAqB,EAAE;gBAC9B,KAAI,CAAC,iBAAiB,GAAG,IAAI,cAAc,EAAE,CAAC;gBAC9C,KAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,KAAI,CAAC,mBAAmB,EAAE,CAAC;gBAClE,IAAI,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;oBAC3E,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;oBACpF,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAC;iBACpD;qBAAM;oBACL,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBACvC;aACF;iBAAM,IAAI,KAAI,CAAC,iBAAiB,KAAK,SAAS,IAAI,KAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClG,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAC;aACpD;iBAAM;gBACL,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACvC;YAED,KAAI,CAAC,aAAa,GAAG,EAAE,CAAC;;gBACxB,KAA0B,IAAA,KAAAA,SAAA,KAAI,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAAxC,IAAM,WAAW,WAAA;oBACpB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;wBAC7B,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;qBACtC;iBACF;;;;;;;;;YAED,KAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC7D,KAAI,CAAC,6BAA6B,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;SACvD,CAAC,CAAC;KACJ;IAED,gDAAW,GAAX;;QAAA,iBAcC;QAbC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;;QAElF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,eAAe,IAAI,IAAI,GAAA,CAAC,CAAC,IAAI,CAAC,UAAS,IAAI,EAAE,IAAI,IAAI,OAAO,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAChK,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAE5B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;;YACxB,KAA0B,IAAA,KAAAA,SAAA,IAAI,CAAC,YAAY,CAAA,gBAAA,4BAAE;gBAAxC,IAAM,WAAW,WAAA;gBACpB,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;oBAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBACtC;aACF;;;;;;;;;QAED,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,CAAC;KACtD;IAED,gDAAW,GAAX;QACE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE;YACrE,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,CAAC;SAC5C;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE;YACxE,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;SAC/C;KACF;IAED,mDAAc,GAAd,UAAe,MAAM;QACnB,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE;gBAClF,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,GAAG,eAAe,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC;gBACpH,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,aAAa,EACvH,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;gBACvC,IAAM,eAAe,GAAa,EAAE,CAAC;gBACrC,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;gBACrG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAAC;gBACvF,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC;SACF;aAAM;YACL,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;KACF;IAED,oDAAe,GAAf,UAAgB,MAAM;QACpB,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE;gBAClF,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,aAAa,EACvH,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACxC,IAAM,eAAe,GAAa,EAAE,CAAC;gBACrC,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;gBACrG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAAC;gBACvF,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC;SACF;aAAM;YACL,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;KACF;IAED,mDAAc,GAAd,UAAe,KAAK;QAClB,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5C;IAED,6DAAwB,GAAxB,UAAyB,KAAK;;QAC5B,IAAI,OAAO,GAAG,KAAK,CAAC;;YACpB,KAAmB,IAAA,KAAAA,SAAA,IAAI,CAAC,YAAY,CAAA,gBAAA,4BAAE;gBAAjC,IAAM,IAAI,WAAA;gBACb,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE;oBACtF,OAAO,GAAG,IAAI,CAAC;oBACf,MAAM;iBACP;aACF;;;;;;;;;QAED,OAAO,OAAO,CAAC;KAChB;IAED,yDAAoB,GAApB,UAAqB,MAAM;;;QAEzB,IAAI,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE;YACzC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAM,qBAAqB,GAAG,IAAI,oBAAoB,EAAE,CAAC;YAEzD,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;;gBACnC,KAAmB,IAAA,KAAAA,SAAA,IAAI,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAAjC,IAAM,IAAI,WAAA;oBACb,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE;wBAChD,qBAAqB,CAAC,aAAa,GAAG,IAAI,CAAC;wBAC3C,qBAAqB,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC;qBAC1E;iBACF;;;;;;;;;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE;gBAC7D,IAAM,sBAAsB,GAAG,IAAI,uBAAuB,EAAE,CAAC;;oBAC7D,KAAmB,IAAA,oBAAAA,SAAA,IAAI,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;wBAAjC,IAAM,IAAI,WAAA;wBACb,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE;;4BAEvF,sBAAsB,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,EAAG,CAAC,GAAG,CAAC,CAAC,CAAC;4BACxE,sBAAsB,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;4BACpF,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;4BACzF,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;4BAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;4BAC/C,IAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;4BACtC,sBAAsB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBAClD;qBACF;;;;;;;;;gBAED,qBAAqB,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;aAC5E;;YAGD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;SACzE;KACF;IAED,0DAAqB,GAArB,UAAsB,MAAM;QAC1B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACtE,IAAI,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,eAAe,KAAK,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE;gBAC1F,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC7C;SACF;KACF;IAED,qDAAgB,GAAhB,UAAiB,MAAM;QACrB,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE;gBAClF,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,aAAa,EACvH,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACxC,IAAM,eAAe,GAAa,EAAE,CAAC;gBACrC,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;gBACrG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAAC;gBACvF,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC;SACF;aAAM;YACL,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;KACF;IAED,kDAAa,GAAb,UAAc,MAAM;QAClB,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE;;gBAElF,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,eAAe,CAAC,cAAc,EACxH,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;gBACxC,IAAM,eAAe,GAAa,EAAE,CAAC;gBACrC,eAAe,CAAC,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,iBAAiB,CAAC,aAAa,CAAC;gBACrG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAAC;gBACvF,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC;SACF;aAAM;YACL,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;KACF;IAED,4DAAuB,GAAvB;;QACE,IAAM,QAAQ,GAAgB,EAAE,CAAC;gCACtB,EAAE;YACX,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,eAAe,KAAK,qBAAqB,IAAI,EAAE,CAAC,eAAe,KAAK,aAAa,EAAE;gBACxG,IAAM,WAAS,GAAG,IAAI,SAAS,EAAE,CAAC;gBAClC,WAAS,CAAC,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC;gBAChC,WAAS,CAAC,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC;gBACtC,IAAI,EAAE,CAAC,eAAe,KAAK,wBAAwB,EAAE;oBACnD,WAAS,CAAC,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC;iBAC9C;gBAED,IAAI,EAAE,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,CAAC,YAAY,KAAK,EAAE,EAAE;oBAC3D,WAAS,CAAC,uBAAuB,GAAG,SAAS,CAAC;iBAC/C;qBAAM;oBACL,IAAI,EAAE,CAAC,eAAe,KAAK,mBAAmB,EAAE;wBAC9C,IAAM,OAAO,GAAI,EAAwB,CAAC,UAAU,CAAC;wBACrD,IAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,YAAY,GAAA,CAAC,CAAC;wBAClE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE;4BACzC,WAAS,CAAC,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAA,EAAE,IAAI,OAAA,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,YAAY,GAAA,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;yBACjG;6BAAM;4BACL,WAAS,CAAC,uBAAuB,GAAG,EAAE,CAAC,YAAY,CAAC;yBACrD;qBACF;yBAAM,IAAI,EAAE,CAAC,eAAe,KAAK,wBAAwB,EAAE;wBAC1D,IAAM,OAAO,GAAI,EAAwB,CAAC,UAAU,CAAC;wBACrD,WAAS,CAAC,uBAAuB,GAAG,EAAE,CAAC;wBAEvC,IAAI,EAAE,EAAE,CAAC,YAAY,YAAY,KAAK,CAAC,EAAE;4BACvC,WAAS,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;yBAChD;6BAAM;4BACL,WAAS,CAAC,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC;yBAC9C;wBAED,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM;4BACpB,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE;gCAClC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,OAAO;oCAC7B,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE;wCAC5B,WAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qCACtD;iCACF,CAAC,CAAC;6BACJ;iCAAM;gCACL,IAAI,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC,YAAY,EAAE;oCACpC,WAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iCACtD;6BACF;yBACF,CAAC,CAAC;wBAEH,IAAI,WAAS,CAAC,uBAAuB,KAAK,SAAS,IAAI,WAAS,CAAC,uBAAuB,KAAK,IAAI,EAAE;4BACjG,WAAS,CAAC,uBAAuB,GAAG,OAAK,gBAAgB,CAAC,WAAS,CAAC,uBAAuB,CAAC,CAAC;yBAC9F;wBAED,IAAI,WAAS,CAAC,gBAAgB,KAAK,SAAS,IAAI,WAAS,CAAC,gBAAgB,IAAI,IAAI,EAAE;4BAClF,WAAS,CAAC,gBAAgB,GAAG,OAAK,gBAAgB,CAAC,WAAS,CAAC,gBAAgB,CAAC,CAAC;yBAChF;qBACF;yBAAM;wBACL,WAAS,CAAC,uBAAuB,GAAG,EAAE,CAAC,YAAY,CAAC;qBACrD;iBACF;gBACD,QAAQ,CAAC,IAAI,CAAC,WAAS,CAAC,CAAC;aAC1B;;;;YAxDH,KAAiB,IAAA,KAAAA,SAAA,IAAI,CAAC,YAAY,CAAA,gBAAA;gBAA7B,IAAM,EAAE,WAAA;wBAAF,EAAE;aAyDZ;;;;;;;;;QAED,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC9C;IAED,qDAAgB,GAAhB,UAAiB,GAAG;QAClB,IAAM,YAAY,GAAG,EAAE,CAAC;;QAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gBACvC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B;SACF;QAED,OAAO,YAAY,CAAC;KACrB;IAEO,6DAAwB,GAAhC;;QACE,IAAI,CAAC,uBAAuB,GAAG,EAAE,CAAC;QAClC,IAAI,aAAsB,CAAC;QAC3B,aAAa,GAAG,KAAK,CAAC;;QAEtB,KAAK,IAAM,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE;;gBAC7C,KAAqC,IAAA,oBAAAA,SAAA,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAA,CAAA,gBAAA,4BAAE;oBAA/E,IAAM,sBAAsB,WAAA;oBAC/B,IAAI,sBAAsB,KAAK,QAAQ,EAAE;wBACvC,aAAa,GAAG,IAAI,CAAC;wBACrB,MAAM;qBACP;yBAAM;wBACL,aAAa,GAAG,KAAK,CAAC;qBACvB;iBACF;;;;;;;;;YACD,IAAI,CAAC,aAAa,EAAE;;gBAElB,KAAK,IAAM,KAAK,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;;oBAEpD,IAAM,qBAAqB,GAAG,IAAI,qBAAqB,EAAE,CAAC;oBAE1D,qBAAqB,CAAC,eAAe,GAAG,KAAK,CAAC;oBAC9C,qBAAqB,CAAC,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;oBAE5E,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;iBAC1D;aACF;SACF;;QAED,IAAM,cAAc,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAClD,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,cAAc,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC;YACjE,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACnD,cAAc,CAAC,SAAS,GAAG,EAAE,CAAC;;gBAE9B,KAAiB,IAAA,KAAAA,SAAA,IAAI,CAAC,YAAY,CAAA,gBAAA,4BAAE;oBAA/B,IAAM,EAAE,WAAA;oBACX,IAAI,EAAE,CAAC,SAAS,IAAI,EAAE,CAAC,eAAe,KAAK,qBAAqB,IAAI,EAAE,CAAC,eAAe,KAAK,aAAa,EAAE;wBACxG,IAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;wBAClC,SAAS,CAAC,aAAa,GAAG,EAAE,CAAC,EAAE,CAAC;wBAChC,SAAS,CAAC,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC;wBAC7C,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBAC1C;iBACF;;;;;;;;;SACF;QAED,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAClD;IAEO,wDAAmB,GAA3B;;QACE,IAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjG,IAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;QAC3D,IAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,aAAa,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAyB,CAAC;QAC5D,aAAa,CAAC,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAE9C,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC;YACvE,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YAC9E,aAAa,CAAC,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SAC5E;gCAEU,KAAK;YACd,IAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3C,OAAK,cAAc,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,OAAK,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACjG,IAAI,aAAa,EAAE;gBACjB,IAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC;oBACnE,CAAC,CAAC,eAAe,KAAK,qBAAqB,IAAI,CAAC,CAAC,eAAe,KAAK,aAAa,GAAA,CAAC,CAAC;gBACtF,IAAI,OAAK,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE;oBACpD,IAAI,YAAY,SAAQ,CAAC;oBACzB,IAAI,OAAK,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC;wBACjE,OAAK,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;wBACxE,YAAY,GAAG,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;qBAC1D;oBAED,IAAM,OAAO,GAAG,IAAI,qBAAqB,EAAE,CAAC;oBAC5C,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC;oBACxC,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC;oBAClC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC1B,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACtC;aACF;;;;YAnBH,KAAoB,IAAA,qBAAAA,SAAA,gBAAgB,CAAA,kDAAA;gBAA/B,IAAM,KAAK,6BAAA;wBAAL,KAAK;aAoBf;;;;;;;;;QAED,OAAO,aAAa,CAAC;KACtB;;gBAjZiC,sBAAsB;gBAC9B,cAAc;gBACC,6BAA6B;gBACzC,yBAAyB;;IAtB7CO;QAAR,KAAK,EAAE;6EAAgC;IAC/BA;QAAR,KAAK,EAAE;4EAAgD;IAC/CA;QAAR,KAAK,EAAE;0FAA6C;IAC5CA;QAAR,KAAK,EAAE;oEAAiC;IAChCA;QAAR,KAAK,EAAE;qEAAuB;IACtBA;QAAR,KAAK,EAAE;qEAAkC;IACjCA;QAAR,KAAK,EAAE;iEAAgB;IACfA;QAAR,KAAK,EAAE;uEAA2B;IAC1BA;QAAR,KAAK,EAAE;yEAA6B;IAC5BA;QAAR,KAAK,EAAE;kEAAoB;IACnBA;QAAR,KAAK,EAAE;+DAAkB;IACjBA;QAAR,KAAK,EAAE;mEAA+B;IAC7BA;QAAT,MAAM,EAAE;0FAAuF;IACtFA;QAAT,MAAM,EAAE;wEAAqF;IACpFA;QAAT,MAAM,EAAE;8EAAuG;IACtGA;QAAT,MAAM,EAAE;gFAAuF;IACtFA;QAAT,MAAM,EAAE;iFAAgF;IA7B9E,0BAA0B;QANtC,SAAS,CAAC;YACT,QAAQ,EAAE,yBAAyB;YACnC,o9NAAmD;;SAEpD,CAAC;OAEW,0BAA0B,CAkbtC;IAAD,iCAAC;CAlbD,IAkbC;AAED;IAAA;KAIC;IAAD,oBAAC;CAAA,IAAA;AAED;IAAA;KAGC;IAAD,qBAAC;CAAA,IAAA;AAED;IAAA;KAGC;IAAD,sBAAC;CAAA,IAAA;AAED;IAAA;KAIC;IAAD,yBAAC;CAAA,IAAA;AAED;IAAA;KAGC;IAAD,kBAAC;CAAA,IAAA;AAED;IAAA;KAGC;IAAD,4BAAC;CAAA,IAAA;AAED;IAAA;KAIC;IAAD,2BAAC;CAAA,IAAA;;;ICjeC,8BACU,cAA8B;QAA9B,mBAAc,GAAd,cAAc,CAAgB;QANxC,qBAAgB,GAAG,CAAC,CAAC;KAQpB;IAED,iDAAkB,GAAlB;QACE,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;KAC3B;IAED,8CAAe,GAAf,UAAgB,KAAa;QAC3B,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;YAC/C,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAC7C,OAAO,KAAK,CAAC;aACd;iBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBAClE,OAAU,IAAI,CAAC,aAAa,SAAI,KAAO,CAAC;aACzC;SACF;KACF;;gBAhByB,cAAc;;IAJ/BA;QAAR,KAAK,EAAE;6DAA8B;IAC7BA;QAAR,KAAK,EAAE;+DAAuB;IALpB,oBAAoB;QALhC,SAAS,CAAC;YACT,QAAQ,EAAE,kBAAkB;YAC5B,mhDAA4C;;SAE7C,CAAC;OACW,oBAAoB,CAyBhC;IAAD,2BAAC;CAzBD;;ACTA;IAAA;KAIC;IAAD,wBAAC;CAAA,IAAA;;;ICwBC,uCACU,WAAwB,EACxB,sBAA8C,EAC9C,cAA8B,EACtC,6BAA4D,EAC5D,yBAAoD;QALtD,iBAaC;QAZS,gBAAW,GAAX,WAAW,CAAa;QACxB,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,mBAAc,GAAd,cAAc,CAAgB;QAL9B,yBAAoB,GAAG,IAAI,YAAY,EAAE,CAAC;QAQlD,IAAI,CAAC,0BAA0B,GAAG,6BAA6B,CAAC,gBAAgB,CAAC,SAAS,CACxF,UAAA,OAAO;YACL,KAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B,CAAC,CAAC;QAEL,IAAI,CAAC,iBAAiB,GAAG,yBAAyB,CAAC,YAAY,CAAC,SAAS,CACvE,UAAA,OAAO,KAAO,CAAC,CAAC;KACnB;IAED,gDAAQ,GAAR;QACE,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;IAED,uDAAe,GAAf;QACE,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,KAAK,CAAC,EAAE;YACpG,IAAI,CAAC,sBAAsB,CAAC,sBAAsB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,YAAY,EACjH,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAC/F,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;SAC1H;aAAM;YACL,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3C;KACF;IAED,mDAAW,GAAX;QACE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE;YACxE,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;SAC/C;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;YAC/D,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;SACtC;KACF;IAED,0DAAkB,GAAlB,UAAmB,EAAE,EAAE,KAAK,EAAE,iBAAiB;QAC7C,IAAM,aAAa,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,aAAa,CAAC,SAAS,GAAG,EAAE,CAAC;QAC7B,aAAa,CAAC,aAAa,GAAG,KAAK,CAAC;QAEpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAEjD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAChD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC7D,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;KAC/G;IAED,sDAAc,GAAd,UAAe,OAAO,EAAE,iBAAiB;QACvC,IAAM,aAAa,GAAG,IAAI,cAAc,EAAE,CAAC;QAC3C,aAAa,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QACrC,aAAa,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QAE5C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAEjD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,OAAO,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC7D,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QAErD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;KAC/G;IAED,8CAAM,GAAN,UAAO,KAAU;;;;;;;;;;KAUhB;IAED,qDAAa,GAAb,UAAc,KAAU;;;;;;;;;;KAUvB;IAED,sDAAc,GAAd,UAAe,KAAK;QAClB,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;KAC7G;IAED,uDAAe,GAAf;QAAA,iBASC;QARC,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;YACxE,IAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,KAAK,KAAI,CAAC,kBAAkB,CAAC,EAAE,GAAA,CAAC,CAAC;YAC5F,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAC7C,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC;aAC7E;SACF;QAED,OAAO,KAAK,CAAC;KACd;IAED,gEAAwB,GAAxB;QACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO;YACvD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ;YAC/D,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;KAC3C;IAED,2DAAmB,GAAnB;QACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO;YACvD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC;KACnE;IAED,2DAAmB,GAAnB;QACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO;YACvD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC;KACnE;IAED,2DAAmB,GAAnB;QACE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;gBACtG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,CAAC,sBAAsB,EAAE,CAAC;KAC1E;IAEO,gEAAwB,GAAhC;QACE,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;YAE/C,cAAc,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACpK,CAAC,CAAC;KACJ;;gBAnIsB,WAAW;gBACA,sBAAsB;gBAC9B,cAAc;gBACP,6BAA6B;gBACjC,yBAAyB;;IAV7CA;QAAR,KAAK,EAAE;6FAA6C;IAC5CA;QAAR,KAAK,EAAE;wEAAuB;IACtBA;QAAR,KAAK,EAAE;6EAAwC;IACtCA;QAAT,MAAM,EAAE;+EAA2C;IAVzC,6BAA6B;QALzC,SAAS,CAAC;YACT,QAAQ,EAAE,4BAA4B;YACtC,iwRAAsD;;SAEvD,CAAC;OACW,6BAA6B,CAiJzC;IAAD,oCAAC;CAjJD;;AChBA,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IAChC,iFAAS,CAAA;IACT,6EAAO,CAAA;IACP,qFAAW,CAAA;CACd,EAJW,wBAAwB,KAAxB,wBAAwB,QAInC;;ACOD,IAAMC,GAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAO5B;IAsBE,sCACU,WAAwB,EACxB,GAAsB,EACtB,cAA8B,EAC9B,6BAA4D;QAH5D,gBAAW,GAAX,WAAW,CAAa;QACxB,QAAG,GAAH,GAAG,CAAmB;QACtB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,kCAA6B,GAA7B,6BAA6B,CAA+B;QAxBtE,eAAU,GAAG,KAAK,CAAC;QAiBT,wBAAmB,GAAG,IAAI,YAAY,EAAE,CAAC;QACzC,iBAAY,GAAG,IAAI,YAAY,EAAE,CAAC;;;;;;;KAa3C;IAED,kDAAW,GAAX;QACE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE;YACxE,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;SAC/C;KACF;IAED,+CAAQ,GAAR;QAAA,iBAyBC;QAxBC,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS;YAC1D,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,QAAQ,KAAK,IAAI,EAAE;YACrD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,MAAM;gBACrD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS;uBACpC,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3E,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,UAAA,QAAQ;wBACtC,KAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBAChD,CAAC,CAAC;iBACJ;aACF,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YACnE,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;gBACjD,IAAI,CAAC,cAAc,GAAG,wBAAwB,CAAC,WAAW,CAAC;aAC5D;iBAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;gBACxG,IAAI,CAAC,cAAc,GAAG,wBAAwB,CAAC,OAAO,CAAC;aACxD;iBAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvG,IAAI,CAAC,cAAc,GAAG,wBAAwB,CAAC,SAAS,CAAC;aAC1D;SACF;aAAM;YACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;SAC7E;KACF;IAED,sDAAe,GAAf;QACE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,KAAK,SAAS,EAAE;YACrDA,GAAC,CAAC,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACrG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACvF,KAAK,IAAM,MAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE;gBACtD,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;oBAC3F,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,KAAK,SAAS,EAAE;wBACtE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;qBACtF;yBAAM;wBACL,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;qBAClF;iBACF;aACF;;YAGD,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,IAAI,IAAI,CAAC,wBAAwB,KAAK,SAAS,IAAI,IAAI,CAAC,yBAAyB,KAAK,SAAS,EAAE;gBACvI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;gBACzD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;aAChE;YAED,IAAI,YAAY,GAAG,IAAI,CAAC,wBAAwB,KAAK,SAAS,GAAG,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,yBAAyB,CAAC;YAChI,IAAI,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjD,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;aACpD;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;SACjI;aAAM;YACL,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC1C;QAED,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;YACjGA,GAAC,CAAC,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC/F;;QAGD,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YACzIA,GAAC,CAAC,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SAC/F;KACF;IAED,oDAAa,GAAb;QACE,OAAO,IAAI,CAAC,cAAc,KAAK,wBAAwB,CAAC,WAAW,CAAC;KACrE;IAED,gDAAS,GAAT;QAEE,OAAO,IAAI,CAAC,cAAc,KAAK,wBAAwB,CAAC,OAAO,CAAC;KACjE;IAED,kDAAW,GAAX;QACE,OAAO,IAAI,CAAC,cAAc,KAAK,wBAAwB,CAAC,SAAS,CAAC;KACnE;IAED,qDAAc,GAAd,UAAe,SAAiB,EAAE,eAAuB,EAAE,YAAoB,EAAE,aAAqB;QACpG,IAAI,aAAa,KAAK,SAAS,EAAE;YAC/B,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;SACrF;KACF;IAED,sDAAe,GAAf;QAAA,iBASC;QARC,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE;YACvE,IAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,KAAK,KAAI,CAAC,iBAAiB,CAAC,EAAE,GAAA,CAAC,CAAC;YAC1F,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE;gBAC7C,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;aACtE;SACF;QAED,OAAO,KAAK,CAAC;KACd;IAED,qDAAc,GAAd,UAAe,SAAiB,EAAE,eAAuB,EAAE,YAAoB,EAAE,aAAqB;QACpG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAClD,IAAI,YAAY,KAAK,wBAAwB,IAAI,aAAa,KAAK,UAAU,EAAE;YAC7E,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;SACrF;aAAM;YACL,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SAChE;KACF;IAED,6DAAsB,GAAtB,UAAuB,OAAO,EAAE,iBAAiB;QAC/C,IAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAC;QAC7B,IAAM,eAAe,GAAG,iBAAiB,CAAC;QAC1C,IAAI,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC;QAC/D,IAAI,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;QAElC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QACnD,IAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;QAEnE,IAAI,WAAW,KAAK,YAAY,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,EAAE,EAAE;YACnF,YAAY,GAAG,EAAE,CAAC;YAClB,aAAa,GAAG,EAAE,CAAC;SACpB;QAED,IAAI,YAAY,KAAK,wBAAwB,IAAI,aAAa,KAAK,UAAU,EAAE;YAC7E,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;SACrF;aAAM;YACL,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SAChE;KACF;IAED,qDAAc,GAAd,UAAe,OAAO,EAAE,SAAS,EAAE,iBAAiB;QAClD,IAAM,aAAa,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,IAAI,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC;QAC/E,IAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;QAEnC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;KACvF;IAED,yDAAkB,GAAlB,UAAmB,SAAiB,EAAE,aAAqB;QACzD,IAAI,aAAa,KAAK,UAAU,EAAE;YAChCA,GAAC,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;SAC1C;aAAM;YACLA,GAAC,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB;KACF;IAED,8DAAuB,GAAvB;QACE,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;KAC9F;IAED,4DAAqB,GAArB,UAAsB,SAAiB,EAAE,eAAuB,EAAE,YAAoB,EAAE,aAAqB;QAC3G,IAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;QAC1C,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;QACpC,aAAa,CAAC,aAAa,GAAG,aAAa,CAAC;QAC5C,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC;QAE1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACjD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACvD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,eAAe,CAAC;QAC3D,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,YAAY,CAAC;QAEpD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;KAC9G;IAEO,8DAAuB,GAA/B;QACE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC9C,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;SACpC,EAAE;YACD,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;SACrD,CAAC,CAAC;KACJ;IAEO,+DAAwB,GAAhC,UAAiC,QAAgB;QAC/C,OAAO,UAAC,KAAgB;YACtB,IAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC9C,KAAK,aAAa,CAAC,KAAK,KAAK,SAAS,IAAI,aAAa,CAAC,KAAK,KAAK,EAAE,IAAI,aAAa,CAAC,KAAK,KAAK,YAAY,GAAG;gBAC7G,OAAO,aAAa,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aACzD;iBAAM;gBACL,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACtC;SACF,CAAC;KACH;IAED,sDAAe,GAAf,UAAgB,KAAK;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,SAAS;QACT,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE;YAClC,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;KACF;IAED,2DAAoB,GAApB,UAAqB,MAAM,EAAE,KAAK;;QAEhC,IAAI,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAQ,CAAC;QACvD,IAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;QACjC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC;;KAExB;IAED,0DAAmB,GAAnB,UAAoB,iBAAoC;QAAxD,iBAGC;QAFC,IAAM,4BAA4B,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAA,CAAC,CAAC;QACpI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,4BAA4B,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;KACzF;IAED,sDAAe,GAAf,UAAgB,KAAa;QAC3B,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;YAC/C,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAC7C,OAAO,KAAK,CAAC;aACd;iBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBAClE,OAAU,IAAI,CAAC,aAAa,SAAI,KAAO,CAAC;aACzC;SACF;KACF;IAED,sDAAe,GAAf;QACE,IAAI,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACjD,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;KAC9B;IAEiC,8CAAO,GAAP;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;;gBAjPsB,WAAW;gBACnB,iBAAiB;gBACN,cAAc;gBACC,6BAA6B;;IAd7DD;QAAR,KAAK,EAAE;8EAAgD;IAC/CA;QAAR,KAAK,EAAE;uEAAuB;IACtBA;QAAR,KAAK,EAAE;4FAA6C;IAC5CA;QAAR,KAAK,EAAE;iFAAkD;IACjDA;QAAR,KAAK,EAAE;2EAAsC;IACrCA;QAAR,KAAK,EAAE;kEAAmB;IAEjBA;QAAT,MAAM,EAAE;6EAA0C;IACzCA;QAAT,MAAM,EAAE;sEAAmC;IAkPVA;QAAjC,YAAY,CAAC,kBAAkB,CAAC;+DAEhC;IAxQU,4BAA4B;QALxC,SAAS,CAAC;YACT,QAAQ,EAAE,2BAA2B;YACrC,uygCAAqD;;SAEtD,CAAC;OACW,4BAA4B,CAyQxC;IAAD,mCAAC;CAzQD;;ACVA,IAAMC,GAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE5B;IAuBE,2CACU,WAAwB,EACxB,cAA8B,EAAE,6BAA4D;QAD5F,gBAAW,GAAX,WAAW,CAAa;QACxB,mBAAc,GAAd,cAAc,CAAgB;QAhBxC,kBAAa,GAAyB,EAAE,CAAC;QACzC,sBAAiB,GAAa,EAAE,CAAC;QACjC,gCAA2B,GAAa,EAAE,CAAC;QAG3C,eAAU,GAAG,KAAK,CAAC;QAOT,sBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;;;;;KAShD;IAED,oDAAQ,GAAR;QACE,IAAI,CAAC,4BAA4B,EAAE,CAAC;KACrC;IAED,uDAAW,GAAX;QACE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,EAAE;YACxE,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;SAC/C;KACF;IAED,2DAAe,GAAf;;QACE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,KAAK,SAAS,EAAE;;YAEtD,IAAM,MAAM,GAAQ,EAAE,CAAC;YACvB,IAAM,MAAM,GAAQ,EAAE,CAAC;YACvB,KAAK,IAAM,MAAM,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;gBACvD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;;wBACvD,KAAwB,IAAA,oBAAAR,SAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAA,CAAA,gBAAA,4BAAE;4BAAzD,IAAM,SAAS,WAAA;;4BAElB,IAAI,SAAS,KAAK,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;gCACpIQ,GAAC,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gCACnH,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gCACvB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;gCAC9D,MAAM;6BACP;yBACF;;;;;;;;;iBACF;qBAAM;;oBAEL,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,KAAK,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE;wBAC/JA,GAAC,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACvG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;wBAClD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC;qBAC/D;iBACF;aACF;YACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;SACrG;aAAM;YACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACxC;KACF;IAED,+DAAmB,GAAnB,UAAoB,SAAiB,EAAE,iBAAyB,EAAE,WAAgB,EAAE,WAAgB;QAApG,iBA6BC;QA5BC,IAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC9C,IAAIA,GAAC,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;YACzD,IAAI,CAAC,2BAA2B,GAAG,WAAW,CAAC;SAChD;aAAM;YACL,IAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC1D,IAAM,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC9E,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACzC;YACD,IAAI,eAAe,GAAG,CAAC,CAAC,EAAE;gBACxB,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;aAC7D;SACF;QAED,UAAU,CAAC;YACT,IAAM,cAAc,GAAG,KAAI,CAAC,gBAAgB,EAAE,CAAC;YAC/C,IAAM,aAAa,GAAG,KAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;YAEhE,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;YACnC,YAAY,CAAC,cAAc,GAAG,cAAc,CAAC;YAC7C,YAAY,CAAC,aAAa,GAAG,aAAa,CAAC;YAE3C,KAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACjD,KAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,SAAS,CAAC;YACvD,KAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;YAC7D,KAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,cAAc,CAAC;YACtD,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,KAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC3G,CAAC,CAAC;KACJ;IAED,0DAAc,GAAd,UAAe,SAAiB,EAAE,eAAuB,EAAE,YAAoB,EAAE,aAAqB,EAAE,KAAK;QAC3G,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;SACzD;aAAM;YACLA,GAAC,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtD,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;SAC1D;QAED,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,eAAe,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;KAC/E;IAED,0DAAc,GAAd,UAAe,OAAO,EAAE,SAAS,EAAE,iBAAiB;QAClD,IAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC/C,IAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAEhE,IAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC9C,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;QACnC,YAAY,CAAC,cAAc,GAAG,cAAc,CAAC;QAC7C,YAAY,CAAC,aAAa,GAAG,aAAa,CAAC;QAE3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACjD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACvD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC7D,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,cAAc,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;KAC3G;IAED,6DAAiB,GAAjB,UAAkB,SAAiB,EAAE,iBAAyB,EAAE,KAAa,EAAE,KAAK;QAClF,IAAM,YAAY,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC9C,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;YACpE,IAAI,KAAK,KAAK,EAAE,EAAE;gBAChB,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;oBAChD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACpC;gBACD,IAAI,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC1D,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;iBAClE;aACF;SACF;aAAM;YACL,IAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpD,IAAM,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC5F,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACd,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACzC;YACD,IAAI,eAAe,GAAG,CAAC,CAAC,EAAE;gBACxB,IAAI,CAAC,2BAA2B,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;aAC7D;SACF;QAED,IAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC/C,IAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAEhE,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;QACnC,YAAY,CAAC,cAAc,GAAG,cAAc,CAAC;QAC7C,YAAY,CAAC,aAAa,GAAG,aAAa,CAAC;QAE3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACjD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACvD,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC7D,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,cAAc,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;KAC3G;IAEO,4DAAgB,GAAxB;QAAA,iBAqBC;QApBC,IAAM,KAAK,GAAG,QAAQ,CAAC,sBAAsB,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAQ,CAAC;QACvG,IAAI,aAAa,GAAG,EAAE,CAAC;;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE;gBAC7B,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aACpC;SACF;QAED,IAAI,cAAc,GAAG,aAAa,CAAC;QACnC,IAAIA,GAAC,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YAC9D,cAAc,CAAC,IAAI,CAACA,GAAC,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;SAC1E;QAED,IAAI,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,KAAK,SAAS,EAAE;YAC3F,IAAM,aAAa,GAAG,cAAc,CAAC,MAAM,CAAC,UAAC,IAAS,IAAK,OAAA,CAAC,KAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAA,CAAC,CAAC;YACtH,cAAc,GAAG,aAAa,CAAC;SAChC;QAED,OAAO,cAAc,CAAC;KACvB;IAEO,gEAAoB,GAA5B,UAA6B,cAAmB;;QAC9C,IAAM,aAAa,GAAG,EAAE,CAAC;gCACd,KAAK;YACd,IAAM,MAAM,GAAG,OAAK,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,KAAK,KAAK,GAAA,CAAC,CAAC;YAC/E,IAAI,OAAK,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;gBAC/C,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAClC;iBAAM;gBACL,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3B;;;;YANH,KAAoB,IAAA,mBAAAR,SAAA,cAAc,CAAA,8CAAA;gBAA7B,IAAM,KAAK,2BAAA;wBAAL,KAAK;aAOf;;;;;;;;;QAED,OAAO,aAAa,CAAC;KACtB;IAED,wEAA4B,GAA5B;QACE,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO;YAC/D,IAAI,CAAC,kBAAkB,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;KACxE;IAED,oEAAwB,GAAxB,UAAyB,KAAa;QAAtC,iBAgBC;QAfC,IAAI,IAAI,CAAC,kBAAkB,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,KAAK,SAAS;YAC/G,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE;YACrD,IAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,MAAM,CAAC,UAAC,IAAS,IAAK,OAAA,CAAC,KAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAA,CAAC,CAAC;YAC5I,IAAI,CAAC,kBAAkB,CAAC,YAAY,GAAG,aAAa,CAAC;SACtD;;QAGD,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;YACnJQ,GAAC,CAAC,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;SAC1E;;QAGD,OAAO,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,KAAK,SAAS;YAC5D,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI;cACzE,IAAI,CAAC;KACV;IAED,8DAAkB,GAAlB,UAAmB,SAAiB,EAAE,aAAqB,EAAE,SAAS;QACpE,IAAI,aAAa,KAAK,UAAU,IAAI,SAAS,EAAE;YAC7CA,GAAC,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,aAAa,KAAK,UAAU,EAAE;gBAChC,IAAI,CAAC,aAAa,GAAGA,GAAC,CAAC,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;aAC1E;SACF;aAAM,IAAI,CAAC,SAAS,EAAE;YACrBA,GAAC,CAAC,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB;KACF;IAEO,wEAA4B,GAApC;QACE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACnD,aAAa,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;SACzC,EAAE;YACD,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC;SAC1D,CAAC,CAAC;KACJ;IAEO,oEAAwB,GAAhC,UAAiC,aAAqB;QAAtD,iBASC;QARC,OAAO,UAAC,KAAgB;YACtB,IAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;YACnD,IAAI,KAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE;gBACtC,OAAO,aAAa,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aACzD;iBAAM;gBACL,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACtC;SACF,CAAC;KACH;IAGD,2DAAe,GAAf,UAAgB,KAAK;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,SAAS;QACT,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE;YAClC,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;KACF;IAED,gEAAoB,GAApB,UAAqB,MAAM,EAAE,KAAK;QAChC,SAAS;;QAET,IAAI,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACtD,IAAI,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAQ,CAAC;QAC5D,IAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;QACjC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC;;KAExB;IAED,+DAAmB,GAAnB,UAAoB,kBAAsC;QAA1D,iBAGC;QAFC,IAAM,6BAA6B,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAA,CAAC,CAAC;QACtI,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,6BAA6B,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;KAC1F;IAED,2DAAe,GAAf,UAAgB,KAAa;QAC3B,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;YAC/C,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAC7C,OAAO,KAAK,CAAC;aACd;iBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBAClE,OAAU,IAAI,CAAC,aAAa,SAAI,KAAO,CAAC;aACzC;SACF;KACF;IAED,2DAAe,GAAf;QACE,IAAI,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACtD,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;KAC9B;IAEiC,mDAAO,GAAP;QAChC,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;;gBAvRsB,WAAW;gBACR,cAAc;gBAAiC,6BAA6B;;IAP7FD;QAAR,KAAK,EAAE;iGAA6C;IAC5CA;QAAR,KAAK,EAAE;4EAAuB;IACtBA;QAAR,KAAK,EAAE;iFAA4C;IAC1CA;QAAT,MAAM,EAAE;gFAAwC;IAwRfA;QAAjC,YAAY,CAAC,kBAAkB,CAAC;oEAEhC;IAxSU,iCAAiC;QAL7C,SAAS,CAAC;YACT,QAAQ,EAAE,iCAAiC;YAC3C,+9VAA2D;;SAE5D,CAAC;OACW,iCAAiC,CAyS7C;IAAD,wCAAC;CAzSD;;ACZA,IAAMC,GAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAO5B;IAgBE,2BACU,sBAA8C,EAC9C,cAA8B;QAD9B,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,mBAAc,GAAd,cAAc,CAAgB;QAhBxC,mBAAc,GAAG,EAAE,CAAC;QACpB,uBAAkB,GAAG,6BAA6B,CAAC;QACnD,eAAU,GAAW,EAAE,CAAC;QACxB,qBAAgB,GAAG,KAAK,CAAC;QACzB,mBAAc,GAAG,EAAE,CAAC;QACpB,uBAAkB,GAAG,uBAAuB,CAAC;QAC7C,wBAAmB,GAAG,0BAA0B,CAAC;QACjD,wBAAmB,GAAG,kBAAkB,CAAC;KAWxC;IAED,oCAAQ,GAAR;QACE,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,GAAG,yDAAyD,CAAC;KAChG;IAED,yDAA6B,GAA7B;QAAA,iBAgEC;QA/DC,IAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9F,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YACxE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;SAC9B;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,UAAU,CAAC;YACT,IAAI,WAAW,CAAC;YAChB,IAAI,YAAY,CAAC;YAEjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAC/E,IAAI,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAI,CAAC,aAAa,CAAC,EAAE;oBAC3D,IAAI,gBAAgB,GAAG,KAAK,CAAC;oBAC7B,IAAI,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;wBAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;4BACzB,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;yBAChG;6BAAM;4BACL,gBAAgB,GAAG,MAAM,KAAK,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;yBACtF;qBACJ;oBACC,IAAM,WAAW,GAAG,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;oBACxD,IAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC5E,IAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC/D,IAAM,MAAM,GAAG,KAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;oBAC9C,IAAM,gBAAgB,GAAG,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAE7D,IAAI,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC;wBACxF,KAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;wBAC/F,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC;qBACvE;yBAAM,IAAI,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC;wBAC9D,KAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;wBACrE,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC;qBAC7C;yBAAM;wBACL,WAAW,GAAG,KAAI,CAAC,mBAAmB,CAAC;qBACxC;oBAED,IAAI,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;wBACnF,KAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBAC1F,YAAY,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;qBACnE;yBAAM,IAAI,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC;wBAC9D,KAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;wBAChE,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC;qBACzC;yBAAM;wBACL,YAAY,GAAG,KAAI,CAAC,mBAAmB,CAAC;qBACzC;oBAED,IAAI,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;wBAC/C,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;4BAC3G,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;4BACzC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;4BAC5C,MAAM,CAAC,aAAa,CAAC,SAAS,GAAG,KAAI,CAAC,kBAAkB,CAAC;yBAC1D;wBACD,IAAI,gBAAgB,EAAE;4BACpB,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;4BACjD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;4BAE7C,KAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;4BAC7E,MAAM,CAAC,aAAa,CAAC,SAAS,GAAG,KAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;yBACxE;qBACF;iBACF;aACF;YACD,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B,EAAE,IAAI,CAAC,CAAC;KACV;IAED,4CAAgB,GAAhB,UAAiB,KAAK;QACpB,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC3D,IAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE;gBACpD,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBAC3F,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;oBAChD,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBAC3E;aACF;SACF;KACF;IAED,4CAAgB,GAAhB;QACE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;YAC5D,OAAO,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/D;aAAM;YACL,OAAO,mBAAmB,CAAC;SAC5B;KACF;IAED,2CAAe,GAAf,UAAgB,KAAa;QAC3B,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;YAC/C,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAC7C,OAAO,KAAK,CAAC;aACd;iBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBAClE,OAAU,IAAI,CAAC,aAAa,SAAI,KAAO,CAAC;aACzC;SACF;;KAGF;IAED,+CAAmB,GAAnB,UAAoB,KAAK,EAAE,KAAK;QAC9B,IAAI,UAAU,CAAC;QACf,IAAI,WAAW,CAAC;QAChB,IAAI,YAAY,CAAC;QAEjB,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC3D,IAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACxD,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE;gBACpD,IAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC5E,IAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;gBAC/D,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAE7D,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC;oBACrF,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBAC5F,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC;iBACnE;qBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC;oBAC9D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;oBAClE,UAAU,GAAG,gBAAgB,CAAC,SAAS,CAAC;iBACzC;qBAAM;oBACL,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;iBACtC;gBAED,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC;oBACxF,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;oBAC/F,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC;iBACvE;qBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC;oBAC9D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;oBACrE,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC;iBAC7C;qBAAM;oBACL,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC;iBACxC;gBAED,IAAI,UAAU,KAAK,WAAW,EAAE;oBAC9B,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC;iBACtC;gBAED,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;oBACnF,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAC1F,YAAY,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;iBACnE;qBAAM,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC;oBAC9D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;oBAChE,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC;iBACzC;qBAAM;oBACL,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;iBACzC;gBAED,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;oBAC/C,IAAI,KAAK,EAAE;wBACT,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;4BAC7G,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;4BACjD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;4BAC7C,MAAM,CAAC,aAAa,CAAC,SAAS,IAAI,QAAQ,CAAC;4BAC3C,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;yBAC7E;qBACF;yBAAM;wBACL,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;4BACxD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;4BACzC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;yBAC7C;wBACD,MAAM,CAAC,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;qBAC7F;iBACF;aACF;SACF;KACF;IAEO,6CAAiB,GAAzB,UAA0B,aAAqB;QAC7C,IAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,WAAW,EAAE,GAAA,CAAC,CAAC;QAC5G,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YAC/C,IAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAClD,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAE5C,IAAI,IAAI,CAAC,WAAW,CAAC,eAAe,KAAK,wBAAwB,EAAE;gBACjE,IAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC9F,IAAI,OAAO,GAAG,IAAI,CAAC;gBACnB,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;oBACrF,OAAO,GAAG,KAAK,CAAC;iBACjB;gBACD,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzHA,GAAC,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAC3EA,GAAC,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;aAEjF;iBAAM,IAAI,MAAM,CAAC,KAAK,KAAK,aAAa,EAAE;gBACzC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;oBAC/C,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wBACrFA,GAAC,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACxEA,GAAC,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;qBACjF;yBAAM;wBACLA,GAAC,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAC/CA,GAAC,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;qBAC5D;iBACF;qBAAM;oBACLA,GAAC,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACxEA,GAAC,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;iBACjF;aACF;SACF;KACF;IAEO,+CAAmB,GAA3B,UAA4B,WAAgB;QAA5C,iBAOC;QANC,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE;YACpE,IAAM,4BAA4B,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,KAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAA,CAAC,CAAC;YAC9H,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,4BAA4B,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;SACzF;QAED,OAAO,KAAK,CAAC;KACd;IAEO,kDAAsB,GAA9B,UAA+B,KAAa,EAAE,WAAuB;QACnE,IAAI,WAAW,CAAC;QAChB,IAAI,YAAY,CAAC;QAEjB,IAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5E,IAAM,KAAK,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/D,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;QAE7D,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC;YACxF,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAC/F,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC;SACvE;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC;YAC9D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE;YACrE,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC;SAC7C;aAAM;YACL,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC;SACxC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC;YACnF,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1F,YAAY,GAAG,WAAW,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC;SACnE;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,gBAAgB,CAAC;YAC9D,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;YAChE,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC;SACzC;aAAM;YACL,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YAC/C,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBACvD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACzC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC5C,MAAM,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC;aAC1D;iBAAM;gBACL,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;gBACjD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;gBAE7C,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC7E,MAAM,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;aACxE;SACF;KACF;IAEO,iDAAqB,GAA7B,UAA8B,MAAkB,EAAE,SAAiB,EAAE,YAAoB,EAAE,KAAa,EAAE,MAAgB;QACxH,IAAM,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YAClC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACnD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAClD,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACnD,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAEpD,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;YAC1B,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC;YAC/B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5E,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SAE/E;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;YAC3C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YACjE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YAChE,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YAE5C,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YAC1G,GAAG,CAAC,SAAS,EAAE,CAAC;YAEhB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;YAC1B,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC;YAC/B,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,EAAE,CAAC;SAEd;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE;YACzC,IAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE;gBAChC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACtC;YACD,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACjC,GAAG,CAAC,SAAS,EAAE,CAAC;YAEhB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;YAC1B,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC;YAC/B,GAAG,CAAC,IAAI,EAAE,CAAC;YACX,GAAG,CAAC,MAAM,EAAE,CAAC;SACd;KACF;;gBAhTiC,sBAAsB;gBAC9B,cAAc;;IAP/BD;QAAR,KAAK,EAAE;0DAAyD;IACxDA;QAAR,KAAK,EAAE;4DAAuB;IACAA;QAA9B,YAAY,CAAC,eAAe,CAAC;4DAAsC;IAC1CA;QAAzB,YAAY,CAAC,UAAU,CAAC;uDAAoD;IAdlE,iBAAiB;QAL7B,SAAS,CAAC;YACT,QAAQ,EAAE,eAAe;YACzB,stHAAyC;;SAE1C,CAAC;OACW,iBAAiB,CAkU7B;IAAD,wBAAC;CAlUD;;;ICeE,mCACU,MAAqB,EACrB,cAA8B;QAD9B,WAAM,GAAN,MAAM,CAAe;QACrB,mBAAc,GAAd,cAAc,CAAgB;QAXxC,uBAAkB,GAAyB,EAAE,CAAC;QAC9C,mBAAc,GAAoB,EAAE,CAAC;QAIrC,aAAQ,GAAa,EAAE,CAAC;KAQvB;IAED,+CAAW,GAAX;QACE,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACvC;IAED,4CAAQ,GAAR,UAAS,SAAS;QAChB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QACnD,KAAK,IAAM,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YACnD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,UAAU,KAAK,EAAE,EAAE;gBAC5E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC7B;SACF;QACD,IAAI,SAAS,KAAK,WAAW,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,KAAK,EAAE;YAC/E,IAAI,OAAO,SAAQ,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,IAAM,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;gBACnD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,UAAU,KAAK,EAAE,EAAE;oBAC5E,IAAM,UAAU,GAAkB,IAAI,aAAa,EAAE,CAAC;oBACtD,UAAU,CAAC,mBAAmB,CAAC,OAAO;wBACpC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,cAAc,KAAK,SAAS;+BAC9E,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,cAAc,KAAK,EAAE;4BAC/E,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,cAAc;8BACnE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC;;oBAEvE,UAAU,CAAC,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;oBACpI,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC;oBAC5F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;iBACxD;aACF;YAED,IAAM,OAAO,GAAGE,KAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3F,OAAO;oBACL,mBAAmB,EAAE,CAAC;oBACtB,mBAAmB,EAAEC,GAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC;iBACrD,CAAC;aACH,CAAC,CAAC,KAAK,EAAE,CAAC;YAEX,IAAM,YAAY,GAAGC,OAAS,CAAC,OAAO,EAAE,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,mBAAmB,GAAA,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,kBAAkB,GAAG,YAAY,CAAC;YACvC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAChC;QAED,KAAK,IAAM,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YACnD,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,SAAS,KAAK,SAAS,EAAE;gBAClF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC;;gBAEzF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,eAAe,KAAK,SAAS,IAAI,IAAI,CAAC,eAAe,KAAK,EAAE,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC1L,MAAM;aACP;SACF;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;;QAEzB,KAAK,IAAM,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YACnD,IAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1C,aAAa,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACtI,aAAa,CAAC,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC;YAC3G,aAAa,CAAC,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC;YAC/F,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;SAC5D;QACD,IAAI,CAAC,eAAe,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC;KACpF;IAED,uDAAmB,GAAnB,UAAoB,SAAiB;QACnC,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,OAAK,SAAS,OAAI,GAAG,EAAE,CAAC;KAClF;IAED,sDAAkB,GAAlB,UAAmB,SAAiB;QAClC,IAAM,iBAAiB,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,iBAAiB,EAAE;YACtB,OAAO,SAAS,GAAG,MAAM,CAAC;SAC3B;QAED,OAAO,SAAS,CAAC;KAClB;IAED,kDAAc,GAAd,UAAe,KAAY;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAClD;IAED,oDAAgB,GAAhB,UAAiB,KAAa;QAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;KACzD;IAED,6DAAyB,GAAzB,UAA0B,oCAAoC;QAC5D,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,oCAAoC,CAAC,EAAE;;;YAG7E,IAAI,IAAI,GAAG,oCAAoC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACjE,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAC3B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;SACzD;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAClD;;KAGF;;gBArHiB,aAAa;gBACL,cAAc;;IAJ/BJ;QAAR,KAAK,EAAE;iEAA4B;IAZzB,yBAAyB;QALrC,SAAS,CAAC;YACT,QAAQ,EAAE,wBAAwB;YAClC,4zHAAkD;;SAEnD,CAAC;OACW,yBAAyB,CAqIrC;IAAD,gCAAC;CArID;;;ICHE,gCAAoB,cAA0B;QAA1B,mBAAc,GAAd,cAAc,CAAY;KAAK;IAEnD,mDAAkB,GAAlB;QACE,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YACrC,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE;gBACvC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAC7D;iBAAM,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE;gBAC7C,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aAC3D;SACF;KACF;IAEO,gEAA+B,GAAvC,UAAwC,gBAAqB;QAC3D,IAAM,2BAA2B,GAAG,gBAAgB,CAAC,YAAY,CAAC;QAClE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,GAAG,IAAI,2BAA2B,GAAG,IAAI,CAAC;KAClH;IAEO,+DAA8B,GAAtC,UAAuC,eAAoB;QACzD,IAAM,2BAA2B,GAAG,eAAe,CAAC,YAAY,CAAC;QACjE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,GAAG,IAAI,2BAA2B,GAAG,IAAI,CAAC;KAClH;;gBApBmC,UAAU;;IAHrCA;QAAR,KAAK,EAAE;oEAAuB;IACtBA;QAAR,KAAK,EAAE;mEAAsB;IAHnB,sBAAsB;QAHlC,SAAS,CAAC;YACT,QAAQ,EAAE,6BAA6B;SACxC,CAAC;OACW,sBAAsB,CA0BlC;IAAD,6BAAC;CA1BD;;;ICQE,8BAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;QAN1B,UAAK,GAAW,IAAI,MAAM,CAAC,0BAA0B,CAAC,CAAC;;;QAIvD,gBAAW,GAAkB,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;KAGnG;IAGD,wCAAS,GAAT,UAAU,KAAoB;;;;;;;;;;;QAY5B,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;aAE3C,KAAK,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;;aAE7C,KAAK,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;;aAE7C,KAAK,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,EAC9C;YACA,OAAO;SACR;;;QAGD,IAAM,OAAO,GAAW,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;QACpD,IAAM,IAAI,GAAW,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC3C,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;KACF;;gBAjCuB,UAAU;;IAIlCA;QADC,YAAY,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;yDA8BnC;IAzCU,oBAAoB;QAHhC,SAAS,CAAC;YACT,QAAQ,EAAE,kBAAkB;SAC7B,CAAC;OACW,oBAAoB,CA0ChC;IAAD,2BAAC;CA1CD;;;ICiFE,wCACU,WAAwB,EACxB,cAA8B,EACtC,6BAA4D;QAH9D,iBASC;QARS,gBAAW,GAAX,WAAW,CAAa;QACxB,mBAAc,GAAd,cAAc,CAAgB;QA1ExC,mBAAc,GAAQ;YACpB,WAAW,EAAE;gBACX,KAAK,EAAE,aAAa;gBACpB,GAAG,EAAE,GAAG;gBACR,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,GAAG;gBACV,GAAG,EAAE,EAAE;gBACP,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;YACD,MAAM,EAAE;gBACN,KAAK,EAAE,GAAG;gBACV,GAAG,EAAE,EAAE;gBACP,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE,GAAG;gBACV,GAAG,EAAE,EAAE;gBACP,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;YACD,GAAG,EAAE;gBACH,KAAK,EAAE,GAAG;gBACV,GAAG,EAAE,CAAC;gBACN,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;YACD,IAAI,EAAE;gBACJ,KAAK,EAAE,MAAM;gBACb,GAAG,EAAE,EAAE;gBACP,GAAG,EAAE,CAAC;gBACN,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;aACR;SACF,CAAC;QAGF,gBAAW,GAAG,MAAM,CAAC;QACrB,oBAAe,GAAG;YAChB,YAAY,EAAE,KAAK;YACnB,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,CAAC;SACP,CAAC;QAEF,yBAAoB,GAAG,KAAK,CAAC;QAC7B,yBAAoB,GAAG,KAAK,CAAC;QAC7B,4BAAuB,GAAG,KAAK,CAAC;QAChC,4BAAuB,GAAG,KAAK,CAAC;QAChC,0BAAqB,GAAG,KAAK,CAAC;QAC9B,0BAAqB,GAAG,KAAK,CAAC;QAC9B,6BAAwB,GAAG,KAAK,CAAC;QACjC,6BAAwB,GAAG,KAAK,CAAC;QAa/B,IAAI,CAAC,2BAA2B,GAAG,6BAA6B,CAAC,gBAAgB,CAAC,SAAS,CACzF,UAAA,OAAO;YACL,KAAI,CAAC,+BAA+B,EAAE,CAAC;YACvC,KAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B,CAAC,CAAC;KACN;IAED,iDAAQ,GAAR;QACE,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,kEAAyB,GAAzB;QACE,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;KACvC;IAED,kDAAS,GAAT;QAAA,iBAuCC;QAtCC,IAAI,CAAC,mBAAmB,CAAC,aAAa;aACnC,SAAS,CAAC,UAAA,GAAG;YACZ,KAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,KAAK,SAAS;gBACrE,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO;mBAC1D,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE;gBACrE,KAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;aAClC;iBAAM,IAAI,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,KAAK,SAAS;gBAC5E,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO;mBAC1D,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,EAAE;gBACrE,KAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;aAClC;iBAAM,IAAI,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,KAAK,SAAS;gBAC5E,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO;mBAC7D,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,EAAE;gBACxE,KAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;aACrC;iBAAM,IAAI,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,KAAK,SAAS;gBAC/E,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO;mBAC7D,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,EAAE;gBACxE,KAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;aACrC;iBAAM,IAAI,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,KAAK,SAAS;gBAC7E,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO;mBAC3D,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE;gBACtE,KAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACnC;iBAAM,IAAI,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,KAAK,SAAS;gBAC7E,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO;mBAC3D,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,EAAE;gBACtE,KAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aAEnC;iBAAM,IAAI,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,KAAK,SAAS;gBAC/E,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO;mBAC7D,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,EAAE;gBACxE,KAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;aACtC;iBAAM,IAAI,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,KAAK,SAAS;gBAC/E,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO;mBAC7D,KAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,EAAE;gBACxE,KAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;aACtC;SACF,CAAC,CAAC;KACN;IAED,oDAAW,GAAX,UAAY,KAAK;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;KAC7G;IAED,4DAAmB,GAAnB;QACE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;gBAC5G,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,CAAC;QAE/E,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;gBAC/G,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,CAAC;QAElF,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;gBAC7G,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;QAEhF,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;gBAC/G,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,CAAC;KACnF;IAED,sDAAa,GAAb,UAAc,QAAQ;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAC9E,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAChF,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACjF,IAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAEpF,QAAQ,QAAQ;YACd,KAAK,MAAM;gBACT,YAAY,GAAG,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC;gBAC5E,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE;oBAC9C,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;iBAC5D;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC7E,MAAM;YAER,KAAK,MAAM;gBACT,YAAY,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,IAAI,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC;gBAC/E,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC/C,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC7D;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC9E,MAAM;YAER,KAAK,QAAQ;gBACX,YAAY,GAAG,SAAS,KAAK,SAAS,IAAI,SAAS,IAAI,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC;gBAC5E,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE;oBACjD,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;iBAC/D;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAChF,MAAM;YAER,KAAK,QAAQ;gBACX,YAAY,GAAG,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC;gBACrF,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE;oBACjD,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;iBAC/D;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAChF,MAAM;SACT;KACF;IAED,sDAAa,GAAb,UAAc,QAAQ;QACpB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAC9E,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAChF,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACjF,IAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAEpF,QAAQ,QAAQ;YACd,KAAK,MAAM;gBACT,YAAY,GAAG,SAAS,CAAC;gBACzB,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE;oBAC9C,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC;iBAC5D;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC7E,MAAM;YAER,KAAK,MAAM;gBACT,YAAY,GAAG,UAAU,CAAC;gBAC1B,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC/C,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC7D;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC9E,MAAM;YAER,KAAK,QAAQ;gBACX,YAAY,GAAG,SAAS,CAAC;gBACzB,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE;oBACjD,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;iBAC/D;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAChF,MAAM;YAER,KAAK,QAAQ;gBACX,YAAY,GAAG,YAAY,CAAC;gBAC5B,IAAI,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE;oBACjD,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC;iBAC/D;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAChF,MAAM;SACT;KACF;IAED,mDAAU,GAAV,UAAW,KAAU,EAAE,QAAQ;QAC7B,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC;QAC9E,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAChF,IAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC;QACjF,IAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAEpF,QAAQ,QAAQ;YACd,KAAK,MAAM;gBACT,YAAY,GAAG,SAAS,CAAC;gBACzB,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,IAAI,EAAE;oBACtD,YAAY,GAAG,CAAC,CAAC;iBAClB;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC7E,MAAM;YAER,KAAK,MAAM;gBACT,YAAY,GAAG,UAAU,CAAC;gBAC1B,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,IAAI,EAAE;oBACtD,YAAY,GAAG,CAAC,CAAC;iBAClB;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC9E,MAAM;YAER,KAAK,QAAQ;gBACX,YAAY,GAAG,SAAS,CAAC;gBACzB,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,IAAI,EAAE;oBACtD,YAAY,GAAG,CAAC,CAAC;iBAClB;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAChF,MAAM;YAER,KAAK,QAAQ;gBACX,YAAY,GAAG,YAAY,CAAC;gBAC5B,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,IAAI,EAAE;oBACtD,YAAY,GAAG,CAAC,CAAC;iBAClB;gBAED,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAChF,MAAM;SACT;KACF;IAED,oDAAW,GAAX;QACE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE;YACzE,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,CAAC;SAChD;KACF;IAED,kEAAyB,GAAzB;QACE,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU;aACxC,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,uBAAuB;gBACxF,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,qBAAqB;gBAC3F,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC;aAClE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,KAAK,SAAS;gBAClE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO;gBAC7D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,IAAI,IAAI;gBACpE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC;aACvE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,KAAK,SAAS;gBACnE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO;gBAC9D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,IAAI,IAAI;gBACrE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC;aACxE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,KAAK,SAAS;gBACrE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO;gBAChE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,IAAI,IAAI;gBACvE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC;aAC1E,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,KAAK,SAAS;gBACrE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,OAAO;gBAChE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,IAAI,IAAI;gBACvE,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;KAC/E;IAEO,wEAA+B,GAAvC;QACE,IAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC1C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,IAAI,IAAI;YAC5F,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,IAAI,IAAI;YACjG,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,IAAI,IAAI;YACvG,QAAQ,CAAC,cAAc,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,IAAI,IAAI;YACvG,QAAQ,CAAC,cAAc,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,QAAQ,CAAC,UAAU,IAAI,IAAI;YAC5F,QAAQ,CAAC,UAAU,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,YAAY,KAAK,SAAS,IAAI,QAAQ,CAAC,YAAY,IAAI,IAAI;YACjG,QAAQ,CAAC,YAAY,GAAG,gBAAgB,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,eAAe,KAAK,SAAS,IAAI,QAAQ,CAAC,eAAe,IAAI,IAAI;YACzG,QAAQ,CAAC,eAAe,GAAG,gBAAgB,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,eAAe,KAAK,SAAS,IAAI,QAAQ,CAAC,eAAe,IAAI,IAAI;YACzG,QAAQ,CAAC,eAAe,GAAG,gBAAgB,CAAC;KAC/C;IAEO,kEAAyB,GAAjC;QACE,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS;eACtE,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACpC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,mBAAmB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBAChE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7F,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnG,oBAAoB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACjE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC/F,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpG,CAAC,CAAC;SACJ;aAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC/E,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACpC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnG,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpG,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC9E,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACrC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,mBAAmB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBAChE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7F,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpG,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC7E,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACrC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,mBAAmB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBAChE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7F,oBAAoB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACjE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG,CAAC,CAAC;SACJ;aAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC9E,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACpC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnG,oBAAoB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACjE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG,CAAC,CAAC;SACJ;aAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC9E,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACpC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnG,oBAAoB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACjE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC/F,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpG,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC9E,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACpC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,mBAAmB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBAChE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7F,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnG,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpG,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC7E,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACrC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,mBAAmB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBAChE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7F,oBAAoB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACjE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC/F,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpG,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC7E,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACpC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,mBAAmB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBAChE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7F,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnG,oBAAoB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACjE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC9E,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACrC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,mBAAmB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBAChE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAC9F,CAAC,CAAC;SACJ;aAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC9E,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACrC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,oBAAoB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACjE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAChG,CAAC,CAAC;SACJ;aAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC/E,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACpC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpG,CAAC,CAAC;SACJ;aAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC/E,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACrC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpG,CAAC,CAAC;SACJ;aAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS;eAC/E,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW;eACrC,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE;YAC1C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBAChD,mBAAmB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBAChE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC7F,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACnG,oBAAoB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACjE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC/F,sBAAsB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ;wBACnE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACpG,CAAC,CAAC;SACJ;KACF;;gBA7ZsB,WAAW;gBACR,cAAc;gBACP,6BAA6B;;IAPrDA;QAAR,KAAK,EAAE;8FAA6C;IAC5CA;QAAR,KAAK,EAAE;yEAAuB;IACtBA;QAAR,KAAK,EAAE;+EAA0C;IAxEvC,8BAA8B;QAL1C,SAAS,CAAC;YACT,QAAQ,EAAE,6BAA6B;YACvC,w0ZAAuD;;SAExD,CAAC;OACW,8BAA8B,CAye1C;IAAD,qCAAC;CAzeD;;;ICiBE,wCAAoB,WAAwB,EAAU,sBAA8C;QAAhF,gBAAW,GAAX,WAAW,CAAa;QAAU,2BAAsB,GAAtB,sBAAsB,CAAwB;QAbpG,aAAQ,GAAG;YACT,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,qBAAqB;YAC7B,WAAW,EAAE,KAAK;YAClB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,IAAI;SACpB,CAAC;QAKQ,0BAAqB,GAAG,IAAI,YAAY,EAAE,CAAC;KAEoD;IAEzG,iDAAQ,GAAR;QACE,IAAI,CAAC,yBAAyB,EAAE,CAAC;KAClC;IAED,wDAAe,GAAf;QACE,IAAI,IAAI,CAAC,mBAAmB,CAAC,YAAY,KAAK,SAAS,EAAE;YACvD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5G,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC5C;KACF;IAED,2DAAkB,GAAlB;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC;QACrE,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,IAAM,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC;YACjE,IAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;YAC9C,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACxD,eAAe,CAAC,aAAa,GAAG,aAAa,CAAC;YAE9C,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;YAEjD,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACzE,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;YAC1E,IAAI,CAAC,iBAAiB,CAAC,aAAa,GAAG,aAAa,CAAC;YACrD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAClH;KACF;IAED,kEAAyB,GAAzB;QACE,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO;YAC1D,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ;YACjE,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;KAC3C;IAEO,kEAAyB,GAAjC;QACE,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAChD,eAAe,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACzG,CAAC,CAAC;KACJ;;gBA1CgC,WAAW;gBAAkC,sBAAsB;;IAL3FA;QAAR,KAAK,EAAE;8FAA6C;IAC5CA;QAAR,KAAK,EAAE;yEAAuB;IACtBA;QAAR,KAAK,EAAE;+EAA0C;IACxCA;QAAT,MAAM,EAAE;iFAA4C;IAf1C,8BAA8B;QAL1C,SAAS,CAAC;YACT,QAAQ,EAAE,8BAA8B;YACxC,2sFAAwD;;SAEzD,CAAC;OACW,8BAA8B,CA4D1C;IAAD,qCAAC;CA5DD;;;ICCE,qCAAoB,EAAc;QAAd,OAAE,GAAF,EAAE,CAAY;;;;QAF1B,gBAAW,GAAkB,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;KAGnG;IAGD,+CAAS,GAAT,UAAU,KAAoB;;QAE5B,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YAC9C,OAAO;SACR;QACD,IAAM,OAAO,GAAW,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC;QACpD,IAAM,IAAI,GAAW,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAM,KAAK,GAAW,CAAC,IAAI,CAAC;;;;KAI7B;;gBAfuB,UAAU;;IAIlCA;QADC,YAAY,CAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAC;gEAYnC;IAvBU,2BAA2B;QAHvC,SAAS,CAAC;YACT,QAAQ,EAAE,yBAAyB;SACpC,CAAC;OACW,2BAA2B,CAwBvC;IAAD,kCAAC;CAxBD;;;ICIE,0BAA8B,GAAQ;QACpC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;KAChB;IAEM,+BAAI,GAAX,UAAY,KAAa;QAAzB,iBAyBC;QAxBC,OAAO,IAAI,OAAO,CAChB,UAAC,OAAO,EAAE,MAAM;YACd,IAAI,QAAQ,GAAG,IAAI,CAAC;YAEpB,IAAI;gBACF,QAAQ,GAAG,KAAI,CAAC,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC9C,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC9B,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;gBAC/B,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;gBAC7B,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC;gBAC9B,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC7B,KAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBACpC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;gBACvB,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAClB,KAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC,CAAC;aAChB;oBAAS;gBACR,IAAI,QAAQ,IAAI,QAAQ,CAAC,UAAU,EAAE;oBACnC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBAC3C;aACF;SACF,CACF,CAAC;KACH;;gDA7BY,MAAM,SAAC,QAAQ;;IAJjB,gBAAgB;QAD5B,UAAU,EAAE;QAKEK,WAAA,MAAM,CAAC,QAAQ,CAAC,CAAA;OAJlB,gBAAgB,CAkC5B;IAAD,uBAAC;CAlCD;;;ICQE,4BACU,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAJlC,kBAAa,GAAyB,IAAI,YAAY,EAAU,CAAC;QACjE,mBAAc,GAAwB,IAAI,YAAY,EAAS,CAAC;KAIzE;IAGD,4CAAe,GAAf,UAAgB,KAAU;QAD1B,iBAcC;QAZC,IAAI,CAAC,gBAAgB;aAClB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;aACpB,IAAI,CACH,UAAC,KAAa;YACZ,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAChC,CACF;aACA,KAAK,CACJ,UAAC,KAAY;YACX,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC,CACF,CAAC;KACL;;gBAjB2B,gBAAgB;;IALnCL;QAAR,KAAK,EAAE;yDAAgB;IACdA;QAAT,MAAM,EAAE;6DAAkE;IACjEA;QAAT,MAAM,EAAE;8DAAiE;IAO1EA;QADC,YAAY,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC;6DAcxC;IAxBU,kBAAkB;QAH9B,SAAS,CAAC;YACT,QAAQ,EAAE,gBAAgB;SAC3B,CAAC;OACW,kBAAkB,CAyB9B;IAAD,yBAAC;CAzBD;;;ICDE,0BACU,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;KAEzB;IAED,uCAAY,GAAZ,UAAa,GAAW;QAAxB,iBAiBC;QAhBC,OAAO,IAAI,UAAU,CAAC,UAAC,QAAyB;YAC9C,IAAI,SAAS,GAAW,IAAI,CAAC;YAE7B,KAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CACpD,UAAA,CAAC;gBACC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACnC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC1B,CAAC,CAAC;YAEL,OAAO;gBACL,IAAI,SAAS,EAAE;oBACb,GAAG,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;oBAC/B,SAAS,GAAG,IAAI,CAAC;iBAClB;aACF,CAAC;SACH,CAAC,CAAC;KACJ;;gBArBe,UAAU;;IAFf,gBAAgB;QAD5B,UAAU,EAAE;OACA,gBAAgB,CAwB5B;IAAD,uBAAC;CAxBD;;;ICeE,oBACU,IAAuB,EACvB,gBAAkC,EAClC,SAAuB;QAFvB,SAAI,GAAJ,IAAI,CAAmB;QACvB,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,cAAS,GAAT,SAAS,CAAc;QAbzB,iBAAY,GAAQ,IAAI,CAAC;QACzB,yBAAoB,GAAQ,IAAI,CAAC;QACjC,kBAAa,GAAkB,IAAI,CAAC;QACpC,SAAI,GAAoB,IAAI,CAAC;QAG7B,YAAO,GAAyB,IAAI,eAAe,CAAM,IAAI,CAAC,CAAC;QAC/D,WAAM,GAAoB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;QACtD,0BAAqB,GAAkB,IAAI,CAAC;KAM/C;IAEL,gCAAW,GAAX;QACE,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;KACF;IAED,8BAAS,GAAT,UAAU,GAAW;QACnB,IAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;KACjC;IAEO,sCAAiB,GAAzB,UAA0B,GAAW;QAArC,mBAcC;QAbC,IAAI,CAAC,GAAG,EAAE;YACR,OAAO,IAAI,CAAC,MAAM,CAAC;SACpB;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,GAAG,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,UAAA,CAAC;gBAC9E,IAAM,SAAS,GAAG,OAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;gBAC3D,OAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aAC9B,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAEO,mCAAc,GAAtB,UAAuB,GAAoB;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,GAAG,EAAE;gBACP,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACtB;YACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9C,OAAO,IAAI,CAAC,YAAY,CAAC;SAC1B;QACD,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;YACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,oBAAoB,EAAE;YACnD,OAAO,IAAI,CAAC,oBAAoB,CAAC;SAClC;QACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9C,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC7C;IAEO,+BAAU,GAAlB,UAAmB,GAAoB;QACrC,IAAM,KAAK,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAEhB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC;YACjC,IAAI,YAAC,KAAK;gBACR,OAAO,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aAC7C,EAAE,KAAK,EAAE,UAAC,CAAM,IAAO,MAAM,CAAC,CAAC,EAAE;SACnC,CAAC,CAAC;KACJ;IAEO,6BAAQ,GAAhB;QACE,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;QAAG,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAClE,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;SAC1C;QACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;KAClB;IAEO,uCAAkB,GAA1B,UAA2B,KAAU,EAAE,KAAa;QAClD,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE;YACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;SAC1B;KACF;;gBA9Ee,iBAAiB;gBACL,gBAAgB;gBACvB,YAAY;;IAdtB,UAAU;QAJtB,IAAI,CAAC;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,KAAK;SACZ,CAAC;OACW,UAAU,CA2FtB;IAAD,iBAAC;CA3FD;;ACoBA,IAAM,UAAU,GAAG;IACjB,2BAA2B,EAAE,0BAA0B,EAAE,oBAAoB;IAC7E,6BAA6B,EAAE,4BAA4B,EAAE,iCAAiC;IAC9F,iBAAiB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,UAAU;IACtG,2BAA2B,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,8BAA8B;CAAC,CAAC;AAwBnH;IAAA;KAAyC;IAA5B,wBAAwB;QAtBpC,QAAQ,CAAC;YACR,OAAO,EAAE;gBACP,YAAY;gBACZ,UAAU;gBACV,WAAW;gBACX,cAAc;gBACd,mBAAmB;gBACnB,gBAAgB;gBAChB,iBAAiB;gBACjB,uBAAuB;gBACvB,gBAAgB;aACjB;YACD,YAAY,EAAE,UAAU;YACxB,SAAS,EAAE;gBACT,sBAAsB;gBACtB,6BAA6B;gBAC7B,yBAAyB;gBACzB,gBAAgB;gBAChB,gBAAgB;aACjB;YACD,OAAO,EAAE,UAAU;SACpB,CAAC;OACW,wBAAwB,CAAI;IAAD,+BAAC;CAAzC;;AChDA;IAAA;QACY,UAAK,GAA2B,EAAE,CAAC;QAEnC,UAAK,GAAG,CAAC,CAAC;KAoDrB;IAlDU,gCAAW,GAAlB,UAAmB,GAAW;QAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;KACzC;IAEM,0BAAK,GAAZ;QACI,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAEM,wBAAG,GAAV,UAAW,GAAW,EAAE,KAAQ;QAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,KAAK,EAAE,CAAC;SAChB;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;KAC3B;IAEM,2BAAM,GAAb,UAAc,GAAW;QACrB,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,GAAG,CAAC;KACd;IAEM,yBAAI,GAAX,UAAY,GAAW;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KAC1B;IAEM,yBAAI,GAAX;QACI,IAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,IAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACrB;SACJ;QAED,OAAO,MAAM,CAAC;KACjB;IAEM,2BAAM,GAAb;QACI,IAAM,MAAM,GAAQ,EAAE,CAAC;QAEvB,KAAK,IAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;aACjC;SACJ;QAED,OAAO,MAAM,CAAC;KACjB;IACL,iBAAC;CAAA,IAAA;;;IClDC,wBAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QALpC,kBAAa,GAAI,+CAA+C,CAAC;QACjE,sBAAiB,GAAG,6CAA6C,CAAC;QAE3D,YAAO,GAA4B,IAAI,UAAU,EAAe,CAAC;KAE/B;IAEzC,6CAAoB,GAApB;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;KACpE;IAED,iDAAwB,GAAxB;QACE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;KACxE;;gBARyB,UAAU;;IAPzB,cAAc;QAD1B,UAAU,EAAE;OACA,cAAc,CAgB1B;IAAD,qBAAC;CAhBD;;ACFA,IAAMC,GAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAO5B;IAOE,mCACE,cAA8B,EACtB,yBAAoD;QAApD,8BAAyB,GAAzB,yBAAyB,CAA2B;QAPpD,iBAAY,GAA8B,IAAI,YAAY,EAAe,CAAC;QAQlF,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;KACtC;IAED,mDAAe,GAAf,UAAgB,WAAwB;QACtC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YAClE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SAC3D;QACD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrC;IAED,+CAAW,GAAX,UAAY,WAAwB;QAClC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpCA,GAAC,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;QAExB,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;KACnD;;gBArBiB,cAAc;gBACK,yBAAyB;;IAPpDD;QAAT,MAAM,EAAE;mEAA2E;IAFzE,yBAAyB;QALrC,SAAS,CAAC;YACT,QAAQ,EAAE,wBAAwB;YAClC,mnBAAkD;;SAEnD,CAAC;OACW,yBAAyB,CA8BrC;IAAD,gCAAC;CA9BD;;ACZA;IAII,qBAAY,SAAiB,EAAE,QAAgB,EAAI,YAAoB;QACnE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAE;QAC1B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;KACpC;IACL,kBAAC;CAAA,IAAA;;ACJD,IAAMC,GAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAQ5B;IASE,mCACU,aAA6B,EAC7B,cAA8B;QAD9B,kBAAa,GAAb,aAAa,CAAgB;QAC7B,mBAAc,GAAd,cAAc,CAAgB;QATxC,eAAU,GAAe,IAAI,UAAU,EAAE,CAAC;QAKhC,oBAAe,GAA8B,IAAI,YAAY,EAAe,CAAC;KAKtF;IAED,4CAAQ,GAAR;QACE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,+CAAW,GAAX;QACE,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE;YACvE,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;SAC9C;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;YACpE,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;SAC3C;KACF;IAED,kDAAc,GAAd,UAAe,MAAM;QACnB,IAAI,QAAgB,CAAC;QACrB,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC/B,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YACvF,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACnF,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC7CA,GAAC,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;aACzB;SACF;QAED,IAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC;QAClD,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;KACnB;IAED,+CAAW,GAAX;QACEA,GAAC,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;KACzB;IAEO,qDAAiB,GAAzB;QAAA,iBAMC;QALC,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE;aACtC,SAAS,CAAC,UAAA,IAAI;YACb,IAAM,IAAI,GAAG,KAAI,CAAC;YAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAE,IAAI,WAAW,CAAC,kBAAkB,EAAE,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC;SAC3F,CAAC,CAAC;KACN;IAEO,kDAAc,GAAtB;QAAA,iBAMC;QALC,IAAI,CAAC,aAAa,CAAC,wBAAwB,EAAE;aAC5C,SAAS,CAAC,UAAA,IAAI;YACb,IAAM,IAAI,GAAG,KAAI,CAAC;YAClB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAE,IAAI,WAAW,CAAC,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC;SACrF,CAAC,CAAC;KACJ;IAEO,4CAAQ,GAAhB,UAAiB,UAAe;QAAhC,iBAUC;QATC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpC,IAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAM,sBAAsB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,UAAC,CAAC;YAC5B,IAAI,CAAC,eAAe,CAAC,IAAI,CACvB,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,sBAAsB,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACpI,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC3C;;gBAlEwB,cAAc;gBACb,cAAc;;IAJ9BD;QAAT,MAAM,EAAE;sEAA8E;IAP5E,yBAAyB;QANrC,SAAS,CAAC;YACT,QAAQ,EAAE,wBAAwB;YAClC,qYAAkD;;SAEnD,CAAC;OAEW,yBAAyB,CA6ErC;IAAD,gCAAC;CA7ED;;ACPA,IAAMM,YAAU,GAAG,CAAC,yBAAyB,EAAE,yBAAyB,CAAC,CAAC;AAU1E;IAAA;KAAsC;IAAzB,qBAAqB;QARjC,QAAQ,CAAC;YACR,OAAO,EAAE;gBACP,YAAY;aACb;YACD,YAAY,EAAE,CAACA,YAAU,CAAC;YAC1B,SAAS,EAAG,CAAC,cAAc,CAAC;YAC5B,OAAO,EAAE,CAACA,YAAU,CAAC;SACtB,CAAC;OACW,qBAAqB,CAAI;IAAD,4BAAC;CAAtC;;AChBA;;GAEG;;;;"}
\No newline at end of file