react-mutation-mapper 0.8.108 → 0.8.109
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +3 -1
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/styles.css +13 -13
- package/package.json +6 -6
package/dist/index.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.js","sources":["../src/component/StatusHelpers.tsx","../src/images/civic_text_logo.png","../src/component/civic/CivicCard.tsx","../src/images/civic-logo.png","../src/images/civic-logo-no-variants.png","../src/component/civic/Civic.tsx","../src/component/clinvar/ClinvarSummary.tsx","../src/images/mcg_logo.png","../src/component/myCancerGenome/MyCancerGenome.tsx","../src/component/hotspot/HotspotInfo.tsx","../src/images/cancer-hotspots.svg","../src/images/3d-hotspots.svg","../src/component/column/HotspotAnnotation.tsx","../src/util/DataFetcherUtils.ts","../src/images/vue_logo.png","../src/component/revue/Revue.tsx","../src/component/column/Annotation.tsx","../src/component/clinvar/ClinvarHelper.ts","../src/component/column/ClinvarInterpretation.tsx","../src/component/column/ColumnHeader.tsx","../src/component/dbsnp/DbsnpId.tsx","../src/component/column/MyVariantInfoHelper.tsx","../src/component/column/Dbsnp.tsx","../src/util/GnomadUtils.ts","../src/component/gnomad/GnomadFrequencyTable.tsx","../src/component/gnomad/GnomadFrequency.tsx","../src/component/column/Gnomad.tsx","../src/component/column/VariantAnnotationHelper.ts","../src/component/column/HgvsHelper.ts","../src/component/column/Hgvsc.tsx","../src/component/column/Hgvsg.tsx","../src/component/column/MutationStatus.tsx","../src/component/column/ProteinChange.tsx","../src/component/column/Signal.tsx","../src/util/SelectorUtils.ts","../src/component/filter/DropdownSelector.tsx","../src/component/filter/BadgeLabel.tsx","../src/component/filter/BadgeSelector.tsx","../src/util/MutationTypeUtils.ts","../src/component/filter/ProteinImpactTypeHelper.tsx","../src/component/filter/ProteinImpactTypeDropdownSelector.tsx","../src/component/filter/ProteinImpactTypeBadgeSelector.tsx","../src/component/filter/MutationStatusBadgeSelector.tsx","../src/component/dataTable/ColumnSelector.tsx","../src/component/mutationMapper/FilterResetPanel.tsx","../src/model/DataFilter.ts","../src/util/FilterUtils.ts","../src/component/dataTable/SearchBox.tsx","../src/component/dataTable/DataTableToolbar.tsx","../src/component/dataTable/DataTable.tsx","../src/component/column/MutationType.tsx","../src/component/mutationTable/MutationColumnHelper.tsx","../src/component/mutationTable/DefaultMutationTable.tsx","../src/component/lollipopPlot/Domain.tsx","../src/model/LollipopSpec.ts","../src/component/lollipopPlot/Lollipop.tsx","../src/store/DefaultLollipopPlotControlsConfig.ts","../src/util/LollipopPlotUtils.ts","../src/util/PfamUtils.ts","../src/component/track/TrackSelector.tsx","../src/util/TrackUtils.ts","../src/component/lollipopMutationPlot/DefaultLollipopPlotLegend.tsx","../src/component/lollipopPlot/Sequence.tsx","../src/component/lollipopPlot/LollipopPlotNoTooltip.tsx","../src/component/lollipopPlot/LollipopPlot.tsx","../src/component/lollipopMutationPlot/AxisScaleSwitch.tsx","../src/component/lollipopMutationPlot/PercentToggle.tsx","../src/component/lollipopMutationPlot/LollipopMutationPlotControls.tsx","../src/filter/HotspotFilter.ts","../src/component/track/TrackCircle.tsx","../src/util/LabelUtils.tsx","../src/component/track/TrackRect.tsx","../src/component/track/TrackItem.tsx","../src/component/track/Track.tsx","../src/component/track/HotspotTrack.tsx","../src/filter/OncoKbFilter.ts","../src/component/track/OncoKbTrackTooltip.tsx","../src/component/track/OncoKbTrack.tsx","../src/component/track/ExonTrack.tsx","../src/component/ptm/PtmReferenceList.tsx","../src/component/ptm/PtmAnnotationTable.tsx","../src/component/track/PtmTrack.tsx","../src/component/track/UniprotTopologyTrack.tsx","../src/component/track/TrackPanel.tsx","../src/component/lollipopPlot/DomainTooltip.tsx","../src/component/lollipopMutationPlot/LollipopMutationPlot.tsx","../src/component/lollipopMutationPlot/LollipopTooltipCountInfo.tsx","../src/cache/DefaultStringQueryCache.ts","../src/cache/DefaultPubMedCache.ts","../src/cache/MutationAlignerCache.ts","../src/store/DefaultMutationMapperDataStore.ts","../src/store/DefaultMutationMapperDataFetcher.ts","../src/store/DefaultMutationMapperFilterApplier.ts","../src/store/DefaultMutationMapperStore.ts","../src/util/DefaultWindowInstance.ts","../src/component/mutationMapper/DefaultMutationRateSummary.tsx","../src/component/mutationMapper/TranscriptDropdown.tsx","../src/component/mutationMapper/GeneSummary.tsx","../src/component/mutationMapper/MutationMapper.tsx"],"sourcesContent":["import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport annotationStyles from './column/annotation.module.scss';\n\nexport function loaderIcon(className?: string) {\n return (\n <span\n className={classNames(\n `${annotationStyles['annotation-item']}`,\n `${annotationStyles['annotation-item-load']}`,\n className\n )}\n >\n <i className=\"fa fa-spinner fa-pulse\" />\n </span>\n );\n}\n\nexport function errorIcon(errorMessage: string) {\n return (\n <DefaultTooltip\n overlay={<span>{errorMessage}</span>}\n placement=\"right\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <span className={`${annotationStyles['annotation-item-error']}`}>\n <i className=\"fa fa-exclamation-triangle text-danger\" />\n </span>\n </DefaultTooltip>\n );\n}\n","var img = \"data:image/png;base64,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\";\n export default img;","import * as React from 'react';\nimport _ from 'lodash';\nimport { ICivicVariantSummary } from 'cbioportal-utils';\n\nimport civicTextLogo from '../../images/civic_text_logo.png';\nimport './civicCard.scss';\n\nexport interface ICivicCardProps {\n title: string;\n geneName: string;\n geneDescription: string;\n geneUrl: string;\n variants: { [name: string]: ICivicVariantSummary };\n}\n\nexport default class CivicCard extends React.Component<ICivicCardProps, {}> {\n /**\n * Generate variants\n * @param variantMap\n * @returns {JSX.Element[]}\n */\n public generateVariants(variantMap: {\n [name: string]: ICivicVariantSummary;\n }) {\n const list: JSX.Element[] = [];\n\n if (_.isEmpty(variantMap)) {\n list.push(this.variantItem('_naVariant_'));\n } else {\n for (let name in variantMap) {\n let variant = variantMap[name];\n let entryTypes = Object.entries(variant.evidenceCounts)\n .filter(([key, value]) => value !== 0)\n .map(([key, value]) => `${key.slice(0, -5)}: ${value}`) // Remove \"Count\" substring from key\n .join(', ');\n list.push(\n this.variantItem(\n name,\n variant.url,\n variant.name,\n entryTypes,\n variant.description\n )\n );\n }\n }\n\n return list;\n }\n\n /**\n * Get variant item\n * @param url\n * @param name\n * @param entryTypes\n * @param description\n * @returns {any}\n */\n public variantItem(\n key: string,\n url?: string,\n name?: string,\n entryTypes?: string,\n description?: string\n ) {\n let result;\n\n if (url || name || entryTypes || description) {\n result = (\n <div key={key} className=\"civic-card-variant\">\n <div className=\"civic-card-variant-header\">\n <span className=\"civic-card-variant-name\">\n <a href={url} target=\"_blank\">\n {name}\n </a>\n </span>\n <span className=\"civic-card-variant-entry-types\">\n {' '}\n Entries: {entryTypes}\n </span>\n </div>\n <div className=\"civic-card-variant-description summary\">\n {description}\n </div>\n </div>\n );\n } else {\n result = (\n <div key={key} className=\"civic-card-variant\">\n <div className=\"civic-card-variant-description summary\">\n Information about the oncogenic activity of this\n alteration is not yet available in CIViC.\n </div>\n </div>\n );\n }\n\n return result;\n }\n\n /**\n * Render civic card component\n * @returns {any}\n */\n public render() {\n return (\n <div className=\"civic-card\">\n <span>\n <div className=\"col s12 tip-header\">{this.props.title}</div>\n <div className=\"col s12 civic-card-content\">\n <div className=\"col s12 civic-card-gene\">\n <p>\n <span className=\"civic-card-gene-name\">\n <a\n href={this.props.geneUrl}\n target=\"_blank\"\n >\n <b>{this.props.geneName}</b>\n </a>\n </span>{' '}\n - {this.props.geneDescription}\n </p>\n </div>\n <div className=\"col s12\">\n <ul>\n {this.generateVariants(this.props.variants)}\n </ul>\n </div>\n\n <div className=\"item disclaimer\">\n <span>\n Disclaimer: This resource is intended for purely\n research purposes. It should not be used for\n emergencies or medical or professional advice.\n </span>\n </div>\n </div>\n </span>\n\n <div className=\"item footer\">\n <a href={this.props.geneUrl} target=\"_blank\">\n <img\n src={civicTextLogo}\n className=\"civic-logo\"\n alt=\"CIViC\"\n />\n </a>\n </div>\n </div>\n );\n }\n}\n","var img = \"data:image/png;base64,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\";\n export default img;","var img = \"data:image/png;base64,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\";\n export default img;","import _ from 'lodash';\nimport { observable, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\nimport {\n CIVIC_NA_VALUE,\n ICivicEntry,\n ICivicVariantSummary,\n} from 'cbioportal-utils';\nimport CivicCard from './CivicCard';\n\nimport civicLogoSrc from '../../images/civic-logo.png';\nimport civicLogoNoVariantsSrc from '../../images/civic-logo-no-variants.png';\n\nimport annotationStyles from '../column/annotation.module.scss';\n\nexport interface ICivicProps {\n civicEntry: ICivicEntry | null | undefined;\n civicStatus: 'pending' | 'error' | 'complete';\n hasCivicVariants: boolean;\n}\n\nexport function hideArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.display = 'none';\n}\n\nexport function sortValue(civicEntry: ICivicEntry | null | undefined): number {\n let score = 0;\n\n if (civicEntry) {\n score = 1;\n }\n\n return score;\n}\n\nexport function download(civicEntry: ICivicEntry | null | undefined): string {\n if (!civicEntry) {\n return CIVIC_NA_VALUE;\n }\n\n const variants: ICivicVariantSummary[] = _.values(civicEntry.variants);\n const values: string[] = [];\n\n if (variants && variants.length > 0 && variants[0].evidenceCounts) {\n _.forEach(variants[0].evidenceCounts, (value, key) => {\n values.push(`${key}: ${value}`);\n });\n }\n\n // this indicates that we have an entry but the evidence is empty\n if (values.length === 0) {\n return CIVIC_NA_VALUE;\n }\n\n return values.join(', ');\n}\n\n@observer\nexport default class Civic extends React.Component<ICivicProps, {}> {\n @observable tooltipDataLoadComplete: boolean = false;\n\n constructor(props: ICivicProps) {\n super(props);\n\n makeObservable(this);\n\n this.cardContent = this.cardContent.bind(this);\n }\n\n public render() {\n let civicContent: JSX.Element = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n const civicImgWidth: number = 14;\n let civicImgHeight: number = 14;\n let civicImgSrc = !this.props.hasCivicVariants\n ? civicLogoNoVariantsSrc\n : civicLogoSrc;\n\n if (this.props.civicStatus == 'error') {\n civicContent = errorIcon('Error fetching Civic data');\n } else if (this.props.civicEntry !== undefined) {\n if (\n this.props.civicEntry !== null &&\n this.props.civicStatus == 'complete'\n ) {\n civicContent = (\n <span className={`${annotationStyles['annotation-item']}`}>\n <img\n width={civicImgWidth}\n height={civicImgHeight}\n src={civicImgSrc}\n alt=\"Civic Variant Entry\"\n />\n </span>\n );\n\n civicContent = (\n <DefaultTooltip\n overlay={this.cardContent.bind(\n this,\n this.props.civicEntry\n )}\n placement=\"right\"\n trigger={['hover', 'focus']}\n onPopupAlign={hideArrow}\n destroyTooltipOnHide={false}\n >\n {civicContent}\n </DefaultTooltip>\n );\n }\n } else {\n // It's still unknown (undefined) if the current gene has a Civic entry or not.\n civicContent = loaderIcon('pull-left');\n }\n\n return civicContent;\n }\n\n private cardContent(civicEntry: ICivicEntry): JSX.Element {\n return (\n <CivicCard\n title={`CIViC Variants`}\n geneName={civicEntry.name}\n geneDescription={civicEntry.description}\n geneUrl={civicEntry.url}\n variants={civicEntry.variants}\n />\n );\n }\n}\n","import { DefaultTooltip, TruncatedText } from 'cbioportal-frontend-commons';\nimport { Clinvar } from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport * as React from 'react';\n\nexport type ClinvarSummaryProps = {\n clinvar?: Clinvar;\n};\n\nconst NoClinvarData = () => {\n return (\n <DefaultTooltip\n placement=\"topLeft\"\n overlay={<span>Variant has no ClinVar data.</span>}\n >\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n \n </span>\n </DefaultTooltip>\n );\n};\n\nconst ClinvarSummary = (props: ClinvarSummaryProps) => {\n if (!props.clinvar) {\n return <NoClinvarData />;\n } else {\n const clinvarId = props.clinvar.clinvarId;\n const clinvarLink = `https://www.ncbi.nlm.nih.gov/clinvar/variation/${clinvarId}/`;\n const clinicalSignificance = props.clinvar.clinicalSignificance;\n const conflictingClinicalSignificance =\n props.clinvar.conflictingClinicalSignificance;\n return (\n <TruncatedText\n maxLength={30}\n text={clinicalSignificance}\n addTooltip=\"always\"\n tooltip={\n <div style={{ maxWidth: 300 }}>\n <div>{clinicalSignificance}</div>\n {conflictingClinicalSignificance && (\n <div>{conflictingClinicalSignificance}</div>\n )}\n <div>\n (ClinVar ID:{' '}\n <a href={clinvarLink} target=\"_blank\">\n {clinvarId}\n </a>\n )\n </div>\n </div>\n }\n />\n );\n }\n};\n\nexport default ClinvarSummary;\n","var img = \"data:image/png;base64,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\";\n export default img;","import * as React from 'react';\nimport _ from 'lodash';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { parseMyCancerGenomeLink } from 'cbioportal-utils';\n\nimport mcgLogo from '../../images/mcg_logo.png';\nimport annotationStyles from '../column/annotation.module.scss';\nimport mcgStyles from './myCancerGenome.module.scss';\n\nexport interface IMyCancerGenomeProps {\n linksHTML: string[];\n}\n\nexport function placeArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.left = '10px';\n}\n\nexport function sortValue(links: string[]): number {\n return links.length > 0 ? 1 : 0;\n}\n\nexport function download(links: string[]): string {\n return links.length > 0 ? 'present' : 'not present';\n}\n\nexport function myCancerGenomeLinks(linksHTML: string[]) {\n const links: any[] = [];\n\n _.each(linksHTML, (link: string, index: number) => {\n // TODO this is a workaround, ideally we should fix the data itself\n // parse the data as an HTML dom element, since it is formatted as an HTML link.\n const myCancerGenomeLink = parseMyCancerGenomeLink(link);\n\n if (myCancerGenomeLink) {\n links.push(\n <li key={index}>\n <a href={myCancerGenomeLink.url} target=\"_blank\">\n {myCancerGenomeLink.text}\n </a>\n </li>\n );\n }\n });\n\n return (\n <span>\n <b>My Cancer Genome links:</b>\n <br />\n <ul className={mcgStyles['link-list']}>{links}</ul>\n </span>\n );\n}\n\nexport default class MyCancerGenome extends React.Component<\n IMyCancerGenomeProps\n> {\n public render() {\n let myCancerGenomeContent: JSX.Element = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n if (this.props.linksHTML.length > 0) {\n const arrowContent = <div className=\"rc-tooltip-arrow-inner\" />;\n const tooltipContent = myCancerGenomeLinks(this.props.linksHTML);\n\n myCancerGenomeContent = (\n <DefaultTooltip\n overlay={tooltipContent}\n placement=\"topLeft\"\n trigger={['hover', 'focus']}\n arrowContent={arrowContent}\n onPopupAlign={placeArrow}\n >\n <span\n className={`${annotationStyles['annotation-item']} mcg`}\n >\n <img\n width=\"14\"\n height=\"14\"\n src={mcgLogo}\n alt=\"My Cancer Genome Symbol\"\n />\n </span>\n </DefaultTooltip>\n );\n }\n\n return myCancerGenomeContent;\n }\n}\n","import * as React from 'react';\n\nimport hotspotStyles from './hotspotInfo.module.scss';\nimport { getNCBIlink } from 'cbioportal-frontend-commons';\n\nexport type HotspotInfoProps = {\n isHotspot: boolean;\n is3dHotspot: boolean;\n count?: number;\n customInfo?: JSX.Element;\n};\n\nexport function title(\n isHotspot: boolean,\n is3dHotspot: boolean,\n count?: number,\n customInfo?: JSX.Element\n) {\n const recurrentHotspot = isHotspot ? <b>Recurrent Hotspot</b> : null;\n const maybeAnd = isHotspot && is3dHotspot ? <span>and</span> : null;\n const clusteredHotspot = is3dHotspot ? <b>3D Clustered Hotspot</b> : null;\n\n let countInfo: JSX.Element | null = null;\n\n if (count) {\n const sample = count > 1 ? 'samples' : 'sample';\n countInfo = (\n <span>\n <b>{count}</b> {sample} with\n </span>\n );\n }\n\n return (\n <span>\n {countInfo} {recurrentHotspot} {maybeAnd} {clusteredHotspot}{' '}\n {customInfo}\n </span>\n );\n}\n\nexport function publication(isHotspot: boolean, is3dHotspot: boolean) {\n const recurrentHotspot = isHotspot\n ? 'a recurrent hotspot (statistically significant)'\n : '';\n const maybeAnd = isHotspot && is3dHotspot ? 'and' : '';\n const clusteredHotspot = is3dHotspot ? 'a 3D clustered hotspot' : '';\n\n const recurrentPublication = isHotspot ? (\n <a href={getNCBIlink(`/pubmed/26619011`)} target=\"_blank\">\n Chang et al., Nat Biotechnol, 2016\n </a>\n ) : (\n ''\n );\n\n const clusteredPublication = is3dHotspot ? (\n <a\n href=\"http://genomemedicine.biomedcentral.com/articles/10.1186/s13073-016-0393-x\"\n target=\"_blank\"\n >\n Gao et al., Genome Medicine, 2017\n </a>\n ) : (\n ''\n );\n\n return (\n <span>\n This mutated amino acid was identified as {recurrentHotspot}{' '}\n {maybeAnd} {clusteredHotspot} in a population-scale cohort of tumor\n samples of various cancer types using methodology based in part on{' '}\n {recurrentPublication} {maybeAnd} {clusteredPublication}.\n </span>\n );\n}\n\nexport function link(isHotspot: boolean, is3dHotspot: boolean) {\n const recurrentLink = isHotspot ? (\n <a href=\"https://www.cancerhotspots.org/\" target=\"_blank\">\n https://cancerhotspots.org/\n </a>\n ) : (\n ''\n );\n\n const maybeAnd = isHotspot && is3dHotspot ? 'and' : '';\n\n const clusteredLink = is3dHotspot ? (\n <a href=\"https://www.3dhotspots.org/\" target=\"_blank\">\n https://3dhotspots.org/\n </a>\n ) : (\n ''\n );\n\n return (\n <span>\n Explore all mutations at {recurrentLink} {maybeAnd} {clusteredLink}.\n </span>\n );\n}\n\nexport const HotspotInfo: React.FunctionComponent<HotspotInfoProps> = props => {\n const { isHotspot, is3dHotspot, count, customInfo } = props;\n\n return (\n <span className={hotspotStyles['hotspot-info']}>\n {title(isHotspot, is3dHotspot, count, customInfo)}\n <br />\n {publication(isHotspot, is3dHotspot)}\n <br />\n <br />\n {link(isHotspot, is3dHotspot)}\n </span>\n );\n};\n","var img = \"data:image/svg+xml,%3c%3fxml version='1.0' encoding='utf-8'%3f%3e%3c!-- Generated by IcoMoon.io --%3e%3c!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='1024' height='1024' viewBox='0 0 1024 1024'%3e %3cg id='icomoon-ignore'%3e %3c/g%3e %3cpath fill='%23ff9900' d='M321.008 1045.333c-68.245-142.008-31.901-223.379 20.551-300.044 57.44-83.956 72.244-167.065 72.244-167.065s45.153 58.7 27.092 150.508c79.772-88.8 94.824-230.28 82.783-284.464 180.315 126.012 257.376 398.856 153.523 601.065 552.372-312.532 137.399-780.172 65.155-832.851 24.081 52.676 28.648 141.851-20 185.127-82.352-312.276-285.972-376.276-285.972-376.276 24.083 161.044-87.296 337.144-194.696 468.731-3.775-64.216-7.783-108.528-41.549-169.98-7.58 116.656-96.732 211.748-120.873 328.628-32.701 158.287 24.496 274.18 241.748 396.623z'%3e%3c/path%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3c%3fxml version='1.0' encoding='utf-8'%3f%3e%3c!-- Generator: Adobe Illustrator 16.0.4%2c SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3e%3c!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='24.263px' height='36.366px' viewBox='0 0 24.263 36.366' enable-background='new 0 0 24.263 36.366' xml:space='preserve'%3e%3cg%3e %3cpath fill='%23FF9900' d='M6.828%2c27.947c-1.859-3.872-0.869-6.094%2c0.564-8.184c1.565-2.296%2c1.968-4.558%2c1.968-4.558 s1.231%2c1.6%2c0.742%2c4.104c2.181-2.423%2c2.591-6.286%2c2.256-7.764c4.921%2c3.436%2c7.027%2c10.889%2c4.19%2c16.401 C31.627%2c19.419%2c20.3%2c6.66%2c18.326%2c5.221c0.656%2c1.439%2c0.783%2c3.873-0.546%2c5.053C15.536%2c1.75%2c9.98%2c0%2c9.98%2c0 c0.657%2c4.397-2.388%2c9.208-5.316%2c12.8C4.56%2c11.046%2c4.451%2c9.831%2c3.53%2c8.155c-0.201%2c3.183-2.636%2c5.785-3.298%2c8.974 C-0.659%2c21.445%2c0.9%2c24.61%2c6.828%2c27.947L6.828%2c27.947z'/%3e %3ctext transform='matrix(0.583 0 0 0.583 3.7324 36.1963)' fill='black' font-family='Arial-BoldItalicMT' font-size='20.6802'%3e3D%3c/text%3e%3c/g%3e%3c/svg%3e\";\n export default img;","import * as React from 'react';\n\nimport { HotspotInfo } from '../hotspot/HotspotInfo';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { loaderIcon } from '../StatusHelpers';\n\nimport hotspotImg from '../../images/cancer-hotspots.svg';\nimport hotspot3dImg from '../../images/3d-hotspots.svg';\nimport annotationStyles from './annotation.module.scss';\n\nexport interface ICancerHotspotsProps {\n status: 'pending' | 'error' | 'complete';\n isHotspot: boolean;\n is3dHotspot: boolean;\n}\n\nexport function sortValue(isHotspot: boolean, is3dHotspot: boolean): number {\n let score: number = 0;\n\n if (isHotspot) {\n score += 1;\n }\n\n if (is3dHotspot) {\n score += 0.5;\n }\n\n return score;\n}\n\nexport function placeArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.left = '10px';\n}\n\nexport default class HotspotAnnotation extends React.Component<\n ICancerHotspotsProps,\n {}\n> {\n constructor(props: ICancerHotspotsProps) {\n super(props);\n this.state = {};\n }\n\n public render() {\n const { isHotspot, is3dHotspot } = this.props;\n\n let hotspotContent = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n if (this.props.status === 'pending') {\n hotspotContent = loaderIcon('pull-left');\n } else if (isHotspot || is3dHotspot) {\n const hotspotsImgWidth: number = 14;\n let hotspotsImgHeight: number = 14;\n let hotspotsImgSrc = hotspotImg;\n\n // if it is a 3D hotspot but not a recurrent hotspot, show the 3D hotspot icon\n if (!isHotspot) {\n hotspotsImgSrc = hotspot3dImg;\n hotspotsImgHeight = 18;\n }\n\n const arrowContent = <div className=\"rc-tooltip-arrow-inner\" />;\n const tooltipContent = (\n <HotspotInfo isHotspot={isHotspot} is3dHotspot={is3dHotspot} />\n );\n\n hotspotContent = (\n <DefaultTooltip\n overlay={tooltipContent}\n placement=\"topLeft\"\n trigger={['hover', 'focus']}\n arrowContent={arrowContent}\n onPopupAlign={placeArrow}\n >\n <span\n className={`${annotationStyles['annotation-item']} chang_hotspot`}\n >\n <img\n width={hotspotsImgWidth}\n height={hotspotsImgHeight}\n src={hotspotsImgSrc}\n alt=\"Recurrent Hotspot Symbol\"\n />\n </span>\n </DefaultTooltip>\n );\n }\n\n return hotspotContent;\n }\n}\n","import { cachePostMethodsOnClient } from 'cbioportal-frontend-commons';\nimport {\n indexAnnotationsByGenomicLocation,\n IOncoKbData,\n Mutation,\n uniqueGenomicLocations,\n} from 'cbioportal-utils';\nimport {\n GenomeNexusAPI,\n GenomeNexusAPIInternal,\n} from 'genome-nexus-ts-api-client';\nimport { OncoKbAPI, OncoKBInfo } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\n\nexport const DEFAULT_MUTATION_ALIGNER_URL_TEMPLATE =\n 'http://mutationaligner.org/api/domains/<%= pfamDomainId %>?metadata=true';\nexport const DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE =\n 'https://www.cbioportal.org/proxy/mutationaligner.org/api/domains/<%= pfamDomainId %>?metadata=true';\nexport const DEFAULT_MY_GENE_URL_TEMPLATE =\n 'https://mygene.info/v3/gene/<%= entrezGeneId %>?fields=uniprot';\nexport const DEFAULT_UNIPROT_ID_URL_TEMPLATE =\n 'https://rest.uniprot.org/uniprotkb/search?query=accession:<%= swissProtAccession %>&format=tsv&fields=id';\nexport const DEFAULT_GENOME_NEXUS_URL = 'https://www.genomenexus.org/';\n\n// The legacy instance does not require an authentication but the data will not be update.\nexport const DEFAULT_ONCO_KB_URL = 'https://legacy.oncokb.org/';\nexport const ONCOKB_DEFAULT_DATA: IOncoKbData = {\n indicatorMap: {},\n};\n\n// Set the default to false since most of the instances are not public instance.\n// The only one we have right now is public.api.oncokb.org\nexport const USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB = false;\n\nexport const ONCOKB_DEFAULT_INFO: OncoKBInfo = {\n apiVersion: {\n version: 'v1.0.0',\n major: 1,\n minor: 0,\n patch: 0,\n stable: true,\n suffixTokens: [],\n },\n appVersion: {\n version: 'v1.0.0',\n major: 1,\n minor: 0,\n patch: 0,\n stable: true,\n suffixTokens: [],\n },\n dataVersion: {\n version: 'v2.0',\n date: '12/19/2019',\n },\n levels: [],\n ncitVersion: '19.03d',\n oncoTreeVersion: 'oncotree_2019_12_01',\n publicInstance: USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n};\n\nconst DEFAULT_GENOME_NEXUS_CLIENT = initGenomeNexusClient();\n\nexport function getUrl(urlTemplate: string, templateVariables: any) {\n return _.template(urlTemplate)(templateVariables);\n}\n\nexport async function fetchVariantAnnotationsByMutation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'mskcc',\n client: Partial<GenomeNexusAPI> = DEFAULT_GENOME_NEXUS_CLIENT\n) {\n const genomicLocations = uniqueGenomicLocations(mutations);\n\n return genomicLocations.length > 0 &&\n client.fetchVariantAnnotationByGenomicLocationPOST\n ? await client.fetchVariantAnnotationByGenomicLocationPOST({\n genomicLocations,\n // this is a workaround to ignore the incorrect type definition generated by the swagger client generator\n // \"fields\" is a list of predefined string values, but the type generator incorrectly defines it as a single value\n fields: fields as any,\n isoformOverrideSource,\n })\n : [];\n}\n\nexport async function fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'mskcc',\n client: Partial<GenomeNexusAPI> = DEFAULT_GENOME_NEXUS_CLIENT\n) {\n const variantAnnotations = await fetchVariantAnnotationsByMutation(\n mutations,\n fields,\n isoformOverrideSource,\n client\n );\n return indexAnnotationsByGenomicLocation(variantAnnotations);\n}\n\nexport function initGenomeNexusClient(\n genomeNexusUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): GenomeNexusAPI {\n const client = new GenomeNexusAPI(\n genomeNexusUrl || DEFAULT_GENOME_NEXUS_URL\n );\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(GenomeNexusAPI, [], /POST$/, apiCacheLimit);\n }\n\n return client;\n}\n\nexport function initGenomeNexusInternalClient(\n genomeNexusUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): GenomeNexusAPIInternal {\n const client = new GenomeNexusAPIInternal(\n genomeNexusUrl || DEFAULT_GENOME_NEXUS_URL\n );\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(\n GenomeNexusAPIInternal,\n [],\n /POST$/,\n apiCacheLimit\n );\n }\n\n return client;\n}\n\nexport function initOncoKbClient(\n oncoKbUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): OncoKbAPI {\n const client = new OncoKbAPI(oncoKbUrl || DEFAULT_ONCO_KB_URL);\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(OncoKbAPI, [], undefined, apiCacheLimit);\n }\n\n return client;\n}\n","var img = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAMAAADUivDaAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAALiMAAC4jAXilP3YAAAG/UExURUdwTEg7ejMqVlRFjltLmioiRzUrWgAAAAAAAFhIliwkS1BCiAAAAE9BhkU5dVBCiCAaNiAaNllJmEk8fB8ZNE1Ag0c6eCwkS1hIlRgUKUk8fC4mTlhIljwyZhkUKkk8fD0yaCcgQ1VFjysjSVVGkD0yaEg7eUo9fldIlA8MGTovYkk8fE1Ag0k8ezswZDguXwkIEA4MGFVGkTwxZlJEjE9BhiAaNko9fU0/gjkvYUk8fEs+gAoJEj80ax0YMT4zaTwxZUs9fk0/g0s9f00/ggAAAEs9fykiRS0lTEk8fD0yaE9Bhks9f01AgzUrWltKmUc6eUw/gUw+gUs+gDUsWlhIlTEoUzAnUTQrWFtLm05AhAAAAFpKmCAbNzQrWCwkS0w+gEs9fiAbNywkSy8nUDAnUT0yZ05AhU0/g0c6eS0lTSkiRUc6eSoiRyghRFhIlkc6eEc6eEs9f0s+gEg7eQAAAFhIlCAaNldIlE5AhVBBh0w+gF9Oof///25fqPf2+bWv0KqjysnF3JSKve7t9Htvr9zZ6F5NoF5Nn11Mnoh9tuXj7tPP4p+Xw7+61l5Nnkw+gU9BhlJEjFBCiFJDij9E+XgAAAB8dFJOUwDVY/P+MHMBCfxO9AXnlfMwKvvOO9vFUvsrzE77jyqwkEjzUvOPxsX6E2ux2rdsbBQU+W34+D67vW+3lhtuPm5uldu9vArVSFPNjvTFzWP+sNXV1GL6Uktl/swC+y9kVPHGKUlNU47p3LxJSrZJSfq8sby8tQj9O/3o8/DbpSzOAAAC+klEQVRYw7VY5V/cQBB9wNG7wx2KFHeXUrQUSt3d3d19epxyBxSp/MH9QG5js5uEH7yPM5uXzcyb2Z0AO4i8spnZ+fIfG/++fyufn50py/P4fGdXb2GSjEgW9nZ1uic4Ut9BHDrqG109728+tkQyLJU2+x0ZblWkSIVURZGaIFBXRU6oqgsoGO5fIDc4XCxluNJE7tD0UMKQGSS3CGayDLt85B6+XQzD6TPkBb6LNoacIHlDMMfCsCeLvCJrt1kPGeQdGSZ9PKatoNXAkF2yJYqSbL2y2mlraBc1V6lV1uLPNGLsExHhj2g1V5mmqNaWrIolv1iKlbR7IW2p1hgaRX+IC44EwxAT3rDoH683Kc4yO11jKKJiEyFhewcAGBgShtACs0o4BX9UNw4NAEC/YVnYGjDWZ/zKfgB4azAkxLK4jSLOxnofgMBe9ntteV3lPSOfgP2m82JZmlchmkWzfRQ4IFlpyWtCFqVhoMAx+UREtCYLUgFwUBY1U171dIct698Dc06FYLbaBNMD5FsVJN63wpWHdROUDxTKJRRjImQrnlzgrxshRxlta/jN7MIgr4SNdZmYXeTbjMu2vIYlstJiMWe3LlpbS1zRzXrsujAFL2IujzjTRT7Y1Gl+64p5VxFmbYGtRizyihnLY4FrqMPWSrXKK2osjzBHMWrtFzZ5hXQ+phkSjQQAPGMcIUNeI3JZaV0LfaTs1np5cAcD9QHA4CXGo8srqjye3gwCALo5n969lIdk9+ZR9GBdeXTJtU20/lw72K+TSl4KWdGp9NF+OaWUl1TblHok7hcnSSUvuazu+dW3nLCRgZXVzWzDTem4Ul6yTbQ63viiBoqE442PvXfq8mK1bbl3bsftF7jq88Rw7faOTALbMY8ANS0uGVpqpJNV8XlXDOeKVRNiQ60jQW3DIfWYWdSWVBIk24qcp+Wjpapp+c4NVyP3q49fWYLPL1/4XQ/+U+MTuZY/B7kT41Ne/198mZ4ce3p348+JJ+Vjk9Py/xf/AcNnNJ7Pvm7cAAAAAElFTkSuQmCC\";\n export default img;","import React from 'react';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Vues as VUE } from 'genome-nexus-ts-api-client';\nimport annotationStyles from '../column/annotation.module.scss';\nimport revueLogo from '../../images/vue_logo.png';\n\nexport const RevueTooltipContent: React.FunctionComponent<{\n vue: VUE;\n}> = props => {\n return (\n <ul>\n <li>\n Predicted Effect by{` `}\n {\n <a\n href=\"https://useast.ensembl.org/info/docs/tools/vep/index.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n VEP\n </a>\n }\n : <strong>{props.vue.defaultEffect}</strong>\n </li>\n <li>\n Revised Protein Effect by{` `}\n {\n <a\n href=\"https://cancerrevue.org\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n reVUE\n </a>\n }\n {` (`}\n {\n <a\n href={`https://pubmed.ncbi.nlm.nih.gov/${props.vue.pubmedId}/`}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {props.vue.referenceText}\n </a>\n }\n {`): `}\n <strong>{props.vue.revisedProteinEffect}</strong>\n </li>\n </ul>\n );\n};\n\nexport function sortValue(vue: VUE | undefined): number {\n return 0;\n}\n\nexport const RevueCell: React.FunctionComponent<{\n vue: VUE;\n}> = props => {\n return (\n <DefaultTooltip\n placement=\"bottom\"\n overlay={<RevueTooltipContent vue={props.vue} />}\n >\n <span\n className={`${annotationStyles['annotation-item']}`}\n style={{ display: 'inline-flex' }}\n >\n <img src={revueLogo} alt=\"reVUE logo\" width={14} height={14} />\n </span>\n </DefaultTooltip>\n );\n};\n","import {\n getCivicEntry,\n getMyCancerGenomeLinks,\n getRemoteDataGroupStatus,\n getVariantAnnotation,\n ICivicEntry,\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n is3dHotspot,\n isLinearClusterHotspot,\n MobxCache,\n Mutation,\n OncoKbCardDataType,\n RemoteData,\n} from 'cbioportal-utils';\nimport { CancerGene, IndicatorQueryResp } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n getIndicatorData,\n calculateOncoKbAvailableDataType,\n} from 'oncokb-frontend-commons';\nimport { defaultArraySortMethod } from 'cbioportal-utils';\nimport Civic, { sortValue as civicSortValue } from '../civic/Civic';\nimport MyCancerGenome, {\n sortValue as myCancerGenomeSortValue,\n} from '../myCancerGenome/MyCancerGenome';\nimport {\n OncoKB,\n oncoKbAnnotationSortValue as oncoKbSortValue,\n} from 'oncokb-frontend-commons';\nimport HotspotAnnotation, {\n sortValue as hotspotSortValue,\n} from './HotspotAnnotation';\nimport { USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB } from '../../util/DataFetcherUtils';\nimport { CanonicalMutationType } from 'cbioportal-frontend-commons';\nimport { VariantAnnotation, Vues as VUE } from 'genome-nexus-ts-api-client';\nimport { RevueCell, sortValue as revueSortValue } from '../revue/Revue';\nimport annotationStyles from './annotation.module.scss';\n\nexport type AnnotationProps = {\n mutation?: Mutation;\n enableOncoKb: boolean;\n enableMyCancerGenome: boolean;\n enableHotspot: boolean;\n enableCivic: boolean;\n enableRevue: boolean;\n hotspotData?: RemoteData<IHotspotIndex | undefined>;\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>;\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>;\n usingPublicOncoKbInstance: boolean;\n mergeOncoKbIcons?: boolean;\n oncoKbContentPadding?: number;\n pubMedCache?: MobxCache;\n resolveEntrezGeneId?: (mutation: Mutation) => number;\n resolveTumorType?: (mutation: Mutation) => string;\n myCancerGenomeData?: IMyCancerGenomeData;\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>;\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n userDisplayName?: string;\n hasMultipleCancerTypes?: boolean;\n};\n\nexport type GenericAnnotationProps = {\n annotation: IAnnotation;\n enableCivic: boolean;\n enableHotspot: boolean;\n enableMyCancerGenome: boolean;\n enableOncoKb: boolean;\n enableRevue: boolean;\n mergeOncoKbIcons?: boolean;\n oncoKbContentPadding?: number;\n pubMedCache?: MobxCache;\n userDisplayName?: string;\n hasMultipleCancerTypes?: boolean;\n};\n\nexport interface IAnnotation {\n isHotspot: boolean;\n is3dHotspot: boolean;\n hotspotStatus: 'pending' | 'error' | 'complete';\n oncoKbIndicator?: IndicatorQueryResp;\n oncoKbAvailableDataTypes: OncoKbCardDataType[];\n oncoKbStatus: 'pending' | 'error' | 'complete';\n oncoKbGeneExist: boolean;\n isOncoKbCancerGene: boolean;\n usingPublicOncoKbInstance: boolean;\n myCancerGenomeLinks: string[];\n civicEntry?: ICivicEntry | null;\n civicStatus: 'pending' | 'error' | 'complete';\n hasCivicVariants: boolean;\n hugoGeneSymbol: string;\n vue?: VUE;\n}\n\nexport const DEFAULT_ANNOTATION_DATA: IAnnotation = {\n oncoKbStatus: 'complete',\n oncoKbGeneExist: false,\n isOncoKbCancerGene: false,\n oncoKbAvailableDataTypes: [],\n usingPublicOncoKbInstance: false,\n isHotspot: false,\n is3dHotspot: false,\n hotspotStatus: 'complete',\n hugoGeneSymbol: '',\n hasCivicVariants: true,\n myCancerGenomeLinks: [],\n civicStatus: 'complete',\n};\n\nfunction getDefaultEntrezGeneId(mutation: Mutation): number {\n return (mutation.gene && mutation.gene.entrezGeneId) || 0;\n}\n\nfunction getDefaultTumorType(): string {\n return '';\n}\n\nconst memoized: Map<string, IAnnotation> = new Map();\nexport function getAnnotationData(\n mutation?: Mutation,\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>,\n hotspotData?: RemoteData<IHotspotIndex | undefined>,\n myCancerGenomeData?: IMyCancerGenomeData,\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>,\n usingPublicOncoKbInstance?: boolean,\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>,\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n resolveTumorType: (mutation: Mutation) => string = getDefaultTumorType,\n resolveEntrezGeneId: (mutation: Mutation) => number = getDefaultEntrezGeneId\n): IAnnotation {\n let value: Partial<IAnnotation>;\n\n if (mutation) {\n let key = '';\n const memoize =\n oncoKbCancerGenes?.isComplete &&\n hotspotData?.isComplete &&\n !!myCancerGenomeData &&\n oncoKbData?.isComplete &&\n civicGenes?.isComplete &&\n civicVariants?.isComplete &&\n indexedVariantAnnotations?.isComplete;\n\n if (memoize) {\n key = JSON.stringify(mutation) + !!usingPublicOncoKbInstance;\n const val = memoized.get(key);\n if (val) {\n return val;\n }\n }\n\n const entrezGeneId = resolveEntrezGeneId(mutation);\n\n let oncoKbIndicator: IndicatorQueryResp | undefined;\n const hugoGeneSymbol = mutation.gene\n ? mutation.gene.hugoGeneSymbol\n : undefined;\n\n let oncoKbGeneExist = false;\n let isOncoKbCancerGene = false;\n if (oncoKbCancerGenes && !(oncoKbCancerGenes.result instanceof Error)) {\n oncoKbGeneExist =\n _.find(\n oncoKbCancerGenes.result,\n (gene: CancerGene) =>\n (mutation.mutationType &&\n mutation.mutationType.toLowerCase() ===\n CanonicalMutationType.FUSION) ||\n (gene.oncokbAnnotated &&\n gene.entrezGeneId === entrezGeneId)\n ) !== undefined;\n isOncoKbCancerGene =\n _.find(\n oncoKbCancerGenes.result,\n (gene: CancerGene) => gene.entrezGeneId === entrezGeneId\n ) !== undefined;\n }\n\n value = {\n hugoGeneSymbol,\n oncoKbGeneExist,\n isOncoKbCancerGene,\n usingPublicOncoKbInstance: usingPublicOncoKbInstance\n ? usingPublicOncoKbInstance\n : USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n civicEntry:\n civicGenes &&\n civicGenes.result &&\n civicVariants &&\n civicVariants.result\n ? getCivicEntry(\n mutation,\n civicGenes.result,\n civicVariants.result\n )\n : undefined,\n civicStatus:\n civicGenes &&\n civicGenes.status &&\n civicVariants &&\n civicVariants.status\n ? getRemoteDataGroupStatus(civicGenes, civicVariants)\n : 'pending',\n hasCivicVariants: true,\n myCancerGenomeLinks: myCancerGenomeData\n ? getMyCancerGenomeLinks(mutation, myCancerGenomeData)\n : [],\n isHotspot:\n hotspotData?.isComplete && hotspotData.result\n ? isLinearClusterHotspot(mutation, hotspotData.result)\n : false,\n is3dHotspot:\n hotspotData?.isComplete && hotspotData.result\n ? is3dHotspot(mutation, hotspotData.result)\n : false,\n hotspotStatus: hotspotData ? hotspotData.status : 'pending',\n vue:\n indexedVariantAnnotations?.isComplete &&\n indexedVariantAnnotations.result\n ? getVariantAnnotation(\n mutation,\n indexedVariantAnnotations.result\n )?.annotation_summary?.vues\n : undefined,\n };\n\n // oncoKbData may exist but it might be an instance of Error, in that case we flag the status as error\n if (oncoKbData && oncoKbData.result instanceof Error) {\n value = {\n ...value,\n oncoKbStatus: 'error',\n oncoKbIndicator: undefined,\n };\n } else if (oncoKbGeneExist) {\n // actually, oncoKbData.result shouldn't be an instance of Error in this case (we already check it above),\n // but we need to check it again in order to avoid TS errors/warnings\n\n // Always show oncogenicity icon even when the indicatorMapResult is empty.\n // We want to show an icon for genes that haven't been annotated by OncoKB\n let oncoKbAvailableDataTypes: OncoKbCardDataType[] = [\n OncoKbCardDataType.BIOLOGICAL,\n ];\n if (\n oncoKbData &&\n oncoKbData.result &&\n !(oncoKbData.result instanceof Error) &&\n oncoKbData.status === 'complete'\n ) {\n oncoKbIndicator = getIndicatorData(\n mutation,\n oncoKbData.result,\n resolveTumorType,\n resolveEntrezGeneId\n );\n oncoKbAvailableDataTypes = _.uniq([\n ...oncoKbAvailableDataTypes,\n ...calculateOncoKbAvailableDataType(\n _.values(oncoKbData.result.indicatorMap)\n ),\n ]);\n }\n\n value = {\n ...value,\n oncoKbStatus: oncoKbData ? oncoKbData.status : 'pending',\n oncoKbIndicator,\n oncoKbAvailableDataTypes,\n };\n } else if (oncoKbData && oncoKbData.isPending) {\n value = {\n ...value,\n oncoKbStatus: 'pending',\n oncoKbIndicator: undefined,\n };\n } else {\n value = {\n ...value,\n oncoKbStatus: 'complete',\n oncoKbIndicator: undefined,\n };\n }\n if (memoize) {\n memoized.set(key, value as any);\n }\n } else {\n value = DEFAULT_ANNOTATION_DATA;\n }\n\n return value as IAnnotation;\n}\n\nexport function annotationSortMethod(a: IAnnotation, b: IAnnotation) {\n return defaultArraySortMethod(sortValue(a), sortValue(b));\n}\n\nexport function sortValue(annotation: IAnnotation): number[] {\n return _.flatten([\n oncoKbSortValue(annotation.oncoKbIndicator),\n civicSortValue(annotation.civicEntry),\n myCancerGenomeSortValue(annotation.myCancerGenomeLinks),\n hotspotSortValue(annotation.isHotspot, annotation.is3dHotspot),\n revueSortValue(annotation.vue),\n annotation.isOncoKbCancerGene ? 1 : 0,\n ]);\n}\n\nexport function GenericAnnotation(props: GenericAnnotationProps): JSX.Element {\n const {\n annotation,\n enableCivic,\n enableHotspot,\n enableMyCancerGenome,\n enableOncoKb,\n enableRevue,\n pubMedCache,\n userDisplayName,\n mergeOncoKbIcons,\n oncoKbContentPadding,\n hasMultipleCancerTypes,\n } = props;\n\n return (\n <span style={{ display: 'flex', minWidth: 100 }}>\n {enableOncoKb && (\n <OncoKB\n usingPublicOncoKbInstance={\n annotation.usingPublicOncoKbInstance\n }\n hugoGeneSymbol={annotation.hugoGeneSymbol}\n geneNotExist={!annotation.oncoKbGeneExist}\n isCancerGene={annotation.isOncoKbCancerGene}\n status={annotation.oncoKbStatus}\n indicator={annotation.oncoKbIndicator}\n availableDataTypes={annotation.oncoKbAvailableDataTypes}\n mergeAnnotationIcons={mergeOncoKbIcons}\n userDisplayName={userDisplayName}\n contentPadding={oncoKbContentPadding}\n hasMultipleCancerTypes={hasMultipleCancerTypes}\n />\n )}\n {/* only show reVUE when reVUE is enabled and there are reVUE mutations in the query */}\n {enableRevue ? (\n annotation.vue ? (\n <RevueCell vue={annotation.vue} />\n ) : (\n <span\n className={`${annotationStyles['annotation-item']}`}\n />\n )\n ) : (\n <></>\n )}\n {enableCivic && (\n <Civic\n civicEntry={annotation.civicEntry}\n civicStatus={annotation.civicStatus}\n hasCivicVariants={annotation.hasCivicVariants}\n />\n )}\n {enableMyCancerGenome && (\n <MyCancerGenome linksHTML={annotation.myCancerGenomeLinks} />\n )}\n {enableHotspot && (\n <HotspotAnnotation\n isHotspot={annotation.isHotspot}\n is3dHotspot={annotation.is3dHotspot}\n status={annotation.hotspotStatus}\n />\n )}\n </span>\n );\n}\n\n@observer\nexport default class Annotation extends React.Component<AnnotationProps, {}> {\n public render() {\n const annotation = this.getAnnotationData(this.props);\n return <GenericAnnotation {...this.props} annotation={annotation} />;\n }\n\n private getAnnotationData(props: AnnotationProps) {\n const {\n mutation,\n oncoKbCancerGenes,\n hotspotData,\n myCancerGenomeData,\n oncoKbData,\n usingPublicOncoKbInstance,\n resolveEntrezGeneId,\n resolveTumorType,\n civicGenes,\n civicVariants,\n indexedVariantAnnotations,\n } = props;\n\n return getAnnotationData(\n mutation,\n oncoKbCancerGenes,\n hotspotData,\n myCancerGenomeData,\n oncoKbData,\n usingPublicOncoKbInstance,\n civicGenes,\n civicVariants,\n indexedVariantAnnotations,\n resolveTumorType,\n resolveEntrezGeneId\n );\n }\n}\n","import { getVariantAnnotation, Mutation, RemoteData } from 'cbioportal-utils';\nimport { Clinvar, VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nexport function getClinvarData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >\n): Clinvar | undefined {\n const variantAnnotation = getVariantAnnotation(\n mutation,\n indexedVariantAnnotations!.result\n );\n return variantAnnotation?.clinvar?.annotation;\n}\n","import { Clinvar, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod, Mutation, RemoteData } from 'cbioportal-utils';\nimport ClinvarSummary from '../clinvar/ClinvarSummary';\nimport { getClinvarData } from '../clinvar/ClinvarHelper';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\n\ntype ClinvarInterpretationProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n};\n\nexport function download(clinvar?: Clinvar): string {\n const clinicalSignificance = clinvar?.clinicalSignificance;\n const conflictingClinicalSignificance =\n clinvar?.conflictingClinicalSignificance;\n if (clinicalSignificance && conflictingClinicalSignificance) {\n return (\n clinicalSignificance + '(' + conflictingClinicalSignificance + ')'\n );\n } else if (clinicalSignificance) {\n return clinicalSignificance;\n } else {\n return '';\n }\n}\n\nexport function sortValue(clinvar?: Clinvar): string | null {\n if (clinvar && clinvar.clinicalSignificance) {\n return clinvar.clinicalSignificance;\n } else {\n return null;\n }\n}\n\nexport function clinvarSortMethod(a: Clinvar, b: Clinvar) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class ClinvarInterpretation extends React.Component<\n ClinvarInterpretationProps,\n {}\n> {\n public render() {\n if (this.props.indexedVariantAnnotations) {\n let content;\n const status = this.props.indexedVariantAnnotations.status;\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n const clinvarData = getClinvarData(\n this.props.mutation,\n this.props.indexedVariantAnnotations\n );\n content = <ClinvarSummary clinvar={clinvarData} />;\n }\n return content;\n } else {\n return <div />;\n }\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nexport type ColumnHeaderProps = {\n headerContent: string | JSX.Element;\n overlay?: JSX.Element;\n className?: string;\n};\n\nclass ColumnHeader extends React.Component<ColumnHeaderProps> {\n public static defaultProps = {\n className: 'text-wrap',\n };\n\n public render() {\n let content = this.props.headerContent;\n\n if (this.props.overlay) {\n content = (\n <DefaultTooltip\n mouseEnterDelay={0.5}\n placement=\"top\"\n overlay={this.props.overlay}\n destroyTooltipOnHide={true}\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return (\n <span\n className={\n this.props.className || ColumnHeader.defaultProps.className\n }\n >\n {content}\n </span>\n );\n }\n}\n\nexport default ColumnHeader;\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { getDbsnpRsId } from 'cbioportal-utils';\nimport { MyVariantInfo } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nexport type DbsnpIdProps = {\n myVariantInfo?: MyVariantInfo;\n};\n\n@observer\nexport default class DbsnpId extends React.Component<DbsnpIdProps, {}> {\n public render() {\n const rsId = getDbsnpRsId(this.props.myVariantInfo);\n\n if (rsId == null) {\n return (\n <DefaultTooltip\n placement=\"topRight\"\n overlay={<span>Variant has no dbSNP data.</span>}\n >\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n \n </span>\n </DefaultTooltip>\n );\n } else {\n let dbsnpLink = 'https://www.ncbi.nlm.nih.gov/snp/' + rsId;\n return (\n <DefaultTooltip\n placement=\"top\"\n overlay={\n <span>Click to see variant on dbSNP website.</span>\n }\n >\n <span style={{ textAlign: 'right', float: 'right' }}>\n <a href={dbsnpLink} target=\"_blank\">\n {rsId}\n </a>\n </span>\n </DefaultTooltip>\n );\n }\n }\n}\n","import {\n getMyVariantInfoAnnotation,\n getVariantAnnotation,\n Mutation,\n RemoteData,\n} from 'cbioportal-utils';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport * as React from 'react';\n\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\n\nexport type MyVariantInfoProps = {\n mutation?: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >;\n className?: string;\n};\n\nexport function renderMyVariantInfoContent(\n props: MyVariantInfoProps,\n getContent: (\n myVariantInfo?: MyVariantInfo,\n variantAnnotation?: VariantAnnotation\n ) => JSX.Element\n) {\n let content;\n const status = props.indexedMyVariantInfoAnnotations?.status || 'complete';\n const variantAnnotation = props.indexedVariantAnnotations\n ? getVariantAnnotation(\n props.mutation,\n props.indexedVariantAnnotations.result\n )\n : undefined;\n const myVariantInfo = getMyVariantInfoAnnotation(\n props.mutation,\n props.indexedMyVariantInfoAnnotations?.result\n );\n\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n content = getContent(myVariantInfo, variantAnnotation);\n }\n\n return <div className={props.className}>{content}</div>;\n}\n\nexport function getMyVariantInfoData(\n mutation?: Mutation,\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >\n) {\n return getMyVariantInfoAnnotation(\n mutation,\n indexedMyVariantInfoAnnotations\n ? indexedMyVariantInfoAnnotations.result\n : undefined\n );\n}\n","import autobind from 'autobind-decorator';\nimport { getDbsnpRsId } from 'cbioportal-utils';\nimport { MyVariantInfo } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\nimport DbsnpId from '../dbsnp/DbsnpId';\nimport {\n MyVariantInfoProps,\n renderMyVariantInfoContent,\n} from './MyVariantInfoHelper';\n\nexport function download(myVariantInfo?: MyVariantInfo): string {\n const value = sortValue(myVariantInfo);\n\n return value ? value.toString() : '';\n}\n\nexport function sortValue(myVariantInfo?: MyVariantInfo): string | null {\n return getDbsnpRsId(myVariantInfo);\n}\n\nexport function dbsnpSortMethod(a: MyVariantInfo, b: MyVariantInfo) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Dbsnp extends React.Component<MyVariantInfoProps, {}> {\n public static defaultProps: Partial<MyVariantInfoProps> = {\n className: 'pull-right mr-1',\n };\n\n public render() {\n return renderMyVariantInfoContent(this.props, this.getContent);\n }\n\n @autobind\n public getContent(myVariantInfo: MyVariantInfo) {\n return <DbsnpId myVariantInfo={myVariantInfo} />;\n }\n}\n","import _ from 'lodash';\n\nimport {\n AlleleCount,\n AlleleFrequency,\n AlleleNumber,\n Gnomad,\n Homozygotes,\n MyVariantInfo,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\nimport { GnomadSummary } from '../model/GnomadSummary';\n\nconst GNOMAD_POPULATION_NAME: { [key: string]: string } = {\n African: 'afr',\n Latino: 'amr',\n Other: 'oth',\n 'European (Non-Finnish)': 'nfe',\n 'European (Finnish)': 'fin',\n 'Ashkenazi Jewish': 'asj',\n 'East Asian': 'eas',\n 'South Asian': 'sas',\n Total: '',\n};\n\nexport enum GnomadTableColumnName {\n population = 'population',\n alleleCount = 'ac',\n alleleNumber = 'an',\n homozygotes = 'hom',\n alleleFrequency = 'af',\n}\n\nexport function calculateGnomadAlleleFrequency(\n count: number | null,\n totalNumber: number | null,\n frequency: number | null\n): number {\n if (frequency !== null) {\n return frequency;\n } else {\n return count && totalNumber && totalNumber !== 0\n ? count / totalNumber\n : 0;\n }\n}\n\nexport function calculateGnomadTableNumber(\n gnomadExome?: number | null,\n gnomadGenome?: number | null\n) {\n let result = 0;\n if (gnomadGenome && gnomadExome) {\n result = gnomadGenome + gnomadExome;\n } else if (gnomadGenome) {\n result = gnomadGenome;\n } else if (gnomadExome) {\n result = gnomadExome;\n }\n return result;\n}\n\nexport function getGnomadUrl(\n annotation?: VariantAnnotation,\n myVariantInfo?: MyVariantInfo\n) {\n let gnomadUrl = '';\n\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n // get gnomad link from chrom, location, ref and alt\n gnomadUrl =\n myVariantInfo && myVariantInfo.vcf\n ? generateGnomadUrl(\n annotation?.seq_region_name || null,\n myVariantInfo.vcf.position,\n myVariantInfo.vcf.ref,\n myVariantInfo.vcf.alt\n )\n : '';\n }\n\n return gnomadUrl;\n}\n\nexport function getGnomadDataSortedByFrequency(myVariantInfo?: MyVariantInfo) {\n const gnomadData = getGnomadData(myVariantInfo);\n return gnomadData ? sortGnomadDataByFrequency(gnomadData) : gnomadData;\n}\n\nexport function sortGnomadDataByFrequency(gnomadData: {\n [key: string]: GnomadSummary;\n}) {\n // sort by frequency\n const sorted = _.sortBy(Object.values(gnomadData).slice(0, 8), [\n 'alleleFrequency',\n ]).reverse();\n\n // add the total row at the bottom\n sorted.push(gnomadData['Total']);\n\n return sorted;\n}\n\nexport function setGnomadTableData(\n key: string,\n data: Gnomad,\n result: { [key: string]: GnomadSummary }\n) {\n // Access data by population name and column name in the format of: GnomadTableColumnName_POPULATION_NAME, e.g. \"ac_afr\"\n // If access \"total\" data, the name would be e.g. \"ac\" for alleleCount, \"an\" for alleleNumber\n const alleleCountName: keyof AlleleCount = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.alleleCount + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleCount\n ).toString() as keyof AlleleCount;\n const alleleNumberName: keyof AlleleNumber = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.alleleNumber + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleNumber\n ).toString() as keyof AlleleNumber;\n const homozygotesName: keyof Homozygotes = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.homozygotes + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.homozygotes\n ).toString() as keyof Homozygotes;\n const alleleFrequencyName: keyof AlleleFrequency = (GNOMAD_POPULATION_NAME[\n key\n ]\n ? GnomadTableColumnName.alleleFrequency +\n '_' +\n GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleFrequency\n ).toString() as keyof AlleleFrequency;\n\n result[key] = {\n population: key,\n alleleCount: data.alleleCount[alleleCountName]\n ? data.alleleCount[alleleCountName]\n : 0,\n alleleNumber: data.alleleNumber[alleleNumberName]\n ? data.alleleNumber[alleleNumberName]\n : 0,\n homozygotes: data.homozygotes[homozygotesName]\n ? data.homozygotes[homozygotesName]\n : 0,\n alleleFrequency: calculateGnomadAlleleFrequency(\n data.alleleCount[alleleCountName],\n data.alleleNumber[alleleNumberName],\n data.alleleFrequency[alleleFrequencyName]\n ),\n } as GnomadSummary;\n}\n\nexport function getGnomadData(myVariantInfo?: MyVariantInfo) {\n let gnomadData: { [key: string]: GnomadSummary } | undefined;\n\n // check if gnomad data is valid\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n const gnomadExome: { [key: string]: GnomadSummary } = {};\n const gnomadGenome: { [key: string]: GnomadSummary } = {};\n const combinedGnomad: { [key: string]: GnomadSummary } = {};\n // If gnomadExome data exists, set gnomadExome\n if (myVariantInfo.gnomadExome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key =>\n setGnomadTableData(key, myVariantInfo.gnomadExome, gnomadExome)\n );\n gnomadData = gnomadExome;\n }\n\n // If gnomadGenome data exists, set gnomadGenome\n if (myVariantInfo.gnomadGenome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key =>\n setGnomadTableData(\n key,\n myVariantInfo.gnomadGenome,\n gnomadGenome\n )\n );\n gnomadData = gnomadGenome;\n }\n\n // If both gnomadExome and gnomadGenome exist, combine gnomadExome and gnomadGenome together, set to combinedGnomad\n if (myVariantInfo.gnomadExome && myVariantInfo.gnomadGenome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key => {\n combinedGnomad[key] = {\n population: key,\n alleleCount: calculateGnomadTableNumber(\n gnomadExome[key]?.alleleCount,\n gnomadGenome[key]?.alleleCount\n ),\n alleleNumber: calculateGnomadTableNumber(\n gnomadExome[key]?.alleleNumber,\n gnomadGenome[key]?.alleleNumber\n ),\n homozygotes: calculateGnomadTableNumber(\n gnomadExome[key]?.homozygotes,\n gnomadGenome[key]?.homozygotes\n ),\n alleleFrequency: calculateGnomadAlleleFrequency(\n calculateGnomadTableNumber(\n gnomadExome[key]?.alleleCount,\n gnomadGenome[key]?.alleleCount\n ),\n calculateGnomadTableNumber(\n gnomadExome[key]?.alleleNumber,\n gnomadGenome[key]?.alleleNumber\n ),\n null\n ),\n } as GnomadSummary;\n });\n gnomadData = combinedGnomad;\n }\n }\n // If only one type of gnomad(Exome or Genome) exists, show result from this type. If both types exist, show combined result.\n return gnomadData;\n}\n\nexport function generateGnomadUrl(\n chromosome: string | null,\n position: string | null,\n reference: string | null,\n variant: string | null\n) {\n if (chromosome && position && reference && variant) {\n return `https://gnomad.broadinstitute.org/variant/${chromosome}-${position}-${reference}-${variant}`;\n } else {\n return 'https://gnomad.broadinstitute.org/';\n }\n}\n","import autobind from 'autobind-decorator';\nimport * as React from 'react';\nimport ReactTable, { RowInfo } from 'react-table';\n\nimport { GnomadSummary } from '../../model/GnomadSummary';\nimport { GnomadTableColumnName } from '../../util/GnomadUtils';\nimport ColumnHeader from '../column/ColumnHeader';\n\nimport './gnomadFrequencyTable.scss';\n\nexport interface IGnomadFrequencyTableProps {\n data: GnomadSummary[];\n gnomadUrl: string;\n hideDisclaimer?: boolean;\n}\n\nexport function frequencyOutput(frequency: number) {\n if (frequency === 0) {\n return <span>0</span>;\n } else {\n // show frequency as number with 4 significant digits\n return (\n <span>\n {frequency.toLocaleString(undefined, {\n maximumSignificantDigits: 2,\n minimumSignificantDigits: 2,\n })}\n </span>\n );\n }\n}\n\nconst headerClassName = 'text-wrap font-weight-bold';\n\nconst HEADERS = {\n [GnomadTableColumnName.population]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Population</span>}\n />\n ),\n [GnomadTableColumnName.alleleCount]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Count</span>}\n overlay={<span>Number of individuals with this allele</span>}\n />\n ),\n [GnomadTableColumnName.alleleNumber]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Number</span>}\n overlay={\n <span>\n Number of times any allele has been observed at this\n position in the population\n </span>\n }\n />\n ),\n [GnomadTableColumnName.homozygotes]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Number of Homozygotes</span>}\n overlay={\n <span>\n Number of individuals carrying this allele in both copies\n </span>\n }\n />\n ),\n [GnomadTableColumnName.alleleFrequency]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Frequency</span>}\n overlay={<span>Proportion of the population with this allele</span>}\n />\n ),\n};\n\nfunction renderNumericalValue(column: any) {\n return <span className=\"pull-right mr-1\">{column.value}</span>;\n}\n\nconst Disclaimer: React.FunctionComponent<{ gnomadUrl: string }> = props => {\n const myVariantInfoLink = (\n <a href=\"https://myvariant.info/\" target=\"_blank\">\n myvariant.info\n </a>\n );\n\n const genomeNexusLink = (\n <a href=\"https://www.genomenexus.org/\" target=\"_blank\">\n genomenexus.org\n </a>\n );\n\n const gnomadLink = (\n <a href={props.gnomadUrl} target=\"_blank\">\n gnomAD\n </a>\n );\n\n return (\n <div\n style={{\n fontSize: 'x-small',\n textAlign: 'center',\n paddingTop: 5,\n }}\n >\n Source: {genomeNexusLink}, which serves {myVariantInfoLink}'s gnomAD\n data.\n <br />\n Latest {gnomadLink} data may differ.\n </div>\n );\n};\n\nexport default class GnomadFrequencyTable extends React.Component<\n IGnomadFrequencyTableProps,\n {}\n> {\n public render() {\n return (\n <div className=\"gnomad-frequency-table\" data-test=\"gnomad-table\">\n <ReactTable\n data={this.props.data}\n showPagination={false}\n pageSize={this.props.data.length}\n sortable={false}\n className=\"-striped -highlight\"\n getTrProps={this.getTrProps}\n columns={[\n {\n id: GnomadTableColumnName.population,\n accessor: 'population',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.population],\n width: 160,\n },\n {\n id: GnomadTableColumnName.alleleCount,\n accessor: 'alleleCount',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.alleleCount],\n width: 55,\n },\n {\n id: GnomadTableColumnName.alleleNumber,\n accessor: 'alleleNumber',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.alleleNumber],\n width: 80,\n },\n {\n id: GnomadTableColumnName.homozygotes,\n Cell: renderNumericalValue,\n accessor: 'homozygotes',\n Header: HEADERS[GnomadTableColumnName.homozygotes],\n width: 100,\n },\n {\n id: GnomadTableColumnName.alleleFrequency,\n accessor: 'alleleFrequency',\n Header:\n HEADERS[GnomadTableColumnName.alleleFrequency],\n Cell: (column: any) => (\n <span\n className=\"pull-right mr-1\"\n data-test=\"allele-frequency-data\"\n >\n {frequencyOutput(column.value)}\n </span>\n ),\n width: 120,\n },\n ]}\n />\n {!this.props.hideDisclaimer && (\n <Disclaimer gnomadUrl={this.props.gnomadUrl} />\n )}\n </div>\n );\n }\n\n @autobind\n protected getTrProps(state: any, row?: RowInfo) {\n return {\n style: {\n fontWeight:\n state && row && row.index === this.props.data.length - 1\n ? 'bold'\n : undefined,\n },\n };\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { GnomadSummary } from '../../model/GnomadSummary';\nimport GnomadFrequencyTable from './GnomadFrequencyTable';\nimport {\n getGnomadData,\n getGnomadDataSortedByFrequency,\n getGnomadUrl,\n sortGnomadDataByFrequency,\n} from '../../util/GnomadUtils';\n\nexport type GnomadFrequencyProps = {\n myVariantInfo?: MyVariantInfo;\n annotation?: VariantAnnotation;\n};\n\nexport const GnomadFrequencyValue: React.FunctionComponent<{\n gnomadData?: { [key: string]: GnomadSummary };\n}> = props => {\n if (props.gnomadData) {\n // The column will show the total frequency\n // Column will show 0 if the total frequency is 0, still has the tooltip to show the gnomad table (since gnomad data is still available)\n if (props.gnomadData['Total'].alleleFrequency === 0) {\n return <span>0</span>;\n } else {\n // show frequency as number with 4 significant digits\n return (\n <span>\n {props.gnomadData['Total'].alleleFrequency.toLocaleString(\n undefined,\n {\n maximumSignificantDigits: 2,\n minimumSignificantDigits: 2,\n }\n )}\n </span>\n );\n }\n } else {\n return (\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n \n </span>\n );\n }\n};\n\nexport const GnomadFrequencyBreakdown: React.FunctionComponent<GnomadFrequencyProps & {\n gnomadData?: { [key: string]: GnomadSummary };\n hideDisclaimer?: boolean;\n}> = props => {\n const myVariantInfo = props.myVariantInfo;\n let content = <span>Variant has no data in gnomAD.</span>;\n\n // Checking if gnomad data is valid\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n const gnomadUrl = getGnomadUrl(props.annotation, myVariantInfo);\n const sorted = props.gnomadData\n ? sortGnomadDataByFrequency(props.gnomadData)\n : getGnomadDataSortedByFrequency(myVariantInfo);\n\n if (sorted) {\n content = (\n <GnomadFrequencyTable\n data={sorted}\n gnomadUrl={gnomadUrl}\n hideDisclaimer={props.hideDisclaimer}\n />\n );\n }\n }\n\n return content;\n};\n\n@observer\nexport default class GnomadFrequency extends React.Component<\n GnomadFrequencyProps,\n {}\n> {\n public render() {\n const gnomadData = getGnomadData(this.props.myVariantInfo);\n\n return (\n <DefaultTooltip\n overlay={() => (\n <GnomadFrequencyBreakdown\n {...this.props}\n gnomadData={gnomadData}\n />\n )}\n placement=\"topRight\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <span>\n <GnomadFrequencyValue gnomadData={gnomadData} />\n </span>\n </DefaultTooltip>\n );\n }\n}\n","import autobind from 'autobind-decorator';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\n\nimport { calculateGnomadAlleleFrequency } from '../../util/GnomadUtils';\nimport GnomadFrequency from '../gnomad/GnomadFrequency';\nimport {\n MyVariantInfoProps,\n renderMyVariantInfoContent,\n} from './MyVariantInfoHelper';\n\nexport function download(myVariantInfo?: MyVariantInfo): string {\n const value = sortValue(myVariantInfo);\n\n return value ? value.toString() : '';\n}\n\nexport function sortValue(myVariantInfo?: MyVariantInfo): number | null {\n // If has both gnomadExome and gnomadGenome, sort by the total frequency\n if (\n myVariantInfo &&\n myVariantInfo.gnomadExome &&\n myVariantInfo.gnomadGenome\n ) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadExome.alleleCount.ac +\n myVariantInfo.gnomadGenome.alleleCount.ac,\n myVariantInfo.gnomadExome.alleleNumber.an +\n myVariantInfo.gnomadGenome.alleleNumber.an,\n null\n );\n }\n\n // If only has gnomadExome, sort by gnomadExome frequency\n else if (myVariantInfo && myVariantInfo.gnomadExome) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadExome.alleleCount.ac,\n myVariantInfo.gnomadExome.alleleNumber.an,\n myVariantInfo.gnomadExome.alleleFrequency.af\n );\n }\n\n // If only has gnomadGenome, sort by gnomadGenome frequency\n else if (myVariantInfo && myVariantInfo.gnomadGenome) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadGenome.alleleCount.ac,\n myVariantInfo.gnomadGenome.alleleNumber.an,\n myVariantInfo.gnomadGenome.alleleFrequency.af\n );\n }\n\n // If myVariantInfo is null, return null\n return null;\n}\n\nexport function gnomadSortMethod(a: MyVariantInfo, b: MyVariantInfo) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Gnomad extends React.Component<MyVariantInfoProps, {}> {\n public static defaultProps: Partial<MyVariantInfoProps> = {\n className: 'pull-right mr-1',\n };\n\n public render() {\n return renderMyVariantInfoContent(this.props, this.getContent);\n }\n\n @autobind\n public getContent(\n myVariantInfo: MyVariantInfo,\n variantAnnotation?: VariantAnnotation\n ) {\n return (\n <GnomadFrequency\n myVariantInfo={myVariantInfo}\n annotation={variantAnnotation}\n />\n );\n }\n}\n","import { getVariantAnnotation, Mutation, RemoteData } from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nexport function getAnnotation(\n mutation?: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >\n) {\n return indexedVariantAnnotations\n ? getVariantAnnotation(mutation, indexedVariantAnnotations.result)\n : undefined;\n}\n","import { VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport {\n generateHgvsgByMutation,\n Mutation,\n RemoteData,\n} from 'cbioportal-utils';\nimport { getAnnotation } from './VariantAnnotationHelper';\n\nexport function getHgvsgColumnData(mutation: Mutation): string | null {\n return generateHgvsgByMutation(mutation) || null;\n}\n\nexport function getHgvscColumnData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n selectedTranscriptId?: string\n): string | null {\n const variantAnnotation = getAnnotation(\n mutation,\n indexedVariantAnnotations\n );\n\n if (!variantAnnotation) {\n return null;\n }\n\n let data: string | null =\n variantAnnotation.annotation_summary?.transcriptConsequenceSummary\n ?.hgvsc || null;\n\n // return data from transcriptConsequenceSummaries if transcript dropdown is enabled\n if (selectedTranscriptId) {\n const transcriptConsequenceSummary = variantAnnotation.annotation_summary?.transcriptConsequenceSummaries?.find(\n transcriptConsequenceSummary =>\n transcriptConsequenceSummary.transcriptId ===\n selectedTranscriptId\n );\n data = transcriptConsequenceSummary\n ? transcriptConsequenceSummary.hgvsc\n : null;\n }\n\n return data;\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod, Mutation, RemoteData } from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nimport { getHgvscColumnData } from './HgvsHelper';\n\ntype HgvscProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n selectedTranscriptId?: string;\n};\n\nexport function download(hgvsc?: string | null): string {\n return hgvsc || '';\n}\n\nexport function sortValue(hgvsc?: string | null): number | null {\n return hgvsc ? parseInt(hgvsc.split('c.')[1]) : null;\n}\n\nexport function hgvscSortMethod(a: string | null, b: string | null) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Hgvsc extends React.Component<HgvscProps, {}> {\n get hgvsc() {\n return getHgvscColumnData(\n this.props.mutation,\n this.props.indexedVariantAnnotations,\n this.props.selectedTranscriptId\n );\n }\n\n public render() {\n return <div>{this.hgvsc}</div>;\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { generateHgvsgByMutation, Mutation } from 'cbioportal-utils';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\n\nimport hgvsgStyles from './hgvsg.module.scss';\n\ntype HgvsgProps = {\n mutation: Mutation;\n constructHref?: (hgvsg: string) => string;\n constructLink?: (\n hgvsg: string,\n content: JSX.Element,\n href?: string\n ) => JSX.Element;\n mainContent?: (hgvsg?: string) => JSX.Element;\n tooltipContent?: (hgvsg?: string) => JSX.Element;\n disableTooltip?: boolean;\n};\n\nexport function hgvsgSortMethod(a: string, b: string) {\n return defaultSortMethod(a, b);\n}\n\n@observer\nexport default class Hgvsg extends React.Component<HgvsgProps, {}> {\n public static defaultProps: Partial<HgvsgProps> = {\n constructLink: (hgvsg: string, content: JSX.Element, href?: string) => (\n <a\n href={href || `https:/www.genomenexus.org/variant/${hgvsg}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {content}\n </a>\n ),\n mainContent: (hgvsg?: string) => (\n <>\n {hgvsg} \n <i className=\"fa fa-external-link\" />\n </>\n ),\n tooltipContent: () => (\n <>\n Genome Nexus\n <div className={hgvsgStyles['genome-nexus-logo']} />\n </>\n ),\n };\n\n get hgvsg() {\n return generateHgvsgByMutation(this.props.mutation);\n }\n\n public render() {\n const constructLink = this.props.constructLink!;\n const mainContent = this.props.mainContent!;\n const tooltipContent = this.props.tooltipContent!;\n\n if (!this.hgvsg) {\n return <span />;\n } else {\n const href = this.props.constructHref\n ? this.props.constructHref(this.hgvsg)\n : undefined;\n\n const content = (\n <span className={hgvsgStyles['hgvsg-data']}>\n {constructLink(this.hgvsg, mainContent(this.hgvsg), href)}\n </span>\n );\n\n return this.props.disableTooltip ? (\n content\n ) : (\n <DefaultTooltip\n placement=\"topLeft\"\n overlay={\n <div>\n {this.hgvsg}\n <br />\n Click to see this variant on \n {constructLink(\n this.hgvsg,\n tooltipContent(this.hgvsg)\n )}\n </div>\n }\n >\n {content}\n </DefaultTooltip>\n );\n }\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './mutationStatus.module.scss';\n\ntype MutationStatusProps = {\n value?: string;\n mutation?: Mutation;\n displayValueMap?: { [mutationStatus: string]: string };\n enableTooltip?: boolean;\n styleMap?: { [mutationStatus: string]: React.CSSProperties };\n};\n\nexport class MutationStatus extends React.Component<MutationStatusProps, {}> {\n public static defaultProps: Partial<MutationStatusProps> = {\n enableTooltip: true,\n };\n\n public render() {\n const value =\n this.props.value ||\n (this.props.mutation\n ? this.props.mutation.mutationStatus\n : undefined);\n let content: JSX.Element;\n\n if (value) {\n if (value.toLowerCase().includes('somatic')) {\n content = (\n <span\n className={styles.somatic}\n style={\n this.props.styleMap\n ? this.props.styleMap[value.toLowerCase()]\n : undefined\n }\n >\n {(this.props.displayValueMap &&\n (this.props.displayValueMap[value.toLowerCase()] ||\n this.props.displayValueMap['somatic'])) ||\n 'Somatic'}\n </span>\n );\n } else if (value.toLowerCase().includes('germline')) {\n content = (\n <span\n className={styles.germline}\n style={\n this.props.styleMap\n ? this.props.styleMap[value.toLowerCase()]\n : undefined\n }\n >\n {(this.props.displayValueMap &&\n (this.props.displayValueMap[value.toLowerCase()] ||\n this.props.displayValueMap['germline'])) ||\n 'Germline'}\n </span>\n );\n } else {\n content = <span className={styles.unknown}>{value}</span>;\n }\n } else {\n content = <span />;\n }\n\n if (this.props.enableTooltip) {\n content = (\n <DefaultTooltip\n overlay={<span>{value}</span>}\n placement=\"right\"\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return content;\n }\n}\n","import { calcProteinChangeSortValue, Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\nimport styles from './proteinChange.module.scss';\n\ntype ProteinChangeProps = {\n mutation: Mutation;\n enableMutationStatusIndicator?: boolean;\n};\n\nexport function proteinChangeSortMethod(a: string, b: string) {\n return defaultSortMethod(\n a ? calcProteinChangeSortValue(a) : null,\n b ? calcProteinChangeSortValue(b) : null\n );\n}\n\nexport default class ProteinChange extends React.Component<\n ProteinChangeProps,\n {}\n> {\n public static defaultProps: Partial<ProteinChangeProps> = {\n enableMutationStatusIndicator: true,\n };\n\n public render() {\n // use text as display value\n const mutation = this.props.mutation;\n const proteinChange = mutation.proteinChange;\n const mutationStatus = mutation.mutationStatus;\n\n // TODO TruncatedText\n // let content = (\n // <TruncatedText\n // text={proteinChange}\n // tooltip={<span>{proteinChange}</span>}\n // className={styles.proteinChange}\n // maxLength={40}\n // />\n // );\n\n let content = (\n <span className={styles.proteinChange}>{proteinChange}</span>\n );\n\n // add a germline indicator next to protein change if it is a germline mutation!\n if (\n this.props.enableMutationStatusIndicator &&\n mutationStatus &&\n mutationStatus.toLowerCase().includes('germline')\n ) {\n content = (\n <React.Fragment>\n {content}\n <span className={styles.germline}>Germline</span>\n </React.Fragment>\n );\n }\n\n return content;\n }\n}\n","import * as React from 'react';\nimport 'rc-tooltip/assets/bootstrap_white.css';\nimport {\n extendMutations,\n getVariantAnnotation,\n IExtendedSignalMutation,\n Mutation,\n RemoteData,\n formatNumberValueInSignificantDigits,\n defaultSortMethod,\n generateTumorTypeDecomposition,\n Pathogenicity,\n} from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport {\n MutationTumorTypeFrequencyTable,\n FrequencyTableColumnEnum,\n DefaultTooltip,\n FREQUENCY_COLUMNS_DEFINITION,\n} from 'cbioportal-frontend-commons';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\nimport { observer } from 'mobx-react';\ntype SignalProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationType?: Pathogenicity;\n};\n\ntype SignalValueProps = SignalProps & {\n significantDigits?: number;\n};\n\nexport function getSignalData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n mutationType?: Pathogenicity // mutationType could be \"germline\", \"somatic\", or \"undefined\" which means both\n): IExtendedSignalMutation[] {\n let signalData: IExtendedSignalMutation[] = [];\n const variantAnnotation = indexedVariantAnnotations\n ? getVariantAnnotation(mutation, indexedVariantAnnotations.result)\n : undefined;\n if (\n variantAnnotation &&\n variantAnnotation.signalAnnotation &&\n variantAnnotation.signalAnnotation.annotation &&\n variantAnnotation.signalAnnotation.annotation.length > 0\n ) {\n // if mutation is somatic OR germline, get annotation depending on mutationType\n if (variantAnnotation.signalAnnotation.annotation.length === 1) {\n if (\n (mutationType === Pathogenicity.GERMLINE &&\n variantAnnotation.signalAnnotation.annotation[0].mutationStatus.includes(\n 'germline'\n )) ||\n (mutationType === Pathogenicity.SOMATIC &&\n variantAnnotation.signalAnnotation.annotation[0].mutationStatus.includes(\n 'somatic'\n ))\n ) {\n signalData = extendMutations([\n variantAnnotation.signalAnnotation.annotation[0],\n ]);\n }\n }\n // if mutation is both somatic AND germline, get annotation for both or get one of them depending on mutationType\n else {\n // if mutationType is undefined, get annotation for both somatic and germline\n if (mutationType === undefined) {\n signalData = extendMutations(\n variantAnnotation.signalAnnotation.annotation\n );\n }\n // if mutationType is defined, get annotation depending on mutationType\n else {\n variantAnnotation.signalAnnotation.annotation.forEach(\n annotation => {\n if (\n mutationType === Pathogenicity.GERMLINE &&\n annotation.mutationStatus.includes('germline')\n ) {\n signalData = extendMutations([annotation]);\n } else if (\n mutationType === Pathogenicity.SOMATIC &&\n annotation.mutationStatus.includes('somatic')\n ) {\n signalData = extendMutations([annotation]);\n }\n }\n );\n }\n }\n }\n return signalData;\n}\nexport function signalSortMethod(\n a: IExtendedSignalMutation,\n b: IExtendedSignalMutation\n) {\n return defaultSortMethod(getSortValue(a), getSortValue(b));\n}\nexport function getSortValue(\n signalData: IExtendedSignalMutation\n): number | null {\n return signalData ? signalData.germlineFrequency || null : null;\n}\n\nexport function download(\n signalData: IExtendedSignalMutation,\n mutationType?: Pathogenicity\n): string {\n return signalData && signalData.germlineFrequency !== null\n ? `${formatNumberValueInSignificantDigits(\n signalData.germlineFrequency,\n 2\n )}`\n : '';\n}\n\n// Get germline OR somatic frequency value\nexport function getSingleSignalValue(\n mutation: Mutation,\n mutationType: Pathogenicity,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n significantDigits?: number\n) {\n const signalData = getSignalData(\n mutation,\n indexedVariantAnnotations,\n mutationType\n );\n if (\n signalData &&\n signalData.length === 1 &&\n signalData[0].tumorTypeDecomposition\n ) {\n return formatNumberValueInSignificantDigits(\n signalData[0].germlineFrequency || signalData[0].somaticFrequency,\n significantDigits || 2\n );\n } else {\n return null;\n }\n}\n\nexport const SignalTable: React.FunctionComponent<SignalValueProps> = props => {\n // signal data should be either germline or somatic, so should be only one element\n const signalData = getSignalData(\n props.mutation,\n props.indexedVariantAnnotations,\n props.mutationType\n )[0];\n if (\n getSingleSignalValue(\n props.mutation,\n props.mutationType || Pathogenicity.GERMLINE,\n props.indexedVariantAnnotations\n ) !== null\n ) {\n return (\n <MutationTumorTypeFrequencyTable\n data={generateTumorTypeDecomposition(\n signalData,\n signalData.countsByTumorType,\n signalData.biallelicCountsByTumorType,\n signalData.qcPassCountsByTumorType,\n signalData.statsByTumorType\n )}\n columns={[\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.TUMOR_TYPE\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MUTATION_STATUS\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.SAMPLE_COUNT\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.VARIANT_COUNT\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.PREVALENCE_FREQUENCY\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.BIALLELIC_RATIO\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_AGE_AT_DX\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_TMB\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MSI_SCORE\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_LST\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_NTELOMERIC_AI\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_FRACTION_LOH\n ],\n ]}\n />\n );\n } else {\n return null;\n }\n};\n\n@observer\nexport default class Signal extends React.Component<SignalProps, {}> {\n public render() {\n if (this.props.indexedVariantAnnotations) {\n let content;\n const status = this.props.indexedVariantAnnotations.status;\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n content = <div />;\n const signalValue = getSingleSignalValue(\n this.props.mutation,\n this.props.mutationType || Pathogenicity.GERMLINE,\n this.props.indexedVariantAnnotations\n );\n if (signalValue !== null) {\n content = (\n <DefaultTooltip\n placement=\"top\"\n overlayStyle={{\n width: 800,\n }}\n overlay={\n <SignalTable\n mutation={this.props.mutation}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n mutationType={this.props.mutationType}\n />\n }\n >\n <span>{signalValue}</span>\n </DefaultTooltip>\n );\n }\n }\n\n return content;\n } else {\n return <div />;\n }\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport function handleOptionSelect(\n selectedValues: Array<{ value: string }>,\n allValues: string[],\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void\n) {\n if (onSelect) {\n onSelect(\n selectedValues.map(o => o.value),\n allValues.length === selectedValues.length\n );\n }\n}\n\nexport function getAllOptionValues(options?: { value: string }[]) {\n return (options || []).map(option => option.value);\n}\n\nexport function getSelectedOptionValues(\n allValues: string[],\n filter?: DataFilter<string>\n) {\n return allValues\n .filter(\n value =>\n !filter ||\n filter.values.find(\n filterValue =>\n value.toLowerCase() === filterValue.toLowerCase()\n )\n )\n .map(value => ({ value }));\n}\n","import { CheckedSelect, Option } from 'cbioportal-frontend-commons';\nimport classNames from 'classnames';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { components } from 'react-select';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport {\n getAllOptionValues,\n getSelectedOptionValues,\n handleOptionSelect,\n} from '../../util/SelectorUtils';\n\nexport type DropdownSelectorProps = {\n name?: string;\n placeholder?: string;\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void;\n showControls?: boolean;\n showNumberOfSelectedValues?: boolean;\n selectionIndicatorClassNames?: {\n base: string;\n allSelected: string;\n partiallySelected: string;\n };\n filter?: DataFilter<string>;\n options?: { label?: string | JSX.Element; value: string }[];\n};\n\nconst SelectionIndicator: React.FunctionComponent<{\n allValues: string[];\n selectedValues: { value: string }[];\n selectionIndicatorClassNames: string;\n}> = observer(props => {\n return (\n <div\n style={{\n marginRight: 5,\n marginTop: 'auto',\n marginBottom: 'auto',\n }}\n className={props.selectionIndicatorClassNames}\n >\n {props.selectedValues.length}/{props.allValues.length}\n </div>\n );\n});\n\n@observer\nexport class DropdownSelector extends React.Component<\n DropdownSelectorProps,\n {}\n> {\n public static defaultProps: Partial<DropdownSelectorProps> = {\n showNumberOfSelectedValues: true,\n selectionIndicatorClassNames: {\n base: 'badge',\n allSelected: 'badge-light',\n partiallySelected: 'badge-warning',\n },\n };\n\n constructor(props: DropdownSelectorProps) {\n super(props);\n makeObservable(this);\n }\n\n @computed\n public get allValues(): string[] {\n return getAllOptionValues(this.props.options);\n }\n\n @computed\n public get selectedValues(): { value: string }[] {\n return getSelectedOptionValues(this.allValues, this.props.filter);\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.options || []).map(option => ({\n label: <span>{option.label || option.value}</span>,\n value: option.value,\n }));\n }\n\n @computed\n public get selectionIndicatorClassNames(): string {\n const allValuesSelected =\n this.allValues.length === this.selectedValues.length;\n const classes = this.props.selectionIndicatorClassNames!;\n\n return classNames(classes.base, {\n [classes.allSelected]: allValuesSelected,\n [classes.partiallySelected]: !allValuesSelected,\n });\n }\n\n @computed\n public get components() {\n return this.props.showNumberOfSelectedValues\n ? {\n IndicatorsContainer: this.indicatorsContainer,\n }\n : undefined;\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n reactSelectComponents={this.components}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n showControls={this.props.showControls}\n />\n );\n }\n\n protected indicatorsContainer = (props: any) => {\n return (\n <div style={{ display: 'flex' }}>\n <SelectionIndicator\n allValues={this.allValues}\n selectedValues={this.selectedValues}\n selectionIndicatorClassNames={\n this.selectionIndicatorClassNames\n }\n />\n <components.IndicatorsContainer {...props} />\n </div>\n );\n };\n\n @action.bound\n private onChange(values: Array<{ value: string }>) {\n handleOptionSelect(values, this.allValues, this.props.onSelect);\n }\n}\n\nexport default DropdownSelector;\n","import * as React from 'react';\nimport { CSSProperties } from 'react';\n\nexport type BadgeLabelProps = {\n label: JSX.Element | string;\n badgeContent?: number | string;\n badgeStyleOverride?: CSSProperties;\n badgeClassName?: string;\n badgeFirst?: boolean;\n value?: string;\n isDriverAnnotated?: boolean;\n badgeLabelFormat?: (\n label: JSX.Element | string,\n badgeFirst?: boolean,\n value?: string,\n badge?: JSX.Element | null\n ) => JSX.Element;\n};\n\nexport const DEFAULT_BADGE_STYLE = {\n color: '#FFF',\n backgroundColor: '#000',\n borderStyle: 'solid',\n borderWidth: 'thin',\n};\n\nexport class BadgeLabel extends React.Component<BadgeLabelProps, {}> {\n public static defaultProps: Partial<BadgeLabelProps> = {\n badgeClassName: 'badge',\n badgeFirst: false,\n };\n\n protected get badge(): JSX.Element | null {\n return (\n <span\n style={\n this.props.badgeFirst\n ? this.props.isDriverAnnotated\n ? {}\n : { marginRight: 5 }\n : { marginLeft: 5 }\n }\n >\n <span\n className={this.props.badgeClassName}\n data-test={`badge-${this.props.value}`}\n style={{\n ...DEFAULT_BADGE_STYLE,\n ...this.props.badgeStyleOverride,\n ...(this.props.isDriverAnnotated\n ? { marginRight: 0, width: 'auto' }\n : {}),\n }}\n >\n {this.props.badgeContent}\n </span>\n </span>\n );\n }\n\n protected get badgeFirst(): JSX.Element {\n if (this.props.badgeLabelFormat) {\n return this.props.badgeLabelFormat(\n this.props.label,\n true,\n this.props.value,\n this.badge\n );\n } else {\n return (\n <>\n {this.badge}\n {this.props.label}\n </>\n );\n }\n }\n\n protected get badgeLast(): JSX.Element {\n if (this.props.badgeLabelFormat) {\n return this.props.badgeLabelFormat(\n this.props.label,\n false,\n this.props.value,\n this.badge\n );\n } else {\n return (\n <>\n {this.props.label}\n {this.badge}\n </>\n );\n }\n }\n\n public render(): JSX.Element {\n return this.props.badgeFirst ? this.badgeFirst : this.badgeLast;\n }\n}\n\nexport default BadgeLabel;\n","import autobind from 'autobind-decorator';\nimport _ from 'lodash';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { CSSProperties } from 'react';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport {\n getAllOptionValues,\n getSelectedOptionValues,\n handleOptionSelect,\n} from '../../util/SelectorUtils';\nimport { BadgeLabel, DEFAULT_BADGE_STYLE } from './BadgeLabel';\nimport {\n CheckBoxType,\n getSelectedValuesMap,\n Option,\n BadgeListSelector,\n} from 'cbioportal-frontend-commons';\n\nexport type BadgeSelectorOption = {\n value: string;\n label?: string | JSX.Element;\n badgeContent?: number | string;\n badgeStyleOverride?: CSSProperties;\n badgeStyleSelectedOverride?: CSSProperties;\n};\n\nexport type BadgeSelectorProps = {\n name?: string;\n placeholder?: string;\n isDisabled?: boolean;\n numberOfColumnsPerRow?: number;\n alignColumns?: boolean;\n uniformBadgeWidth?: boolean;\n alignmentPaddingWithinBadge?: boolean;\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void;\n selectedValues?: { value: string }[];\n getOptionLabel?: (\n option: Option,\n selectedValues: { [optionValue: string]: any },\n checkBoxType?: CheckBoxType\n ) => JSX.Element;\n getBadgeLabel?: (\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties,\n isDriverAnnotated?: boolean,\n badgeLabelFormat?: (\n label: JSX.Element | string,\n badgeFirst?: boolean,\n value?: string,\n badge?: JSX.Element | null\n ) => JSX.Element,\n badgeFirst?: boolean\n ) => JSX.Element;\n filter?: DataFilter<string>;\n options?: BadgeSelectorOption[];\n badgeClassName?: string;\n badgeContentPadding?: number;\n badgeCharWidth?: number;\n isDriverAnnotated?: boolean;\n onOnlyDriverVsVusSelect?: (\n selectedOption: string[],\n allValuesSelected: boolean\n ) => void;\n driverAnnotationIcon?: JSX.Element;\n onBadgeSelect?: (\n value: string,\n selectedValues: { value: string }[],\n onChange: (values: { value: string }[]) => void\n ) => void;\n onOnlySelect?: (\n value: string,\n onChange: (values: { value: string }[]) => void,\n onOnlyDriverVsVusChange: (values: { value: string }[]) => void\n ) => void;\n badgeLabelFormat?: (\n label: JSX.Element | string,\n badgeFirst?: boolean,\n value?: string,\n badge?: JSX.Element | null\n ) => JSX.Element;\n useOnlyFeature?: boolean;\n badgeFirst?: boolean;\n};\n\nexport const DEFAULT_BADGE_CHAR_WIDTH = 10;\nexport const DEFAULT_BADGE_CONTENT_PADDING = 7;\n\nexport function getBadgeStyleOverride(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeAlignmentStyle?: CSSProperties\n) {\n let override: CSSProperties = {\n ...badgeAlignmentStyle,\n ...option.badgeStyleOverride,\n };\n\n const defaultStyle = {\n ...DEFAULT_BADGE_STYLE,\n ...override,\n };\n\n const isSelected = option.value in selectedValues;\n\n if (!isSelected) {\n // by default swap background color and text color for unselected options\n override = option.badgeStyleSelectedOverride\n ? {\n ...badgeAlignmentStyle,\n ...option.badgeStyleSelectedOverride,\n }\n : {\n ...defaultStyle,\n color: defaultStyle.backgroundColor,\n backgroundColor: defaultStyle.color,\n borderColor: defaultStyle.backgroundColor,\n };\n }\n\n return override;\n}\n\nexport function calculateBadgeAlignmentStyle(\n maxLengthInCol: number,\n optionLength: number,\n badgeCharWidth: number = DEFAULT_BADGE_CHAR_WIDTH,\n badgeContentPadding: number = DEFAULT_BADGE_CONTENT_PADDING,\n padWithinBadge: boolean = false\n): CSSProperties {\n // this is an approximation with the assumption that each character has more or less equal width\n const totalWidth =\n maxLengthInCol * badgeCharWidth + badgeContentPadding * 2;\n\n if (padWithinBadge) {\n // no additional left or right margin, since all the padding is applied within the badge width\n return {\n width: totalWidth,\n };\n } else {\n // need additional left and right margins to adjust the alignment\n const width = optionLength * badgeCharWidth + badgeContentPadding * 2;\n const margin = (totalWidth - width) / 2;\n return {\n width,\n marginLeft: margin,\n marginRight: margin,\n };\n }\n}\n\nexport function getOptionContentLengths(\n options: BadgeSelectorOption[]\n): number[] {\n // string length of each badge content of an option\n return options\n .map((option: BadgeSelectorOption) => option.badgeContent)\n .filter(content => content !== undefined)\n .map(content => content!.toString().length);\n}\n\nexport function calculateBadgeAlignmentStyles(\n options: BadgeSelectorOption[],\n numberOfColumnsPerRow: number = 1,\n uniformBadgeWidth: boolean = false,\n badgeCharWidth: number = DEFAULT_BADGE_CHAR_WIDTH,\n badgeContentPadding: number = DEFAULT_BADGE_CONTENT_PADDING,\n alignmentPaddingWithinBadge: boolean = false\n): CSSProperties[] {\n // regardless of number of columns or alignmentPaddingWithinBadge value\n // set the width of all badges to the width of badge with the longest content\n if (uniformBadgeWidth) {\n const iterationCount = options.length;\n const maxLength = Math.max(...getOptionContentLengths(options));\n const badgeWidth = calculateBadgeAlignmentStyle(\n maxLength,\n maxLength,\n badgeCharWidth,\n badgeContentPadding,\n true\n );\n\n return _.times(iterationCount, () => badgeWidth);\n } else if (numberOfColumnsPerRow > 0) {\n const groupedByCol = _.groupBy(\n options,\n option => options.indexOf(option) % numberOfColumnsPerRow\n );\n\n return options.map((option: BadgeSelectorOption, index: number) => {\n // define a max badge length for each column\n const maxLengthInCol = Math.max(\n ...getOptionContentLengths(\n groupedByCol[index % numberOfColumnsPerRow]\n )\n );\n const length =\n option.badgeContent === undefined\n ? 0\n : option.badgeContent.toString().length;\n\n // align all badges with respect to the max badge length for the corresponding column\n return calculateBadgeAlignmentStyle(\n maxLengthInCol,\n length,\n badgeCharWidth,\n badgeContentPadding,\n alignmentPaddingWithinBadge\n );\n });\n } else {\n return [];\n }\n}\n\n@observer\nexport class BadgeSelector extends React.Component<BadgeSelectorProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @computed\n public get allValues() {\n return getAllOptionValues(this.props.options);\n }\n\n @computed\n public get selectedValues() {\n return (\n this.props.selectedValues ||\n getSelectedOptionValues(this.allValues, this.props.filter)\n );\n }\n\n @computed\n public get selectedValuesMap(): { [optionValue: string]: any } {\n return getSelectedValuesMap(this.selectedValues);\n }\n\n public getBadgeLabel(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties,\n isDriverAnnotated?: boolean,\n badgeLabelFormat?: (\n label: JSX.Element | string,\n badgeFirst?: boolean,\n value?: string,\n badge?: JSX.Element | null\n ) => JSX.Element,\n badgeFirst?: boolean\n ): JSX.Element {\n return this.props.getBadgeLabel ? (\n this.props.getBadgeLabel(\n option,\n selectedValues,\n badgeClassName,\n badgeAlignmentStyle,\n isDriverAnnotated,\n badgeLabelFormat,\n badgeFirst\n )\n ) : (\n <BadgeLabel\n label={option.label || option.value}\n badgeContent={option.badgeContent}\n badgeStyleOverride={getBadgeStyleOverride(\n option,\n selectedValues,\n badgeAlignmentStyle\n )}\n badgeClassName={this.props.badgeClassName}\n isDriverAnnotated={this.props.isDriverAnnotated}\n badgeLabelFormat={this.props.badgeLabelFormat}\n badgeFirst={this.props.badgeFirst}\n />\n );\n }\n\n @computed\n public get badgeAlignmentStyles(): CSSProperties[] | undefined {\n return this.props.alignColumns && this.props.options\n ? calculateBadgeAlignmentStyles(\n this.props.options,\n this.props.numberOfColumnsPerRow,\n this.props.uniformBadgeWidth,\n this.props.badgeCharWidth,\n this.props.badgeContentPadding,\n this.props.alignmentPaddingWithinBadge\n )\n : undefined;\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.options || []).map((option, index) => ({\n label: this.getBadgeLabel(\n option,\n this.selectedValuesMap,\n this.props.badgeClassName,\n this.badgeAlignmentStyles && this.props.numberOfColumnsPerRow\n ? this.badgeAlignmentStyles[index]\n : undefined,\n this.props.isDriverAnnotated,\n this.props.badgeLabelFormat,\n this.props.badgeFirst\n ),\n value: option.value,\n }));\n }\n\n public render() {\n return (\n <BadgeListSelector\n onChange={this.onChange}\n options={this.options}\n getOptionLabel={this.props.getOptionLabel}\n selectedValue={this.selectedValues}\n isDisabled={this.props.isDisabled}\n numberOfColumnsPerRow={this.props.numberOfColumnsPerRow}\n isDriverAnnotated={this.props.isDriverAnnotated}\n onOnlyDriverVsVusChange={this.onOnlyDriverVsVusChange}\n driverAnnotationIcon={this.props.driverAnnotationIcon}\n onBadgeSelect={this.props.onBadgeSelect}\n onOnlySelect={this.props.onOnlySelect}\n useOnlyFeature={this.props.useOnlyFeature}\n />\n );\n }\n\n @action.bound\n private onChange(values: Array<{ value: string }>) {\n handleOptionSelect(values, this.allValues, this.props.onSelect);\n }\n\n @action.bound\n private onOnlyDriverVsVusChange(values: Array<{ value: string }>) {\n handleOptionSelect(\n values,\n this.allValues,\n this.props.onOnlyDriverVsVusSelect\n );\n }\n}\n\nexport default BadgeSelector;\n","import {\n CanonicalMutationType,\n findFirstMostCommonElt,\n getCanonicalMutationType,\n getProteinImpactTypeFromCanonical,\n ProteinImpactType,\n MUT_COLOR_MISSENSE,\n MUT_COLOR_INFRAME,\n MUT_COLOR_TRUNC,\n MUT_COLOR_SPLICE,\n STRUCTURAL_VARIANT_COLOR,\n MUT_COLOR_OTHER,\n MUT_COLOR_OTHER_PASSENGER,\n MUT_COLOR_MISSENSE_PASSENGER,\n MUT_COLOR_INFRAME_PASSENGER,\n MUT_COLOR_TRUNC_PASSENGER,\n MUT_COLOR_SPLICE_PASSENGER,\n STRUCTURAL_VARIANT_PASSENGER_COLOR,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nimport { IProteinImpactTypeColors } from '../model/ProteinImpact';\n\nexport const DEFAULT_PROTEIN_IMPACT_TYPE_COLORS: IProteinImpactTypeColors = {\n missenseColor: MUT_COLOR_MISSENSE,\n missenseVusColor: MUT_COLOR_MISSENSE_PASSENGER,\n inframeColor: MUT_COLOR_INFRAME,\n inframeVusColor: MUT_COLOR_INFRAME_PASSENGER,\n truncatingColor: MUT_COLOR_TRUNC,\n truncatingVusColor: MUT_COLOR_TRUNC_PASSENGER,\n spliceColor: MUT_COLOR_SPLICE,\n spliceVusColor: MUT_COLOR_SPLICE_PASSENGER,\n fusionColor: STRUCTURAL_VARIANT_COLOR,\n fusionVusColor: STRUCTURAL_VARIANT_PASSENGER_COLOR,\n otherColor: MUT_COLOR_OTHER,\n otherVusColor: MUT_COLOR_OTHER_PASSENGER,\n};\n\nexport const MUTATION_TYPE_PRIORITY: {\n [canonicalMutationType: string]: number;\n} = {\n missense: 1,\n inframe: 2,\n truncating: 4,\n nonsense: 6,\n nonstop: 7,\n nonstart: 8,\n frameshift: 4,\n frame_shift_del: 4,\n frame_shift_ins: 5,\n in_frame_ins: 3,\n in_frame_del: 2,\n splice_site: 9,\n fusion: 10,\n silent: 11,\n other: 11,\n};\n\nexport function mutationTypeSort(\n typeA: CanonicalMutationType,\n typeB: CanonicalMutationType\n) {\n const priorityA = MUTATION_TYPE_PRIORITY[typeA];\n const priorityB = MUTATION_TYPE_PRIORITY[typeB];\n if (priorityA < priorityB) {\n return -1;\n } else if (priorityA > priorityB) {\n return 1;\n } else {\n return typeA.localeCompare(typeB);\n }\n}\n\nexport function getColorForProteinImpactType<T extends Mutation>(\n mutations: Partial<T>[],\n colors: IProteinImpactTypeColors = DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n getMutationCount: (mutation: Partial<T>) => number = () => 1,\n isPutativeDriver?: (mutation: Partial<T>) => boolean\n): string {\n const processedMutations = mutations.map(m => {\n return {\n count: Math.ceil(getMutationCount(m)),\n\n // if not coloring drivers vs vus, color everything as driver\n isPutativeDriver: !!(!isPutativeDriver || isPutativeDriver(m)),\n\n canonicalType: getCanonicalMutationType(\n (m.mutationType || '') as string\n ),\n };\n });\n // aggregate counts by type + driver status\n const counts: any = {};\n for (const pMut of processedMutations) {\n const key = `${pMut.canonicalType}_${pMut.isPutativeDriver}`;\n counts[key] = counts[key] || {\n count: 0,\n isPutativeDriver: pMut.isPutativeDriver,\n canonicalType: pMut.canonicalType,\n };\n counts[key].count += pMut.count;\n }\n\n const sortedMutations = _.sortBy(_.values(counts), [\n pMut => (pMut.isPutativeDriver ? 0 : 1), // putative driver preferred non putative driver\n pMut => -pMut.count, // sort descending by count - higher count preferred to lower count\n pMut => MUTATION_TYPE_PRIORITY[pMut.canonicalType], // finally, sort by specified priority\n ]);\n\n if (sortedMutations.length > 0) {\n const chosenMutation = sortedMutations[0];\n\n const proteinImpactType: ProteinImpactType = getProteinImpactTypeFromCanonical(\n chosenMutation.canonicalType\n );\n\n switch (proteinImpactType) {\n case ProteinImpactType.MISSENSE:\n return chosenMutation.isPutativeDriver\n ? colors.missenseColor\n : colors.missenseVusColor;\n case ProteinImpactType.TRUNCATING:\n return chosenMutation.isPutativeDriver\n ? colors.truncatingColor\n : colors.truncatingVusColor;\n case ProteinImpactType.INFRAME:\n return chosenMutation.isPutativeDriver\n ? colors.inframeColor\n : colors.inframeVusColor;\n case ProteinImpactType.FUSION:\n return chosenMutation.isPutativeDriver\n ? colors.fusionColor\n : colors.fusionVusColor;\n case ProteinImpactType.SPLICE:\n return chosenMutation.isPutativeDriver\n ? colors.spliceColor\n : colors.spliceVusColor;\n case ProteinImpactType.OTHER:\n return chosenMutation.isPutativeDriver\n ? colors.otherColor\n : colors.otherVusColor;\n default:\n return colors.otherColor;\n }\n } else {\n return '#FF0000'; // we only get here if theres no mutations, which shouldnt happen. red to indicate an error\n }\n}\n","import { ProteinImpactType } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\n\nexport function getProteinImpactTypeOptionDisplayValueMap(proteinImpactTypeColorMap: {\n [proteinImpactType: string]: string;\n}): { [proteinImpactType: string]: JSX.Element } {\n return {\n [ProteinImpactType.MISSENSE]: (\n <strong\n style={{\n color:\n proteinImpactTypeColorMap[ProteinImpactType.MISSENSE],\n }}\n >\n Missense\n </strong>\n ),\n [ProteinImpactType.TRUNCATING]: (\n <strong\n style={{\n color:\n proteinImpactTypeColorMap[ProteinImpactType.TRUNCATING],\n }}\n >\n Truncating\n </strong>\n ),\n [ProteinImpactType.INFRAME]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.INFRAME],\n }}\n >\n Inframe\n </strong>\n ),\n [ProteinImpactType.SPLICE]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.SPLICE],\n }}\n >\n Splice\n </strong>\n ),\n [ProteinImpactType.FUSION]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.FUSION],\n }}\n >\n SV/Fusion\n </strong>\n ),\n [ProteinImpactType.OTHER]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.OTHER],\n }}\n >\n Other\n </strong>\n ),\n };\n}\n\nexport function getProteinImpactTypeColorMap(\n colors: IProteinImpactTypeColors\n): { [proteinImpactType: string]: string } {\n return {\n [ProteinImpactType.MISSENSE]: colors.missenseColor,\n [ProteinImpactType.TRUNCATING]: colors.truncatingColor,\n [ProteinImpactType.INFRAME]: colors.inframeColor,\n [ProteinImpactType.SPLICE]: colors.spliceColor,\n [ProteinImpactType.FUSION]: colors.fusionColor,\n [ProteinImpactType.OTHER]: colors.otherColor,\n };\n}\n","import { ProteinImpactType } from 'cbioportal-frontend-commons';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\nimport { DEFAULT_PROTEIN_IMPACT_TYPE_COLORS } from '../../util/MutationTypeUtils';\nimport DropdownSelector, { DropdownSelectorProps } from './DropdownSelector';\nimport {\n getProteinImpactTypeColorMap,\n getProteinImpactTypeOptionDisplayValueMap,\n} from './ProteinImpactTypeHelper';\n\nexport type ProteinImpactTypeDropdownSelectorProps = DropdownSelectorProps & {\n colors: IProteinImpactTypeColors;\n};\n\n@observer\nexport class ProteinImpactTypeDropdownSelector extends React.Component<\n ProteinImpactTypeDropdownSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<\n ProteinImpactTypeDropdownSelectorProps\n > = {\n colors: DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n };\n\n @computed\n protected get optionDisplayValueMap() {\n return getProteinImpactTypeOptionDisplayValueMap(\n this.proteinImpactTypeColors\n );\n }\n\n @computed\n protected get proteinImpactTypeColors() {\n return getProteinImpactTypeColorMap(this.props.colors);\n }\n\n @computed\n protected get options() {\n return Object.values(ProteinImpactType).map(value => ({\n value,\n label: this.optionDisplayValueMap[value],\n }));\n }\n\n public render() {\n return (\n <DropdownSelector\n name=\"proteinImpactTypeFilter\"\n placeholder=\"Protein Impact\"\n showControls={true}\n options={this.options}\n {...this.props}\n />\n );\n }\n}\n\nexport default ProteinImpactTypeDropdownSelector;\n","import { Option, ProteinImpactType } from 'cbioportal-frontend-commons';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { CSSProperties } from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\nimport { DEFAULT_PROTEIN_IMPACT_TYPE_COLORS } from '../../util/MutationTypeUtils';\nimport { BadgeLabel } from './BadgeLabel';\nimport BadgeSelector, {\n BadgeSelectorOption,\n BadgeSelectorProps,\n getBadgeStyleOverride,\n} from './BadgeSelector';\nimport {\n getProteinImpactTypeColorMap,\n getProteinImpactTypeOptionDisplayValueMap,\n} from './ProteinImpactTypeHelper';\n\nexport type ProteinImpactTypeBadgeSelectorProps = BadgeSelectorProps & {\n colors: IProteinImpactTypeColors;\n counts?: { [proteinImpactType: string]: number };\n excludedProteinTypes?: string[];\n groupIndex?: number;\n groupNameWithOrdinal?: string;\n height?: number;\n};\n\nconst VALUES = [\n ProteinImpactType.MISSENSE,\n ProteinImpactType.TRUNCATING,\n ProteinImpactType.INFRAME,\n ProteinImpactType.SPLICE,\n ProteinImpactType.FUSION,\n ProteinImpactType.OTHER,\n];\n\nexport function getProteinImpactTypeOptionLabel(option: Option): JSX.Element {\n return <span>{option.label || option.value}</span>;\n}\n\nexport function getProteinImpactTypeBadgeLabel(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties,\n isDriverAnnotated?: boolean,\n badgeLabelFormat?: (\n label: JSX.Element | string,\n badgeFirst?: boolean,\n value?: string,\n badge?: JSX.Element | null\n ) => JSX.Element,\n badgeFirst?: boolean\n): JSX.Element {\n return (\n <BadgeLabel\n label={option.label || option.value}\n badgeContent={option.badgeContent}\n badgeStyleOverride={getBadgeStyleOverride(\n option,\n selectedValues,\n badgeAlignmentStyle\n )}\n badgeClassName={badgeClassName}\n badgeFirst={badgeFirst}\n value={option.value}\n isDriverAnnotated={isDriverAnnotated}\n badgeLabelFormat={badgeLabelFormat}\n />\n );\n}\n\n@observer\nexport class ProteinImpactTypeBadgeSelector<\n P extends ProteinImpactTypeBadgeSelectorProps = ProteinImpactTypeBadgeSelectorProps\n> extends React.Component<P, {}> {\n constructor(props: any) {\n super(props);\n }\n\n public static defaultProps: Partial<ProteinImpactTypeBadgeSelectorProps> = {\n colors: DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n alignColumns: true,\n numberOfColumnsPerRow: 2,\n };\n\n protected get optionDisplayValueMap() {\n return getProteinImpactTypeOptionDisplayValueMap(\n this.proteinImpactTypeColors\n );\n }\n\n protected get proteinImpactTypeColors() {\n return getProteinImpactTypeColorMap(this.props.colors);\n }\n\n protected get options() {\n // get options, hide \"Other\" if it's 0\n return VALUES.map(value => ({\n value,\n label: this.optionDisplayValueMap[value],\n badgeContent: this.props.counts\n ? this.props.counts[value]\n : undefined,\n badgeStyleOverride: {\n backgroundColor: this.proteinImpactTypeColors[value],\n },\n })).filter(\n type =>\n !(\n this.props.excludedProteinTypes?.includes(type.value) ||\n (type.value === ProteinImpactType.OTHER &&\n type.badgeContent === 0)\n )\n );\n }\n\n public render() {\n return (\n <div style={{ display: 'inline-flex' }}>\n <div>\n <table style={{ height: this.props.height }}>\n <BadgeSelector\n options={this.options}\n getOptionLabel={getProteinImpactTypeOptionLabel}\n getBadgeLabel={getProteinImpactTypeBadgeLabel}\n useOnlyFeature={true}\n badgeFirst={true}\n {...this.props}\n />\n </table>\n </div>\n {this.props.groupNameWithOrdinal && (\n <div\n style={{\n fontSize: 12,\n fontWeight: 'bold',\n textAlign: 'center',\n writingMode: 'vertical-lr',\n transform: 'rotate(180deg)',\n }}\n >\n {this.props.groupNameWithOrdinal}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default ProteinImpactTypeBadgeSelector;\n","import { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { formatPercentValue } from 'cbioportal-utils';\n\nimport BadgeSelector, {\n BadgeSelectorOption,\n BadgeSelectorProps,\n} from './BadgeSelector';\n\nexport type MutationStatusBadgeSelectorProps = BadgeSelectorProps & {\n rates?: { [mutationStatus: string]: number };\n badgeSelectorOptions?: BadgeSelectorOption[];\n};\n\nexport const MUTATION_STATUS_BADGE_STYLE_OVERRIDE = {\n color: '#000',\n backgroundColor: '#FFF',\n borderColor: '#FFF',\n};\n\nexport function getMutationStatusFilterOptions() {\n return [\n {\n value: 'somatic',\n label: 'Somatic Mutation Frequency',\n badgeStyleOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n badgeStyleSelectedOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n },\n {\n value: 'germline',\n label: 'Germline Mutation Frequency',\n badgeStyleOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n badgeStyleSelectedOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n },\n ];\n}\n\n@observer\nexport class MutationStatusBadgeSelector extends React.Component<\n MutationStatusBadgeSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<MutationStatusBadgeSelectorProps> = {\n badgeSelectorOptions: getMutationStatusFilterOptions(),\n };\n\n @computed\n public get options() {\n return this.props.badgeSelectorOptions!.map(option => ({\n ...option,\n badgeContent: this.props.rates\n ? `${formatPercentValue(this.props.rates[option.value])}%`\n : undefined,\n }));\n }\n\n public render() {\n return (\n <table>\n <BadgeSelector options={this.options} {...this.props} />\n </table>\n );\n }\n}\n\nexport default MutationStatusBadgeSelector;\n","import autobind from 'autobind-decorator';\nimport { CheckedSelect, Option } from 'cbioportal-frontend-commons';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nexport type ColumnVisibilityDef = {\n id: string;\n name: string;\n visible: boolean;\n togglable?: boolean;\n};\n\nexport type ColumnSelectorProps = {\n name?: string;\n placeholder?: string;\n columnVisibility?: ColumnVisibilityDef[];\n onColumnToggled?: (selectedColumnIds: string[]) => void;\n showControls?: boolean;\n};\n\n@observer\nexport class ColumnSelector extends React.Component<ColumnSelectorProps, {}> {\n public static defaultProps: Partial<ColumnSelectorProps> = {\n name: 'dataTableColumns',\n placeholder: 'Columns',\n showControls: false,\n };\n\n constructor(props: ColumnSelectorProps) {\n super(props);\n makeObservable<ColumnSelector, 'onChange'>(this);\n }\n\n @computed\n public get selectedValues() {\n return (this.props.columnVisibility || [])\n .filter(c => c.visible)\n .map(c => ({ value: c.id }));\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.columnVisibility || []).map(c => ({\n label: <span>{c.name}</span>,\n value: c.id,\n }));\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n showControls={this.props.showControls}\n />\n );\n }\n\n @action.bound\n private onChange(values: { value: string }[]) {\n if (this.props.onColumnToggled) {\n this.props.onColumnToggled(values.map(o => o.value));\n }\n }\n}\n\nexport default ColumnSelector;\n","import classNames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport styles from './filterResetPanel.module.scss';\n\ntype FilterResetPanelProps = {\n resetFilters: () => void;\n filterInfo?: JSX.Element | string;\n additionalInfo?: JSX.Element | string;\n className?: string;\n buttonText?: string;\n buttonClass?: string;\n};\n\n@observer\nexport class FilterResetPanel extends React.Component<\n FilterResetPanelProps,\n {}\n> {\n public static defaultProps: Partial<FilterResetPanelProps> = {\n buttonText: 'Remove filter',\n buttonClass: classNames('btn', 'btn-secondary', 'btn-sm'),\n className: classNames(\n 'alert',\n 'alert-success',\n styles.filterResetPanel\n ),\n };\n\n public render() {\n return (\n <div\n className={this.props.className}\n data-test=\"filter-reset-panel\"\n >\n <span style={{ verticalAlign: 'middle' }}>\n <strong>{this.props.filterInfo}</strong>\n <button\n className={this.props.buttonClass}\n style={{ cursor: 'pointer', marginLeft: 6 }}\n onClick={this.props.resetFilters}\n >\n {this.props.buttonText}\n </button>\n <br />\n {this.props.additionalInfo}\n </span>\n </div>\n );\n }\n}\n\nexport default FilterResetPanel;\n","export enum DataFilterType {\n ONCOKB = 'oncokb',\n HOTSPOT = 'hotspot',\n POSITION = 'position',\n MUTATION = 'mutation',\n CANCER_TYPE = 'cancerType',\n PROTEIN_IMPACT_TYPE = 'proteinImpactType',\n MUTATION_STATUS = 'mutationStatus',\n PROTEIN_CHANGE = 'proteinChange',\n}\n\nexport type DataFilter<T = any> = {\n id?: string;\n type: string;\n values: T[];\n};\n","import {\n getProteinImpactType,\n ProteinImpactType,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nimport { MutationFilter, MutationFilterValue } from '../filter/MutationFilter';\nimport { MutationStatusFilter } from '../filter/MutationStatusFilter';\nimport { PositionFilter } from '../filter/PositionFilter';\nimport { ProteinImpactTypeFilter } from '../filter/ProteinImpactTypeFilter';\nimport { NumericalFilterValue } from '../filter/NumericalFilter';\nimport { CategoricalFilterValue } from '../filter/CategoricalFilter';\nimport DataStore from '../model/DataStore';\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport { ApplyFilterFn } from '../model/FilterApplier';\nimport { ProteinChangeFilter } from '../filter/ProteinChangeFilter';\n\nexport const TEXT_INPUT_FILTER_ID = '_mutationTableTextInputFilter_';\n\nexport function updatePositionSelectionFilters(\n dataStore: DataStore,\n position: number,\n isMultiSelect: boolean = false,\n defaultFilters: DataFilter[] = []\n) {\n const currentlySelected = dataStore.isPositionSelected(position);\n let selectedPositions: number[] = [];\n\n if (isMultiSelect) {\n // we need to keep previous positions if shift pressed,\n // but we still want to clear other filters tied with these positions\n selectedPositions = findAllUniquePositions(dataStore.selectionFilters);\n\n // remove current position if already selected\n if (currentlySelected) {\n selectedPositions = _.without(selectedPositions, position);\n }\n }\n\n // add current position into list if not selected\n if (!currentlySelected) {\n selectedPositions.push(position);\n }\n\n const positionFilter = {\n type: DataFilterType.POSITION,\n values: selectedPositions,\n };\n // we want to keep other filters (filters not related to positions) as is\n const otherFilters = dataStore.selectionFilters.filter(\n f => f.type !== DataFilterType.POSITION\n );\n\n // reset filters\n dataStore.clearSelectionFilters();\n dataStore.setSelectionFilters([\n positionFilter,\n ...defaultFilters,\n ...otherFilters,\n ]);\n}\n\nexport function updatePositionHighlightFilters(\n dataStore: DataStore,\n positions: number[],\n defaultFilters: DataFilter[] = []\n) {\n dataStore.clearHighlightFilters();\n\n const positionFilter = {\n type: DataFilterType.POSITION,\n values: positions,\n };\n dataStore.setHighlightFilters([...defaultFilters, positionFilter]);\n}\n\nexport function updatePositionRangeHighlightFilters(\n dataStore: DataStore,\n startPosition: number,\n endPosition: number,\n defaultFilters: DataFilter[] = []\n) {\n const positions: number[] = [];\n\n for (let i = startPosition; i <= endPosition; i++) {\n positions.push(i);\n }\n\n updatePositionHighlightFilters(dataStore, positions, defaultFilters);\n}\n\nexport function findAllUniquePositions(filters: DataFilter[]): number[] {\n return _.uniq(\n _.flatten(\n filters\n // pick only position filters\n .filter(f => f.type === DataFilterType.POSITION)\n // we need to spread f.values, since it might be an observable mobx array\n // (mobx observable arrays does not play well with some array functions)\n .map(f => [...f.values])\n )\n );\n}\n\nexport function indexPositions(\n filters: DataFilter[]\n): { [position: string]: { position: number } } {\n return _.keyBy(\n findAllUniquePositions(filters).map(p => ({ position: p })),\n 'position'\n );\n}\n\nexport function includesSearchTextIgnoreCase(\n value?: string,\n searchText?: string\n) {\n return (\n searchText &&\n (value || '').toLowerCase().includes(searchText.toLowerCase())\n );\n}\n\nexport function findTextInputFilter(dataFilters: DataFilter[]) {\n return dataFilters.find(f => f.id === TEXT_INPUT_FILTER_ID);\n}\n\nexport function findNonTextInputFilters(dataFilters: DataFilter[]) {\n return dataFilters.filter(f => f.id !== TEXT_INPUT_FILTER_ID);\n}\n\nexport function findOneMutationFilterValue(filter: MutationFilter) {\n return filter.values.length > 0 ? _.values(filter.values[0])[0] : undefined;\n}\n\nexport function applyDefaultPositionFilter(\n filter: PositionFilter,\n mutation: Mutation\n) {\n // const positions: {[position: string]: {position: number}} = indexPositions([filter]);\n // return !positions || !!positions[mutation.proteinPosStart+\"\"];\n\n return filter.values.includes(mutation.proteinPosStart);\n}\n\nexport function applyDefaultProteinImpactTypeFilter(\n filter: ProteinImpactTypeFilter,\n mutation: Mutation\n) {\n return filter.values.includes(\n getProteinImpactType(mutation.mutationType || 'other')\n );\n}\n\nexport function applyDefaultProteinChangeFilter(\n filter: ProteinChangeFilter,\n mutation: Mutation\n) {\n return (\n mutation.proteinChange !== undefined &&\n _.some(\n filter.values,\n value =>\n value.toLowerCase() === mutation.proteinChange.toLowerCase()\n )\n );\n}\n\nexport function applyDefaultMutationStatusFilter(\n filter: MutationStatusFilter,\n mutation: Mutation\n) {\n return (\n mutation.mutationStatus !== undefined &&\n _.some(\n filter.values,\n value =>\n value.toLowerCase() === mutation.mutationStatus!.toLowerCase()\n )\n );\n}\n\nexport function applyDefaultMutationFilter(\n filter: MutationFilter,\n mutation: Mutation\n) {\n const filterPredicates = filter.values.map((value: MutationFilterValue) => {\n const valuePredicates = Object.keys(value).map(key =>\n includesSearchTextIgnoreCase(\n (mutation as any)[key]\n ? (mutation as any)[key].toString()\n : undefined,\n (value as any)[key] ? (value as any)[key.toString()] : undefined\n )\n );\n\n // all predicates should be true in order for a match with a single MutationFilterValue\n // (multiple values within the same MutationFilterValue are subject to AND)\n return !valuePredicates.includes(false);\n });\n\n // a single true within a set of MutationFilterValues is a match for the entire filter\n // (multiple MutationFilterValues within the same MutationFilter are subject to OR)\n return filterPredicates.includes(true);\n}\n\nexport function groupDataByGroupFilters(\n groupFilters: { group: string; filter: DataFilter }[],\n sortedFilteredData: any[],\n applyFilter: ApplyFilterFn\n) {\n return groupFilters.map(groupFilter => ({\n group: groupFilter.group,\n data: sortedFilteredData.filter(\n // TODO simplify array flatten if possible\n m => applyFilter(groupFilter.filter, _.flatten([m])[0])\n ),\n }));\n}\n\nexport function groupDataByProteinImpactType(sortedFilteredData: any[]) {\n const filters = Object.values(ProteinImpactType).map(value => ({\n group: value,\n filter: {\n type: DataFilterType.PROTEIN_IMPACT_TYPE,\n values: [value],\n },\n }));\n\n const groupedData = groupDataByGroupFilters(\n filters,\n sortedFilteredData,\n applyDefaultProteinImpactTypeFilter\n );\n\n return _.keyBy(groupedData, d => d.group);\n}\n\nexport function onFilterOptionSelect(\n selectedValues:\n | string[]\n | NumericalFilterValue[]\n | CategoricalFilterValue[],\n allValuesSelected: boolean,\n dataStore: DataStore,\n dataFilterType: string,\n dataFilterId: string\n) {\n // all other filters except the current filter with the given data filter id\n const otherFilters = dataStore.dataFilters.filter(\n (f: DataFilter) => f.id !== dataFilterId\n );\n\n if (allValuesSelected) {\n // if all values are selected just remove the existing filter with the given data filter id\n // (assuming that no filtering required if everything is selected)\n dataStore.setDataFilters(otherFilters);\n } else {\n const dataFilter = {\n id: dataFilterId,\n type: dataFilterType,\n values: selectedValues,\n };\n\n // replace the existing data filter wrt the current selection (other filters + new data filter)\n dataStore.setDataFilters([...otherFilters, dataFilter]);\n }\n}\n\nexport function applyDataFiltersOnDatum(\n datum: any,\n dataFilters: DataFilter[],\n applyFilter: ApplyFilterFn\n) {\n return (\n dataFilters.length > 0 &&\n !dataFilters\n .map(dataFilter => applyFilter(dataFilter, datum))\n .includes(false)\n );\n}\n\nexport function applyDataFilters(\n data: any[],\n dataFilters: DataFilter[],\n applyFilter: ApplyFilterFn\n) {\n return dataFilters.length > 0\n ? data.filter(m => applyDataFiltersOnDatum(m, dataFilters, applyFilter))\n : data;\n}\n","import autobind from 'autobind-decorator';\nimport * as React from 'react';\nimport { FormEvent } from 'react';\n\ninterface ISearchBoxProps {\n onChange?: (input: string) => void;\n filterInputRef?: (input: HTMLInputElement) => void;\n placeholder?: string;\n searchIconClassName?: string;\n boxHeight?: number;\n}\n\nexport class SearchBox extends React.Component<ISearchBoxProps> {\n public static defaultProps = {\n placeholder: '',\n searchIconClassName: 'fa fa-search form-control-feedback',\n boxHeight: 33.5,\n };\n\n public render() {\n return (\n <div className=\"input-group\" style={{ display: 'flex' }}>\n <input\n type=\"text\"\n onInput={this.onChange}\n ref={this.props.filterInputRef}\n className=\"form-control\"\n placeholder={this.props.placeholder}\n aria-label=\"Search\"\n style={{ height: this.props.boxHeight }}\n />\n <div\n className=\"input-group-append\"\n style={{ height: this.props.boxHeight }}\n >\n <button\n className=\"btn btn-outline-secondary\"\n type=\"button\"\n disabled={true}\n >\n <i className=\"fa fa-search\" />\n </button>\n </div>\n </div>\n );\n }\n\n @autobind\n private onChange(event: FormEvent<any>) {\n if (this.props.onChange) {\n this.props.onChange(event.currentTarget.value);\n }\n }\n}\n\nexport default SearchBox;\n","import _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n ColumnSelector,\n ColumnSelectorProps,\n ColumnVisibilityDef,\n} from './ColumnSelector';\nimport { SearchBox } from './SearchBox';\n\ntype DataTableToolbarProps = {\n showColumnVisibility?: boolean;\n visibilityToggle?: (selectedColumnIds: string[]) => void;\n columnVisibility?: ColumnVisibilityDef[];\n columnSelectorProps?: ColumnSelectorProps;\n showSearchBox?: boolean;\n onSearch?: (searchText: string) => void;\n filterInputRef?: (input: HTMLInputElement) => void;\n searchDelay?: number;\n searchPlaceHolder?: string;\n info?: JSX.Element;\n};\n\n@observer\nexport class DataTableToolbar extends React.Component<\n DataTableToolbarProps,\n {}\n> {\n public static defaultProps: Partial<DataTableToolbarProps> = {\n showColumnVisibility: true,\n showSearchBox: true,\n searchDelay: 400,\n };\n\n protected get searchBoxMargin() {\n return this.props.showColumnVisibility ? 5 : 'auto';\n }\n\n public render() {\n return (\n <div\n className=\"dataTableMainToolbar\"\n style={{\n paddingBottom: '0.4rem',\n display: 'flex',\n alignItems: 'flex-end',\n }}\n >\n {this.props.info}\n {this.props.showColumnVisibility && (\n <div\n className=\"small\"\n style={{ width: 150, marginLeft: 'auto' }}\n >\n <ColumnSelector\n columnVisibility={this.props.columnVisibility}\n onColumnToggled={this.props.visibilityToggle}\n {...this.props.columnSelectorProps}\n />\n </div>\n )}\n {this.props.showSearchBox && (\n <div\n className=\"small\"\n style={{ width: 200, marginLeft: this.searchBoxMargin }}\n >\n <SearchBox\n placeholder={this.props.searchPlaceHolder}\n onChange={\n this.props.onSearch\n ? _.debounce(\n this.props.onSearch,\n this.props.searchDelay\n )\n : this.props.onSearch\n }\n filterInputRef={this.props.filterInputRef}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default DataTableToolbar;\n","import autobind from 'autobind-decorator';\nimport {\n resolveColumnVisibility,\n resolveColumnVisibilityByColumnDefinition,\n} from 'cbioportal-frontend-commons';\nimport { getRemoteDataGroupStatus, RemoteData } from 'cbioportal-utils';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport {\n action,\n computed,\n IReactionDisposer,\n IReactionPublic,\n observable,\n reaction,\n makeObservable,\n} from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport ReactTable, { Column, RowInfo, TableProps } from 'react-table';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport { DataStore } from '../../model/DataStore';\nimport { TEXT_INPUT_FILTER_ID } from '../../util/FilterUtils';\nimport { ColumnSelectorProps, ColumnVisibilityDef } from './ColumnSelector';\nimport { DataTableToolbar } from './DataTableToolbar';\n\nexport type DataTableColumn<T> = Column<T> & {\n name?: string;\n togglable?: boolean;\n searchable?: boolean;\n};\n\nexport enum ColumnSortDirection {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport type ColumnSort = {\n column: string;\n sortDirection?: ColumnSortDirection;\n};\n\nexport type DataTableProps<T> = {\n data?: T[];\n dataStore?: DataStore;\n columns?: DataTableColumn<T>[];\n className?: string;\n reactTableProps?: Partial<TableProps<T>>;\n\n initialSort?: ColumnSort[];\n initialSortRemoteData?: (RemoteData<any> | undefined)[];\n initialItemsPerPage?: number;\n\n highlightColorLight?: string;\n highlightColorDark?: string;\n\n showColumnVisibility?: boolean;\n showSearchBox?: boolean;\n onSearch?: (\n input: string,\n visibleSearchableColumns: DataTableColumn<T>[]\n ) => void;\n searchDelay?: number;\n searchPlaceholder?: string;\n info?: JSX.Element;\n columnVisibility?: { [columnId: string]: boolean };\n columnSelectorProps?: ColumnSelectorProps;\n};\n\nexport function getInitialSortDataStatus(\n initialSortRemoteData?: (RemoteData<any> | undefined)[]\n) {\n return initialSortRemoteData\n ? getRemoteDataGroupStatus(..._.compact(initialSortRemoteData))\n : 'complete';\n}\n\nfunction getColumnVisibilityDef<T>(\n columns: DataTableColumn<T>[],\n columnVisibility: { [columnId: string]: boolean }\n) {\n const colVisProp: ColumnVisibilityDef[] = [];\n\n (columns || [])\n .filter(column => column.id)\n .forEach(column =>\n colVisProp.push({\n id: column.id!,\n name: column.name || column.id!,\n visible: columnVisibility[column.id!],\n togglable:\n column.togglable !== undefined ? column.togglable : true,\n })\n );\n\n return colVisProp;\n}\n\nexport default class DataTable<T> extends React.Component<\n DataTableProps<T>,\n {}\n> {\n public static defaultProps = {\n data: [],\n initialItemsPerPage: 10,\n highlightColorLight: '#B0BED9',\n highlightColorDark: '#9FAFD1',\n };\n\n private filterInput: HTMLInputElement | undefined;\n private filterInputReaction: IReactionDisposer | undefined;\n\n // this keeps the state of the latest action (latest user selection)\n @observable\n private _columnVisibilityOverride:\n | { [columnId: string]: boolean }\n | undefined;\n\n @observable\n private expanded: { [index: number]: boolean } = {};\n\n constructor(props: DataTableProps<T>) {\n super(props);\n\n makeObservable<\n DataTable<T>,\n | '_columnVisibilityOverride'\n | 'expanded'\n | 'onSearch'\n | 'onVisibilityToggle'\n | 'updateColumnVisibility'\n | 'onExpandedChange'\n | 'resetExpander'\n >(this);\n\n this.filterInputReaction = this.props.dataStore\n ? this.createFilterInputResetReaction(this.props.dataStore)\n : undefined;\n }\n\n @computed\n get tableData(): T[] | undefined {\n let data = this.props.data;\n\n if (this.props.dataStore) {\n data =\n this.props.dataStore.sortedFilteredSelectedData.length > 0\n ? this.props.dataStore.sortedFilteredSelectedData\n : this.props.dataStore.sortedFilteredData;\n }\n\n return data;\n }\n\n @computed\n get columns(): DataTableColumn<T>[] {\n return (this.props.columns || []).map(c => ({\n ...c,\n show: c.id ? this.columnVisibility[c.id] : c.expander || c.show,\n }));\n }\n\n @computed\n get needToCustomizeRowStyle() {\n return this.props.dataStore && this.props.dataStore.highlightFilters;\n }\n\n @computed\n get showPagination() {\n const initialItemsPerPage = this.props.initialItemsPerPage;\n\n return (\n this.tableData !== undefined &&\n this.tableData.length > initialItemsPerPage!\n );\n }\n\n @computed\n get initialSortDataStatus() {\n return getInitialSortDataStatus(this.props.initialSortRemoteData);\n }\n\n @computed\n get defaultSorted() {\n // we need to wait for the async data to complete,\n // otherwise initial sort won't work\n if (\n this.props.initialSort === undefined ||\n this.initialSortDataStatus === 'pending'\n ) {\n return undefined;\n } else {\n return this.props.initialSort.map(s => ({\n id: s.column,\n desc: s.sortDirection !== ColumnSortDirection.ASC, // default: DESC\n }));\n }\n }\n\n @computed\n public get columnVisibility(): { [columnId: string]: boolean } {\n return resolveColumnVisibility(\n this.columnVisibilityByColumnDefinition,\n this.props.columnVisibility,\n this._columnVisibilityOverride\n );\n }\n\n @computed\n public get columnVisibilityDef(): ColumnVisibilityDef[] {\n return getColumnVisibilityDef(\n this.props.columns || [],\n this.columnVisibility\n );\n }\n\n @computed\n public get columnVisibilityByColumnDefinition() {\n return resolveColumnVisibilityByColumnDefinition(\n (this.props.columns || [])\n .filter(c => c.id)\n .map(c => ({\n name: c.name || c.id!,\n id: c.id,\n visible: c.show,\n }))\n );\n }\n\n public render() {\n return (\n <div className=\"cbioportal-frontend\">\n <DataTableToolbar\n visibilityToggle={this.onVisibilityToggle}\n showSearchBox={this.props.showSearchBox}\n onSearch={this.onSearch}\n filterInputRef={this.filterInputRef}\n searchDelay={this.props.searchDelay}\n searchPlaceHolder={this.props.searchPlaceholder}\n info={this.props.info}\n showColumnVisibility={this.props.showColumnVisibility}\n columnVisibility={this.columnVisibilityDef}\n columnSelectorProps={this.props.columnSelectorProps}\n />\n <div\n className={classnames(\n this.props.className,\n 'cbioportal-frontend',\n 'default-data-table'\n )}\n >\n <ReactTable\n data={this.tableData}\n columns={this.columns}\n getTrProps={\n this.needToCustomizeRowStyle\n ? this.getTrProps\n : undefined\n }\n defaultSorted={this.defaultSorted}\n defaultPageSize={this.props.initialItemsPerPage}\n showPagination={this.showPagination}\n className=\"-striped -highlight\"\n previousText=\"<\"\n nextText=\">\"\n expanded={this.expanded}\n onExpandedChange={this.onExpandedChange}\n onPageChange={this.resetExpander}\n onPageSizeChange={this.resetExpander}\n onSortedChange={this.resetExpander}\n minRows={1}\n {...this.props.reactTableProps}\n />\n </div>\n </div>\n );\n }\n\n componentWillReceiveProps(nextProps: Readonly<DataTableProps<T>>) {\n if (nextProps.dataStore) {\n this.createExpanderResetReaction(nextProps.dataStore);\n }\n }\n\n componentWillUnmount(): void {\n if (this.filterInputReaction) {\n this.filterInputReaction();\n }\n }\n\n /**\n * This reaction is to reset expander component every time the data or selection filters update.\n * It would be cleaner if we could do this with a ReactTable callback (something like onDataChange),\n * but no such callback exists.\n */\n protected createExpanderResetReaction(dataStore: DataStore) {\n return reaction(\n () => [dataStore.selectionFilters, dataStore.dataFilters],\n (\n filters: DataFilter[][],\n prev: DataFilter[][],\n disposer: IReactionPublic\n ) => {\n if (filters.length > 0) {\n this.resetExpander();\n }\n disposer.dispose();\n }\n );\n }\n\n /**\n * This reaction is to reset search input box content when text input filter is reset.\n * TODO if possible directly render the value in the actual search box component instead of adding this reaction\n */\n protected createFilterInputResetReaction(dataStore: DataStore) {\n return reaction(\n () => dataStore.dataFilters,\n dataFilters => {\n if (this.filterInput) {\n const inputFilter = dataFilters.find(\n f => f.id === TEXT_INPUT_FILTER_ID\n );\n\n // reset the input text value in case of no text input filter\n if (!inputFilter) {\n this.filterInput.value = '';\n }\n }\n }\n );\n }\n\n @autobind\n protected getTrProps(state: any, row?: RowInfo) {\n return {\n style: {\n background: state && row && this.getRowBackground(row),\n },\n };\n }\n\n @autobind\n protected filterInputRef(input: HTMLInputElement) {\n this.filterInput = input;\n }\n\n @action.bound\n protected onSearch(searchText: string) {\n if (this.props.onSearch) {\n this.props.onSearch(\n searchText,\n this.columns.filter(c => c.searchable && c.show)\n );\n }\n }\n\n @action.bound\n protected onVisibilityToggle(selectedColumnIds: string[]) {\n // reset all column visibility\n Object.keys(this.columnVisibility).forEach(columnId =>\n this.updateColumnVisibility(columnId, false)\n );\n\n // make selected columns visible\n selectedColumnIds.forEach(columnId =>\n this.updateColumnVisibility(columnId, true)\n );\n }\n\n @action.bound\n protected updateColumnVisibility(id: string, visible: boolean) {\n // no previous action, need to init\n if (this._columnVisibilityOverride === undefined) {\n this._columnVisibilityOverride = resolveColumnVisibility(\n this.columnVisibilityByColumnDefinition,\n this.props.columnVisibility\n );\n }\n\n // update visibility\n if (\n this._columnVisibilityOverride &&\n this._columnVisibilityOverride[id] !== undefined\n ) {\n this._columnVisibilityOverride[id] = visible;\n }\n }\n\n @action.bound\n protected onExpandedChange(expanded: { [index: number]: boolean }) {\n this.expanded = expanded;\n }\n\n @action.bound\n protected resetExpander() {\n this.expanded = {};\n }\n\n protected isRowHighlighted(datum: T) {\n return (\n this.props.dataStore &&\n this.props.dataStore.dataHighlightFilter(datum)\n );\n }\n\n protected getRowBackground(row: RowInfo) {\n let background: string | undefined;\n\n if (this.isRowHighlighted(row.original)) {\n background =\n row.viewIndex % 2 === 1\n ? this.props.highlightColorDark\n : this.props.highlightColorLight;\n }\n\n return background;\n }\n}\n","import {\n DefaultTooltip,\n getCanonicalMutationType,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './mutationType.module.scss';\n\ntype MutationTypeProps = {\n mutation: Mutation;\n};\n\ntype MutationTypeFormat = {\n label?: string;\n className: string;\n};\n\nexport const MAIN_MUTATION_TYPE_MAP: { [key: string]: MutationTypeFormat } = {\n missense: {\n label: 'Missense',\n className: 'missense-mutation',\n },\n inframe: {\n label: 'IF',\n className: 'inframe-mutation',\n },\n truncating: {\n label: 'Truncating',\n className: 'trunc-mutation',\n },\n nonsense: {\n label: 'Nonsense',\n className: 'trunc-mutation',\n },\n nonstop: {\n label: 'Nonstop',\n className: 'trunc-mutation',\n },\n nonstart: {\n label: 'Nonstart',\n className: 'trunc-mutation',\n },\n frameshift: {\n label: 'FS',\n className: 'trunc-mutation',\n },\n frame_shift_del: {\n label: 'FS del',\n className: 'trunc-mutation',\n },\n frame_shift_ins: {\n label: 'FS ins',\n className: 'trunc-mutation',\n },\n in_frame_ins: {\n label: 'IF ins',\n className: 'inframe-mutation',\n },\n in_frame_del: {\n label: 'IF del',\n className: 'inframe-mutation',\n },\n splice_site: {\n label: 'Splice',\n className: 'splice',\n },\n fusion: {\n label: 'Fusion',\n className: 'fusion',\n },\n silent: {\n label: 'Silent',\n className: 'other-mutation',\n },\n other: {\n label: 'Other',\n className: 'other-mutation',\n },\n};\n\n/**\n * Determines the display value by using the impact field.\n *\n * @param mutation column formatter data\n * @returns {string} mutation assessor text value\n */\nfunction getDisplayValue(mutation: Mutation): string {\n const entry: MutationTypeFormat | undefined = getMapEntry(mutation);\n\n // first, try to find a mapped value\n if (entry && entry.label) {\n return entry.label;\n }\n // if no mapped value, then return the text value as is\n else {\n return mutation.mutationType || '';\n }\n}\n\nfunction getClassName(mutation: Mutation): string {\n const value: MutationTypeFormat | undefined = getMapEntry(mutation);\n\n if (value && value.className) {\n return value.className;\n }\n // for unmapped values, use the \"other\" style\n else {\n return MAIN_MUTATION_TYPE_MAP['other'].className;\n }\n}\n\nfunction getMapEntry(mutation: Mutation) {\n const mutationType = mutation.mutationType;\n\n if (mutationType) {\n return MAIN_MUTATION_TYPE_MAP[getCanonicalMutationType(mutationType)];\n } else {\n return undefined;\n }\n}\n\nexport default class MutationType extends React.Component<\n MutationTypeProps,\n {}\n> {\n public render() {\n // use text for all purposes (display, sort, filter)\n const text = getDisplayValue(this.props.mutation);\n const className = getClassName(this.props.mutation);\n\n // use actual value for tooltip\n const toolTip = this.props.mutation.mutationType;\n\n let content = (\n <span className={(styles as any)[className]}>{text}</span>\n );\n\n // add tooltip only if the display value differs from the actual text value!\n if (toolTip && toolTip.toLowerCase() !== text.toLowerCase()) {\n content = (\n <DefaultTooltip\n overlay={<span>{toolTip}</span>}\n placement=\"left\"\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return content;\n }\n}\n","import { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\nimport * as React from 'react';\n\nimport ColumnHeader from '../column/ColumnHeader';\nimport { Column } from 'react-table';\nimport ProteinChange, {\n proteinChangeSortMethod,\n} from '../column/ProteinChange';\nimport { annotationSortMethod } from '../column/Annotation';\nimport { gnomadSortMethod } from '../column/Gnomad';\nimport { clinvarSortMethod } from '../column/ClinvarInterpretation';\nimport MutationType from '../column/MutationType';\nimport { MutationStatus } from '../column/MutationStatus';\nimport { dbsnpSortMethod } from '../column/Dbsnp';\nimport { hgvscSortMethod } from '../column/Hgvsc';\nimport { hgvsgSortMethod } from '../column/Hgvsg';\nimport { signalSortMethod } from '../column/Signal';\n\nexport enum MutationColumn {\n PROTEIN_CHANGE = 'proteinChange',\n ANNOTATION = 'annotation',\n MUTATION_STATUS = 'mutationStatus',\n MUTATION_TYPE = 'mutationType',\n CHROMOSOME = 'chromosome',\n START_POSITION = 'startPosition',\n END_POSITION = 'endPosition',\n REFERENCE_ALLELE = 'referenceAllele',\n VARIANT_ALLELE = 'variantAllele',\n HGVSG = 'hgvsg',\n HGVSC = 'hgvsc',\n GNOMAD = 'gnomad',\n CLINVAR = 'clinvar',\n DBSNP = 'dbsnp',\n SIGNAL = 'signal',\n}\n\nexport enum MutationColumnName {\n PROTEIN_CHANGE = 'Protein Change',\n ANNOTATION = 'Annotation',\n MUTATION_STATUS = 'Mutation Status',\n MUTATION_TYPE = 'Mutation Type',\n CHROMOSOME = 'Chromosome',\n START_POSITION = 'Start Pos',\n END_POSITION = 'End Pos',\n REFERENCE_ALLELE = 'Ref',\n VARIANT_ALLELE = 'Var',\n HGVSG = 'HGVSg',\n HGVSC = 'HGVSc',\n GNOMAD = 'gnomAD',\n CLINVAR = 'ClinVar',\n DBSNP = 'dbSNP',\n SIGNAL = 'SIGNAL',\n}\n\nexport function rightAlignedCell(cellProps: any) {\n return <span className=\"pull-right mr-3\">{cellProps.value}</span>;\n}\n\nexport const MUTATION_COLUMN_HEADERS = {\n [MutationColumn.PROTEIN_CHANGE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.PROTEIN_CHANGE}\n </span>\n }\n />\n ),\n [MutationColumn.ANNOTATION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.ANNOTATION}\n </span>\n }\n />\n ),\n [MutationColumn.MUTATION_STATUS]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.MUTATION_STATUS}\n </span>\n }\n />\n ),\n [MutationColumn.MUTATION_TYPE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.MUTATION_TYPE}\n </span>\n }\n />\n ),\n [MutationColumn.CHROMOSOME]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.CHROMOSOME}\n </span>\n }\n />\n ),\n [MutationColumn.START_POSITION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.START_POSITION}\n </span>\n }\n />\n ),\n [MutationColumn.END_POSITION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.END_POSITION}\n </span>\n }\n />\n ),\n [MutationColumn.REFERENCE_ALLELE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.REFERENCE_ALLELE}\n </span>\n }\n overlay={<span>Reference Allele</span>}\n />\n ),\n [MutationColumn.VARIANT_ALLELE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.VARIANT_ALLELE}\n </span>\n }\n overlay={<span>Variant Allele</span>}\n />\n ),\n [MutationColumn.HGVSG]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">{MutationColumnName.HGVSG}</span>\n }\n />\n ),\n [MutationColumn.HGVSC]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">{MutationColumnName.HGVSC}</span>\n }\n />\n ),\n [MutationColumn.GNOMAD]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.GNOMAD}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n <a\n href=\"https://gnomad.broadinstitute.org/\"\n target=\"_blank\"\n >\n gnomAD\n </a>{' '}\n population allele frequencies. Overall population allele\n frequency is shown. Hover over a frequency to see the\n frequency for each specific population.\n </span>\n }\n />\n ),\n [MutationColumn.CLINVAR]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.CLINVAR}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n <a\n href=\"https://www.ncbi.nlm.nih.gov/clinvar/\"\n target=\"_blank\"\n >\n ClinVar\n </a>{' '}\n aggregates information about genomic variation and its\n relationship to human health.\n </span>\n }\n />\n ),\n [MutationColumn.DBSNP]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.DBSNP}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n The Single Nucleotide Polymorphism Database (\n <a href=\"https://www.ncbi.nlm.nih.gov/snp/\" target=\"_blank\">\n dbSNP\n </a>\n ) is a free public archive for genetic variation within and\n across different species.\n <br />\n NOTE: Currently only SNPs, single base deletions and\n insertions are supported.\n </span>\n }\n />\n ),\n [MutationColumn.SIGNAL]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.SIGNAL}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n Prevalence of germline mutations in cancer patients from{' '}\n <a href=\"https://www.signaldb.org/\" target=\"_blank\">\n SIGNAL\n </a>\n </span>\n }\n />\n ),\n};\n\n/**\n * These default columns only include static props.\n * So, for some columns, like Annotation, no default accessor or Cell (render) properties included.\n */\nexport const MUTATION_COLUMNS_DEFINITION = {\n [MutationColumn.PROTEIN_CHANGE]: {\n id: MutationColumn.PROTEIN_CHANGE,\n name: MutationColumnName.PROTEIN_CHANGE,\n accessor: MutationColumn.PROTEIN_CHANGE,\n searchable: true,\n Cell: (column: any) => <ProteinChange mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.PROTEIN_CHANGE],\n sortMethod: proteinChangeSortMethod,\n },\n [MutationColumn.ANNOTATION]: {\n id: MutationColumn.ANNOTATION,\n name: MutationColumnName.ANNOTATION,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.ANNOTATION],\n sortMethod: annotationSortMethod,\n },\n [MutationColumn.MUTATION_TYPE]: {\n id: MutationColumn.MUTATION_TYPE,\n name: MutationColumnName.MUTATION_TYPE,\n accessor: MutationColumn.MUTATION_TYPE,\n searchable: true,\n Cell: (column: any) => <MutationType mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.MUTATION_TYPE],\n },\n [MutationColumn.MUTATION_STATUS]: {\n id: MutationColumn.MUTATION_STATUS,\n name: MutationColumnName.MUTATION_STATUS,\n accessor: MutationColumn.MUTATION_STATUS,\n searchable: true,\n Cell: (column: any) => <MutationStatus mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.MUTATION_STATUS],\n },\n [MutationColumn.CHROMOSOME]: {\n id: MutationColumn.CHROMOSOME,\n name: MutationColumnName.CHROMOSOME,\n accessor: MutationColumn.CHROMOSOME,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.CHROMOSOME],\n show: false,\n },\n [MutationColumn.START_POSITION]: {\n id: MutationColumn.START_POSITION,\n name: MutationColumnName.START_POSITION,\n accessor: MutationColumn.START_POSITION,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.START_POSITION],\n show: false,\n },\n [MutationColumn.END_POSITION]: {\n id: MutationColumn.END_POSITION,\n name: MutationColumnName.END_POSITION,\n accessor: MutationColumn.END_POSITION,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.END_POSITION],\n show: false,\n },\n [MutationColumn.REFERENCE_ALLELE]: {\n id: MutationColumn.REFERENCE_ALLELE,\n name: MutationColumnName.REFERENCE_ALLELE,\n accessor: MutationColumn.REFERENCE_ALLELE,\n searchable: true,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.REFERENCE_ALLELE],\n show: false,\n },\n [MutationColumn.VARIANT_ALLELE]: {\n id: MutationColumn.VARIANT_ALLELE,\n name: MutationColumnName.VARIANT_ALLELE,\n accessor: MutationColumn.VARIANT_ALLELE,\n searchable: true,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.VARIANT_ALLELE],\n show: false,\n },\n [MutationColumn.HGVSG]: {\n id: MutationColumn.HGVSG,\n name: MutationColumnName.HGVSG,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.HGVSG],\n sortMethod: hgvsgSortMethod,\n },\n [MutationColumn.HGVSC]: {\n id: MutationColumn.HGVSC,\n name: MutationColumnName.HGVSC,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.HGVSC],\n sortMethod: hgvscSortMethod,\n },\n [MutationColumn.GNOMAD]: {\n id: MutationColumn.GNOMAD,\n name: MutationColumnName.GNOMAD,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.GNOMAD],\n sortMethod: gnomadSortMethod,\n },\n [MutationColumn.CLINVAR]: {\n id: MutationColumn.CLINVAR,\n name: MutationColumnName.CLINVAR,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.CLINVAR],\n sortMethod: clinvarSortMethod,\n show: false,\n },\n [MutationColumn.DBSNP]: {\n id: MutationColumn.DBSNP,\n name: MutationColumnName.DBSNP,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.DBSNP],\n sortMethod: dbsnpSortMethod,\n show: false,\n },\n [MutationColumn.SIGNAL]: {\n id: MutationColumn.SIGNAL,\n name: MutationColumnName.SIGNAL,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.SIGNAL],\n sortMethod: signalSortMethod,\n show: false,\n },\n};\n\nexport const DEFAULT_MUTATION_COLUMNS = [\n MUTATION_COLUMNS_DEFINITION[MutationColumn.PROTEIN_CHANGE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.MUTATION_TYPE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.MUTATION_STATUS],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.CHROMOSOME],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.START_POSITION],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.END_POSITION],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.REFERENCE_ALLELE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.VARIANT_ALLELE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.HGVSG],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.HGVSC],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.CLINVAR],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.GNOMAD],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.DBSNP],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.SIGNAL],\n];\n\nexport function mergeColumns(\n defaultColumns: Column<Partial<Mutation>>[],\n customColumns: Column<Partial<Mutation>>[]\n) {\n const merged: Column<Partial<Mutation>>[] = [];\n const overrides: Column<Partial<Mutation>>[] = [];\n\n defaultColumns.forEach(column => {\n const colOverride = customColumns.find(c => c.id === column.id);\n merged.push(colOverride || column);\n\n if (colOverride) {\n overrides.push(colOverride);\n }\n });\n\n return [...merged, ..._.difference(customColumns, overrides)];\n}\n","import {\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n getRemoteDataGroupStatus,\n MobxCache,\n Mutation,\n RemoteData,\n Pathogenicity,\n} from 'cbioportal-utils';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { CancerGene } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { Column } from 'react-table';\n\nimport Annotation, { getAnnotationData } from '../column/Annotation';\nimport ClinvarInterpretation from '../column/ClinvarInterpretation';\nimport Dbsnp from '../column/Dbsnp';\nimport Gnomad from '../column/Gnomad';\nimport Hgvsc from '../column/Hgvsc';\nimport Hgvsg from '../column/Hgvsg';\nimport Signal, { getSignalData } from '../column/Signal';\nimport { getHgvscColumnData, getHgvsgColumnData } from '../column/HgvsHelper';\nimport { getMyVariantInfoData } from '../column/MyVariantInfoHelper';\nimport { MutationFilterValue } from '../../filter/MutationFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport {\n findNonTextInputFilters,\n TEXT_INPUT_FILTER_ID,\n} from '../../util/FilterUtils';\nimport DataTable, {\n DataTableColumn,\n DataTableProps,\n} from '../dataTable/DataTable';\nimport { MutationColumn } from './MutationColumnHelper';\n\nimport './defaultMutationTable.scss';\nimport { getClinvarData } from '../clinvar/ClinvarHelper';\n\nexport type DefaultMutationTableProps = {\n hotspotData?: RemoteData<IHotspotIndex | undefined>;\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>;\n myCancerGenomeData?: IMyCancerGenomeData;\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>;\n usingPublicOncoKbInstance: boolean;\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n selectedTranscriptId?: string;\n enableCivic?: boolean;\n enableRevue?: boolean;\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>;\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>;\n pubMedCache?: MobxCache;\n columns: Column<Partial<Mutation>>[];\n appendColumns?: boolean;\n} & DataTableProps<Partial<Mutation>>;\n\n@observer\nclass DefaultMutationTableComponent extends DataTable<Partial<Mutation>> {}\n\n@observer\nexport default class DefaultMutationTable extends React.Component<\n DefaultMutationTableProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n initialSort: [{ column: MutationColumn.ANNOTATION }],\n appendColumns: true,\n };\n\n @computed\n get annotationColumnData() {\n return [\n this.props.oncoKbCancerGenes,\n this.props.hotspotData,\n this.props.oncoKbData,\n this.props.civicVariants,\n ];\n }\n\n @computed\n get annotationColumnDataStatus() {\n return getRemoteDataGroupStatus(\n ..._.compact(this.annotationColumnData)\n );\n }\n\n @computed\n get indexedVariantAnnotationDataStatus() {\n return this.props.indexedVariantAnnotations\n ? this.props.indexedVariantAnnotations.status\n : 'complete';\n }\n\n @computed\n get myVariantInfoAnnotationsDataStatus() {\n return this.props.indexedMyVariantInfoAnnotations\n ? this.props.indexedMyVariantInfoAnnotations.status\n : 'complete';\n }\n\n @computed\n get annotationColumnAccessor() {\n return this.annotationColumnDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getAnnotationData(\n mutation,\n this.props.oncoKbCancerGenes,\n this.props.hotspotData,\n this.props.myCancerGenomeData,\n this.props.oncoKbData,\n this.props.usingPublicOncoKbInstance,\n this.props.civicGenes,\n this.props.civicVariants,\n this.props.indexedVariantAnnotations\n );\n }\n\n @computed\n get myVariantInfoAccessor() {\n return this.myVariantInfoAnnotationsDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getMyVariantInfoData(\n mutation,\n this.props.indexedMyVariantInfoAnnotations\n );\n }\n\n @computed\n get hgvsgAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) => getHgvsgColumnData(mutation);\n }\n\n @computed\n get hgvscAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getHgvscColumnData(\n mutation,\n this.props.indexedVariantAnnotations,\n this.props.selectedTranscriptId\n );\n }\n\n @computed\n get signalAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getSignalData(\n mutation,\n this.props.indexedVariantAnnotations,\n Pathogenicity.GERMLINE\n )[0];\n }\n\n @computed\n get clinvarAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getClinvarData(\n mutation,\n this.props.indexedVariantAnnotations\n );\n }\n\n @computed\n get initialSortRemoteData() {\n return this.props.initialSortRemoteData || this.annotationColumnData;\n }\n\n protected getDefaultColumnAccessor(columnKey: MutationColumn) {\n switch (columnKey) {\n case MutationColumn.ANNOTATION:\n return this.annotationColumnAccessor;\n case MutationColumn.HGVSG:\n return this.hgvsgAccessor;\n case MutationColumn.HGVSC:\n return this.hgvscAccessor;\n case MutationColumn.GNOMAD:\n return this.myVariantInfoAccessor;\n case MutationColumn.CLINVAR:\n return this.clinvarAccessor;\n case MutationColumn.DBSNP:\n return this.myVariantInfoAccessor;\n case MutationColumn.SIGNAL:\n return this.signalAccessor;\n default:\n return undefined;\n }\n }\n\n protected getDefaultColumnCellRender(columnKey: MutationColumn) {\n switch (columnKey) {\n case MutationColumn.ANNOTATION:\n return (column: any) => (\n <Annotation\n mutation={column.original}\n enableOncoKb={true}\n enableHotspot={true}\n enableCivic={this.props.enableCivic || false}\n enableMyCancerGenome={true}\n enableRevue={true}\n hotspotData={this.props.hotspotData}\n oncoKbData={this.props.oncoKbData}\n oncoKbCancerGenes={this.props.oncoKbCancerGenes}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n pubMedCache={this.props.pubMedCache}\n civicGenes={this.props.civicGenes}\n civicVariants={this.props.civicVariants}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n case MutationColumn.HGVSG:\n return (column: any) => <Hgvsg mutation={column.original} />;\n case MutationColumn.HGVSC:\n return (column: any) => (\n <Hgvsc\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n selectedTranscriptId={this.props.selectedTranscriptId}\n />\n );\n case MutationColumn.GNOMAD:\n return (column: any) => (\n <Gnomad\n mutation={column.original}\n indexedMyVariantInfoAnnotations={\n this.props.indexedMyVariantInfoAnnotations\n }\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n case MutationColumn.CLINVAR:\n return (column: any) => (\n <ClinvarInterpretation\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n case MutationColumn.DBSNP:\n return (column: any) => (\n <Dbsnp\n mutation={column.original}\n indexedMyVariantInfoAnnotations={\n this.props.indexedMyVariantInfoAnnotations\n }\n />\n );\n case MutationColumn.SIGNAL:\n return (column: any) => (\n <Signal\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n mutationType={Pathogenicity.GERMLINE}\n />\n );\n default:\n return undefined;\n }\n }\n\n @computed\n get columns() {\n return this.props.columns.map(c => {\n // we need to clone the column definition first,\n // directly modifying the props.columns breaks certain column functionality\n const column = { ...c };\n\n if (!column.accessor) {\n const defaultAccessor = this.getDefaultColumnAccessor(\n column.id as MutationColumn\n );\n if (defaultAccessor) {\n column.accessor = defaultAccessor;\n }\n }\n if (!column.Cell) {\n const defaultCellRender = this.getDefaultColumnCellRender(\n column.id as MutationColumn\n );\n if (defaultCellRender) {\n column.Cell = defaultCellRender;\n }\n }\n return column;\n });\n }\n\n public render() {\n return (\n <DefaultMutationTableComponent\n {...this.props}\n columns={this.columns}\n initialSortRemoteData={this.initialSortRemoteData}\n onSearch={this.onSearch}\n className=\"default-mutation-table\"\n />\n );\n }\n\n @action.bound\n protected onSearch(\n searchText: string,\n visibleSearchableColumns: DataTableColumn<Mutation>[]\n ) {\n if (this.props.dataStore) {\n // all other filters except current text input filter\n const otherFilters = findNonTextInputFilters(\n this.props.dataStore.dataFilters\n );\n\n let dataFilterValues: MutationFilterValue[] = [];\n\n if (searchText.length > 0) {\n dataFilterValues = visibleSearchableColumns.map(\n c => ({ [c.id!]: searchText } as MutationFilterValue)\n );\n\n const textInputFilter = {\n id: TEXT_INPUT_FILTER_ID,\n type: DataFilterType.MUTATION,\n values: dataFilterValues,\n };\n\n // replace current text input filter with the new one\n this.props.dataStore.setDataFilters([\n ...otherFilters,\n textInputFilter,\n ]);\n } else {\n // if no text input remove text input filter (set data filters to all other filters except input)\n this.props.dataStore.setDataFilters(otherFilters);\n }\n }\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action, computed, observable, makeObservable } from 'mobx';\n\nimport $ from 'jquery';\n\nimport { DomainSpec } from '../../model/DomainSpec';\n\ntype DomainProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n color: string;\n label?: string;\n labelColor?: string;\n hitzoneClassName?: string;\n spec: DomainSpec;\n};\n\n@observer\nexport default class Domain extends React.Component<DomainProps, {}> {\n @observable private textElt: SVGTextElement | null = null;\n @observable private isMounted: boolean = false;\n private handlers: any;\n\n constructor(props: DomainProps) {\n super(props);\n makeObservable<Domain, 'textElt' | 'isMounted' | 'displayText'>(this);\n this.state = {\n displayText: props.label || '',\n };\n this.handlers = {\n textRef: action((text: SVGTextElement | null) => {\n this.textElt = text;\n }),\n };\n }\n public get hitRect() {\n return {\n x: this.props.x,\n y: this.props.y,\n width: this.props.width,\n height: this.props.height,\n };\n }\n\n private get centerX() {\n return this.props.x + this.props.width / 2;\n }\n\n private get centerY() {\n return this.props.y + this.props.height / 2;\n }\n\n @action componentDidMount() {\n this.isMounted = true;\n }\n\n @computed private get displayText() {\n // Truncate text if necessary\n const label = this.props.label || '';\n if (!this.textElt || !this.isMounted) {\n return label;\n }\n\n if (!$(this.textElt).is(':visible')) {\n return label;\n }\n\n let substringLength = label.length;\n // Find the number of characters that will fit inside\n while (\n substringLength > 0 &&\n this.textElt.getSubStringLength(0, substringLength) >\n this.props.width\n ) {\n substringLength -= 1;\n }\n let displayText = label;\n if (substringLength < label.length) {\n // If we have to do shortening\n substringLength -= 2; // make room for ellipsis \"..\"\n if (substringLength <= 0) {\n // too short to show any string\n displayText = '';\n } else {\n // if it's long enough to show anything at all\n displayText = label.substr(0, substringLength) + '..';\n }\n }\n return displayText;\n }\n\n private makeTextElement(reference: boolean) {\n let props: any = {\n x: this.centerX,\n y: this.centerY,\n textAnchor: 'middle',\n dy: '0.3em',\n fill: this.props.labelColor || '#FFFFFF',\n style: {\n fontSize: '12px',\n fontFamily: 'arial',\n },\n };\n const text = reference ? this.props.label || '' : this.displayText;\n if (reference) {\n props.ref = this.handlers.textRef;\n props.visibility = 'hidden';\n props.style = { opacity: 0 };\n props.className = this.props.hitzoneClassName;\n }\n return <text {...props}>{text}</text>;\n }\n\n render() {\n return (\n <g>\n <rect\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n fill={this.props.color}\n />\n {this.makeTextElement(true)}\n {this.makeTextElement(false)}\n <rect\n className={this.props.hitzoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","export enum LollipopPlacement {\n TOP,\n BOTTOM,\n}\n\nexport type LollipopSpec = {\n codon: number;\n count: number;\n group?: string;\n placement?: LollipopPlacement;\n label?: LollipopLabel;\n color?: string;\n tooltip?: JSX.Element;\n};\n\nexport type LollipopLabel = {\n text: string;\n textAnchor?: string;\n fontSize?: number;\n fontFamily?: string;\n show: boolean;\n};\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable, observable } from 'mobx';\n\nimport {\n LollipopLabel,\n LollipopPlacement,\n LollipopSpec,\n} from '../../model/LollipopSpec';\n\ntype LollipopProps = {\n x: number;\n stickBaseY: number;\n stickHeight: number;\n headRadius: number;\n hoverHeadRadius: number;\n headColor?: string;\n stickColor?: string;\n label?: LollipopLabel;\n hitzoneClassName?: string;\n spec: LollipopSpec;\n};\n\n@observer\nexport default class Lollipop extends React.Component<LollipopProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @observable public isHovered: boolean = false;\n\n @computed private get headRadius() {\n return this.isHovered\n ? this.props.hoverHeadRadius\n : this.props.headRadius;\n }\n\n @computed private get circleX() {\n return this.props.x;\n }\n\n @computed private get circleY() {\n return this.props.stickBaseY - this.props.stickHeight;\n }\n\n @computed private get textY() {\n if (this.props.spec.placement === LollipopPlacement.BOTTOM) {\n return (\n this.props.stickBaseY -\n this.props.stickHeight +\n this.props.headRadius +\n 5\n );\n } else {\n return (\n this.props.stickBaseY -\n this.props.stickHeight -\n this.props.headRadius -\n 5\n );\n }\n }\n\n @computed public get circleHitRect() {\n return {\n x: this.circleX - this.props.hoverHeadRadius,\n y: this.circleY - this.props.hoverHeadRadius,\n width: this.props.hoverHeadRadius * 2,\n height: this.props.hoverHeadRadius * 2,\n };\n }\n\n render() {\n let label = null;\n if (this.props.label) {\n label = (\n <text\n fill=\"#2E3436\"\n style={{\n fontSize: this.props.label.fontSize || 10,\n fontFamily: this.props.label.fontFamily || 'arial',\n }}\n textAnchor={this.props.label.textAnchor || 'middle'}\n dominantBaseline={\n this.props.spec.placement === LollipopPlacement.BOTTOM\n ? 'hanging'\n : 'baseline'\n }\n x={this.props.x}\n y={this.textY}\n >\n {this.props.label.show ? this.props.label.text : ''}\n </text>\n );\n }\n return (\n <g>\n <line\n strokeWidth=\"1\"\n stroke={this.props.stickColor || '#BABDB6'}\n x1={this.props.x}\n x2={this.props.x}\n y1={this.props.stickBaseY}\n y2={this.props.stickBaseY - this.props.stickHeight}\n />\n <circle\n stroke=\"#BABDB6\"\n strokeWidth=\"0.5\"\n fill={this.props.headColor || '#000000'}\n r={this.headRadius}\n cx={this.circleX}\n cy={this.circleY}\n />\n <circle\n className={this.props.hitzoneClassName}\n r={this.props.hoverHeadRadius}\n cx={this.circleX}\n cy={this.circleY}\n cursor=\"pointer\"\n style={{ opacity: 0 }}\n />\n {label}\n </g>\n );\n }\n}\n","import { observable, makeObservable } from 'mobx';\n\nimport LollipopPlotControlsConfig from '../model/LollipopPlotControlsConfig';\n\nexport class DefaultLollipopPlotControlsConfig\n implements LollipopPlotControlsConfig {\n @observable\n public bottomYMaxInput: number | undefined;\n\n @observable\n public legendShown = false;\n\n @observable\n public yMaxInput: number | undefined;\n\n constructor() {\n makeObservable(this);\n }\n}\n\nexport default DefaultLollipopPlotControlsConfig;\n","import {\n getTextWidth,\n longestCommonStartingSubstring,\n} from 'cbioportal-frontend-commons';\nimport { countMutationsByProteinChange, Mutation } from 'cbioportal-utils';\nimport { PfamDomainRange } from 'genome-nexus-ts-api-client';\nimport numeral from 'numeral';\n\nimport { LollipopSpec } from '../model/LollipopSpec';\n\nexport function lollipopLabelText(\n mutationsAtPosition: Mutation[],\n size?: number\n): string {\n const mutationCountsByProteinChange = countMutationsByProteinChange(\n mutationsAtPosition\n ).filter(c => c.proteinChange !== undefined);\n\n // only pick specified number of protein change values\n const proteinChanges = mutationCountsByProteinChange\n .map(m => m.proteinChange)\n .slice(0, size && size > 0 ? size : undefined);\n\n // sort alphabetically (to make it easier to find longest common starting substring)\n const proteinChangesSorted = proteinChanges.slice(0).sort();\n\n let startStr = '';\n if (proteinChangesSorted.length > 1) {\n // only need to compare first and last element of sorted string list to find longest common starting substring of all of them\n startStr = longestCommonStartingSubstring(\n proteinChangesSorted[0],\n proteinChangesSorted[proteinChangesSorted.length - 1]\n );\n }\n\n // remove longest common starting substring from all protein change values\n const proteinChangesTrimmed = proteinChanges.map(p =>\n p.substring(startStr.length)\n );\n\n // construct label (sorted by protein change count, not alphabetically)\n let label = startStr + proteinChangesTrimmed.join('/');\n\n if (proteinChanges.length < mutationCountsByProteinChange.length) {\n label = `${label} and ${mutationCountsByProteinChange.length -\n proteinChanges.length} more`;\n }\n\n return label;\n}\n\nexport function lollipopLabelTextAnchor(\n labelText: string,\n codon: number,\n fontFamily: string,\n fontSize: number,\n geneWidth: number,\n proteinLength: number\n): string {\n let anchor = 'middle';\n const approxLabelWidth = getTextWidth(\n labelText,\n fontFamily,\n `${fontSize}px`\n );\n const lollipopDistanceToOrigin = codon * (geneWidth / proteinLength);\n const lollipopDistanceToXMax = geneWidth - lollipopDistanceToOrigin;\n\n // if lollipop is too close to the origin, in order to prevent label overlap set anchor to \"start\"\n if (approxLabelWidth / 2 > lollipopDistanceToOrigin) {\n anchor = 'start';\n }\n // if lollipop is too close to the end of the protein, in order to prevent overflow set anchor to \"end\"\n else if (approxLabelWidth / 2 > lollipopDistanceToXMax) {\n anchor = 'end';\n }\n\n return anchor;\n}\n\nexport function calcYMaxInput(\n yMaxInput: number | undefined,\n yMaxStep: number,\n countRange: number[],\n oppositeCountRange: number[],\n yAxisSameScale?: boolean\n) {\n // allow the user input value to go over the actual count range\n let input = yMaxInput;\n\n if (input === undefined) {\n input = yAxisSameScale\n ? numeral(\n numeral(\n getCommonYAxisMaxSliderValue(\n yMaxStep,\n countRange,\n oppositeCountRange\n )\n ).format(String(yMaxStep))\n ).value()\n : numeral(\n numeral(getYAxisMaxSliderValue(yMaxStep, countRange)).format(\n String(yMaxStep)\n )\n ).value();\n }\n\n return input;\n}\n\nexport function getCommonYAxisMaxSliderValue(\n yMaxStep: number,\n countRange: number[],\n oppositeCountRange: number[],\n yMaxInput?: number\n) {\n const defaultTopMin = getYAxisMaxSliderValue(\n yMaxStep,\n countRange,\n yMaxInput\n );\n const defaultBottomMin = getYAxisMaxSliderValue(\n yMaxStep,\n oppositeCountRange,\n yMaxInput\n );\n\n return Math.max(defaultTopMin, defaultBottomMin);\n}\n\nexport function getYAxisMaxSliderValue(\n yMaxStep: number,\n countRange: number[],\n yMaxInput?: number\n) {\n const defaultMin = yMaxStep * Math.ceil(countRange[1] / yMaxStep);\n // we don't want max slider value to go over the actual max, even if the user input goes over it\n return Math.min(defaultMin, yMaxInput || defaultMin);\n}\n\nexport function getYAxisMaxInputValue(yMaxStep: number, input: string) {\n const value = parseFloat(input);\n return value < yMaxStep ? yMaxStep : value;\n}\n\nexport function calcCountRange(\n lollipops: LollipopSpec[],\n defaultMax: number = 5,\n defaultMin: number = 1\n): [number, number] {\n if (lollipops.length === 0) {\n return [0, 0];\n } else {\n let max = defaultMax;\n let min = defaultMin;\n\n for (const lollipop of lollipops) {\n max = Math.max(max, lollipop.count);\n min = Number.isInteger(lollipop.count)\n ? Math.min(min, lollipop.count)\n : Math.min(0.1, lollipop.count);\n }\n\n return [min, Math.max(min, max)];\n }\n}\n\nfunction isInThisDomain(codon: number) {\n return (range: PfamDomainRange): boolean => {\n return codon >= range.pfamDomainStart && codon <= range.pfamDomainEnd;\n };\n}\n\nexport function byMiddlemostPosition(averageCodon: number) {\n return (x: LollipopSpec, y: LollipopSpec): 1 | -1 | 0 => {\n const yDistance = Math.abs(y.codon - averageCodon);\n const xDistance = Math.abs(x.codon - averageCodon);\n if (yDistance > xDistance) {\n return -1;\n } else if (xDistance > yDistance) {\n return 1;\n } else {\n return 0;\n }\n };\n}\n\nexport function byWhetherExistsInADomain(remainingDomains: PfamDomainRange[]) {\n return (x: LollipopSpec, y: LollipopSpec): 0 | 1 | -1 => {\n const isYInADomain = remainingDomains.some(isInThisDomain(y.codon));\n const isXInADomain = remainingDomains.some(isInThisDomain(x.codon));\n if (\n (isYInADomain && isXInADomain) ||\n (!isYInADomain && !isXInADomain)\n ) {\n return 0;\n } else if (isYInADomain) {\n return 1;\n } else {\n return -1;\n }\n };\n}\n\nexport function byMutationCount(x: LollipopSpec, y: LollipopSpec): number {\n if (y.count > x.count) {\n return 1;\n } else if (y.count < x.count) {\n return -1;\n }\n return 0;\n}\n","import { PfamDomainRange } from 'genome-nexus-ts-api-client';\n\nexport function generatePfamDomainColorMap(\n pfamDomains: PfamDomainRange[]\n): { [pfamAccession: string]: string } {\n const colors: string[] = [\n '#2dcf00',\n '#ff5353',\n '#5b5bff',\n '#ebd61d',\n '#ba21e0',\n '#ff9c42',\n '#ff7dff',\n '#b9264f',\n '#baba21',\n '#c48484',\n '#1f88a7',\n '#cafeb8',\n '#4a9586',\n '#ceb86c',\n '#0e180f',\n ];\n\n const map: { [pfamAccession: string]: string } = {};\n\n let colorIdx = 0;\n\n // sort domains by start position,\n // then assign a different color for each unique domain id.\n pfamDomains\n .sort(\n (a: PfamDomainRange, b: PfamDomainRange): number =>\n a.pfamDomainStart - b.pfamDomainStart\n )\n .forEach((domain: PfamDomainRange) => {\n if (map[domain.pfamDomainId] === undefined) {\n map[domain.pfamDomainId] = colors[colorIdx % colors.length];\n colorIdx++;\n }\n });\n\n return map;\n}\n","import * as React from 'react';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { CheckedSelect, Option } from 'cbioportal-frontend-commons';\n\nexport type TrackVisibility = { [trackName: string]: 'visible' | 'hidden' };\nexport type TrackDataStatus = {\n [trackName: string]: 'pending' | 'error' | 'complete' | 'empty';\n};\n\nexport enum TrackName {\n PDB = 'PDB',\n CancerHotspots = 'CANCER_HOTSPOTS',\n OncoKB = 'ONCO_KB',\n dbPTM = 'DB_PTM',\n UniprotPTM = 'UNIPROT_PTM',\n Exon = 'EXON',\n UniprotTopology = 'UNIPROT_TOPOLOGY',\n}\n\ntype TrackSelectorProps = {\n tracks?: TrackName[];\n trackVisibility: TrackVisibility;\n trackDataStatus?: TrackDataStatus;\n onChange: (selectedTrackIds: string[]) => void;\n name?: string;\n placeholder?: string;\n};\n\n@observer\nexport default class TrackSelector extends React.Component<\n TrackSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<TrackSelectorProps> = {\n name: 'mutationMapperTrackSelector',\n placeholder: 'Add annotation tracks',\n tracks: [\n TrackName.CancerHotspots,\n TrackName.OncoKB,\n TrackName.dbPTM,\n TrackName.PDB,\n TrackName.Exon,\n TrackName.UniprotTopology,\n ],\n };\n\n @action.bound\n private onChange(values: { value: string }[]) {\n this.props.onChange(values.map(o => o.value));\n }\n\n @computed get selectedValues() {\n return Object.keys(this.props.trackVisibility)\n .filter(id => this.props.trackVisibility[id] === 'visible')\n .map(id => ({ value: id }));\n }\n\n @computed get availableOptions() {\n return {\n [TrackName.CancerHotspots]: {\n label: (\n <span data-test=\"CancerHotspots\">\n Cancer Hotspots\n {this.isPending(TrackName.CancerHotspots) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.CancerHotspots,\n },\n [TrackName.OncoKB]: {\n label: (\n <span>\n OncoKB™\n {this.isPending(TrackName.OncoKB) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.OncoKB,\n },\n [TrackName.dbPTM]: {\n label: (\n <span>\n Post Translational Modifications (dbPTM)\n {this.isPending(TrackName.dbPTM) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.dbPTM,\n },\n [TrackName.UniprotPTM]: {\n label: (\n <span>\n Post Translational Modifications (Uniprot)\n {this.isPending(TrackName.UniprotPTM) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.UniprotPTM,\n },\n [TrackName.PDB]: {\n label: (\n <span>\n 3D Structure\n {this.isPending(TrackName.PDB) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.PDB,\n disabled: this.isDisabled(TrackName.PDB),\n },\n [TrackName.Exon]: {\n label: (\n <span>\n Exon\n {this.isPending(TrackName.Exon) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.Exon,\n },\n [TrackName.UniprotTopology]: {\n label: (\n <span>\n Uniprot Topology\n {this.isPending(TrackName.UniprotTopology) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.UniprotTopology,\n },\n };\n }\n\n @computed get options(): Option[] {\n return this.props\n .tracks!.filter(t => this.props.trackVisibility[t] !== undefined)\n .map(t => this.availableOptions[t]);\n }\n\n private isPending(trackName: string) {\n return (\n this.props.trackDataStatus &&\n this.props.trackDataStatus[trackName] === 'pending'\n );\n }\n\n private isDisabled(trackName: string) {\n return (\n this.props.trackDataStatus &&\n this.props.trackDataStatus[trackName] !== 'complete'\n );\n }\n\n private loaderIcon() {\n return (\n <span\n style={{\n display: 'inline-block',\n verticalAlign: 'bottom',\n marginLeft: 5,\n }}\n >\n <i className=\"fa fa-spinner fa-pulse\" />\n </span>\n );\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n />\n );\n }\n}\n","import { TrackName, TrackVisibility } from '../component/track/TrackSelector';\n\nexport function initDefaultTrackVisibility(): TrackVisibility {\n return {\n [TrackName.OncoKB]: 'hidden',\n [TrackName.CancerHotspots]: 'hidden',\n [TrackName.dbPTM]: 'hidden',\n [TrackName.UniprotPTM]: 'hidden',\n [TrackName.PDB]: 'hidden',\n [TrackName.Exon]: 'hidden',\n [TrackName.UniprotTopology]: 'hidden',\n };\n}\n","import * as React from 'react';\nimport {\n MUT_COLOR_MISSENSE,\n MUT_COLOR_TRUNC,\n MUT_COLOR_INFRAME,\n STRUCTURAL_VARIANT_COLOR,\n MUT_COLOR_SPLICE,\n MUT_COLOR_OTHER,\n} from 'cbioportal-frontend-commons';\n\ntype DefaultLollipopPlotLegendProps = {\n missenseColor?: string;\n truncatingColor?: string;\n inframeColor?: string;\n spliceColor?: string;\n fusionColor?: string;\n otherColor?: string;\n};\n\nexport default class DefaultLollipopPlotLegend extends React.Component<\n DefaultLollipopPlotLegendProps\n> {\n public static defaultProps: DefaultLollipopPlotLegendProps = {\n missenseColor: MUT_COLOR_MISSENSE,\n truncatingColor: MUT_COLOR_TRUNC,\n inframeColor: MUT_COLOR_INFRAME,\n spliceColor: MUT_COLOR_SPLICE,\n fusionColor: STRUCTURAL_VARIANT_COLOR,\n otherColor: MUT_COLOR_OTHER,\n };\n\n public render() {\n return (\n <div style={{ maxWidth: 700, marginTop: 5 }}>\n <strong style={{ color: '#2153AA' }}>Color Codes</strong>\n <p>\n Mutation diagram circles are colored with respect to the\n corresponding mutation types. In case of different mutation\n types at a single position, color of the circle is\n determined with respect to the most frequent mutation type.\n </p>\n <br />\n <div>\n Mutation types and corresponding color codes are as follows:\n <ul>\n <li>\n <strong style={{ color: this.props.missenseColor }}>\n Missense Mutations\n </strong>\n </li>\n <li>\n <strong\n style={{ color: this.props.truncatingColor }}\n >\n Truncating Mutations\n </strong>\n : Nonsense, Nonstop, Frameshift deletion, Frameshift\n insertion, Splice site\n </li>\n <li>\n <strong style={{ color: this.props.inframeColor }}>\n Inframe Mutations\n </strong>\n : Inframe deletion, Inframe insertion\n </li>\n <li>\n <strong style={{ color: this.props.spliceColor }}>\n Splice Mutations\n </strong>\n </li>\n <li>\n <strong style={{ color: this.props.fusionColor }}>\n Fusion Mutations\n </strong>\n </li>\n <li>\n <strong style={{ color: this.props.otherColor }}>\n Other Mutations\n </strong>\n : All other types of mutations\n </li>\n </ul>\n </div>\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, makeObservable } from 'mobx';\n\nimport { SequenceSpec } from '../../model/SequenceSpec';\n\ntype SequenceProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n color?: string;\n hitzoneClassName?: string;\n spec?: SequenceSpec;\n};\n\n@observer\nexport default class Sequence extends React.Component<SequenceProps, {}> {\n @observable isMounted: boolean = false;\n\n constructor(props: SequenceProps) {\n super(props);\n makeObservable(this);\n }\n\n public get hitRect() {\n return {\n x: this.props.x,\n y: this.props.y,\n width: this.props.width,\n height: this.props.height,\n };\n }\n\n componentDidMount() {\n this.isMounted = true;\n }\n\n render() {\n return (\n <g>\n <rect\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n fill={this.props.color}\n />\n <rect\n className={this.props.hitzoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import * as React from 'react';\nimport { SyntheticEvent } from 'react';\nimport $ from 'jquery';\nimport autobind from 'autobind-decorator';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable } from 'mobx';\n\nimport {\n getComponentIndex,\n SVGAxis,\n Tick,\n unhoverAllComponents,\n} from 'cbioportal-frontend-commons';\n\nimport { LollipopPlacement, LollipopSpec } from '../../model/LollipopSpec';\nimport { DomainSpec } from '../../model/DomainSpec';\nimport {\n updatePositionHighlightFilters,\n updatePositionSelectionFilters,\n} from '../../util/FilterUtils';\nimport Sequence from './Sequence';\nimport Lollipop from './Lollipop';\nimport Domain from './Domain';\nimport { LollipopPlotProps } from './LollipopPlot';\n\nexport type LollipopPlotNoTooltipProps = LollipopPlotProps & {\n setHitZone?: (\n hitRect: { x: number; y: number; width: number; height: number },\n tooltipContent?: JSX.Element,\n mirrorHitRect?: { x: number; y: number; width: number; height: number },\n mirrorTooltipContent?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor?: string,\n tooltipPlacement?: string\n ) => void;\n onMouseLeave?: () => void;\n onBackgroundMouseMove?: () => void;\n};\n\nconst DELETE_FOR_DOWNLOAD_CLASS = 'delete-for-download';\nconst LOLLIPOP_ID_CLASS_PREFIX = 'lollipop-';\nconst DOMAIN_ID_CLASS_PREFIX = 'domain-';\nconst SEQUENCE_ID_CLASS_PREFIX = 'sequence-';\n\n@observer\nexport default class LollipopPlotNoTooltip extends React.Component<\n LollipopPlotNoTooltipProps,\n {}\n> {\n private lollipopComponents: { [lollipopIndex: string]: Lollipop } = {};\n private domainComponents: { [domainIndex: string]: Domain } = {};\n private sequenceComponents: Sequence[] = [];\n\n private svg: SVGElement | undefined;\n private shiftPressed: boolean = false;\n\n private lollipopLabelPadding = 20;\n private domainPadding = 5;\n private xAxisCandidateTickIntervals = [\n 50,\n 100,\n 200,\n 250,\n 500,\n 1000,\n 2500,\n 5000,\n 10000,\n 25000,\n ];\n private yAxisCandidateTickIntervals = [1, 2, 5, 10, 20, 50, 100, 200, 500];\n private xAxisHeight = 30;\n private yAxisWidth = 50;\n private yAxisPadding = 10;\n private geneHeight = 14;\n private domainHeight = 24;\n\n public static defaultProps: Partial<LollipopPlotNoTooltipProps> = {\n showYAxis: true,\n };\n\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @autobind\n protected ref(svg: SVGElement) {\n this.svg = svg;\n }\n\n @action.bound\n protected onBackgroundClick() {\n if (this.props.dataStore) {\n this.props.dataStore.clearSelectionFilters();\n }\n }\n\n @action.bound\n protected onBackgroundMouseMove() {\n this.props.onBackgroundMouseMove && this.props.onBackgroundMouseMove();\n // unhover all of the lollipops if mouse hits background\n this.unhoverAllLollipops();\n }\n\n @action.bound\n protected onLollipopClick(codon: number) {\n if (this.props.dataStore) {\n updatePositionSelectionFilters(\n this.props.dataStore,\n codon,\n this.shiftPressed\n );\n }\n }\n\n @action.bound\n protected onKeyDown(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = true;\n }\n }\n\n @action.bound\n protected onKeyUp(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = false;\n }\n }\n\n @action.bound\n protected onMouseOver(e: SyntheticEvent<any>) {\n // No matter what, unhover all lollipops - if we're hovering one, we'll set it later in this method\n this.unhoverAllLollipops();\n\n const target = e.target as SVGElement;\n const className = target.getAttribute('class') || '';\n const lollipopIndex: number | null = this.getLollipopIndex(className);\n let domainIndex: number | null = null;\n let sequenceIndex: number | null = null;\n\n if (lollipopIndex !== null) {\n const lollipopComponent = this.lollipopComponents[lollipopIndex];\n if (lollipopComponent) {\n // mirrorLollipopComponent refers to the lollipop component, if it exists, in the other group at the same lollipopIndex\n // this is needed to show tooltips of both lollipop components at same index\n const mirrorLollipopComponent = _.find(\n this.lollipopComponents,\n l =>\n l.props.spec.codon ===\n lollipopComponent.props.spec.codon &&\n l !== lollipopComponent\n );\n lollipopComponent.isHovered = true;\n if (this.props.setHitZone) {\n this.props.setHitZone(\n lollipopComponent.circleHitRect,\n lollipopComponent.props.spec.tooltip,\n mirrorLollipopComponent?.circleHitRect,\n mirrorLollipopComponent?.props.spec.tooltip,\n action(() => {\n if (this.props.dataStore) {\n updatePositionHighlightFilters(\n this.props.dataStore,\n [lollipopComponent.props.spec.codon]\n );\n }\n lollipopComponent.isHovered = true;\n }),\n action(() =>\n this.onLollipopClick(\n lollipopComponent.props.spec.codon\n )\n ),\n undefined,\n 'pointer',\n lollipopComponent.circleHitRect.y >\n lollipopComponent.props.stickBaseY\n ? 'bottom'\n : 'top'\n );\n }\n }\n } else {\n domainIndex = this.getDomainIndex(className);\n }\n\n if (domainIndex !== null) {\n const domainComponent = this.domainComponents[domainIndex];\n if (domainComponent) {\n if (this.props.setHitZone) {\n this.props.setHitZone(\n domainComponent.hitRect,\n domainComponent.props.spec.tooltip,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n 'auto'\n );\n }\n }\n } else {\n sequenceIndex = this.getSequenceIndex(className);\n }\n\n if (sequenceIndex !== null) {\n const sequenceComponent = this.sequenceComponents[sequenceIndex];\n if (sequenceComponent) {\n if (this.props.setHitZone) {\n this.props.setHitZone(\n sequenceComponent.hitRect,\n sequenceComponent.props.spec\n ? sequenceComponent.props.spec.tooltip\n : undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n 'auto'\n );\n }\n }\n }\n }\n\n @action.bound\n protected onSVGMouseLeave(e: SyntheticEvent<any>) {\n const target = e.target as Element;\n\n if (target.tagName.toLowerCase() === 'svg') {\n this.props.onMouseLeave && this.props.onMouseLeave();\n }\n }\n\n private unhoverAllLollipops() {\n unhoverAllComponents(this.lollipopComponents);\n\n if (this.props.dataStore) {\n this.props.dataStore.clearHighlightFilters();\n }\n }\n\n componentDidMount() {\n // Make it so that if you hold down shift, you can select more than one lollipop at once\n $(document).on('keydown', this.onKeyDown);\n $(document).on('keyup', this.onKeyUp);\n this.props.onXAxisOffset && this.props.onXAxisOffset(this.geneX);\n }\n\n componentWillUnmount() {\n $(document).off('keydown', this.onKeyDown as any);\n $(document).off('keyup', this.onKeyUp as any);\n }\n\n componentDidUpdate() {\n this.props.onXAxisOffset && this.props.onXAxisOffset(this.geneX);\n }\n\n private codonToX(codon: number) {\n return (codon / this.props.xMax) * this.props.vizWidth;\n }\n\n private countToHeight(count: number, yMax: number, zeroHeight: number = 0) {\n return zeroHeight + Math.min(1, count / yMax) * this.yAxisHeight;\n }\n\n private calculateTickInterval(\n candidates: number[],\n rangeSize: number,\n maxTickCount: number\n ) {\n let ret: number;\n const tickInterval = candidates.find(\n c => rangeSize / c < maxTickCount - 1\n );\n if (!tickInterval) {\n ret = 10;\n while (rangeSize / ret > maxTickCount - 1) {\n ret *= 10;\n }\n } else {\n ret = tickInterval;\n }\n return ret;\n }\n\n private calculateTicks(\n tickInterval: number,\n rangeSize: number,\n labelEvenTicks: boolean\n ) {\n const ret: { position: number; label: string | undefined }[] = [];\n let nextTick = tickInterval;\n while (nextTick < rangeSize) {\n let label: string | undefined = undefined;\n\n // add label only for the even ticks\n // but do not add label if it is too close to the end value\n if (\n labelEvenTicks &&\n rangeSize - nextTick > (2 * tickInterval) / 3 &&\n nextTick % (2 * tickInterval) === 0\n ) {\n label = nextTick + '';\n }\n ret.push({\n position: nextTick,\n label,\n });\n nextTick += tickInterval;\n }\n return ret;\n }\n\n @computed private get xAxisTickInterval() {\n return this.calculateTickInterval(\n this.xAxisCandidateTickIntervals,\n this.props.xMax,\n 16\n );\n }\n\n @computed private get yAxisTickInterval() {\n return this.calculateTickInterval(\n this.yAxisCandidateTickIntervals,\n this.yMax,\n 10\n );\n }\n\n @computed private get bottomYAxisTickInterval() {\n return this.calculateTickInterval(\n this.yAxisCandidateTickIntervals,\n this.bottomYMax,\n 10\n );\n }\n\n @computed private get xTicks() {\n let ret: Tick[] = [];\n // Start and end, always there\n ret.push({\n position: 0,\n label: '0',\n });\n ret.push({\n position: this.props.xMax,\n label: this.props.xMax + 'aa',\n });\n // Intermediate ticks, every other one labeled\n ret = ret.concat(\n this.calculateTicks(this.xAxisTickInterval, this.props.xMax, true)\n );\n return ret;\n }\n\n @computed private get yTicks() {\n return this.axisTicks(\n this.yMax,\n this.yMaxLabel,\n this.yAxisTickInterval\n );\n }\n\n @computed private get bottomYTicks() {\n return this.axisTicks(\n this.bottomYMax,\n this.bottomYMaxLabel,\n this.bottomYAxisTickInterval\n );\n }\n\n @computed private get yMax() {\n return (\n this.props.yMax ||\n this.props.lollipops\n .filter(l => l.placement !== LollipopPlacement.BOTTOM)\n .reduce(\n (max: number, next: LollipopSpec) =>\n Math.max(max, next.count),\n 1\n )\n );\n }\n\n @computed private get yMaxDisplay() {\n return this.props.yMaxFractionDigits\n ? Number(this.yMax.toFixed(this.props.yMaxFractionDigits))\n : this.yMax;\n }\n\n @computed private get yMaxPostfix() {\n return this.props.yMaxLabelPostfix ? this.props.yMaxLabelPostfix : '';\n }\n\n @computed private get bottomYMax() {\n return (\n this.props.bottomYMax ||\n this.props.lollipops\n .filter(l => l.placement === LollipopPlacement.BOTTOM)\n .reduce(\n (max: number, next: LollipopSpec) =>\n Math.max(max, next.count),\n 1\n )\n );\n }\n\n @computed private get bottomYMaxDisplay() {\n return this.props.yMaxFractionDigits\n ? Number(this.bottomYMax.toFixed(this.props.yMaxFractionDigits))\n : this.bottomYMax;\n }\n\n @computed private get yMaxLabel() {\n return (\n (this.props.lollipops\n .filter(l => l.placement !== LollipopPlacement.BOTTOM)\n .find(lollipop => lollipop.count > this.yMax)\n ? '>= '\n : '') +\n this.yMaxDisplay +\n this.yMaxPostfix\n );\n }\n\n @computed private get bottomYMaxLabel() {\n return (\n (this.props.lollipops\n .filter(l => l.placement === LollipopPlacement.BOTTOM)\n .find(lollipop => lollipop.count > this.bottomYMax)\n ? '>= '\n : '') +\n this.bottomYMaxDisplay +\n this.yMaxPostfix\n );\n }\n\n @computed private get needBottomPlacement() {\n return this.props.groups && this.props.groups.length > 1;\n }\n\n @computed private get xAxisOnTop() {\n return this.props.xAxisOnTop || this.needBottomPlacement;\n }\n\n @computed private get xAxisOnBottom() {\n return this.props.xAxisOnBottom || !this.needBottomPlacement;\n }\n\n @computed private get topGroupName() {\n return this.props.groups ? this.props.groups[0] : undefined;\n }\n\n @computed private get topGroupSymbol() {\n return this.props.topYAxisSymbol || '#';\n }\n\n @computed private get bottomGroupName() {\n return this.props.groups ? this.props.groups[1] : undefined;\n }\n\n @computed private get bottomGroupSymbol() {\n return this.props.bottomYAxisSymbol || '#';\n }\n\n @computed private get combinedXAxisHeight() {\n // number of visible x-axes depends on the props\n return (\n ((this.xAxisOnTop ? 1 : 0) + (this.xAxisOnBottom ? 1 : 0)) *\n this.xAxisHeight\n );\n }\n\n @computed private get yAxisHeight() {\n if (this.needBottomPlacement) {\n return (\n (2 * this.props.vizHeight -\n (2 * this.lollipopLabelPadding +\n this.combinedXAxisHeight +\n 2 * this.domainPadding +\n this.domainHeight)) /\n 2\n );\n } else {\n return (\n this.props.vizHeight -\n (this.lollipopLabelPadding +\n this.combinedXAxisHeight +\n 2 * this.domainPadding +\n this.domainHeight)\n );\n }\n }\n\n @computed private get xAxisY() {\n const base = this.domainY + this.domainHeight + this.domainPadding;\n\n if (this.needBottomPlacement) {\n return base + this.yAxisHeight + this.lollipopLabelPadding;\n } else {\n return base;\n }\n }\n\n @computed private get geneCenterY() {\n return this.geneY + this.geneHeight / 2;\n }\n\n @computed private get yAxisY() {\n return (\n this.geneCenterY -\n this.plotAreaDistanceToGeneCenter -\n this.yAxisHeight\n );\n }\n\n @computed private get bottomYAxisY() {\n return this.geneCenterY + this.plotAreaDistanceToGeneCenter;\n }\n\n @computed private get plotAreaDistanceToGeneCenter() {\n return this.domainPadding + this.domainHeight / 2;\n }\n\n @computed private get geneX() {\n // TODO make + 75 customizable\n return this.yAxisWidth + 75;\n }\n\n @computed private get geneY() {\n return (\n this.lollipopLabelPadding +\n this.yAxisHeight +\n this.domainPadding +\n (this.domainHeight - this.geneHeight) / 2 +\n (this.xAxisOnTop ? this.xAxisHeight : 0)\n );\n }\n\n @computed private get domainY() {\n return this.geneY - (this.domainHeight - this.geneHeight) / 2;\n }\n\n // we need to create segments for the sequence rectangle for better handling of the tooltip hit zone\n @computed get sequenceSegments() {\n const sequenceComponents: JSX.Element[] = [];\n\n let start = 0;\n\n let segments = _.map(this.props.domains, (domain: DomainSpec) => {\n const segment = {\n start,\n end: this.codonToX(domain.startCodon), // segment ends at the start of the current domain\n };\n\n // next segment starts at the end of the current domain\n start = this.codonToX(domain.endCodon);\n\n return segment;\n });\n\n // last segment after the last domain\n const end = this.props.vizWidth;\n segments.push({ start, end });\n\n // sort segments by start position\n segments.sort(\n (\n a: { start: number; end: number },\n b: { start: number; end: number }\n ) => {\n return a.start - b.start;\n }\n );\n\n segments.forEach(\n (segment: { start: number; end: number }, index: number) => {\n sequenceComponents.push(\n <Sequence\n ref={sequenceComponent => {\n if (sequenceComponent !== null) {\n this.sequenceComponents[\n index\n ] = sequenceComponent;\n }\n }}\n color=\"#BABDB6\"\n x={this.geneX + segment.start}\n y={this.geneY}\n height={this.geneHeight}\n width={segment.end - segment.start}\n spec={this.props.sequence}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeSequenceIndexClass(index),\n ].join(' ')}\n />\n );\n }\n );\n\n return sequenceComponents;\n }\n\n @computed private get zeroHeight() {\n // we need to add a non-zero value if the stick needs to start from the gene center\n return this.props.zeroStickBaseY\n ? 0\n : this.domainPadding + this.domainHeight / 2;\n }\n\n @computed private get lollipops() {\n this.lollipopComponents = {};\n const hoverHeadRadius = 5;\n return this.props.lollipops.map((lollipop: LollipopSpec, i: number) => {\n const stickHeight =\n lollipop.placement === LollipopPlacement.BOTTOM\n ? -this.countToHeight(\n lollipop.count,\n this.bottomYMax,\n this.zeroHeight\n )\n : this.countToHeight(\n lollipop.count,\n this.yMax,\n this.zeroHeight\n );\n\n const stickBaseY = this.calcStickBaseY(lollipop.placement);\n\n return (\n <Lollipop\n key={`${lollipop.codon}_${\n lollipop.placement === LollipopPlacement.BOTTOM\n ? 'bottom'\n : 'top'\n }`}\n ref={(lollipopComponent: Lollipop) => {\n if (lollipopComponent !== null) {\n this.lollipopComponents[i] = lollipopComponent;\n }\n }}\n x={this.geneX + this.codonToX(lollipop.codon)}\n stickBaseY={stickBaseY}\n stickHeight={stickHeight}\n headRadius={\n this.props.dataStore &&\n (this.props.dataStore.isPositionSelected(\n lollipop.codon\n ) ||\n this.props.dataStore.isPositionHighlighted(\n lollipop.codon\n ))\n ? 5\n : 2.8\n }\n hoverHeadRadius={hoverHeadRadius}\n label={lollipop.label}\n headColor={lollipop.color}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeLollipopIndexClass(i),\n ].join(' ')}\n spec={lollipop}\n />\n );\n });\n }\n\n @computed private get domains() {\n this.domainComponents = {};\n return this.props.domains.map((domain: DomainSpec, index: number) => {\n const x = this.codonToX(domain.startCodon);\n const width = this.codonToX(domain.endCodon) - x;\n return (\n <Domain\n key={index}\n ref={(domainComponent: Domain) => {\n if (domainComponent !== null) {\n this.domainComponents[index] = domainComponent;\n }\n }}\n x={this.geneX + x}\n y={this.domainY}\n width={width}\n height={this.domainHeight}\n color={domain.color}\n label={domain.label}\n labelColor={domain.labelColor}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeDomainIndexClass(index),\n ].join(' ')}\n spec={domain}\n />\n );\n });\n }\n\n private yAxis(\n y: number,\n yMax: number,\n ticks: Tick[],\n placement?: LollipopPlacement,\n groupName?: string,\n symbol: string = '#'\n ) {\n let label;\n if (this.props.yAxisLabelFormatter) {\n label = this.props.yAxisLabelFormatter(symbol, groupName);\n } else {\n label = groupName\n ? `${symbol} ${this.props.hugoGeneSymbol ||\n ''} ${groupName} Mutations`\n : `${symbol} ${this.props.hugoGeneSymbol || ''} Mutations`;\n }\n const placeOnBottom = placement === LollipopPlacement.BOTTOM;\n\n return (\n <SVGAxis\n key={`lollipopPlotYAxis_${placeOnBottom ? 'bottom' : 'top'}`}\n x={this.geneX - this.yAxisPadding}\n y={y}\n length={this.yAxisHeight}\n tickLength={7}\n rangeLower={0}\n rangeUpper={yMax}\n ticks={ticks}\n vertical={true}\n verticalLabelPadding={this.props.yAxisLabelPadding}\n reverse={placeOnBottom}\n label={label}\n />\n );\n }\n\n private xAxis(y: number, placement?: LollipopPlacement) {\n const placeOnTop = placement === LollipopPlacement.TOP;\n\n return (\n <SVGAxis\n key={`lollipopPlotXAxis_${placeOnTop ? 'top' : 'bottom'}`}\n x={this.geneX}\n y={y + (placeOnTop ? this.xAxisHeight : 0)}\n length={this.props.vizWidth}\n tickLength={7}\n rangeLower={0}\n rangeUpper={this.props.xMax}\n ticks={this.xTicks}\n invertTicks={placeOnTop}\n />\n );\n }\n\n private axisTicks(max: number, maxLabel: string, tickInterval: number) {\n let ticks: Tick[] = [];\n\n // Start and end, always there\n ticks.push({\n position: 0,\n label: '0',\n });\n ticks.push({\n position: max,\n label: maxLabel,\n });\n // Intermediate ticks, unlabeled\n ticks = ticks.concat(this.calculateTicks(tickInterval, max, false));\n\n return ticks;\n }\n\n @computed public get svgWidth() {\n return this.props.vizWidth + this.geneX + 30;\n }\n\n @computed public get svgHeight() {\n return this.needBottomPlacement\n ? 2 * this.props.vizHeight\n : this.props.vizHeight;\n }\n\n private calcStickBaseY(placement?: LollipopPlacement) {\n // by default start from the center of the plot\n let stickBaseY = this.geneCenterY;\n\n // calculation needed when the stick starts from the axis zero (above domains)\n if (this.props.zeroStickBaseY) {\n stickBaseY =\n placement === LollipopPlacement.BOTTOM\n ? this.bottomYAxisY\n : this.yAxisY + this.yAxisHeight;\n }\n\n return stickBaseY;\n }\n\n private makeDomainIndexClass(index: number) {\n return `${DOMAIN_ID_CLASS_PREFIX}${index}`;\n }\n\n private makeLollipopIndexClass(index: number) {\n return `${LOLLIPOP_ID_CLASS_PREFIX}${index}`;\n }\n\n private makeSequenceIndexClass(index: number) {\n return `${SEQUENCE_ID_CLASS_PREFIX}${index}`;\n }\n\n private getDomainIndex(classes: string): number | null {\n return getComponentIndex(classes, DOMAIN_ID_CLASS_PREFIX);\n }\n\n private getLollipopIndex(classes: string): number | null {\n return getComponentIndex(classes, LOLLIPOP_ID_CLASS_PREFIX);\n }\n\n private getSequenceIndex(classes: string): number | null {\n return getComponentIndex(classes, SEQUENCE_ID_CLASS_PREFIX);\n }\n\n public toSVGDOMNode(): Element {\n if (this.svg) {\n // Clone node\n const svg = this.svg.cloneNode(true) as Element;\n $(svg)\n .find('.' + DELETE_FOR_DOWNLOAD_CLASS)\n .remove();\n return svg;\n } else {\n return document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'svg'\n );\n }\n }\n\n render() {\n return (\n <div onMouseOver={this.onMouseOver}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={this.ref as any}\n width={this.svgWidth}\n height={this.svgHeight}\n className=\"lollipop-svgnode\"\n onMouseLeave={this.onSVGMouseLeave}\n >\n <rect\n fill=\"#FFFFFF\"\n x={0}\n y={0}\n width={this.svgWidth}\n height={this.svgHeight}\n onClick={this.onBackgroundClick}\n onMouseMove={this.onBackgroundMouseMove}\n />\n {\n // Originally this had tooltips by having separate segments\n // with hit zones. We disabled those separate segments with\n // tooltips (this.sequenceSegments) and instead just draw\n // one rectangle\n // this.sequenceSegments\n }\n <rect\n fill=\"#BABDB6\"\n x={this.geneX}\n y={this.geneY}\n height={this.geneHeight}\n width={\n // the x-axis start from 0, so the rectangle size should be (width + 1)\n this.props.vizWidth + 1\n }\n />\n {this.lollipops}\n {this.domains}\n {this.xAxisOnTop && this.xAxis(0, LollipopPlacement.TOP)}\n {this.xAxisOnBottom &&\n this.xAxis(this.xAxisY, LollipopPlacement.BOTTOM)}\n {this.props.showYAxis &&\n this.yAxis(\n this.yAxisY,\n this.yMax,\n this.yTicks,\n LollipopPlacement.TOP,\n this.topGroupName,\n this.topGroupSymbol\n )}\n {this.props.showYAxis &&\n this.needBottomPlacement &&\n this.yAxis(\n this.bottomYAxisY,\n this.bottomYMax,\n this.bottomYTicks,\n LollipopPlacement.BOTTOM,\n this.bottomGroupName,\n this.bottomGroupSymbol\n )}\n </svg>\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, computed, makeObservable, action } from 'mobx';\nimport {\n HitZoneConfig,\n defaultHitzoneConfig,\n initHitZoneFromConfig,\n DefaultTooltip,\n} from 'cbioportal-frontend-commons';\n\nimport DataStore from '../../model/DataStore';\nimport { SequenceSpec } from '../../model/SequenceSpec';\nimport { LollipopSpec } from '../../model/LollipopSpec';\nimport { DomainSpec } from '../../model/DomainSpec';\nimport LollipopPlotNoTooltip from './LollipopPlotNoTooltip';\n\nexport type LollipopPlotProps = {\n sequence?: SequenceSpec;\n lollipops: LollipopSpec[];\n domains: DomainSpec[];\n vizWidth: number;\n vizHeight: number;\n xMax: number;\n yMax?: number;\n bottomYMax?: number;\n yMaxFractionDigits?: number;\n yMaxLabelPostfix?: string;\n yAxisLabelPadding?: number;\n showYAxis?: boolean;\n xAxisOnTop?: boolean;\n xAxisOnBottom?: boolean;\n groups?: string[];\n topYAxisSymbol?: string;\n bottomYAxisSymbol?: string;\n zeroStickBaseY?: boolean;\n hugoGeneSymbol?: string;\n dataStore?: DataStore;\n onXAxisOffset?: (offset: number) => void;\n yAxisLabelFormatter?: (symbol?: string, groupName?: string) => string;\n};\n\n@observer\nexport default class LollipopPlot extends React.Component<\n LollipopPlotProps,\n {}\n> {\n @observable private hitZoneConfig: HitZoneConfig = defaultHitzoneConfig();\n @observable private mirrorVisible: boolean = false; // lollipop and mirror lollipop share tooltip visibility\n\n private plot: LollipopPlotNoTooltip | undefined;\n private handlers: any;\n\n public static defaultProps: Partial<LollipopPlotProps> = {\n vizHeight: 200,\n };\n\n constructor(props: LollipopPlotProps) {\n super(props);\n\n makeObservable<\n LollipopPlot,\n 'hitZoneConfig' | 'tooltipVisible' | 'hitZone' | 'mirrorHitZone'\n >(this);\n\n this.handlers = {\n ref: (plot: LollipopPlotNoTooltip) => {\n this.plot = plot;\n },\n setHitZone: (\n hitRect: {\n x: number;\n y: number;\n width: number;\n height: number;\n },\n content?: JSX.Element,\n mirrorHitRect?: {\n x: number;\n y: number;\n width: number;\n height: number;\n },\n mirrorContent?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor: string = 'pointer',\n tooltipPlacement: string = 'top'\n ) => {\n this.hitZoneConfig = {\n hitRect,\n content,\n mirrorHitRect,\n mirrorContent,\n onMouseOver,\n onClick,\n onMouseOut,\n cursor,\n tooltipPlacement,\n };\n },\n getOverlay: () => this.hitZoneConfig.content,\n getOverlayPlacement: () => this.hitZoneConfig.tooltipPlacement,\n getMirrorOverlay: () => this.hitZoneConfig.mirrorContent,\n onMouseLeave: () => {\n this.hitZoneConfig.onMouseOut &&\n this.hitZoneConfig.onMouseOut();\n },\n onBackgroundMouseMove: () => {\n this.hitZoneConfig.onMouseOut &&\n this.hitZoneConfig.onMouseOut();\n },\n };\n }\n\n @computed private get tooltipVisible() {\n return !!this.hitZoneConfig.content;\n }\n\n @computed private get hitZone() {\n return initHitZoneFromConfig(this.hitZoneConfig);\n }\n\n // hit zone of mirror lollipop component initialized using config's mirrorHitRect (mirror lollipop location)\n // used to determine where to apply the mirror lollipop tooltip\n @computed private get mirrorHitZone() {\n return initHitZoneFromConfig({\n ...this.hitZoneConfig,\n hitRect: { ...this.hitZoneConfig.mirrorHitRect! },\n });\n }\n\n // handles lollipop and mirror lollipop component simultaneous tooltip visibility\n // if lollipop tooltip is visible, make mirror lollipop tooltip visible as well\n @action.bound\n private onTooltipVisibleChange(visible: boolean) {\n this.mirrorVisible = visible;\n }\n\n public toSVGDOMNode(): Element {\n if (this.plot) {\n // Clone node\n return this.plot.toSVGDOMNode();\n } else {\n return document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'svg'\n );\n }\n }\n\n render() {\n const tooltipVisibleProps: any = {};\n if (!this.tooltipVisible) {\n tooltipVisibleProps.visible = false;\n }\n return (\n <div\n style={{\n position: 'relative',\n display: 'inline-block',\n }}\n data-test=\"LollipopPlot\"\n >\n <DefaultTooltip\n placement={this.handlers.getOverlayPlacement()}\n overlay={this.handlers.getOverlay}\n visible={this.mirrorVisible}\n onVisibleChange={this.onTooltipVisibleChange}\n {...tooltipVisibleProps}\n >\n {this.hitZone}\n </DefaultTooltip>\n {this.hitZoneConfig.mirrorHitRect && (\n <DefaultTooltip\n placement={\n this.handlers.getOverlayPlacement() === 'top'\n ? 'bottom'\n : 'top'\n }\n overlay={this.handlers.getMirrorOverlay}\n visible={this.mirrorVisible}\n onVisibleChange={this.onTooltipVisibleChange}\n {...tooltipVisibleProps}\n >\n {this.mirrorHitZone}\n </DefaultTooltip>\n )}\n <LollipopPlotNoTooltip\n ref={this.handlers.ref}\n setHitZone={this.handlers.setHitZone}\n onMouseLeave={this.handlers.onMouseLeave}\n onBackgroundMouseMove={this.handlers.onBackgroundMouseMove}\n {...this.props}\n />\n </div>\n );\n }\n}\n","import classNames from 'classnames';\nimport { action, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { ButtonGroup } from 'react-bootstrap';\n\ninterface IAxisScaleSwitchProps {\n onChange: (selectedScale: AxisScale) => void;\n selectedScale: AxisScale;\n}\n\nexport enum AxisScale {\n PERCENT = '%',\n COUNT = '#',\n}\n\n@observer\nexport class AxisScaleSwitch extends React.Component<\n IAxisScaleSwitchProps,\n {}\n> {\n public static defaultProps: Partial<IAxisScaleSwitchProps> = {\n selectedScale: AxisScale.COUNT,\n };\n\n @observable\n private selectedScale: AxisScale;\n\n constructor(props: IAxisScaleSwitchProps) {\n super(props);\n this.selectedScale = props.selectedScale;\n makeObservable(this);\n }\n\n public toggleButton(scale: AxisScale, onClick: () => void) {\n return (\n <button\n className={classNames(\n {\n 'btn-secondary': this.props.selectedScale === scale,\n 'btn-outline-secondary':\n this.props.selectedScale !== scale,\n },\n 'btn',\n 'btn-sm',\n 'btn-axis-switch'\n )}\n data-test={`AxisScaleSwitch${scale}`}\n style={{\n lineHeight: 1,\n cursor:\n this.props.selectedScale === scale\n ? 'default'\n : 'pointer',\n fontWeight:\n this.props.selectedScale === scale\n ? 'bolder'\n : 'normal',\n color:\n this.props.selectedScale === scale ? '#fff' : '#6c757d',\n backgroundColor:\n this.props.selectedScale === scale ? '#6c757d' : '#fff',\n borderColor: '#6c757d',\n }}\n onClick={onClick}\n >\n {scale}\n </button>\n );\n }\n\n public render() {\n return (\n <ButtonGroup aria-label=\"\">\n {this.toggleButton(AxisScale.PERCENT, this.handlePercentClick)}\n {this.toggleButton(AxisScale.COUNT, this.handleCountClick)}\n </ButtonGroup>\n );\n }\n\n @action.bound\n private handlePercentClick() {\n this.selectedScale = AxisScale.PERCENT;\n this.props.onChange(this.selectedScale);\n }\n\n @action.bound\n private handleCountClick() {\n this.selectedScale = AxisScale.COUNT;\n this.props.onChange(this.selectedScale);\n }\n}\n","import { action, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { AxisScale, AxisScaleSwitch } from './AxisScaleSwitch';\n\ninterface IPercentToggleProps {\n axisMode?: AxisScale;\n onScaleToggle?: (selectedScale: AxisScale) => void;\n}\n\nexport class PercentToggle extends React.Component<IPercentToggleProps, {}> {\n constructor(props: IPercentToggleProps) {\n super(props);\n }\n\n public render() {\n return (\n <div\n className=\"small\"\n style={{\n display: 'flex',\n alignItems: 'center',\n marginLeft: 10,\n }}\n >\n <div\n style={{\n marginLeft: 10,\n }}\n >\n <div style={{ textAlign: 'center' }}>Y-Axis:</div>\n <AxisScaleSwitch\n selectedScale={this.props.axisMode}\n onChange={this.props.onScaleToggle}\n />\n </div>\n </div>\n );\n }\n}\n","import { DownloadControls, EditableSpan } from 'cbioportal-frontend-commons';\nimport { numberOfLeadingDecimalZeros } from 'cbioportal-utils';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport * as React from 'react';\nimport Slider from 'react-rangeslider';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { calcYMaxInput } from '../../util/LollipopPlotUtils';\nimport TrackSelector, {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\n\nimport 'react-rangeslider/lib/index.css';\nimport styles from './lollipopMutationPlot.module.scss';\nimport { AxisScale } from './AxisScaleSwitch';\nimport { PercentToggle } from './PercentToggle';\n\ntype LollipopMutationPlotControlsProps = {\n showControls: boolean;\n hugoGeneSymbol: string;\n countRange: [number, number];\n bottomCountRange?: [number, number];\n onYAxisMaxSliderChange: (event: any) => void;\n onYAxisMaxChange: (inputValue: string) => void;\n onBottomYAxisMaxSliderChange?: (event: any) => void;\n onBottomYAxisMaxChange?: (inputValue: string) => void;\n onYMaxInputFocused: () => void;\n onYMaxInputBlurred: () => void;\n onToggleLegend: () => void;\n yMaxSlider: number;\n yMaxSliderStep: number;\n yMaxSliderWidth: number;\n yMaxInput: number;\n yAxisSameScale?: boolean;\n bottomYMaxSlider?: number;\n bottomYMaxSliderStep: number;\n bottomYMaxInput?: number;\n customControls?: JSX.Element;\n filterResetPanel?: JSX.Element;\n tracks?: TrackName[];\n trackVisibility?: TrackVisibility;\n trackDataStatus?: TrackDataStatus;\n showTrackSelector?: boolean;\n showYMaxSlider?: boolean;\n showLegendToggle?: boolean;\n showDownloadControls?: boolean;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n getSVG: () => SVGElement;\n axisMode?: AxisScale;\n onScaleToggle?: (selectedScale: AxisScale) => void;\n showPercentToggle?: boolean;\n};\n\nfunction formatInputValue(value: number, step: number = 1) {\n const decimalZeros = numberOfLeadingDecimalZeros(step);\n const fixed = decimalZeros < 0 ? 0 : decimalZeros + 1;\n\n return value.toFixed(fixed);\n}\n\n@observer\nexport default class LollipopMutationPlotControls extends React.Component<\n LollipopMutationPlotControlsProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<LollipopMutationPlotControlsProps> = {\n showTrackSelector: true,\n showYMaxSlider: true,\n showLegendToggle: true,\n showDownloadControls: true,\n yMaxSliderWidth: 110,\n };\n\n @computed\n get showBottomYAxisSlider() {\n return (\n this.props.bottomCountRange &&\n _.compact(this.props.bottomCountRange).length > 0 &&\n this.props.onBottomYAxisMaxSliderChange &&\n this.props.onBottomYAxisMaxChange &&\n this.props.bottomYMaxSlider &&\n this.props.bottomYMaxInput\n );\n }\n\n protected maxValueSlider(\n countRange: [number, number],\n oppositeCountRange: [number, number],\n onYAxisMaxSliderChange: (event: any) => void,\n onYAxisMaxChange: (inputValue: string) => void,\n yMaxSlider: number,\n yMaxInput: number,\n yAxisSameScale: boolean = false,\n label: string = 'Y-Axis Max',\n width: number = 100,\n yMaxSliderStep: number = 1\n ) {\n return (\n <div\n className=\"small\"\n style={{\n display: 'flex',\n alignItems: 'center',\n marginLeft: 10,\n }}\n >\n <div\n style={{\n width: width,\n marginLeft: 10,\n marginRight: 10,\n }}\n >\n <div style={{ textAlign: 'center' }}>{label}:</div>\n <Slider\n min={yMaxSliderStep}\n max={calcYMaxInput(\n undefined,\n yMaxSliderStep,\n countRange,\n oppositeCountRange,\n yAxisSameScale\n )}\n tooltip={false}\n step={yMaxSliderStep}\n onChange={onYAxisMaxSliderChange}\n value={yMaxSlider}\n />\n </div>\n <EditableSpan\n className={styles['ymax-number-input']}\n value={formatInputValue(yMaxInput, yMaxSliderStep)}\n setValue={onYAxisMaxChange}\n numericOnly={yMaxSliderStep >= 1}\n onFocus={this.props.onYMaxInputFocused}\n onBlur={this.props.onYMaxInputBlurred}\n />\n </div>\n );\n }\n\n protected get yMaxSlider() {\n return this.maxValueSlider(\n this.props.countRange,\n this.props.bottomCountRange!,\n this.props.onYAxisMaxSliderChange,\n this.props.onYAxisMaxChange,\n this.props.yMaxSlider,\n this.props.yMaxInput,\n this.props.yAxisSameScale,\n this.showBottomYAxisSlider ? 'Top Y-Axis Max' : 'Y-Axis Max',\n this.props.yMaxSliderWidth,\n this.props.yMaxSliderStep\n );\n }\n\n protected get bottomYMaxSlider() {\n if (this.showBottomYAxisSlider) {\n return this.maxValueSlider(\n this.props.bottomCountRange!,\n this.props.countRange,\n this.props.onBottomYAxisMaxSliderChange!,\n this.props.onBottomYAxisMaxChange!,\n this.props.bottomYMaxSlider!,\n this.props.bottomYMaxInput!,\n this.props.yAxisSameScale,\n 'Bottom Y-Axis Max',\n this.props.yMaxSliderWidth,\n this.props.bottomYMaxSliderStep\n );\n } else {\n return null;\n }\n }\n\n protected get trackSelector() {\n return (\n <div\n className={classnames('annotation-track-selector', 'small')}\n style={{ width: 180, marginRight: 7 }}\n >\n <TrackSelector\n tracks={this.props.tracks}\n trackVisibility={this.props.trackVisibility}\n trackDataStatus={this.props.trackDataStatus}\n onChange={this.props.onTrackVisibilityChange}\n />\n </div>\n );\n }\n\n protected get legendToggle() {\n return (\n <button\n className=\"btn btn-default btn-xs\"\n onClick={this.props.onToggleLegend}\n style={{ marginRight: 7 }}\n >\n Legend <i className=\"fa fa-eye\" aria-hidden=\"true\" />\n </button>\n );\n }\n\n protected get downloadControls() {\n return (\n <DownloadControls\n getSvg={this.props.getSVG}\n filename={`${this.props.hugoGeneSymbol}_lollipop`}\n dontFade={true}\n type=\"button\"\n />\n );\n }\n\n @computed\n protected get percentToggle() {\n return (\n <PercentToggle\n axisMode={this.props.axisMode}\n onScaleToggle={this.props.onScaleToggle}\n />\n );\n }\n\n public render() {\n return (\n <div\n className={classnames(\n 'lollipop_mutation_plot__controls',\n this.props.showControls\n ? styles['fade-in']\n : styles['fade-out']\n )}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {this.props.trackVisibility &&\n this.props.onTrackVisibilityChange &&\n this.props.showTrackSelector &&\n this.trackSelector}\n {this.props.showYMaxSlider && this.yMaxSlider}\n {this.props.showYMaxSlider && this.bottomYMaxSlider}\n {this.props.showPercentToggle && this.percentToggle}\n {this.props.filterResetPanel}\n {this.props.customControls}\n <div style={{ display: 'flex', marginLeft: 'auto' }}>\n {this.props.showLegendToggle && this.legendToggle}\n {this.props.showDownloadControls &&\n this.downloadControls}\n </div>\n </div>\n {' '}\n </div>\n );\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport enum HotspotFilterValue {\n DefaultHotspot = 'DEFAULT_HOTSPOT',\n}\n\nexport type HotspotFilter = DataFilter<HotspotFilterValue>;\n","import * as React from 'react';\nimport { computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\n\ntype TrackCircleProps = {\n x: number;\n y: number;\n radius?: number;\n isHovered: boolean;\n hoverRadius?: number;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackCircleSpec;\n};\n\nexport type TrackCircleSpec = {\n startCodon: number;\n label?: string;\n color?: string;\n tooltip?: JSX.Element;\n};\n\n@observer\nexport default class TrackCircle extends React.Component<TrackCircleProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n radius: 2.8,\n hoverRadius: 5,\n };\n\n @computed get circleRadius() {\n return this.props.isHovered\n ? this.props.hoverRadius\n : this.props.radius;\n }\n\n public render() {\n return (\n <g>\n <circle\n stroke=\"#BABDB6\"\n strokeWidth=\"0.5\"\n fill={this.props.spec.color}\n r={this.circleRadius}\n cx={this.props.x}\n cy={this.props.y}\n />\n <circle\n className={this.props.hitZoneClassName}\n r={this.props.hoverRadius}\n cx={this.props.x}\n cy={this.props.y}\n cursor=\"pointer\"\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import $ from 'jquery';\n\nexport function truncateDisplayText(\n label: string,\n textElt: SVGTextElement | null,\n width: number\n) {\n // Truncate text if necessary\n if (!textElt) {\n return label;\n }\n\n if (!$(textElt!).is(':visible')) {\n return label;\n }\n\n let substringLength = label.length;\n // Find the number of characters that will fit inside\n while (\n substringLength > 0 &&\n textElt!.getSubStringLength(0, substringLength) > width\n ) {\n substringLength -= 1;\n }\n let displayText = label;\n if (substringLength < label.length) {\n // If we have to do shortening\n substringLength -= 2; // make room for ellipsis \"..\"\n if (substringLength <= 0) {\n // too short to show any string\n displayText = '';\n } else {\n // if it's long enough to show anything at all\n displayText = label.substr(0, substringLength) + '..';\n }\n }\n return displayText;\n}\n","import * as React from 'react';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { truncateDisplayText } from '../../util/LabelUtils';\n\ntype TrackRectProps = {\n x: number;\n y: number;\n width?: number;\n height?: number;\n isHovered: boolean;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackRectSpec;\n};\n\nexport type TrackRectSpec = {\n startCodon: number;\n endCodon?: number;\n label?: string;\n labelColor?: string;\n color?: string;\n tooltip?: JSX.Element;\n};\n\n@observer\nexport default class TrackRect extends React.Component<TrackRectProps, {}> {\n @observable private textElt: SVGTextElement | null = null;\n private handlers: any;\n constructor(props: any) {\n super(props);\n makeObservable(this);\n this.handlers = {\n textRef: action((text: SVGTextElement | null) => {\n this.textElt = text;\n }),\n };\n }\n\n public static defaultProps = {\n width: 50,\n height: 15,\n };\n\n private get centerX() {\n return this.props.x + this.props.width! / 2;\n }\n\n private get centerY() {\n return this.props.y + this.props.height! / 2;\n }\n\n private makeTextElement(reference: boolean) {\n let props: any = {\n x: this.centerX,\n y: this.centerY,\n textAnchor: 'middle',\n dy: '0.3em',\n fill: this.props.spec.labelColor || '#FFFFFF',\n style: {\n fontSize: '12px',\n fontFamily: 'arial',\n },\n };\n const label = this.props.spec.label || '';\n const displayText = truncateDisplayText(\n label,\n this.textElt,\n this.props.width!\n );\n const text = reference ? this.props.spec.labelColor || '' : displayText;\n if (reference) {\n props.ref = this.handlers.textRef;\n props.visibility = 'hidden';\n props.style = { opacity: 0 };\n props.className = this.props.hitZoneClassName;\n }\n return <text {...props}>{text}</text>;\n }\n\n @computed get strokeWidth() {\n return this.props.isHovered ? 2 : 0.5;\n }\n\n @computed get strokeColor() {\n return this.props.isHovered ? '#666666' : '#BABDB6';\n }\n\n public render() {\n return (\n <g>\n <rect\n stroke={this.strokeColor}\n strokeWidth={this.strokeWidth}\n fill={this.props.spec.color}\n width={this.props.width}\n height={this.props.height}\n x={this.props.x}\n y={this.props.y}\n />\n {this.makeTextElement(true)};{this.makeTextElement(false)}\n <rect\n className={this.props.hitZoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import * as React from 'react';\nimport { computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport TrackCircle from './TrackCircle';\nimport TrackRect from './TrackRect';\n\ntype TrackItemProps = {\n x: number;\n y: number;\n dim1: number; // radius or width\n dim2?: number; // height if necessary\n hoverdim1?: number;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackItemSpec;\n};\n\nexport enum TrackItemType {\n CIRCLE,\n RECTANGLE,\n}\n\nexport type TrackItemSpec = {\n startCodon: number;\n endCodon?: number;\n itemType?: TrackItemType;\n label?: string;\n color?: string;\n tooltip?: JSX.Element;\n height?: number;\n};\n\n@observer\nexport default class TrackItem extends React.Component<TrackItemProps> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @observable public isHovered = false;\n\n @computed public get hitRectangle() {\n let hoverWidth;\n let hoverHeight;\n let xOffset;\n if (this.props.spec.itemType === TrackItemType.CIRCLE) {\n hoverHeight =\n this.props.hoverdim1 || TrackCircle.defaultProps.hoverRadius;\n\n hoverWidth =\n this.props.hoverdim1 || TrackCircle.defaultProps.hoverRadius;\n\n xOffset =\n this.props.x - hoverWidth + (this.props.hitZoneXOffset || 0);\n } else {\n hoverHeight = this.props.dim2! / 2;\n\n hoverWidth = this.props.dim1! / 2;\n\n xOffset = this.props.x + (this.props.hitZoneXOffset || 0);\n }\n\n return {\n x: xOffset,\n y: this.props.y,\n width: hoverWidth * 2,\n height: hoverHeight * 2,\n };\n }\n\n public render() {\n if (this.props.spec.itemType === TrackItemType.CIRCLE) {\n return (\n <TrackCircle\n isHovered={this.isHovered}\n radius={this.props.dim1}\n hoverRadius={this.props.hoverdim1}\n {...this.props}\n />\n );\n } else {\n return (\n <TrackRect\n isHovered={this.isHovered}\n width={this.props.dim1}\n height={this.props.dim2}\n {...this.props}\n />\n );\n }\n }\n}\n","import * as React from 'react';\nimport $ from 'jquery';\nimport { observer } from 'mobx-react';\nimport { SyntheticEvent } from 'react';\nimport { action, computed, observable, makeObservable } from 'mobx';\nimport autobind from 'autobind-decorator';\nimport classnames from 'classnames';\n\nimport {\n defaultHitzoneConfig,\n DefaultTooltip,\n getComponentIndex,\n HitZoneConfig,\n initHitZoneFromConfig,\n unhoverAllComponents,\n} from 'cbioportal-frontend-commons';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport DataStore from '../../model/DataStore';\nimport {\n updatePositionSelectionFilters,\n updatePositionRangeHighlightFilters,\n} from '../../util/FilterUtils';\nimport TrackItem, { TrackItemSpec, TrackItemType } from './TrackItem';\nimport styles from './trackStyles.module.scss';\n\nconst DEFAULT_ID_CLASS_PREFIX = 'track-circle-';\nconst DEFAULT_HEIGHT = 15; // height of rectangle element\n\nexport type TrackProps = {\n dataStore: DataStore;\n width: number;\n proteinLength: number;\n trackItems?: TrackItemSpec[];\n trackTitle?: JSX.Element;\n hideBaseline?: boolean;\n xOffset?: number;\n defaultFilters?: DataFilter[];\n idClassPrefix?: string;\n isSubTrack?: boolean;\n};\n\n@observer\nexport default class Track extends React.Component<TrackProps, {}> {\n @observable private hitZoneConfig: HitZoneConfig = defaultHitzoneConfig();\n @observable private shiftPressed = false;\n private tooltipActive = false;\n\n private shapes: { [index: string]: TrackItem };\n\n constructor(props: TrackProps) {\n super(props);\n makeObservable<\n Track,\n | 'hitZoneConfig'\n | 'shiftPressed'\n | 'unhoverAllComponents'\n | 'tooltipVisible'\n | 'hitZone'\n >(this);\n }\n\n @autobind\n setHitZone(\n hitRect: { x: number; y: number; width: number; height: number },\n content?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor: string = 'pointer',\n tooltipPlacement: string = 'top'\n ) {\n this.hitZoneConfig = {\n hitRect,\n content,\n onMouseOver,\n onClick,\n onMouseOut,\n cursor,\n tooltipPlacement,\n };\n }\n\n @autobind\n getOverlay() {\n return this.hitZoneConfig.content;\n }\n\n @autobind\n getOverlayPlacement() {\n return this.hitZoneConfig.tooltipPlacement;\n }\n\n @action.bound\n onMouseLeave() {\n if (this.hitZoneConfig.onMouseOut) {\n this.hitZoneConfig.onMouseOut();\n }\n }\n\n @autobind\n onBackgroundMouseMove() {\n if (this.hitZoneConfig.onMouseOut) {\n this.hitZoneConfig.onMouseOut();\n }\n }\n\n @action.bound\n onBackgroundClick() {\n this.props.dataStore.clearSelectionFilters();\n }\n\n @action.bound\n onTrackItemClick(shapeComponent: TrackItem) {\n if (shapeComponent.props.spec.itemType === TrackItemType.CIRCLE) {\n updatePositionSelectionFilters(\n this.props.dataStore,\n shapeComponent.props.spec.startCodon,\n this.shiftPressed,\n this.props.defaultFilters\n );\n }\n }\n\n @action.bound\n onTrackItemHover(shapeComponent: TrackItem) {\n const endCodon: number = shapeComponent.props.spec.endCodon\n ? Math.trunc(shapeComponent.props.spec.endCodon)\n : Math.trunc(shapeComponent.props.spec.startCodon);\n\n updatePositionRangeHighlightFilters(\n this.props.dataStore,\n Math.trunc(shapeComponent.props.spec.startCodon),\n endCodon,\n this.props.defaultFilters\n );\n shapeComponent.isHovered = true;\n }\n\n @action.bound\n onKeyDown(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = true;\n }\n }\n\n @action.bound\n onKeyUp(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = false;\n }\n }\n\n @action.bound\n onMouseOver(e: SyntheticEvent<any>) {\n // No matter what, unhover all components - if we're hovering one, we'll set it later in this method\n this.unhoverAllComponents();\n\n const target = e.target as SVGElement;\n const className = target.getAttribute('class') || '';\n const componentIndex: number | null = this.getComponentIndex(className);\n\n if (componentIndex !== null) {\n const shapeComponent = this.shapes[componentIndex];\n if (shapeComponent) {\n this.setHitZone(\n shapeComponent.hitRectangle,\n shapeComponent.props.spec.tooltip,\n action(() => this.onTrackItemHover(shapeComponent)),\n action(() => this.onTrackItemClick(shapeComponent)),\n this.onHitzoneMouseOut,\n 'pointer',\n 'bottom'\n );\n }\n }\n }\n\n @action.bound\n onSVGMouseLeave(e: SyntheticEvent<any>) {\n const target = e.target as Element;\n if (target.tagName.toLowerCase() === 'svg') {\n this.onMouseLeave();\n }\n }\n\n @action.bound\n onTooltipVisibleChange(visible: boolean) {\n this.tooltipActive = visible;\n\n if (!visible) {\n this.unhoverAllComponents();\n }\n }\n\n @action.bound\n onHitzoneMouseOut() {\n if (!this.tooltipActive) {\n this.unhoverAllComponents();\n }\n }\n\n get svgHeight() {\n return 10; // height of baseline element\n }\n\n get items() {\n this.shapes = {};\n\n return (this.props.trackItems || []).map((spec, index) => {\n let dim1;\n let dim2;\n let hoverdim1;\n let specFeats;\n let y;\n if (spec.endCodon !== undefined) {\n dim1 =\n ((spec.endCodon! - spec.startCodon) /\n this.props.proteinLength) *\n this.props.width;\n dim2 = spec.height || DEFAULT_HEIGHT;\n hoverdim1 = dim1;\n y = (this.svgHeight - dim2) / 2; // y is the vertical start position of rectangle, half of baseline element height = half of element height + y\n specFeats = {\n ...spec,\n endCodon: spec.endCodon!,\n itemType: TrackItemType.RECTANGLE,\n };\n } else {\n dim1 =\n this.props.dataStore.isPositionSelected(spec.startCodon) ||\n this.props.dataStore.isPositionHighlighted(spec.startCodon)\n ? 5\n : 2.8;\n hoverdim1 = 5;\n y = this.svgHeight / 2;\n dim2 = dim1;\n specFeats = { ...spec, itemType: TrackItemType.CIRCLE };\n }\n return (\n <TrackItem\n ref={(item: TrackItem) => {\n if (item !== null) {\n this.shapes[index] = item;\n }\n }}\n key={spec.startCodon}\n hitZoneClassName={`${this.props.idClassPrefix}${index}`}\n hitZoneXOffset={this.props.xOffset}\n x={\n (spec.startCodon / this.props.proteinLength) *\n this.props.width\n }\n y={y}\n dim1={dim1}\n dim2={dim2}\n spec={specFeats}\n />\n );\n });\n }\n\n @action\n private unhoverAllComponents() {\n unhoverAllComponents(this.shapes);\n this.props.dataStore.clearHighlightFilters();\n }\n\n private getComponentIndex(classes: string): number | null {\n return getComponentIndex(\n classes,\n this.props.idClassPrefix || DEFAULT_ID_CLASS_PREFIX\n );\n }\n\n @computed private get tooltipVisible() {\n return !!this.hitZoneConfig.content;\n }\n\n @computed private get hitZone() {\n return initHitZoneFromConfig(this.hitZoneConfig);\n }\n\n get tooltipVisibleProps() {\n const tooltipVisibleProps: any = {};\n\n if (!this.tooltipVisible) {\n tooltipVisibleProps.visible = false;\n }\n\n return tooltipVisibleProps;\n }\n\n public componentDidMount() {\n // Make it so that if you hold down shift, you can select more than one item at once\n $(document).on('keydown', this.onKeyDown);\n $(document).on('keyup', this.onKeyUp);\n }\n\n componentWillUnmount() {\n $(document).off('keydown', this.onKeyDown as any);\n $(document).off('keyup', this.onKeyUp as any);\n }\n\n public render() {\n return (\n <div\n style={{\n position: 'relative',\n display: 'flex',\n }}\n >\n <span\n className={classnames(\n styles.trackTitle,\n 'small',\n `${this.props.isSubTrack ? 'subtrack-' : ''}trackTitle`\n )}\n >\n {this.props.trackTitle}\n </span>\n <span>\n <DefaultTooltip\n placement={this.getOverlayPlacement()}\n overlay={this.getOverlay}\n onVisibleChange={this.onTooltipVisibleChange}\n destroyTooltipOnHide={true}\n {...this.tooltipVisibleProps}\n >\n {this.hitZone}\n </DefaultTooltip>\n <span\n style={{ marginLeft: this.props.xOffset }}\n onMouseOver={this.onMouseOver}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={this.props.width}\n height={this.svgHeight}\n className=\"track-svgnode\"\n onMouseLeave={this.onSVGMouseLeave}\n style={{ overflow: 'visible' }}\n >\n <rect\n fill=\"#FFFFFF\"\n x={0}\n y={0}\n width={this.props.width}\n height={this.svgHeight}\n onClick={action(this.onBackgroundClick)}\n onMouseMove={this.onBackgroundMouseMove}\n />\n {!this.props.hideBaseline && (\n <line\n stroke=\"#666666\"\n strokeWidth=\"0.5\"\n x1={0}\n x2={this.props.width}\n y1={this.svgHeight / 2}\n y2={this.svgHeight / 2}\n />\n )}\n {this.items}\n </svg>\n </span>\n </span>\n </div>\n );\n }\n}\n","import {\n defaultHotspotFilter,\n filter3dHotspotsByMutations,\n filterLinearClusterHotspotsByMutations,\n IHotspotIndex,\n isHotspot,\n Mutation,\n} from 'cbioportal-utils';\nimport { Hotspot } from 'genome-nexus-ts-api-client';\nimport * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\n\nimport { HotspotFilterValue } from '../../filter/HotspotFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { HotspotInfo } from '../hotspot/HotspotInfo';\nimport Track, { TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\n\nimport hotspotImg from '../../images/cancer-hotspots.svg';\n\ntype HotspotTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n hotspotIndex: IHotspotIndex;\n};\n\nexport function hotspotTooltip(\n mutations: Mutation[],\n hotspotIndex: IHotspotIndex,\n hotspots: Hotspot[]\n) {\n const hotspotsLinearCluster = filterLinearClusterHotspotsByMutations(\n mutations,\n hotspotIndex\n );\n\n const hotspots3d = filter3dHotspotsByMutations(mutations, hotspotIndex);\n\n const hotspotCount = mutations.filter(mutation =>\n isHotspot(mutation, hotspotIndex, defaultHotspotFilter)\n ).length;\n\n // generate custom info\n const residues = _.uniq(hotspots.map(hotspot => hotspot.residue));\n const residuesText = <b>{`${residues.join(', ')}`}</b>;\n const pluralSuffix = residues.length > 1 ? 's' : undefined;\n const residueInfo = (\n <span>\n on residue{pluralSuffix} {residuesText}\n </span>\n );\n\n return (\n <HotspotInfo\n isHotspot={hotspotsLinearCluster.length > 0}\n is3dHotspot={hotspots3d.length > 0}\n count={hotspotCount}\n customInfo={residueInfo}\n />\n );\n}\n\nexport function getHotspotImage() {\n return <img src={hotspotImg} alt=\"Recurrent Hotspot Symbol\" />;\n}\n\n@observer\nexport default class HotspotTrack extends React.Component<\n HotspotTrackProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @computed get hotspotSpecs(): TrackItemSpec[] {\n const filteredHotspotsByProteinPosStart = this.props.store\n .hotspotsByPosition;\n\n if (!_.isEmpty(filteredHotspotsByProteinPosStart)) {\n return _.keys(filteredHotspotsByProteinPosStart)\n .filter(position => Number(position) >= 0)\n .map(position => ({\n startCodon: Number(position),\n color: '#FF9900',\n tooltip: hotspotTooltip(\n this.props.store.mutationsByPosition[Number(position)],\n this.props.store.indexedHotspotData.result || {},\n filteredHotspotsByProteinPosStart[Number(position)]\n ),\n }));\n } else {\n return [];\n }\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginRight: 2 }}>{getHotspotImage()}</span>\n Cancer Hotspots\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n defaultFilters={[\n {\n type: DataFilterType.HOTSPOT,\n values: [HotspotFilterValue.DefaultHotspot],\n },\n ]}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.hotspotSpecs}\n idClassPrefix={'cancer-hotspot-'}\n />\n );\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport enum OncoKbFilterValue {\n Oncogenic = 'ONCOGENIC',\n}\n\nexport type OncoKbFilter = DataFilter<OncoKbFilterValue>;\n","import * as React from 'react';\nimport _ from 'lodash';\n\nimport { Mutation } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\n\nimport { OncoKbSummaryTable, LEVELS } from 'oncokb-frontend-commons';\nimport { makeObservable } from 'mobx';\nimport {\n getTumorTypeName,\n getTumorTypeNameWithExclusionInfo,\n} from 'oncokb-frontend-commons';\n\ntype OncoKbTrackTooltipProps = {\n usingPublicOncoKbInstance: boolean;\n mutations: Mutation[];\n indicatorData?: IndicatorQueryResp[];\n hugoGeneSymbol?: string;\n};\n\nexport function oncoKbTooltip(\n usingPublicOncoKbInstance: boolean,\n indicatorData: IndicatorQueryResp[]\n) {\n const sampleCount = indicatorData.length;\n\n // generate info\n\n const pluralSuffix = sampleCount > 1 ? 's' : undefined;\n const groupedByImplication = _.groupBy(indicatorData, 'oncogenic');\n const oncogenicKeywords = _.keys(groupedByImplication).map(keyword => (\n <b>{keyword}</b>\n ));\n let oncogenicInfo: (JSX.Element | string)[] = [];\n\n if (oncogenicKeywords.length > 1) {\n // join all except the last one with ','\n const joined = oncogenicKeywords\n .slice(0, oncogenicKeywords.length - 1)\n .reduce((prev: JSX.Element, curr: JSX.Element): any => [\n prev,\n ', ',\n curr,\n ]);\n\n oncogenicInfo.push(joined);\n\n // add the last one after \"and\"\n oncogenicInfo.push(' and ');\n oncogenicInfo.push(oncogenicKeywords[oncogenicKeywords.length - 1]);\n } else {\n // use oncogenic keywords array as is\n oncogenicInfo = oncogenicKeywords;\n }\n\n const groupedByProteinChange = _.groupBy(\n indicatorData,\n d => d.query.alteration\n );\n const tableData = _.keys(groupedByProteinChange).map(proteinChange => ({\n count: groupedByProteinChange[proteinChange].length,\n proteinChange: proteinChange,\n clinicalImplication: _.uniq(\n groupedByProteinChange[proteinChange].map(indicator =>\n indicator.oncogenic ? indicator.oncogenic : 'Unknown'\n )\n ),\n biologicalEffect: _.uniq(\n groupedByProteinChange[proteinChange].map(indicator =>\n indicator.mutationEffect && indicator.mutationEffect.knownEffect\n ? indicator.mutationEffect.knownEffect\n : 'Unknown'\n )\n ),\n level: generateLevelData(groupedByProteinChange[proteinChange]),\n }));\n\n // generate the tooltip\n\n return (\n <span>\n <b>{sampleCount}</b> sample{pluralSuffix} with {oncogenicInfo}{' '}\n mutations.\n <OncoKbSummaryTable\n usingPublicOncoKbInstance={usingPublicOncoKbInstance}\n data={tableData}\n />\n </span>\n );\n}\n\nexport function generateLevelData(indicatorData: IndicatorQueryResp[]) {\n const levels: { [level: string]: string[] } = {};\n\n indicatorData.forEach(indicator => {\n indicator.treatments.forEach(treatment => {\n const parts = treatment.level.split('_');\n const level = parts.length === 2 ? parts[1] : treatment.level;\n\n levels[level] = levels[level] || [];\n levels[level].push(\n getTumorTypeNameWithExclusionInfo(\n treatment.levelAssociatedCancerType,\n treatment.levelExcludedCancerTypes\n )\n );\n });\n });\n\n return _.keys(levels)\n .sort((a, b) =>\n LEVELS.all.indexOf(a) > LEVELS.all.indexOf(b) ? -1 : 1\n )\n .map(level => ({ level: level, tumorTypes: _.uniq(levels[level]) }));\n}\n\nexport const OncoKbTrackTooltip: React.FunctionComponent<OncoKbTrackTooltipProps> = props => {\n return props.indicatorData\n ? oncoKbTooltip(props.usingPublicOncoKbInstance, props.indicatorData)\n : null;\n};\n","import * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\n\nimport { OncoKbFilterValue } from '../../filter/OncoKbFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { OncoKbTrackTooltip } from './OncoKbTrackTooltip';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\nimport { Mutation } from 'cbioportal-utils';\n\nimport oncoKbImg from 'oncokb-styles/dist/images/oncogenic.svg';\n\ntype OncoKbTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n};\n\nexport function getOncoKbImage() {\n return <img src={oncoKbImg} alt=\"OncoKB Oncogenic Symbol\" />;\n}\n\n@observer\nexport default class OncoKbTrack extends React.Component<OncoKbTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @computed get oncoKbSpecs(): TrackItemSpec[] {\n const filteredOncoKbDataByProteinPosStart = this.props.store\n .oncoKbDataByPosition;\n\n if (!_.isEmpty(filteredOncoKbDataByProteinPosStart)) {\n return _.keys(filteredOncoKbDataByProteinPosStart)\n .filter(position => Number(position) >= 0)\n .map(position => ({\n startCodon: Number(position),\n color: '#007FFF',\n tooltip: (\n <OncoKbTrackTooltip\n usingPublicOncoKbInstance={\n this.props.store.usingPublicOncoKbInstance\n }\n mutations={\n this.props.store.mutationsByPosition[\n Number(position)\n ]\n }\n indicatorData={\n filteredOncoKbDataByProteinPosStart[\n Number(position)\n ]\n }\n hugoGeneSymbol={\n this.props.store.gene.hugoGeneSymbol\n }\n />\n ),\n }));\n } else {\n return [];\n }\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginRight: 2 }}>{getOncoKbImage()}</span>\n OncoKB™\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n defaultFilters={[\n {\n type: DataFilterType.ONCOKB,\n values: [OncoKbFilterValue.Oncogenic],\n },\n ]}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.oncoKbSpecs}\n idClassPrefix={'onco-kb-'}\n />\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\nimport {\n Mutation,\n ExonDatum,\n extractExonInformation,\n formatExonLocation,\n formatExonLength,\n} from 'cbioportal-utils';\nimport { EnsemblTranscript } from 'genome-nexus-ts-api-client';\n\ntype ExonTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n};\n\n@observer\nexport default class ExonTrack extends React.Component<ExonTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @computed get transcriptId(): string | undefined {\n return this.props.store.activeTranscript?.result;\n }\n\n @computed get transcript(): EnsemblTranscript | undefined {\n return this.transcriptId\n ? this.props.store.transcriptsByTranscriptId[this.transcriptId]\n : undefined;\n }\n\n @computed get chromosome(): string {\n return this.props.store.ensemblTranscriptLookUp.result?.body\n ?.seq_region_name;\n }\n\n @computed get genomeBuild(): string {\n return this.props.store.genomeBuild;\n }\n\n @computed get exonSpecs(): TrackItemSpec[] {\n if (!this.transcriptId || !this.transcript) {\n return [];\n }\n\n const exons = this.transcript!.exons;\n const utrs = this.transcript!.utrs || [];\n\n const exonInfo = exons\n ? extractExonInformation(exons, utrs, this.props.proteinLength)\n : undefined;\n\n const altColors = ['#007FFF', '#35BAF6'];\n\n return exonInfo\n ? exonInfo.map((exon: ExonDatum, index: number) => {\n const startCodon = exon.start;\n const endCodon = exon.start + exon.length;\n const exonStartLocation = formatExonLocation(\n startCodon,\n index\n );\n const exonEndLocation = formatExonLocation(endCodon);\n const exonLength = formatExonLength(exon.length);\n const link = this.chromosome\n ? `https://igv.org/app/?locus=chr${this.chromosome}:${exon.genomicLocationStart}-${exon.genomicLocationEnd}&genome=${this.genomeBuild}`\n : 'https://igv.org';\n const linkText = this.chromosome\n ? `${this.genomeBuild}:chr${this.chromosome}:${exon.genomicLocationStart} - ${exon.genomicLocationEnd}`\n : `${exon.genomicLocationStart} - ${exon.genomicLocationEnd}`;\n return {\n color: altColors[index % 2],\n startCodon: startCodon,\n endCodon: endCodon,\n label: exon.rank.toString(),\n labelColor: '#FFFFFF',\n tooltip: (\n <span>\n <h5> Exon {exon.rank} </h5>\n Start: Nucleotide{' '}\n <strong>\n {exonStartLocation.nucleotideLocation}\n </strong>{' '}\n of amino acid{' '}\n <strong>\n {exonStartLocation.aminoAcidLocation}\n </strong>\n <br></br>\n End: Nucleotide{' '}\n <strong>\n {exonEndLocation.nucleotideLocation}\n </strong>{' '}\n of amino acid{' '}\n <strong>\n {exonEndLocation.aminoAcidLocation}\n </strong>\n <br></br>\n Length:{' '}\n <strong>{exonLength.aminoAcidLength}</strong>{' '}\n amino acids{' '}\n {exonLength.nucleotideLength && (\n <>\n {' '}\n and{' '}\n <strong>\n {exonLength.nucleotideLength}\n </strong>{' '}\n nucleotides\n </>\n )}\n <br></br>\n Genomic location:\n {` `}\n <a\n target=\"_blank\"\n href={link}\n rel=\"noopener noreferrer\"\n >\n <>\n {linkText}\n {` `}\n <i className=\"fa fa-external-link\" />\n </>\n </a>\n </span>\n ),\n };\n })\n : [];\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginLeft: 16 }}></span>\n Exon\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.exonSpecs}\n idClassPrefix={'exon-'}\n />\n );\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Cache } from 'cbioportal-utils';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ReferenceList } from 'oncokb-frontend-commons';\nimport 'oncokb-frontend-commons/dist/styles.css';\n\ntype PtmReferenceListProps = {\n pubmedIds: string[];\n pmidData: Cache;\n};\n\nfunction extractNumericalPart(pmid: string) {\n const matched = pmid.match(/[0-9]+/);\n\n if (matched) {\n return Number(matched[0]);\n } else {\n return undefined;\n }\n}\n\n@observer\nexport default class PtmReferenceList extends React.Component<\n PtmReferenceListProps,\n {}\n> {\n public render() {\n return (\n <DefaultTooltip\n placement=\"right\"\n overlay={\n <div\n style={{\n maxWidth: 400,\n maxHeight: 400,\n overflowY: 'auto',\n }}\n >\n <ReferenceList\n pmids={\n this.props.pubmedIds\n .map(id => extractNumericalPart(id))\n .filter(id => id !== undefined) as number[]\n }\n abstracts={[]}\n />\n </div>\n }\n destroyTooltipOnHide={true}\n >\n <div style={{ textAlign: 'right' }}>\n <i className=\"fa fa-book\" style={{ color: 'black' }} />\n </div>\n </DefaultTooltip>\n );\n }\n}\n","import _ from 'lodash';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport ReactTable, { Column } from 'react-table';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport {\n Cache,\n MobxCache,\n PostTranslationalModification,\n} from 'cbioportal-utils';\n\nimport PtmReferenceList from './PtmReferenceList';\n\nexport type PtmSummaryTableProps = {\n data: PostTranslationalModification[];\n pubMedCache?: MobxCache;\n initialSortColumn?: string;\n initialSortDirection?: 'asc' | 'desc';\n initialItemsPerPage?: number;\n columnOverrides?: { [id: string]: Partial<Column> };\n};\n\nexport enum PtmAnnotationTableColumnId {\n POSITION = 'position',\n TYPE = 'type',\n DESCRIPTION = 'description',\n PUBMED_IDS = 'pubmedIds',\n}\n\nexport const PTM_ANNOTATION_DEFAULT_COLUMNS: { [id: string]: Column } = {\n [PtmAnnotationTableColumnId.POSITION]: {\n id: PtmAnnotationTableColumnId.POSITION,\n accessor: (ptm: PostTranslationalModification) => ptm.residue.start,\n Header: 'Residue',\n Cell: (props: { original: PostTranslationalModification }) => (\n <div style={{ textAlign: 'right' }}>\n {getResidue(props.original)}\n </div>\n ),\n maxWidth: 64,\n },\n [PtmAnnotationTableColumnId.TYPE]: {\n id: PtmAnnotationTableColumnId.TYPE,\n accessor: (ptm: PostTranslationalModification) => ptm.type,\n Header: 'Type',\n minWidth: 100,\n },\n [PtmAnnotationTableColumnId.DESCRIPTION]: {\n id: PtmAnnotationTableColumnId.DESCRIPTION,\n accessor: (ptm: PostTranslationalModification) => ptm.description,\n Header: 'Description',\n minWidth: 180,\n },\n [PtmAnnotationTableColumnId.PUBMED_IDS]: {\n id: PtmAnnotationTableColumnId.PUBMED_IDS,\n Header: '',\n sortable: false,\n maxWidth: 32,\n },\n};\n\nfunction getResidue(ptm: PostTranslationalModification): string {\n if (ptm.residue.end && ptm.residue.end > ptm.residue.start) {\n return `${ptm.residue.start}-${ptm.residue.end}`;\n } else {\n return ptm.residue.start.toString();\n }\n}\n\n@observer\nexport default class PtmAnnotationTable extends React.Component<\n PtmSummaryTableProps\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n data: [],\n initialSortColumn: 'type',\n initialSortDirection: 'asc',\n initialItemsPerPage: 10,\n };\n\n @computed\n get pmidData(): Cache {\n if (this.props.pubMedCache) {\n this.props.data.forEach(ptm =>\n (ptm.pubmedIds || []).forEach(id =>\n this.props.pubMedCache!.get(Number(id))\n )\n );\n }\n\n return (this.props.pubMedCache && this.props.pubMedCache.cache) || {};\n }\n\n @computed\n get columns(): Column[] {\n const columnOverrides = this.props.columnOverrides\n ? this.props.columnOverrides\n : {};\n return [\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.POSITION\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.POSITION],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.TYPE\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.TYPE],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.DESCRIPTION\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.DESCRIPTION],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.PUBMED_IDS\n ],\n Cell: this.pubmedCellRender,\n ...columnOverrides[PtmAnnotationTableColumnId.PUBMED_IDS],\n },\n ];\n }\n\n @computed\n public get pubmedCellRender() {\n let cellRenderFn: (props: {\n original: PostTranslationalModification;\n }) => JSX.Element | null;\n\n // we need to observe the observable this.pmidData here to trigger a new render cycle,\n // observing it inside the cellRenderFn does not work because it is handled by the table library\n if (!this.props.pubMedCache) {\n cellRenderFn = () => null;\n } else if (!_.isEmpty(this.pmidData)) {\n cellRenderFn = (props: {\n original: PostTranslationalModification;\n }) =>\n !_.isEmpty(props.original.pubmedIds) ? (\n <PtmReferenceList\n pmidData={this.pmidData}\n pubmedIds={props.original.pubmedIds || []}\n />\n ) : null;\n } else {\n cellRenderFn = (props: {\n original: PostTranslationalModification;\n }) =>\n !_.isEmpty(props.original.pubmedIds) ? (\n <i className=\"fa fa-spinner fa-pulse\" />\n ) : null;\n }\n\n return cellRenderFn;\n }\n\n public render() {\n const {\n data,\n initialSortColumn,\n initialSortDirection,\n initialItemsPerPage,\n } = this.props;\n\n const showPagination =\n data.length >\n (this.props.initialItemsPerPage ||\n PtmAnnotationTable.defaultProps.initialItemsPerPage);\n\n return (\n <div\n className={classnames(\n 'cbioportal-frontend',\n 'default-track-tooltip-table'\n )}\n >\n <ReactTable\n data={data}\n columns={this.columns}\n defaultSorted={[\n {\n id:\n initialSortColumn ||\n PtmAnnotationTable.defaultProps\n .initialSortColumn,\n desc: initialSortDirection === 'desc',\n },\n ]}\n defaultPageSize={\n data.length > initialItemsPerPage!\n ? initialItemsPerPage\n : data.length\n }\n showPagination={showPagination}\n showPaginationTop={true}\n showPaginationBottom={false}\n className=\"-striped -highlight\"\n previousText=\"<\"\n nextText=\">\"\n />\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { Collapse } from 'react-collapse';\nimport { Column } from 'react-table';\nimport {\n DefaultTooltip,\n EllipsisTextTooltip,\n} from 'cbioportal-frontend-commons';\nimport {\n compareByPtmTypePriority,\n ptmColor,\n MobxCache,\n Mutation,\n PostTranslationalModification,\n} from 'cbioportal-utils';\n\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport PtmAnnotationTable from '../ptm/PtmAnnotationTable';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\n\nimport styles from './ptmTrackStyles.module.scss';\n\ntype PtmTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n pubMedCache?: MobxCache;\n ensemblTranscriptId?: string;\n subTrackMargin?: number;\n dataSource?: string;\n dataSourceUrl?: string;\n ptmTooltipColumnOverrides?: { [id: string]: Partial<Column> };\n collapsed?: boolean;\n};\n\nexport const PtmTooltip: React.FunctionComponent<{\n ptms: PostTranslationalModification[];\n pubMedCache?: MobxCache;\n columnOverrides?: { [id: string]: Partial<Column> };\n}> = props => {\n return (\n <PtmAnnotationTable\n data={props.ptms}\n pubMedCache={props.pubMedCache}\n columnOverrides={props.columnOverrides}\n />\n );\n};\n\nexport function ptmInfoTooltip(\n transcriptId?: string,\n dataSource?: string,\n dataSourceUrl?: string\n) {\n let dataSourceDiv = null;\n\n if (dataSource) {\n dataSourceDiv = (\n <div>\n Data Source:{' '}\n {dataSourceUrl ? (\n <a href={dataSourceUrl} target=\"_blank\">\n {dataSource}\n </a>\n ) : (\n dataSource\n )}\n </div>\n );\n }\n\n return (\n <div style={{ maxWidth: 400 }}>\n <p>\n Displays all Post Translational Modifications (PTMs) available\n {transcriptId && (\n <span> for the Ensembl transcript {transcriptId}</span>\n )}\n .\n </p>\n <p className={styles.ptmLegend}>\n PTM types and corresponding color codes are as follows:\n <ul>\n <li className={styles.Phosphorylation}>\n <strong>Phosphorylation</strong>\n </li>\n <li className={styles.Acetylation}>\n <strong>Acetylation</strong>\n </li>\n <li className={styles.Ubiquitination}>\n <strong>Ubiquitination</strong>\n </li>\n <li className={styles.Methylation}>\n <strong>Methylation</strong>\n </li>\n <li className={styles.multiType}>\n <strong>Multiple Type</strong>: Sites with more than one\n PTM type\n </li>\n <li className={styles.default}>\n <strong>Other</strong>: All other PTM types\n </li>\n </ul>\n </p>\n {dataSourceDiv}\n </div>\n );\n}\n\nfunction filterPtmsBySource(\n ptms: PostTranslationalModification[],\n source?: string\n): PostTranslationalModification[] {\n return source ? ptms.filter(ptm => ptm.source === source) : ptms;\n}\n\n@observer\nexport default class PtmTrack extends React.Component<PtmTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n subTrackMargin: 25,\n };\n\n @observable\n private expanded = !this.props.collapsed;\n\n @computed get ptmSpecs(): TrackItemSpec[] {\n const ptmDataByProteinPosStart = this.props.store\n .ptmDataByProteinPosStart.result;\n\n if (ptmDataByProteinPosStart && !_.isEmpty(ptmDataByProteinPosStart)) {\n return _.reduce(\n ptmDataByProteinPosStart,\n this.ptmDataToTrackItemSpecsReducer,\n []\n );\n } else {\n return [];\n }\n }\n\n @computed get ptmSubSpecs(): { title: string; specs: TrackItemSpec[] }[] {\n const ptmDataByTypeAndProteinPosStart = this.props.store\n .ptmDataByTypeAndProteinPosStart.result;\n\n if (\n ptmDataByTypeAndProteinPosStart &&\n !_.isEmpty(ptmDataByTypeAndProteinPosStart)\n ) {\n return _.keys(ptmDataByTypeAndProteinPosStart)\n .sort(compareByPtmTypePriority)\n .map(type => ({\n title: type,\n specs: _.reduce(\n ptmDataByTypeAndProteinPosStart[type],\n this.ptmDataToTrackItemSpecsReducer,\n []\n ),\n }))\n .filter(s => !_.isEmpty(s.specs));\n } else {\n return [];\n }\n }\n\n @computed get mainTrackTitle() {\n return (\n <span style={{ cursor: 'pointer' }}>\n <span onClick={this.handleToggleExpand}>{this.expander}</span>\n <DefaultTooltip\n placement=\"left\"\n overlay={() =>\n ptmInfoTooltip(\n this.props.ensemblTranscriptId,\n this.props.dataSource,\n this.props.dataSourceUrl\n )\n }\n destroyTooltipOnHide={true}\n >\n <span\n style={{ marginLeft: 4 }}\n onClick={this.handleToggleExpand}\n >\n PTM{' '}\n {this.props.dataSource\n ? `(${this.props.dataSource})`\n : 'Sites'}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n </DefaultTooltip>\n </span>\n );\n }\n\n @computed get expander(): JSX.Element | null {\n const className = this.hasSubTracks\n ? this.mainTrackHidden\n ? 'fa fa-caret-down'\n : 'fa fa-caret-right'\n : null;\n\n if (className) {\n return (\n <i className={className} style={{ width: 10, marginLeft: 2 }} />\n );\n }\n\n return null;\n }\n\n @computed get subTrackMargin() {\n return (\n this.props.subTrackMargin || PtmTrack.defaultProps.subTrackMargin\n );\n }\n\n @computed get subTrackTitleWidth() {\n return this.props.xOffset\n ? this.props.xOffset - this.subTrackMargin\n : 0;\n }\n\n @computed get subTracks() {\n return this.hasSubTracks\n ? this.ptmSubSpecs.map((item, index) => (\n <Track\n key={item.title}\n dataStore={this.props.dataStore}\n xOffset={this.props.xOffset}\n trackTitle={\n <span\n style={{\n marginLeft: this.subTrackMargin,\n width: this.subTrackTitleWidth,\n display: 'flex',\n }}\n >\n <EllipsisTextTooltip\n text={item.title}\n style={{\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n />\n </span>\n }\n width={this.props.width}\n proteinLength={this.props.proteinLength}\n trackItems={item.specs}\n idClassPrefix={`ptm-${index}-`}\n isSubTrack={true}\n />\n ))\n : null;\n }\n\n @computed get mainTrackHidden() {\n return this.expanded && this.hasSubTracks;\n }\n\n @computed get hasSubTracks() {\n return this.ptmSubSpecs.length > 0;\n }\n\n public render() {\n return (\n <span>\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.mainTrackTitle}\n trackItems={this.mainTrackHidden ? [] : this.ptmSpecs}\n hideBaseline={this.mainTrackHidden}\n idClassPrefix={'ptm-'}\n />\n <Collapse isOpened={this.mainTrackHidden}>\n <span>{this.subTracks}</span>\n </Collapse>\n </span>\n );\n }\n\n private ptmDataToTrackItemSpecsReducer = (\n acc: TrackItemSpec[],\n ptmData: PostTranslationalModification[],\n position: string\n ): TrackItemSpec[] => {\n const ptms =\n Number(position) >= 0\n ? filterPtmsBySource(ptmData, this.props.dataSource)\n : [];\n\n if (!_.isEmpty(ptms)) {\n acc.push({\n startCodon: Number(position),\n color: ptmColor(ptms),\n tooltip: (\n <PtmTooltip\n ptms={ptms}\n pubMedCache={this.props.pubMedCache}\n columnOverrides={this.props.ptmTooltipColumnOverrides}\n />\n ),\n });\n }\n\n return acc;\n };\n\n @action.bound\n private handleToggleExpand() {\n this.expanded = !this.expanded;\n }\n}\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable, observable } from 'mobx';\n\nimport { default as Track, TrackProps } from './Track';\nimport { Collapse } from 'react-collapse';\nimport { TrackItemSpec } from './TrackItem';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport {\n Mutation,\n UniprotTopology,\n UniprotTopologyTypeToTitle,\n UniprotTopologyTrackToColor,\n} from 'cbioportal-utils';\n\nimport {\n DefaultTooltip,\n EllipsisTextTooltip,\n} from 'cbioportal-frontend-commons';\n\ntype UniprotTopologyTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n subTrackMargin?: number;\n collapsed?: boolean;\n};\n\nfunction topologyRectangleBlockSpec(\n color: string,\n title: string,\n uniprotData: UniprotTopology\n) {\n return {\n color: color,\n startCodon: uniprotData.startPosition,\n endCodon: uniprotData.endPosition,\n tooltip: (\n <span>\n <h5>{title}</h5>\n Start: {uniprotData.startPosition}\n <br></br>\n End: {uniprotData.endPosition}\n <br></br>\n Length: {uniprotData.endPosition - uniprotData.startPosition}\n <br></br>\n Description: {uniprotData.description}\n </span>\n ),\n };\n}\n\nexport const UniprotTopologyTrackDescriptionTooltip: React.FunctionComponent<{\n displayList: string[];\n uniprotId?: string;\n}> = props => {\n const dataSourceDiv = props.uniprotId ? (\n <div>\n Data Source:{' '}\n <a\n href={`https://www.uniprot.org/uniprot/${props.uniprotId}`}\n target=\"_blank\"\n >\n UniProt\n </a>\n </div>\n ) : (\n <div>\n Data Source:{' '}\n <a href={'https://www.uniprot.org/'} target=\"_blank\">\n UniProt\n </a>\n </div>\n );\n return (\n <div style={{ maxWidth: 400 }}>\n <p>\n Information of the subcellular location of the mature protein.\n </p>\n {props.displayList.length > 0 && (\n <p>\n Domains and corresponding color codes are as follows:\n <ul>\n {_.map(props.displayList, type => (\n <li\n style={{\n color: UniprotTopologyTrackToColor[type],\n }}\n >\n <strong>\n {UniprotTopologyTypeToTitle[type]}\n </strong>\n </li>\n ))}\n </ul>\n </p>\n )}\n {dataSourceDiv}\n </div>\n );\n};\n\n@observer\nexport default class UniprotTopologyTrack extends React.Component<\n UniprotTopologyTrackProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n subTrackMargin: 25,\n };\n\n @observable\n private expanded = !this.props.collapsed;\n\n @computed get subTrackMargin() {\n return (\n this.props.subTrackMargin ||\n UniprotTopologyTrack.defaultProps.subTrackMargin\n );\n }\n\n @computed get subTrackTitleWidth() {\n return this.props.xOffset\n ? this.props.xOffset - this.subTrackMargin\n : 0;\n }\n\n @computed get uniprotTopologySpecs(): TrackItemSpec[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n if (uniprotData && !_.isEmpty(uniprotData)) {\n return _.reduce(\n uniprotData,\n this.uniprotDataToTrackItemSpecsReducer,\n []\n );\n } else {\n return [];\n }\n }\n\n @computed get expander(): JSX.Element | null {\n const className = this.hasSubTracks\n ? this.mainTrackHidden\n ? 'fa fa-caret-down'\n : 'fa fa-caret-right'\n : null;\n\n if (className) {\n return (\n <i className={className} style={{ width: 10, marginLeft: 2 }} />\n );\n }\n return null;\n }\n\n @computed get mainTrackTitle() {\n return (\n <span style={{ cursor: 'pointer' }}>\n <span onClick={this.handleToggleExpand}>{this.expander}</span>\n <DefaultTooltip\n placement=\"right\"\n overlay={\n <UniprotTopologyTrackDescriptionTooltip\n displayList={this.uniprotTopologyTypes}\n uniprotId={this.props.store.uniprotId.result}\n />\n }\n destroyTooltipOnHide={true}\n >\n <span\n style={{ marginLeft: 4 }}\n onClick={this.handleToggleExpand}\n >\n Topology <i className=\"fa fa-info-circle\" />\n </span>\n </DefaultTooltip>\n </span>\n );\n }\n\n @computed get uniprotTopologyTypes(): string[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n const uniprotDataByType = _.uniq(_.map(uniprotData, data => data.type));\n return uniprotDataByType || [];\n }\n\n @computed get uniprotTopologySubSpecs(): {\n title: string;\n specs: TrackItemSpec[];\n }[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n const uniprotDataByType = _.groupBy(uniprotData, data => data.type);\n return _.keys(uniprotDataByType)\n .map(type => ({\n title: UniprotTopologyTypeToTitle[type],\n specs: _.reduce(\n uniprotDataByType[type],\n this.uniprotDataToTrackItemSpecsReducer,\n []\n ),\n }))\n .filter(s => !_.isEmpty(s.specs));\n }\n\n private uniprotDataToTrackItemSpecsReducer = (\n acc: TrackItemSpec[],\n uniprotData: UniprotTopology\n ): TrackItemSpec[] => {\n const trackColor = UniprotTopologyTrackToColor[uniprotData.type];\n const trackTitle = UniprotTopologyTypeToTitle[uniprotData.type];\n\n if (trackTitle && trackColor) {\n acc.push(\n topologyRectangleBlockSpec(trackColor, trackTitle, uniprotData)\n );\n }\n return acc;\n };\n\n @computed get mainTrackHidden() {\n return this.expanded && this.hasSubTracks;\n }\n\n @computed get hasSubTracks() {\n return this.uniprotTopologySubSpecs.length > 0;\n }\n\n @computed get subTracks() {\n return this.hasSubTracks\n ? this.uniprotTopologySubSpecs.map((item, index) => (\n <Track\n key={item.title}\n dataStore={this.props.dataStore}\n xOffset={this.props.xOffset}\n trackTitle={\n <span\n style={{\n marginLeft: this.subTrackMargin,\n width: this.subTrackTitleWidth,\n display: 'flex',\n }}\n >\n <EllipsisTextTooltip\n text={item.title}\n style={{\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n />\n </span>\n }\n width={this.props.width}\n proteinLength={this.props.proteinLength}\n trackItems={item.specs}\n idClassPrefix={`uniprot-topology-${index}-`}\n isSubTrack={true}\n />\n ))\n : null;\n }\n\n public render() {\n return (\n <span>\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.mainTrackTitle}\n trackItems={\n this.mainTrackHidden ? [] : this.uniprotTopologySpecs\n }\n hideBaseline={this.mainTrackHidden}\n idClassPrefix={'uniprot-topology-track-'}\n />\n <Collapse isOpened={this.mainTrackHidden}>\n <span>{this.subTracks}</span>\n </Collapse>\n </span>\n );\n }\n\n @action.bound\n private handleToggleExpand() {\n this.expanded = !this.expanded;\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\nimport {\n MobxCache,\n Mutation,\n PTM_SOURCE_URL,\n PtmSource,\n} from 'cbioportal-utils';\n\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { TrackName, TrackVisibility } from './TrackSelector';\nimport HotspotTrack from './HotspotTrack';\nimport OncoKbTrack from './OncoKbTrack';\nimport ExonTrack from './ExonTrack';\nimport PtmTrack from './PtmTrack';\n\nimport './defaultTrackTooltipTable.scss';\nimport { PtmAnnotationTableColumnId } from '../ptm/PtmAnnotationTable';\nimport UniprotTopologyTrack from './UniprotTopologyTrack';\n\ntype TrackPanelProps = {\n store: MutationMapperStore<Mutation>;\n pubMedCache?: MobxCache;\n geneWidth: number;\n proteinLength?: number;\n geneXOffset?: number;\n maxHeight?: number;\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\n@observer\nexport default class TrackPanel extends React.Component<TrackPanelProps, {}> {\n public static defaultProps: Partial<TrackPanelProps> = {\n tracks: [\n TrackName.CancerHotspots,\n TrackName.OncoKB,\n TrackName.dbPTM,\n TrackName.Exon,\n TrackName.UniprotTopology,\n ],\n };\n\n constructor(props: TrackPanelProps) {\n super(props);\n makeObservable(this);\n }\n\n @computed get proteinLength() {\n const proteinLength = this.props.proteinLength || 0;\n return Math.max(proteinLength, 1);\n }\n\n get availableTracks(): { [trackName: string]: JSX.Element | null } {\n return {\n [TrackName.CancerHotspots]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.CancerHotspots] ===\n 'visible' ? (\n <HotspotTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n hotspotIndex={\n this.props.store.indexedHotspotData.result || {}\n }\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.OncoKB]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.OncoKB] === 'visible' ? (\n <OncoKbTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.dbPTM]: this.getPtmTrack(\n TrackName.dbPTM,\n PtmSource.dbPTM\n ),\n [TrackName.UniprotPTM]: this.getPtmTrack(\n TrackName.UniprotPTM,\n PtmSource.Uniprot\n ),\n [TrackName.Exon]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.Exon] === 'visible' ? (\n <ExonTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.UniprotTopology]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.UniprotTopology] ===\n 'visible' ? (\n <UniprotTopologyTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n collapsed={this.props.collapseUniprotTopologyTrack}\n />\n ) : null,\n };\n }\n\n public render() {\n return (\n <div\n style={{\n overflowY: 'hidden',\n maxHeight: this.props.maxHeight,\n position: 'relative',\n }}\n data-test=\"AnnotationTracks\"\n >\n {this.props\n .tracks!.map(t => this.availableTracks[t])\n .filter(e => e !== undefined && e !== null)}\n </div>\n );\n }\n\n private getPtmTrack(trackName: TrackName, ptmSource: PtmSource) {\n return !this.props.trackVisibility ||\n this.props.trackVisibility[trackName] === 'visible' ? (\n <PtmTrack\n store={this.props.store}\n pubMedCache={this.props.pubMedCache}\n ensemblTranscriptId={this.props.store.activeTranscript?.result}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n dataSource={ptmSource}\n dataSourceUrl={PTM_SOURCE_URL[ptmSource]}\n ptmTooltipColumnOverrides={this.getPtmTooltipColumnOverrides(\n ptmSource\n )}\n collapsed={this.props.collapsePtmTrack}\n />\n ) : null;\n }\n\n private getPtmTooltipColumnOverrides(ptmSource: PtmSource) {\n if (ptmSource === PtmSource.dbPTM) {\n // hide description column for dbPTM, we don't have description data.\n return {\n [PtmAnnotationTableColumnId.DESCRIPTION]: {\n show: false,\n },\n };\n } else {\n return undefined;\n }\n }\n}\n","import { PfamDomain, PfamDomainRange } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MobxCache } from 'cbioportal-utils';\n\nexport interface IDomainTooltipProps {\n mutationAlignerCache?: MobxCache<string>;\n range: PfamDomainRange;\n domain: PfamDomain | undefined;\n pfamDomainId: string;\n}\n\ninterface IMutationAlignerLinkProps {\n mutationAlignerCache?: MobxCache<string>;\n pfamAccession: string;\n}\n\nconst MutationAlignerLink = observer((props: IMutationAlignerLinkProps) => {\n function getMutationAlignerCacheData(pfamAccession: string) {\n return props.mutationAlignerCache && props.mutationAlignerCache.cache\n ? props.mutationAlignerCache.cache[pfamAccession]\n : null;\n }\n\n if (props.mutationAlignerCache) {\n props.mutationAlignerCache.get(props.pfamAccession);\n }\n\n const mutationAlignerCacheData = getMutationAlignerCacheData(\n props.pfamAccession\n );\n\n return mutationAlignerCacheData &&\n mutationAlignerCacheData.status === 'complete' &&\n mutationAlignerCacheData.data ? (\n <a href={mutationAlignerCacheData.data} target=\"_blank\">\n Mutation Aligner\n </a>\n ) : null;\n});\n\nconst DomainTooltip = (props: IDomainTooltipProps) => {\n const { range, domain, pfamDomainId } = props;\n\n const pfamAccession = domain ? domain.pfamAccession : pfamDomainId;\n\n // if no domain info, then just display the accession\n const domainInfo = domain\n ? `${domain.name}: ${domain.description}`\n : pfamAccession;\n\n return (\n <div style={{ maxWidth: 200 }}>\n <div>\n {domainInfo} ({range.pfamDomainStart} - {range.pfamDomainEnd})\n </div>\n <div>\n <a\n style={{ marginRight: '5px' }}\n href={`http://pfam.xfam.org/family/${pfamAccession}`}\n target=\"_blank\"\n >\n PFAM\n </a>\n <MutationAlignerLink\n mutationAlignerCache={props.mutationAlignerCache}\n pfamAccession={pfamAccession}\n />\n </div>\n </div>\n );\n};\n\nexport default DomainTooltip;\n","import autobind from 'autobind-decorator';\nimport { MobxCache, Mutation } from 'cbioportal-utils';\nimport { PfamDomain, PfamDomainRange } from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport { action, computed, observable, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { Collapse } from 'react-collapse';\n\nimport $ from 'jquery';\n\nimport { DomainSpec } from '../../model/DomainSpec';\nimport { LollipopPlotControlsConfig } from '../../model/LollipopPlotControlsConfig';\nimport {\n LollipopLabel,\n LollipopPlacement,\n LollipopSpec,\n} from '../../model/LollipopSpec';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport { SequenceSpec } from '../../model/SequenceSpec';\nimport { DefaultLollipopPlotControlsConfig } from '../../store/DefaultLollipopPlotControlsConfig';\nimport {\n byMiddlemostPosition,\n byMutationCount,\n byWhetherExistsInADomain,\n calcCountRange,\n calcYMaxInput,\n getYAxisMaxInputValue,\n lollipopLabelText,\n lollipopLabelTextAnchor,\n} from '../../util/LollipopPlotUtils';\nimport {\n DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n getColorForProteinImpactType,\n} from '../../util/MutationTypeUtils';\nimport { generatePfamDomainColorMap } from '../../util/PfamUtils';\nimport { initDefaultTrackVisibility } from '../../util/TrackUtils';\nimport DefaultLollipopPlotLegend from './DefaultLollipopPlotLegend';\nimport LollipopPlot from '../lollipopPlot/LollipopPlot';\nimport LollipopMutationPlotControls from './LollipopMutationPlotControls';\nimport {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\nimport TrackPanel from '../track/TrackPanel';\n\nimport './lollipopMutationPlot.scss';\nimport DomainTooltip from '../lollipopPlot/DomainTooltip';\nimport { AxisScale } from './AxisScaleSwitch';\n\nconst DEFAULT_PROTEIN_LENGTH = 10;\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nfunction createTextTag(\n textNode?: Text,\n style: string = '',\n x: number = 0,\n y: number = 0\n) {\n const text = (document.createElementNS(\n SVG_NS,\n 'text'\n ) as unknown) as SVGTextElement;\n $(text).attr({ style, x, y });\n if (textNode) {\n text.append(textNode);\n }\n return text;\n}\n\nfunction createGroupTag(transform?: string) {\n const group = (document.createElementNS(\n SVG_NS,\n 'g'\n ) as unknown) as SVGGElement;\n group.setAttribute('transform', transform || '');\n return group;\n}\n\nexport type LollipopMutationPlotProps<T extends Mutation> = {\n store: MutationMapperStore<T>;\n controlsConfig?: LollipopPlotControlsConfig;\n pubMedCache?: MobxCache;\n mutationAlignerCache?: MobxCache<string>;\n getLollipopColor?: (mutations: Partial<T>[]) => string;\n isPutativeDriver?: (mutation: Partial<T>) => boolean;\n getMutationCount?: (mutation: Partial<T>) => number;\n topYAxisSymbol?: string;\n bottomYAxisSymbol?: string;\n topYAxisDefaultMax?: number;\n topYAxisDefaultMin?: number;\n yMaxFractionDigits?: number;\n yMaxLabelPostfix?: string;\n showYAxis?: boolean;\n yAxisSameScale?: boolean;\n bottomYAxisDefaultMax?: number;\n bottomYAxisDefaultMin?: number;\n yAxisLabelPadding?: number;\n lollipopTooltipCountInfo?: (\n count: number,\n mutations?: Partial<T>[],\n axisMode?: AxisScale,\n group?: string\n ) => JSX.Element;\n yAxisLabelFormatter?: (symbol?: string, groupName?: string) => string;\n axisMode?: AxisScale;\n onScaleToggle?: (selectedScale: AxisScale) => void;\n customControls?: JSX.Element;\n onXAxisOffset?: (offset: number) => void;\n geneWidth: number;\n vizHeight?: number;\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n trackDataStatus?: TrackDataStatus;\n showTrackSelector?: boolean;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n autoHideControls?: boolean;\n showYMaxSlider?: boolean;\n showLegendToggle?: boolean;\n showDownloadControls?: boolean;\n showPercentToggle?: boolean;\n filterResetPanel?: JSX.Element;\n legend?: JSX.Element;\n loadingIndicator?: JSX.Element;\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\n@observer\nexport default class LollipopMutationPlot<\n T extends Mutation\n> extends React.Component<LollipopMutationPlotProps<T>, {}> {\n public static defaultProps: Partial<LollipopMutationPlotProps<any>> = {\n yMaxFractionDigits: 1,\n yAxisSameScale: true,\n };\n\n @observable private mouseInPlot: boolean = true;\n @observable private yMaxInputFocused: boolean = false;\n @observable private geneXOffset: number;\n @observable\n private _trackVisibility: TrackVisibility = initDefaultTrackVisibility();\n\n private _controlsConfig: LollipopPlotControlsConfig = new DefaultLollipopPlotControlsConfig();\n\n private handlers: any;\n private divContainer: HTMLDivElement;\n\n @computed private get showControls(): boolean {\n return this.props.autoHideControls\n ? this.yMaxInputFocused || this.mouseInPlot\n : true;\n }\n\n @computed private get trackVisibility(): TrackVisibility {\n return this.props.trackVisibility || this._trackVisibility;\n }\n\n @computed private get controlsConfig(): LollipopPlotControlsConfig {\n return this.props.controlsConfig || this._controlsConfig;\n }\n\n private lollipopTooltip(\n mutationsAtPosition: T[],\n countsByPosition: { [pos: number]: number },\n group?: string\n ): JSX.Element {\n const codon = mutationsAtPosition[0].proteinPosStart;\n const count = countsByPosition[codon];\n const countInfo = this.props.lollipopTooltipCountInfo ? (\n this.props.lollipopTooltipCountInfo(\n count,\n mutationsAtPosition,\n this.props.axisMode,\n group\n )\n ) : (\n <strong>\n {count} mutation{`${count !== 1 ? 's' : ''}`}\n </strong>\n );\n const label = lollipopLabelText(mutationsAtPosition);\n\n return (\n <div data-test={`tooltip-${codon}${group ? `-${group}` : ''}`}>\n {countInfo}\n <br />\n <span>AA Change: {label}</span>\n </div>\n );\n }\n\n @computed\n protected get groups(): string[] | undefined {\n if (this.props.store.groupedMutationsByPosition.length > 0) {\n return this.props.store.groupedMutationsByPosition.map(\n g => g.group\n );\n } else {\n return undefined;\n }\n }\n\n @computed\n protected get lollipops(): LollipopSpec[] {\n let lollipops: LollipopSpec[] = [];\n\n // ignore grouped mutations with less than 2 groups\n // also ignore other groups except first and second\n if (this.props.store.groupedMutationsByPosition.length > 1) {\n const groupTop = this.props.store.groupedMutationsByPosition[0]\n .group;\n const mutationsTop = this.props.store.groupedMutationsByPosition[0]\n .mutations;\n const countsTop = this.props.store\n .uniqueGroupedMutationCountsByPosition[0].counts;\n lollipops = this.getLollipopSpecs(\n mutationsTop,\n countsTop,\n groupTop,\n LollipopPlacement.TOP\n );\n\n const groupBottom = this.props.store.groupedMutationsByPosition[1]\n .group;\n const mutationsBottom = this.props.store\n .groupedMutationsByPosition[1].mutations;\n const countsBottom = this.props.store\n .uniqueGroupedMutationCountsByPosition[1].counts;\n lollipops = lollipops.concat(\n this.getLollipopSpecs(\n mutationsBottom,\n countsBottom,\n groupBottom,\n LollipopPlacement.BOTTOM\n )\n );\n } else if (\n Object.keys(this.props.store.mutationsByPosition).length > 0\n ) {\n return this.getLollipopSpecs(\n this.props.store.mutationsByPosition,\n this.props.store.uniqueMutationCountsByPosition\n );\n }\n\n return lollipops;\n }\n\n protected getLollipopSpecs(\n mutationsByPosition: { [pos: number]: T[] },\n countsByPosition: { [pos: number]: number },\n group?: string,\n placement?: LollipopPlacement\n ): LollipopSpec[] {\n // positionMutations: Mutation[][], in descending order of mutation count\n const positionMutations = Object.keys(mutationsByPosition)\n .map(position => mutationsByPosition[parseInt(position, 10)])\n .sort((x, y) =>\n countsByPosition[x[0].proteinPosStart] <\n countsByPosition[y[0].proteinPosStart]\n ? 1\n : -1\n );\n\n const specs: LollipopSpec[] = this.createInitialSpecs(\n positionMutations,\n countsByPosition,\n group,\n placement\n );\n const noLabelsAreShown =\n !_.isEmpty(specs) && specs.every(spec => !spec.label!.show);\n if (noLabelsAreShown) {\n this.labelOneLollipopByDefault(\n this.getRemainingDomains(positionMutations),\n specs\n );\n }\n\n return specs;\n }\n\n private createInitialSpecs(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number },\n group?: string,\n placement?: LollipopPlacement\n ): LollipopSpec[] {\n const specs: LollipopSpec[] = [];\n const numLabelsToShow = this.getNumLabelsToShow(\n positionMutations,\n countsByPosition\n );\n const minMutationsToShowLabel = 0;\n\n positionMutations.forEach((mutations, index) => {\n const codon = mutations[0].proteinPosStart;\n if (this.isInvalidPosition(codon)) {\n return;\n }\n\n const mutationCount = countsByPosition[codon];\n const showLabel =\n index < numLabelsToShow &&\n mutationCount > minMutationsToShowLabel;\n const label = this.createLabel(mutations, codon, showLabel);\n\n specs.push({\n codon,\n group,\n placement,\n count: mutationCount,\n tooltip: this.lollipopTooltip(\n mutations,\n countsByPosition,\n group\n ),\n color: this.props.getLollipopColor\n ? this.props.getLollipopColor(mutations)\n : getColorForProteinImpactType(\n mutations,\n DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n this.props.getMutationCount,\n this.props.isPutativeDriver\n ),\n label,\n });\n });\n\n return specs;\n }\n\n private getNumLabelCandidates(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number }\n ): number {\n // maxCount: max number of mutations at a position\n const maxCount =\n positionMutations && positionMutations[0]\n ? countsByPosition[positionMutations[0][0].proteinPosStart]\n : 0;\n\n // numLabelCandidates: number of positions with maxCount mutations\n let numLabelCandidates = positionMutations\n ? positionMutations.findIndex(\n mutations =>\n countsByPosition[mutations[0].proteinPosStart] !==\n maxCount\n )\n : -1;\n\n if (numLabelCandidates === -1) {\n numLabelCandidates = positionMutations\n ? positionMutations.length\n : 0;\n }\n return numLabelCandidates;\n }\n\n private labelOneLollipopByDefault(\n remainingDomains: PfamDomainRange[],\n specs: LollipopSpec[]\n ): void {\n const codons = specs.map(spec => spec.codon);\n const averageCodon = (Math.max(...codons) + Math.min(...codons)) / 2;\n const candidateIndex = 0;\n specs = specs\n .sort(byMiddlemostPosition(averageCodon))\n .sort(byWhetherExistsInADomain(remainingDomains))\n .sort(byMutationCount);\n specs[candidateIndex].label!.show = true;\n }\n\n private getNumLabelsToShow(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number }\n ): number {\n let numLabelCandidates = this.getNumLabelCandidates(\n positionMutations,\n countsByPosition\n );\n\n const maxAllowedTies = 2;\n const maxLabels = 1;\n\n const areMoreCandidatesThanShowable = numLabelCandidates > maxLabels;\n const areMoreCandidatesThanAllowedForATie =\n numLabelCandidates > maxAllowedTies;\n const shouldNotShowLabels =\n areMoreCandidatesThanShowable &&\n areMoreCandidatesThanAllowedForATie;\n\n return shouldNotShowLabels\n ? 0\n : Math.min(numLabelCandidates, maxLabels);\n }\n\n private isInvalidPosition(codon: number): boolean | '' | undefined {\n const notInDomain = isNaN(codon) || codon < 0;\n const isBeyondStopCodon =\n this.props.store.allTranscripts.isComplete &&\n this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.isComplete &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n // we want to show the stop codon too (so we allow proteinLength +1 as well)\n codon >\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].proteinLength +\n 1;\n\n return notInDomain || isBeyondStopCodon;\n }\n\n private getRemainingDomains(positionMutations: T[][]): PfamDomainRange[] {\n if (\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length !== 0\n ) {\n const pfamDomains = this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript!.result!\n ].pfamDomains;\n\n const domainHasMutations = (domain: PfamDomainRange) =>\n positionMutations.some(mutation => {\n const codon = mutation[0].proteinPosStart;\n return (\n codon >= domain.pfamDomainStart &&\n codon <= domain.pfamDomainEnd\n );\n });\n\n return pfamDomains.filter(domainHasMutations);\n }\n\n return [];\n }\n\n private createLabel(\n mutations: T[],\n codon: number,\n show: boolean\n ): LollipopLabel {\n const fontSize = 10;\n const fontFamily = 'arial';\n // limit number of protein changes to 3\n const text = lollipopLabelText(mutations, 3);\n const textAnchor = lollipopLabelTextAnchor(\n text,\n codon,\n fontFamily,\n fontSize,\n this.props.geneWidth,\n this.proteinLength\n );\n\n return {\n text,\n textAnchor,\n fontSize,\n fontFamily,\n show,\n };\n }\n\n @computed private get domains(): DomainSpec[] {\n if (\n !this.props.store.pfamDomainData.isComplete ||\n !this.props.store.pfamDomainData.result ||\n this.props.store.pfamDomainData.result.length === 0 ||\n !this.props.store.allTranscripts.isComplete ||\n !this.props.store.allTranscripts.result ||\n !(\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.isComplete\n ) ||\n !this.props.store.activeTranscript.result ||\n !this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] ||\n !this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains ||\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length === 0\n ) {\n return [];\n } else {\n return this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.map((range: PfamDomainRange) => {\n const domain = this.domainMap[range.pfamDomainId];\n return {\n startCodon: range.pfamDomainStart,\n endCodon: range.pfamDomainEnd,\n label: domain ? domain.name : range.pfamDomainId,\n color: this.domainColorMap[range.pfamDomainId],\n tooltip: (\n <DomainTooltip\n range={range}\n domain={domain}\n pfamDomainId={range.pfamDomainId}\n mutationAlignerCache={\n this.props.mutationAlignerCache\n }\n />\n ),\n };\n });\n }\n }\n\n @computed private get domainColorMap(): {\n [pfamAccession: string]: string;\n } {\n if (\n !this.props.store.allTranscripts.isPending &&\n this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n !this.props.store.activeTranscript.isPending &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length > 0\n ) {\n return generatePfamDomainColorMap(\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains\n );\n } else {\n return {};\n }\n }\n\n @computed private get domainMap(): { [pfamAccession: string]: PfamDomain } {\n if (\n !this.props.store.pfamDomainData.isPending &&\n this.props.store.pfamDomainData.result &&\n this.props.store.pfamDomainData.result.length > 0\n ) {\n return _.keyBy(\n this.props.store.pfamDomainData.result,\n 'pfamAccession'\n );\n } else {\n return {};\n }\n }\n\n private get proteinLength(): number {\n return (\n (this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].proteinLength) ||\n // Math.round(this.props.store.gene.length / 3);\n DEFAULT_PROTEIN_LENGTH\n );\n }\n\n private sequenceTooltip(): JSX.Element {\n return (\n <div style={{ maxWidth: 200 }}>\n <a\n href={`https://www.uniprot.org/uniprot/${this.props.store.uniprotId.result}`}\n target=\"_blank\"\n >\n {this.props.store.uniprotId.result}\n </a>\n </div>\n );\n }\n\n @computed private get sequence(): SequenceSpec {\n return {\n tooltip: this.sequenceTooltip(),\n };\n }\n\n @autobind\n private getSVG(): SVGElement {\n let lollipopSvg: SVGElement = $(this.divContainer).find(\n '.lollipop-svgnode'\n )[0] as any;\n\n const TEXT_STYLE = 'font-size: 12px; font-family:Arial;';\n const TRACK_INDENT = 16;\n const SUBTRACK_INDENT = TRACK_INDENT + 12;\n const INVISIBLE_SVG_CLASS_NAMES = ['invisible', 'hide-svg'];\n\n var outerSvg = document.createElementNS(SVG_NS, 'svg') as SVGElement;\n\n // Make copy of chart to be used in download\n var chartClone = lollipopSvg.cloneNode(true);\n outerSvg.append(chartClone);\n\n // Make svg invisible so it does not affect UI\n outerSvg.classList.add(...INVISIBLE_SVG_CLASS_NAMES);\n\n //Add svg to the dom so getBBox can calculate dimensions\n document.body.appendChild(outerSvg);\n\n // Group the tracks and translate below the lollipop chart\n const allTracksG = createGroupTag(\n `translate(0, ${LollipopPlot.defaultProps.vizHeight})`\n );\n outerSvg.append(allTracksG);\n\n let trackSvgList = $(this.divContainer).find('.track-svgnode');\n let trackTitles = $(this.divContainer).find('span[class*=trackTitle]');\n var trackYShift = 0;\n\n trackSvgList.each((idx: number, track: HTMLElement) => {\n var trackSvgGroup = createGroupTag(\n `translate(${this.geneXOffset},${trackYShift})`\n );\n trackSvgGroup.appendChild(track.cloneNode(true));\n\n var trackNameGroup = createGroupTag(\n `translate(0,${trackYShift + 8})`\n );\n var isSubTrack = trackTitles[idx].className.includes('subtrack-');\n var trackName = createTextTag(\n document.createTextNode(trackTitles[idx].innerText),\n TEXT_STYLE,\n isSubTrack ? SUBTRACK_INDENT : TRACK_INDENT,\n 0\n );\n trackNameGroup.append(trackName);\n\n allTracksG.append(trackNameGroup, trackSvgGroup);\n trackYShift += 20;\n });\n\n // Get the dimensions of the outer SVG before removing from DOM\n const outerSvgDimensions = (outerSvg as SVGGraphicsElement).getBBox();\n $(outerSvg).attr({\n width: outerSvgDimensions.width,\n height: outerSvgDimensions.height,\n });\n\n // Remove unused classes\n outerSvg.classList.remove(...INVISIBLE_SVG_CLASS_NAMES);\n document.body.removeChild(outerSvg);\n\n return outerSvg;\n }\n\n @computed get hugoGeneSymbol() {\n return this.props.store.gene.hugoGeneSymbol;\n }\n\n @computed get countRange(): [number, number] {\n return calcCountRange(\n this.lollipops.filter(\n l => l.placement !== LollipopPlacement.BOTTOM\n ),\n this.props.topYAxisDefaultMax,\n this.props.topYAxisDefaultMin\n );\n }\n\n @computed get bottomCountRange(): [number, number] {\n return calcCountRange(\n this.lollipops.filter(\n l => l.placement === LollipopPlacement.BOTTOM\n ),\n this.props.bottomYAxisDefaultMax,\n this.props.bottomYAxisDefaultMin\n );\n }\n\n constructor(props: LollipopMutationPlotProps<T>) {\n super(props);\n\n makeObservable<\n LollipopMutationPlot<T>,\n | 'mouseInPlot'\n | 'yMaxInputFocused'\n | 'geneXOffset'\n | '_trackVisibility'\n | 'showControls'\n | 'trackVisibility'\n | 'controlsConfig'\n | 'groups'\n | 'lollipops'\n | 'domains'\n | 'domainColorMap'\n | 'domainMap'\n | 'sequence'\n | 'onXAxisOffset'\n | 'onTrackVisibilityChange'\n >(this);\n\n this.handlers = {\n handleYAxisMaxSliderChange: action(\n (value: number) =>\n (this.controlsConfig.yMaxInput = calcYMaxInput(\n value,\n this.yMaxStep,\n this.countRange,\n this.bottomCountRange,\n this.props.yAxisSameScale\n ))\n ),\n handleYAxisMaxChange: action(\n (input: string) =>\n (this.controlsConfig.yMaxInput = getYAxisMaxInputValue(\n this.yMaxStep,\n input\n ))\n ),\n handleBottomYAxisMaxSliderChange: action(\n (value: number) =>\n (this.controlsConfig.bottomYMaxInput = calcYMaxInput(\n value,\n this.yMaxStep,\n this.bottomCountRange,\n this.countRange,\n this.props.yAxisSameScale\n ))\n ),\n handleBottomYAxisMaxChange: action(\n (input: string) =>\n (this.controlsConfig.bottomYMaxInput = getYAxisMaxInputValue(\n this.yMaxStep,\n input\n ))\n ),\n onYMaxInputFocused: () => {\n this.yMaxInputFocused = true;\n },\n onYMaxInputBlurred: () => {\n this.yMaxInputFocused = false;\n },\n handleToggleLegend: action(() => {\n this.controlsConfig.legendShown = !this.controlsConfig\n .legendShown;\n }),\n onMouseEnterPlot: action(() => {\n this.mouseInPlot = true;\n }),\n onMouseLeavePlot: action(() => {\n this.mouseInPlot = false;\n }),\n };\n }\n\n @computed get yMaxSlider() {\n return this.yMaxInput;\n }\n\n @computed get yMaxStep() {\n return Math.pow(10, -(this.props.yMaxFractionDigits || 0));\n }\n\n @computed get yMaxSliderStep() {\n return this.countRange[0] < 1 ? this.yMaxStep : 1;\n }\n\n @computed get bottomYMaxSlider() {\n return this.bottomYMaxInput;\n }\n\n @computed get bottomYMaxSliderStep() {\n return this.bottomCountRange[0] < 1 ? this.yMaxStep : 1;\n }\n\n @computed get yMaxInput() {\n return calcYMaxInput(\n this.controlsConfig.yMaxInput,\n this.yMaxStep,\n this.countRange,\n this.bottomCountRange,\n this.props.yAxisSameScale\n );\n }\n\n @computed get bottomYMaxInput() {\n return calcYMaxInput(\n this.controlsConfig.bottomYMaxInput,\n this.yMaxStep,\n this.bottomCountRange,\n this.countRange,\n this.props.yAxisSameScale\n );\n }\n\n @action.bound\n private onXAxisOffset(offset: number) {\n this.geneXOffset = offset;\n\n if (this.props.onXAxisOffset) {\n this.props.onXAxisOffset(offset);\n }\n }\n\n @action.bound\n protected onTrackVisibilityChange(selectedTrackNames: string[]) {\n if (this.props.onTrackVisibilityChange) {\n this.props.onTrackVisibilityChange(selectedTrackNames);\n } else {\n // clear visibility\n Object.keys(this.trackVisibility).forEach(\n trackName => (this.trackVisibility[trackName] = 'hidden')\n );\n\n // reset visibility values for the visible ones\n selectedTrackNames.forEach(\n trackName => (this.trackVisibility[trackName] = 'visible')\n );\n }\n }\n\n render() {\n if (\n this.props.store.pfamDomainData.isComplete &&\n this.props.store.pfamDomainData.result\n ) {\n return (\n <div\n style={{ display: 'inline-block' }}\n ref={(div: HTMLDivElement) => (this.divContainer = div)}\n onMouseEnter={this.handlers.onMouseEnterPlot}\n onMouseLeave={this.handlers.onMouseLeavePlot}\n >\n <LollipopMutationPlotControls\n showControls={this.showControls}\n showYMaxSlider={this.props.showYMaxSlider}\n showLegendToggle={this.props.showLegendToggle}\n showDownloadControls={this.props.showDownloadControls}\n hugoGeneSymbol={this.hugoGeneSymbol}\n countRange={this.countRange}\n bottomCountRange={this.bottomCountRange}\n onYAxisMaxSliderChange={\n this.handlers.handleYAxisMaxSliderChange\n }\n onYAxisMaxChange={this.handlers.handleYAxisMaxChange}\n onBottomYAxisMaxSliderChange={\n this.handlers.handleBottomYAxisMaxSliderChange\n }\n onBottomYAxisMaxChange={\n this.handlers.handleBottomYAxisMaxChange\n }\n onYMaxInputFocused={this.handlers.onYMaxInputFocused}\n onYMaxInputBlurred={this.handlers.onYMaxInputBlurred}\n onToggleLegend={this.handlers.handleToggleLegend}\n yMaxSlider={this.yMaxSlider}\n yMaxSliderStep={this.yMaxSliderStep}\n yMaxInput={this.yMaxInput}\n yAxisSameScale={this.props.yAxisSameScale}\n bottomYMaxSlider={this.bottomYMaxSlider}\n bottomYMaxSliderStep={this.bottomYMaxSliderStep}\n bottomYMaxInput={this.bottomYMaxInput}\n customControls={this.props.customControls}\n filterResetPanel={this.props.filterResetPanel}\n trackVisibility={this.trackVisibility}\n tracks={this.props.tracks}\n trackDataStatus={this.props.trackDataStatus}\n showTrackSelector={this.props.showTrackSelector}\n onTrackVisibilityChange={this.onTrackVisibilityChange}\n getSVG={this.getSVG}\n axisMode={this.props.axisMode}\n onScaleToggle={this.props.onScaleToggle}\n showPercentToggle={this.props.showPercentToggle}\n />\n <Collapse isOpened={this.controlsConfig.legendShown}>\n {this.props.legend || <DefaultLollipopPlotLegend />}\n </Collapse>\n <LollipopPlot\n sequence={this.sequence}\n lollipops={this.lollipops}\n domains={this.domains}\n dataStore={this.props.store.dataStore}\n vizWidth={this.props.geneWidth}\n vizHeight={this.props.vizHeight}\n hugoGeneSymbol={this.hugoGeneSymbol}\n xMax={this.proteinLength}\n yMax={this.yMaxInput}\n yMaxFractionDigits={\n this.yMaxSliderStep < 1\n ? this.props.yMaxFractionDigits\n : undefined\n }\n yMaxLabelPostfix={this.props.yMaxLabelPostfix}\n yAxisLabelPadding={this.props.yAxisLabelPadding}\n showYAxis={this.props.showYAxis}\n bottomYMax={this.bottomYMaxInput}\n onXAxisOffset={this.onXAxisOffset}\n topYAxisSymbol={this.props.topYAxisSymbol}\n bottomYAxisSymbol={this.props.bottomYAxisSymbol}\n groups={this.groups}\n yAxisLabelFormatter={this.props.yAxisLabelFormatter}\n />\n <TrackPanel\n store={this.props.store}\n geneWidth={this.props.geneWidth}\n tracks={this.props.tracks}\n trackVisibility={this.trackVisibility}\n pubMedCache={this.props.pubMedCache}\n proteinLength={this.proteinLength}\n geneXOffset={this.geneXOffset}\n collapsePtmTrack={this.props.collapsePtmTrack}\n collapseUniprotTopologyTrack={\n this.props.collapseUniprotTopologyTrack\n }\n />\n </div>\n );\n } else if (\n this.props.store.canonicalTranscript.isComplete &&\n this.props.store.canonicalTranscript.result === undefined\n ) {\n return (\n <span>\n <i className=\"fa fa-exclamation-triangle text-danger\" /> No\n Transcript found for {this.hugoGeneSymbol}\n </span>\n );\n } else {\n return (\n this.props.loadingIndicator || (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n )\n );\n }\n }\n}\n","import { action, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { Mutation } from 'cbioportal-ts-api-client';\nimport * as React from 'react';\nimport {\n formatPercentValue,\n numberOfLeadingDecimalZeros,\n} from 'cbioportal-utils';\nimport { AxisScale } from './AxisScaleSwitch';\n\ninterface ILollipopTooltipCountInfoProps {\n count: number;\n mutations?: Mutation[];\n axisMode?: AxisScale;\n}\n\nexport const LollipopTooltipCountInfo: React.FC<ILollipopTooltipCountInfoProps> = ({\n count,\n mutations,\n axisMode,\n}: ILollipopTooltipCountInfoProps) => {\n const decimalZeros = numberOfLeadingDecimalZeros(count);\n const fractionDigits = decimalZeros < 0 ? 1 : decimalZeros + 2;\n\n return mutations &&\n mutations.length > 0 &&\n axisMode === AxisScale.PERCENT ? (\n <strong>\n {formatPercentValue(count, fractionDigits)}% mutation rate\n </strong>\n ) : (\n <strong>\n {count} mutation{`${count !== 1 ? 's' : ''}`}\n </strong>\n );\n};\n","import { action, observable, makeObservable } from 'mobx';\nimport { CacheData, MobxCache } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nexport abstract class DefaultStringQueryCache<D>\n implements MobxCache<D, string> {\n protected _cache = observable.map<string, CacheData>({}, { deep: false });\n\n constructor() {\n makeObservable(this);\n }\n\n @action\n public get(query: string) {\n if (!this._cache.get(query)) {\n this._cache.set(query, { status: 'pending' });\n\n this.fetch(query)\n .then((d: D) =>\n this._cache.set(query, { status: 'complete', data: d })\n )\n .catch(() => this._cache.set(query, { status: 'error' }));\n }\n\n const data = this._cache.get(query);\n\n return data ? data : null;\n }\n\n public abstract fetch(query: string): Promise<D>;\n\n public get cache() {\n return _.fromPairs(this._cache.toJSON());\n }\n}\n","import request from 'superagent';\n\nimport { DefaultStringQueryCache } from './DefaultStringQueryCache';\n\nexport class DefaultPubMedCache extends DefaultStringQueryCache<any> {\n public async fetch(query: string) {\n const pubMedRecords = await new Promise<any>((resolve, reject) => {\n // TODO duplicate code from cbioportal-frontend\n request\n .post(\n 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&retmode=json'\n )\n .type('form')\n .send({ id: query })\n .end((err, res) => {\n if (!err && res.ok) {\n const response = JSON.parse(res.text);\n const result = response.result;\n const uids = result.uids;\n const ret: any = {};\n for (let uid of uids) {\n ret[uid] = result[uid];\n }\n resolve(ret);\n } else {\n reject(err);\n }\n });\n });\n\n return pubMedRecords[query];\n }\n}\n","import request from 'superagent';\n\nimport {\n DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE,\n getUrl,\n} from '../util/DataFetcherUtils';\nimport { DefaultStringQueryCache } from './DefaultStringQueryCache';\n\nexport function fetchMutationAlignerLink(\n pfamDomainId: string,\n mutationAlignerUrlTemplate: string = DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE\n): request.SuperAgentRequest {\n return request\n .get(getUrl(mutationAlignerUrlTemplate, { pfamDomainId }))\n .accept('application/json');\n}\n\nexport class MutationAlignerCache extends DefaultStringQueryCache<string> {\n constructor(private mutationAlignerUrlTemplate?: string) {\n super();\n }\n\n public fetch(pfamAccession: string): Promise<string> {\n return fetchMutationAlignerLink(\n pfamAccession,\n this.mutationAlignerUrlTemplate\n )\n .then(res =>\n Promise.resolve(\n `http://mutationaligner.org/domains/${res.body.pfamId}`\n )\n )\n .catch(e => Promise.reject(e));\n }\n}\n","import autobind from 'autobind-decorator';\nimport _ from 'lodash';\nimport { action, computed, observable, makeObservable } from 'mobx';\n\nimport { Mutation } from 'cbioportal-utils';\n\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport DataStore from '../model/DataStore';\nimport { FilterApplier } from '../model/FilterApplier';\nimport {\n applyDataFiltersOnDatum,\n groupDataByGroupFilters,\n indexPositions,\n} from '../util/FilterUtils';\n\ntype GroupedData = Array<{ group: string; data: Array<Mutation | Mutation[]> }>;\n\nexport class DefaultMutationMapperDataStore implements DataStore {\n @observable public dataFilters: DataFilter[];\n @observable public selectionFilters: DataFilter[];\n @observable public highlightFilters: DataFilter[];\n @observable public groupFilters: { group: string; filter: DataFilter }[];\n\n // TODO simplify data if possible\n private data: Array<Mutation | Mutation[]>;\n\n // this custom filter applier allows us to interpret selection and highlight filters in a customized way,\n // by default only position filters are taken into account\n protected customFilterApplier: FilterApplier | undefined;\n\n constructor(\n data: Array<Mutation | Mutation[]>,\n customFilterApplier?: FilterApplier,\n dataFilters: DataFilter[] = [],\n selectionFilters: DataFilter[] = [],\n highlightFilters: DataFilter[] = [],\n groupFilters: { group: string; filter: DataFilter }[] = []\n ) {\n makeObservable(this);\n this.data = data;\n this.customFilterApplier = customFilterApplier;\n\n this.dataFilters = dataFilters;\n this.selectionFilters = selectionFilters;\n this.highlightFilters = highlightFilters;\n this.groupFilters = groupFilters;\n }\n\n @computed get groupFiltersKeyedByGroup() {\n return _.keyBy(this.groupFilters, 'group');\n }\n\n @computed\n public get allData() {\n return this.data;\n }\n\n @computed\n public get filteredData() {\n return this.dataFilters.length > 0\n ? // TODO simplify array flatten if possible\n this.data.filter(m => this.dataMainFilter(_.flatten([m])[0]))\n : this.data;\n }\n\n @computed\n public get sortedFilteredData() {\n return this.filteredData;\n }\n\n @computed\n public get sortedFilteredGroupedData(): GroupedData {\n return groupDataByGroupFilters(\n this.groupFilters,\n this.sortedFilteredData,\n this.applyFilter\n );\n }\n\n @computed\n public get sortedFilteredSelectedData() {\n return this.selectionFilters.length > 0\n ? // TODO simplify array flatten if possible\n this.sortedFilteredData.filter(m =>\n this.dataSelectFilter(_.flatten([m])[0])\n )\n : [];\n }\n\n @computed\n public get selectedPositions() {\n return indexPositions(this.selectionFilters);\n }\n\n @computed\n public get highlightedPositions() {\n return indexPositions(this.highlightFilters);\n }\n\n @action\n public clearHighlightFilters() {\n if (this.highlightFilters.length > 0) {\n this.highlightFilters = [];\n }\n }\n\n @action\n public clearSelectionFilters() {\n if (this.selectionFilters.length > 0) {\n this.selectionFilters = [];\n }\n }\n\n @action\n public clearDataFilters() {\n if (this.dataFilters.length > 0) {\n this.dataFilters = [];\n }\n }\n\n @action\n public setDataFilters(filters: DataFilter[]) {\n this.dataFilters = filters;\n }\n\n @action\n public setHighlightFilters(filters: DataFilter[]) {\n this.highlightFilters = filters;\n }\n\n @action\n public setSelectionFilters(filters: DataFilter[]) {\n this.selectionFilters = filters;\n }\n\n @action\n public setGroupFilters(filters: { group: string; filter: DataFilter }[]) {\n this.groupFilters = filters;\n }\n\n public isPositionSelected(position: number) {\n return !!this.selectedPositions[position + ''];\n }\n\n public isPositionHighlighted(position: number) {\n return !!this.highlightedPositions[position + ''];\n }\n\n public dataMainFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.dataFilters,\n this.applyFilter\n );\n }\n\n public dataSelectFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.selectionFilters,\n this.applyFilter\n );\n }\n\n public dataHighlightFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.highlightFilters,\n this.applyFilter\n );\n }\n\n @autobind\n public applyFilter(filter: DataFilter, mutation: Mutation): boolean {\n if (this.customFilterApplier) {\n // let the custom filter applier decide how to apply the given filter\n return this.customFilterApplier.applyFilter(filter, mutation);\n } else {\n // by default only filter by position\n return (\n filter.type !== DataFilterType.POSITION ||\n filter.values.includes(mutation.proteinPosStart)\n );\n }\n }\n}\n\nexport default DefaultMutationMapperDataStore;\n","import _ from 'lodash';\nimport request from 'superagent';\nimport Response = request.Response;\n\nimport {\n AggregatedHotspots,\n EvidenceType,\n getMyVariantInfoAnnotationsFromIndexedVariantAnnotations,\n IOncoKbData,\n Mutation,\n UniprotFeature,\n UniprotFeatureList,\n uniqueGenomicLocations,\n} from 'cbioportal-utils';\nimport {\n generateProteinChangeQuery,\n generateAnnotateStructuralVariantQuery,\n StructuralVariantType,\n} from 'oncokb-frontend-commons';\nimport {\n AnnotateMutationByProteinChangeQuery,\n AnnotateStructuralVariantQuery,\n CancerGene,\n OncoKbAPI,\n OncoKBInfo,\n} from 'oncokb-ts-api-client';\nimport {\n EnsemblFilter,\n EnsemblTranscript,\n GenomeNexusAPI,\n GenomeNexusAPIInternal,\n GenomicLocation,\n Hotspot,\n PfamDomain,\n PostTranslationalModification,\n VariantAnnotation,\n MyVariantInfo,\n} from 'genome-nexus-ts-api-client';\n\nimport { MutationMapperDataFetcher } from '../model/MutationMapperDataFetcher';\nimport {\n DEFAULT_MY_GENE_URL_TEMPLATE,\n DEFAULT_UNIPROT_ID_URL_TEMPLATE,\n fetchVariantAnnotationsIndexedByGenomicLocation,\n getUrl,\n initGenomeNexusClient,\n initGenomeNexusInternalClient,\n initOncoKbClient,\n ONCOKB_DEFAULT_DATA,\n} from '../util/DataFetcherUtils';\nimport { CanonicalMutationType } from 'cbioportal-frontend-commons';\n\nexport interface MutationMapperDataFetcherConfig {\n myGeneUrlTemplate?: string;\n uniprotIdUrlTemplate?: string;\n mutationAlignerUrlTemplate?: string;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n}\n\nexport class DefaultMutationMapperDataFetcher\n implements MutationMapperDataFetcher {\n public oncoKbClient: OncoKbAPI;\n public genomeNexusClient: GenomeNexusAPI;\n public genomeNexusInternalClient: GenomeNexusAPIInternal;\n\n constructor(\n private config: MutationMapperDataFetcherConfig,\n genomeNexusClient?: Partial<GenomeNexusAPI>,\n genomeNexusInternalClient?: Partial<GenomeNexusAPIInternal>,\n oncoKbClient?: Partial<OncoKbAPI>\n ) {\n this.genomeNexusClient =\n (genomeNexusClient as GenomeNexusAPI) ||\n initGenomeNexusClient(\n config.genomeNexusUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n this.genomeNexusInternalClient =\n (genomeNexusInternalClient as GenomeNexusAPIInternal) ||\n initGenomeNexusInternalClient(\n config.genomeNexusUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n this.oncoKbClient =\n (oncoKbClient as OncoKbAPI) ||\n initOncoKbClient(\n config.oncoKbUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n }\n\n public async fetchSwissProtAccession(entrezGeneId: number): Promise<any> {\n const myGeneData: Response = await request.get(\n getUrl(\n this.config.myGeneUrlTemplate || DEFAULT_MY_GENE_URL_TEMPLATE,\n { entrezGeneId }\n )\n );\n return JSON.parse(myGeneData.text).uniprot['Swiss-Prot'];\n }\n\n public async fetchUniprotId(swissProtAccession: string): Promise<string> {\n const uniprotData: Response = await request.get(\n getUrl(\n this.config.uniprotIdUrlTemplate ||\n DEFAULT_UNIPROT_ID_URL_TEMPLATE,\n { swissProtAccession }\n )\n );\n return uniprotData.text.split('\\n')[1];\n }\n\n public async fetchPfamDomainData(\n pfamAccessions: string[],\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<PfamDomain[]> {\n return await client.fetchPfamDomainsByPfamAccessionPOST({\n pfamAccessions: pfamAccessions,\n });\n }\n\n public async fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'mskcc',\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<{ [genomicLocation: string]: VariantAnnotation }> {\n return await fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations,\n fields,\n isoformOverrideSource,\n client\n );\n }\n\n public async fetchMyVariantInfoAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n isoformOverrideSource: string = 'mskcc',\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<{ [genomicLocation: string]: MyVariantInfo }> {\n const indexedVariantAnnotations = await fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations,\n ['my_variant_info'],\n isoformOverrideSource,\n client\n );\n return getMyVariantInfoAnnotationsFromIndexedVariantAnnotations(\n indexedVariantAnnotations\n );\n }\n\n /*\n * Gets the canonical transcript. If there is none pick the transcript with max length.\n */\n public async fetchCanonicalTranscriptWithFallback(\n hugoSymbol: string,\n isoformOverrideSource: string,\n allTranscripts: EnsemblTranscript[] | undefined,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript | undefined> {\n return this.fetchCanonicalTranscript(\n hugoSymbol,\n isoformOverrideSource,\n client\n ).catch(() => {\n // get transcript with max protein length in given list of all transcripts\n const transcript = _.maxBy(\n allTranscripts,\n (t: EnsemblTranscript) => t.proteinLength\n );\n return transcript ? transcript : undefined;\n });\n }\n\n public async fetchCanonicalTranscript(\n hugoSymbol: string,\n isoformOverrideSource: string,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript> {\n return await client.fetchCanonicalEnsemblTranscriptByHugoSymbolGET({\n hugoSymbol,\n isoformOverrideSource,\n });\n }\n\n public async fetchEnsemblTranscriptsByEnsemblFilter(\n ensemblFilter: Partial<EnsemblFilter>,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript[] | undefined> {\n return await client.fetchEnsemblTranscriptsByEnsemblFilterPOST({\n ensemblFilter: Object.assign(\n // set default to empty array\n {\n geneIds: [],\n hugoSymbols: [],\n proteinIds: [],\n transcriptIds: [],\n },\n ensemblFilter\n ),\n });\n }\n\n public fetchPtmData(\n ensemblId: string,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<PostTranslationalModification[]> {\n if (ensemblId) {\n return client.fetchPostTranslationalModificationsGET({\n ensemblTranscriptId: ensemblId,\n });\n } else {\n return Promise.resolve([]);\n }\n }\n\n public async fetchUniprotFeatures(\n swissProtId: string,\n category: string[],\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<UniprotFeature[]> {\n if (swissProtId) {\n // TODO for now fetching only PTM and TOPOLOGY features\n const uniprotData: Response = await request.get(\n getUrl(\n `https://www.ebi.ac.uk/proteins/api/features/<%= uniprotAccession %>?categories=${category.join(\n ','\n )}`,\n { uniprotAccession: swissProtId }\n )\n );\n\n const featureList: UniprotFeatureList = JSON.parse(\n uniprotData.text\n );\n return featureList.features;\n } else {\n return Promise.resolve([]);\n }\n }\n\n public fetchCancerHotspotData(\n ensemblId: string,\n client: GenomeNexusAPIInternal = this.genomeNexusInternalClient\n ): Promise<Hotspot[]> {\n if (ensemblId) {\n return client.fetchHotspotAnnotationByTranscriptIdGET({\n transcriptId: ensemblId,\n });\n } else {\n return Promise.resolve([]);\n }\n }\n\n public fetchAggregatedHotspotsData(\n mutations: Mutation[],\n client: GenomeNexusAPIInternal = this.genomeNexusInternalClient\n ): Promise<AggregatedHotspots[]> {\n // TODO filter out non-hotspot genes\n\n if (mutations.length === 0) {\n return Promise.resolve([]);\n }\n\n const genomicLocations: GenomicLocation[] = uniqueGenomicLocations(\n mutations\n );\n return client.fetchHotspotAnnotationByGenomicLocationPOST({\n genomicLocations: genomicLocations,\n });\n }\n\n public fetchOncoKbCancerGenes(\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<CancerGene[]> {\n return client.utilsCancerGeneListGetUsingGET_1({});\n }\n\n public fetchOncoKbInfo(\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<OncoKBInfo> {\n return client.infoGetUsingGET_1({});\n }\n\n public async fetchOncoKbData(\n mutations: Mutation[],\n annotatedGenes: { [entrezGeneId: number]: boolean } | Error,\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number,\n evidenceTypes?: EvidenceType[],\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<IOncoKbData | Error> {\n if (annotatedGenes instanceof Error) {\n return new Error();\n } else if (mutations.length === 0) {\n return ONCOKB_DEFAULT_DATA;\n }\n\n const mutationsToQuery = _.filter(\n mutations,\n m =>\n (m.mutationType &&\n m.mutationType.toLowerCase() ===\n CanonicalMutationType.FUSION) ||\n !!annotatedGenes[getEntrezGeneId(m)]\n );\n\n return this.queryOncoKbData(\n mutationsToQuery,\n getTumorType,\n getEntrezGeneId,\n client,\n evidenceTypes\n );\n }\n\n public async queryOncoKbData(\n queryVariants: Mutation[],\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number,\n client: OncoKbAPI = this.oncoKbClient,\n evidenceTypes?: EvidenceType[]\n ) {\n const mutationQueryVariants: AnnotateMutationByProteinChangeQuery[] = _.uniqBy(\n _.map(\n queryVariants.filter(\n mutation => mutation.mutationType !== 'Fusion'\n ),\n (mutation: Mutation) => {\n return generateProteinChangeQuery(\n getEntrezGeneId(mutation),\n getTumorType(mutation),\n mutation.proteinChange,\n mutation.mutationType,\n mutation.proteinPosStart,\n mutation.proteinPosEnd,\n evidenceTypes\n );\n }\n ),\n 'id'\n );\n\n const structuralQueryVariants: AnnotateStructuralVariantQuery[] = _.uniqBy(\n _.map(\n queryVariants.filter(\n mutation =>\n mutation.mutationType?.toUpperCase() ===\n StructuralVariantType.FUSION\n ),\n (mutation: Mutation) => {\n return generateAnnotateStructuralVariantQuery(\n /* @ts-ignore */\n mutation.structuralVariant,\n getTumorType(mutation),\n evidenceTypes\n );\n }\n ),\n 'id'\n );\n\n const mutationQueryResult =\n mutationQueryVariants.length === 0\n ? []\n : await client.annotateMutationsByProteinChangePostUsingPOST_1({\n body: mutationQueryVariants,\n });\n\n const structuralVariantQueryResult =\n structuralQueryVariants.length === 0\n ? []\n : await client.annotateStructuralVariantsPostUsingPOST_1({\n body: structuralQueryVariants,\n });\n\n return {\n // generateIdToIndicatorMap(oncokbSearch)\n indicatorMap: _.keyBy(\n mutationQueryResult.concat(structuralVariantQueryResult),\n indicator => indicator.query.id\n ),\n };\n }\n}\n\nexport default DefaultMutationMapperDataFetcher;\n","import autobind from 'autobind-decorator';\nimport { MobxPromise } from 'cbioportal-frontend-commons';\nimport {\n defaultHotspotFilter,\n IHotspotIndex,\n IOncoKbData,\n isHotspot,\n Mutation,\n} from 'cbioportal-utils';\n\nimport { HotspotFilter } from '../filter/HotspotFilter';\nimport { MutationFilter } from '../filter/MutationFilter';\nimport { MutationStatusFilter } from '../filter/MutationStatusFilter';\nimport { OncoKbFilter } from '../filter/OncoKbFilter';\nimport { PositionFilter } from '../filter/PositionFilter';\nimport { ProteinImpactTypeFilter } from '../filter/ProteinImpactTypeFilter';\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport { ApplyFilterFn, FilterApplier } from '../model/FilterApplier';\nimport {\n applyDefaultMutationFilter,\n applyDefaultMutationStatusFilter,\n applyDefaultPositionFilter,\n applyDefaultProteinChangeFilter,\n applyDefaultProteinImpactTypeFilter,\n} from '../util/FilterUtils';\nimport { defaultOncoKbFilter } from 'oncokb-frontend-commons';\nimport { ProteinChangeFilter } from '../filter/ProteinChangeFilter';\n\nexport class DefaultMutationMapperFilterApplier implements FilterApplier {\n protected get customFilterAppliers(): {\n [filterType: string]: ApplyFilterFn;\n } {\n return {\n [DataFilterType.POSITION]: this.applyPositionFilter,\n [DataFilterType.ONCOKB]: this.applyOncoKbFilter,\n [DataFilterType.HOTSPOT]: this.applyHostpotFilter,\n [DataFilterType.MUTATION]: this.applyMutationFilter,\n [DataFilterType.PROTEIN_IMPACT_TYPE]: this\n .applyProteinImpactTypeFilter,\n [DataFilterType.MUTATION_STATUS]: this.applyMutationStatusFilter,\n [DataFilterType.PROTEIN_CHANGE]: this.applyProteinChangeFilter,\n ...this.filterAppliersOverride,\n };\n }\n\n constructor(\n protected indexedHotspotData: MobxPromise<IHotspotIndex | undefined>,\n protected oncoKbData: MobxPromise<IOncoKbData | Error>,\n protected getDefaultTumorType: (mutation: Mutation) => string,\n protected getDefaultEntrezGeneId: (mutation: Mutation) => number,\n protected filterAppliersOverride?: {\n [filterType: string]: ApplyFilterFn;\n }\n ) {}\n\n @autobind\n public applyFilter(filter: DataFilter, mutation: Mutation) {\n const applyFilter = this.customFilterAppliers[filter.type];\n\n return !applyFilter || applyFilter(filter, mutation);\n }\n\n @autobind\n protected applyMutationFilter(filter: MutationFilter, mutation: Mutation) {\n return applyDefaultMutationFilter(filter, mutation);\n }\n\n @autobind\n protected applyOncoKbFilter(filter: OncoKbFilter, mutation: Mutation) {\n // TODO for now ignoring the actual filter value and treating as a boolean\n return (\n !filter.values ||\n !this.oncoKbData.result ||\n this.oncoKbData.result instanceof Error ||\n defaultOncoKbFilter(\n mutation,\n this.oncoKbData.result,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId\n )\n );\n }\n\n @autobind\n protected applyHostpotFilter(filter: HotspotFilter, mutation: Mutation) {\n // TODO for now ignoring the actual filter value and treating as a boolean\n return (\n !filter.values ||\n !this.indexedHotspotData.result ||\n isHotspot(\n mutation,\n this.indexedHotspotData.result,\n defaultHotspotFilter\n )\n );\n }\n\n @autobind\n protected applyPositionFilter(filter: PositionFilter, mutation: Mutation) {\n return applyDefaultPositionFilter(filter, mutation);\n }\n\n @autobind\n protected applyProteinImpactTypeFilter(\n filter: ProteinImpactTypeFilter,\n mutation: Mutation\n ) {\n return applyDefaultProteinImpactTypeFilter(filter, mutation);\n }\n\n @autobind\n protected applyMutationStatusFilter(\n filter: MutationStatusFilter,\n mutation: Mutation\n ) {\n return applyDefaultMutationStatusFilter(filter, mutation);\n }\n\n @autobind\n protected applyProteinChangeFilter(\n filter: ProteinChangeFilter,\n mutation: Mutation\n ) {\n return applyDefaultProteinChangeFilter(filter, mutation);\n }\n}\n\nexport default DefaultMutationMapperFilterApplier;\n","import autobind from 'autobind-decorator';\nimport { cached, MobxPromise, remoteData } from 'cbioportal-frontend-commons';\nimport {\n AggregatedHotspots,\n convertDbPtmToPtm,\n convertUniprotFeatureToPtm,\n defaultHotspotFilter,\n genomicLocationString,\n getMyCancerGenomeData,\n groupCancerHotspotDataByPosition,\n groupHotspotsByMutations,\n getMutationsByTranscriptId,\n groupMutationsByProteinStartPos,\n groupPtmDataByPosition,\n groupPtmDataByTypeAndPosition,\n indexHotspotsData,\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n fetchCivicGenes,\n fetchCivicVariants,\n PostTranslationalModification,\n PtmSource,\n UniprotFeature,\n uniqueGenomicLocations,\n UniprotCategory,\n convertUniprotFeatureToUniprotTopology,\n UniprotTopology,\n} from 'cbioportal-utils';\nimport { Gene, Mutation, IMyVariantInfoIndex } from 'cbioportal-utils';\nimport memoize from 'memoize-weak-decorator';\n\nimport {\n CancerGene,\n IndicatorQueryResp,\n OncoKBInfo,\n} from 'oncokb-ts-api-client';\nimport {\n EnsemblTranscript,\n GenomicLocation,\n Hotspot,\n PfamDomain,\n PfamDomainRange,\n PostTranslationalModification as DbPtm,\n // TODO UniprotFeature, UniprotFeatureList\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport { computed, observable, makeObservable } from 'mobx';\n\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport DataStore from '../model/DataStore';\nimport { ApplyFilterFn, FilterApplier } from '../model/FilterApplier';\nimport { MutationMapperDataFetcher } from '../model/MutationMapperDataFetcher';\nimport { MutationMapperStore } from '../model/MutationMapperStore';\nimport {\n ONCOKB_DEFAULT_DATA,\n ONCOKB_DEFAULT_INFO,\n USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n} from '../util/DataFetcherUtils';\nimport {\n applyDataFilters,\n groupDataByProteinImpactType,\n} from '../util/FilterUtils';\nimport {\n defaultOncoKbIndicatorFilter,\n groupOncoKbIndicatorDataByMutations,\n} from 'oncokb-frontend-commons';\nimport { DefaultMutationMapperDataStore } from './DefaultMutationMapperDataStore';\nimport { DefaultMutationMapperDataFetcher } from './DefaultMutationMapperDataFetcher';\nimport { DefaultMutationMapperFilterApplier } from './DefaultMutationMapperFilterApplier';\nimport { get } from 'superagent';\n\ninterface DefaultMutationMapperStoreConfig {\n annotationFields?: string[];\n isoformOverrideSource?: string;\n ptmSources?: string[];\n filterMutationsBySelectedTranscript?: boolean;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n enableCivic?: boolean;\n enableOncoKb?: boolean;\n enableRevue?: boolean;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n getMutationCount?: (mutation: Partial<Mutation>) => number;\n getTumorType?: (mutation: Partial<Mutation>) => string;\n filterApplier?: FilterApplier;\n filterAppliersOverride?: {\n [filterType: string]: ApplyFilterFn;\n };\n dataFetcher?: MutationMapperDataFetcher;\n dataFilters?: DataFilter[];\n selectionFilters?: DataFilter[];\n highlightFilters?: DataFilter[];\n groupFilters?: { group: string; filter: DataFilter }[];\n genomeBuild?: string;\n}\n\nclass DefaultMutationMapperStore<T extends Mutation>\n implements MutationMapperStore<T> {\n protected getDataFetcher?: () => MutationMapperDataFetcher;\n\n @observable\n private _selectedTranscript: string | undefined = undefined;\n\n // this allows us to keep selected transcript state in one of two places\n // external (e.g. url)\n // internal (_selectedTranscript)\n // we default to external\n @computed get selectedTranscript(): string | undefined {\n if (this.getTranscriptId) {\n return this.getTranscriptId();\n } else {\n return this._selectedTranscript;\n }\n }\n\n constructor(\n public gene: Gene,\n protected config: DefaultMutationMapperStoreConfig,\n protected getMutations: () => T[],\n public getTranscriptId?: () => string | undefined\n ) {\n makeObservable<\n DefaultMutationMapperStore<T>,\n '_selectedTranscript' | 'mutationsGroupedByProteinImpactType'\n >(this);\n }\n\n readonly activeTranscript: MobxPromise<string | undefined> = remoteData(\n {\n await: () => [\n this.allTranscripts,\n this.canonicalTranscript,\n this.transcriptsWithAnnotations,\n ],\n invoke: async () => {\n let activeTranscript;\n const canonicalTranscriptId = this.canonicalTranscript.result\n ? this.canonicalTranscript.result.transcriptId\n : undefined;\n const selectedTranscript =\n this.selectedTranscript &&\n this.allTranscripts.result &&\n this.allTranscripts.result.find(\n transcript =>\n transcript.transcriptId === this.selectedTranscript\n )\n ? this.selectedTranscript\n : undefined;\n\n if (selectedTranscript) {\n activeTranscript = selectedTranscript;\n } else if (this.config.filterMutationsBySelectedTranscript) {\n if (\n this.transcriptsWithAnnotations.result &&\n this.transcriptsWithAnnotations.result.length > 0 &&\n canonicalTranscriptId &&\n !this.transcriptsWithAnnotations.result.includes(\n canonicalTranscriptId\n )\n ) {\n activeTranscript = this.transcriptsWithAnnotations\n .result[0];\n } else {\n activeTranscript = canonicalTranscriptId;\n }\n } else {\n activeTranscript = canonicalTranscriptId;\n }\n\n return activeTranscript;\n },\n },\n undefined\n );\n\n public setSelectedTranscript(transcript: string | undefined) {\n this._selectedTranscript = transcript;\n }\n\n @computed\n public get isoformOverrideSource(): string {\n return this.config.isoformOverrideSource || 'mskcc';\n }\n\n @computed\n public get ptmSources(): string[] {\n return this.config.ptmSources || [PtmSource.dbPTM];\n }\n\n @computed\n public get annotationFields(): string[] {\n return _.uniq(\n ['annotation_summary', 'hotspots'].concat(\n this.config.annotationFields || []\n )\n );\n }\n\n protected getDataStore?: () => DataStore;\n\n @cached\n @computed\n public get dataStore(): DataStore {\n if (this.getDataStore) {\n return this.getDataStore();\n }\n return new DefaultMutationMapperDataStore(\n this.mutations,\n this.filterApplier,\n this.config.dataFilters,\n this.config.selectionFilters,\n this.config.highlightFilters,\n this.config.groupFilters\n );\n }\n\n public readonly myCancerGenomeData: IMyCancerGenomeData = getMyCancerGenomeData();\n\n @computed\n public get mutations(): T[] {\n if (\n this.canonicalTranscript.isPending ||\n (this.config.filterMutationsBySelectedTranscript &&\n (this.transcriptsWithAnnotations.isPending ||\n this.indexedVariantAnnotations.isPending) &&\n this.canonicalTranscript.isPending)\n ) {\n return [];\n } else if (\n this.config.filterMutationsBySelectedTranscript &&\n this.activeTranscript.result &&\n this.indexedVariantAnnotations.result &&\n !_.isEmpty(this.indexedVariantAnnotations.result)\n ) {\n return this.getAnnotatedMutations(this.activeTranscript.result);\n } else {\n return this.getMutations();\n }\n }\n\n @memoize\n protected getAnnotatedMutationsByTranscriptId(\n mutations: T[],\n transcriptId: string,\n indexedVariantAnnotations: {\n [genomicLocation: string]: VariantAnnotation;\n }\n ): T[] {\n // by default annotate every mutation, no check for canonical transcript\n return getMutationsByTranscriptId(\n mutations,\n transcriptId,\n indexedVariantAnnotations\n );\n }\n\n public getAnnotatedMutations(transcriptId: string): T[] {\n // in case we don't have any annotation for the given set of mutations or the annotation fails due to an error\n // (external service error, etc.) we just return the input set of mutations as is. Ideally this function\n // should not be invoked when this.indexedVariantAnnotations.result is undefined\n if (this.indexedVariantAnnotations.result) {\n return this.getAnnotatedMutationsByTranscriptId(\n this.getMutations(),\n transcriptId,\n this.indexedVariantAnnotations.result\n );\n } else {\n return this.getMutations();\n }\n }\n\n @computed\n public get filterApplier() {\n return (\n this.config.filterApplier ||\n new DefaultMutationMapperFilterApplier(\n this.indexedHotspotData,\n this.oncoKbData,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId,\n this.config.filterAppliersOverride\n )\n );\n }\n\n @computed\n public get dataFetcher(): MutationMapperDataFetcher {\n return (\n this.config.dataFetcher ||\n (this.getDataFetcher && this.getDataFetcher()) ||\n new DefaultMutationMapperDataFetcher({\n genomeNexusUrl: this.config.genomeNexusUrl,\n oncoKbUrl: this.config.oncoKbUrl,\n cachePostMethodsOnClients: this.config\n .cachePostMethodsOnClients,\n apiCacheLimit: this.config.apiCacheLimit,\n })\n );\n }\n\n @computed\n public get mutationsByPosition(): { [pos: number]: T[] } {\n return groupMutationsByProteinStartPos(\n _.flatten(this.dataStore.sortedFilteredData)\n );\n }\n\n @computed\n public get groupedMutationsByPosition(): {\n group: string;\n mutations: { [pos: number]: T[] };\n }[] {\n return this.dataStore.sortedFilteredGroupedData.map(groupedData => ({\n group: groupedData.group,\n mutations: groupMutationsByProteinStartPos(\n _.flatten(groupedData.data)\n ),\n }));\n }\n\n protected getMutationsGroupedByProteinImpactType?: () => {\n [type: string]: { group: string; data: any[] };\n };\n\n @computed\n protected get mutationsGroupedByProteinImpactType() {\n if (this.getMutationsGroupedByProteinImpactType) {\n return this.getMutationsGroupedByProteinImpactType();\n }\n const filtersWithoutProteinImpactTypeFilter = this.dataStore.dataFilters.filter(\n f => f.type !== DataFilterType.PROTEIN_IMPACT_TYPE\n );\n\n // apply filters excluding the protein impact type filters\n // this prevents number of unchecked protein impact types from being counted as zero\n const sortedFilteredData = applyDataFilters(\n this.dataStore.allData,\n filtersWithoutProteinImpactTypeFilter,\n this.dataStore.applyFilter\n );\n\n return groupDataByProteinImpactType(sortedFilteredData);\n }\n\n @computed\n public get mutationCountsByProteinImpactType(): {\n [proteinImpactType: string]: number;\n } {\n const map: { [proteinImpactType: string]: number } = {};\n\n Object.keys(this.mutationsGroupedByProteinImpactType).forEach(\n proteinImpactType => {\n const g = this.mutationsGroupedByProteinImpactType[\n proteinImpactType\n ];\n map[g.group] = g.data.length;\n }\n );\n\n return map;\n }\n\n @computed\n public get uniqueMutationCountsByPosition(): { [pos: number]: number } {\n return this.countUniqueMutationsByPosition(this.mutationsByPosition);\n }\n\n @computed\n public get uniqueGroupedMutationCountsByPosition(): {\n group: string;\n counts: { [pos: number]: number };\n }[] {\n return this.groupedMutationsByPosition.map(groupedMutations => ({\n group: groupedMutations.group,\n counts: this.countUniqueMutationsByPosition(\n groupedMutations.mutations,\n groupedMutations.group\n ),\n }));\n }\n\n @computed\n public get transcriptsByTranscriptId(): {\n [transcriptId: string]: EnsemblTranscript;\n } {\n return _.keyBy(\n this.allTranscripts.result,\n (transcript: EnsemblTranscript) => transcript.transcriptId\n );\n }\n\n public countUniqueMutationsByPosition(\n mutationsByPosition: {\n [pos: number]: T[];\n },\n group?: string\n ): { [pos: number]: number } {\n const map: { [pos: number]: number } = {};\n\n Object.keys(mutationsByPosition).forEach(pos => {\n const position = parseInt(pos, 10);\n // for each position multiple mutations for the same patient is counted only once\n const mutations = mutationsByPosition[position];\n if (mutations) {\n map[position] = this.countUniqueMutations(mutations, group);\n }\n });\n\n return map;\n }\n\n public countUniqueMutations(mutations: T[], group?: string): number {\n // assume by default all mutations are unique\n // child classes need to override this method to have a custom way of counting unique mutations\n return this.config.getMutationCount\n ? this.getMutationCount(mutations, this.config.getMutationCount)\n : mutations.length;\n }\n\n protected getMutationCount(\n mutations: T[],\n getMutationCount: (mutation: Partial<T>) => number\n ) {\n return mutations\n .map(m => getMutationCount(m))\n .reduce((sum, count) => sum + count);\n }\n\n readonly mutationData: MobxPromise<Partial<T>[] | undefined> = remoteData(\n {\n await: () => {\n if (this.config.filterMutationsBySelectedTranscript) {\n return [\n this.canonicalTranscript,\n this.indexedVariantAnnotations,\n ];\n } else {\n return [this.canonicalTranscript];\n }\n },\n invoke: async () => {\n return this.mutations;\n },\n },\n []\n );\n\n readonly swissProtId: MobxPromise<string> = remoteData(\n {\n invoke: async () => {\n // do not try fetching swissprot data for invalid entrez gene ids,\n // just return the default value\n if (!this.gene.entrezGeneId || this.gene.entrezGeneId < 1) {\n return '';\n }\n\n const accession:\n | string\n | string[] = await this.dataFetcher.fetchSwissProtAccession(\n this.gene.entrezGeneId\n );\n\n if (_.isArray(accession)) {\n return accession[0];\n } else {\n return accession;\n }\n },\n onError: () => {\n // fail silently\n },\n },\n ''\n );\n\n readonly uniprotId: MobxPromise<string | undefined> = remoteData(\n {\n await: () => [this.swissProtId],\n invoke: async () => {\n if (this.swissProtId.result) {\n return this.dataFetcher.fetchUniprotId(\n this.swissProtId.result\n );\n } else {\n return '';\n }\n },\n onError: () => {\n // fail silently\n },\n },\n ''\n );\n\n readonly pfamDomainData: MobxPromise<PfamDomain[] | undefined> = remoteData(\n {\n await: () => [\n this.canonicalTranscript,\n this.transcriptsWithProteinLength,\n ],\n invoke: async () => {\n if (\n this.canonicalTranscript.result &&\n this.canonicalTranscript.result.pfamDomains &&\n this.canonicalTranscript.result.pfamDomains.length > 0\n ) {\n let domainRanges = this.canonicalTranscript.result\n .pfamDomains;\n if (\n this.config.filterMutationsBySelectedTranscript &&\n this.transcriptsWithProteinLength.result &&\n this.transcriptsWithProteinLength.result.length > 0\n ) {\n // add domain ranges for all transcripts to this call\n domainRanges = [].concat.apply(\n [domainRanges],\n _.compact(\n this.transcriptsWithProteinLength.result.map(\n (transcriptId: string) =>\n this.transcriptsByTranscriptId[\n transcriptId\n ].pfamDomains\n )\n )\n );\n }\n return this.dataFetcher.fetchPfamDomainData(\n domainRanges.map((x: PfamDomainRange) => x.pfamDomainId)\n );\n } else {\n return undefined;\n }\n },\n onError: () => {\n // allow client level handler to work\n },\n },\n undefined\n );\n\n readonly canonicalTranscript: MobxPromise<\n EnsemblTranscript | undefined\n > = remoteData(\n {\n await: () => [this.transcriptsByHugoSymbol],\n invoke: async () => {\n if (this.gene) {\n return this.dataFetcher.fetchCanonicalTranscriptWithFallback(\n this.gene.hugoGeneSymbol,\n this.isoformOverrideSource,\n this.transcriptsByHugoSymbol.result\n );\n } else {\n return undefined;\n }\n },\n onError: () => {\n throw new Error('Failed to get canonical transcript');\n },\n },\n undefined\n );\n\n readonly allTranscripts: MobxPromise<\n EnsemblTranscript[] | undefined\n > = remoteData(\n {\n await: () => [\n this.transcriptsByHugoSymbol,\n this.canonicalTranscript,\n ],\n invoke: async () => {\n return _.compact(\n _.unionBy(\n this.transcriptsByHugoSymbol.result,\n [this.canonicalTranscript.result],\n t => t && t.transcriptId\n )\n );\n },\n onError: () => {\n throw new Error('Failed to get all transcripts');\n },\n },\n undefined\n );\n\n readonly transcriptsByHugoSymbol: MobxPromise<\n EnsemblTranscript[] | undefined\n > = remoteData(\n {\n invoke: async () => {\n if (this.gene) {\n return this.dataFetcher.fetchEnsemblTranscriptsByEnsemblFilter(\n { hugoSymbols: [this.gene.hugoGeneSymbol] }\n );\n } else {\n return undefined;\n }\n },\n onError: () => {\n throw new Error('Failed to fetch all transcripts');\n },\n },\n undefined\n );\n\n readonly transcriptsWithProteinLength: MobxPromise<\n string[] | undefined\n > = remoteData(\n {\n await: () => [this.allTranscripts, this.canonicalTranscript],\n invoke: async () => {\n if (\n this.allTranscripts.result &&\n this.canonicalTranscript.result\n ) {\n // ignore transcripts without protein length\n // TODO: better solution is to hide lollipop plot for those transcripts\n return _.compact(\n this.allTranscripts.result.map(\n (et: EnsemblTranscript) =>\n et.proteinLength && et.transcriptId\n )\n );\n } else {\n return [];\n }\n },\n onError: () => {\n throw new Error('Failed to get transcriptsWithProteinLength');\n },\n },\n undefined\n );\n\n readonly transcriptsWithAnnotations: MobxPromise<\n string[] | undefined\n > = remoteData(\n {\n await: () => [\n this.indexedVariantAnnotations,\n this.allTranscripts,\n this.transcriptsWithProteinLength,\n this.canonicalTranscript,\n ],\n invoke: async () => {\n if (\n this.indexedVariantAnnotations.result &&\n this.allTranscripts.result &&\n this.transcriptsWithProteinLength.result &&\n this.transcriptsWithProteinLength.result.length > 0\n ) {\n // ignore transcripts without protein length\n // TODO: better solution is to show only mutations table, not lollipop plot for those transcripts\n const transcripts: string[] = _.uniq(\n [].concat.apply(\n [],\n uniqueGenomicLocations(this.getMutations()).map(\n (gl: GenomicLocation) => {\n const variantAnnotation = this\n .indexedVariantAnnotations.result\n ? this.indexedVariantAnnotations.result[\n genomicLocationString(gl)\n ]\n : undefined;\n\n if (\n variantAnnotation &&\n !_.isEmpty(\n variantAnnotation.transcript_consequences\n )\n ) {\n return variantAnnotation.transcript_consequences\n .map(tc => tc.transcript_id)\n .filter((transcriptId: string) =>\n this.transcriptsWithProteinLength.result!.includes(\n transcriptId\n )\n );\n } else {\n return [];\n }\n }\n )\n )\n );\n // makes sure the annotations are actually of the form we are displaying (e.g. nonsynonymous)\n return transcripts.filter(\n t => this.getAnnotatedMutations(t).length > 0\n );\n } else {\n return [];\n }\n },\n onError: () => {\n throw new Error('Failed to get transcriptsWithAnnotations');\n },\n },\n undefined\n );\n\n readonly ptmData: MobxPromise<PostTranslationalModification[]> = remoteData(\n {\n await: () => {\n const waitList = [];\n\n if (this.ptmSources.includes(PtmSource.Uniprot)) {\n waitList.push(this.uniprotPtmData);\n }\n if (this.ptmSources.includes(PtmSource.dbPTM)) {\n waitList.push(this.dbPtmData);\n }\n\n return waitList;\n },\n invoke: () => {\n const data: PostTranslationalModification[] = [];\n\n if (\n this.ptmSources.includes(PtmSource.Uniprot) &&\n this.uniprotPtmData.result\n ) {\n data.push(\n ...this.uniprotPtmData.result.map(\n convertUniprotFeatureToPtm\n )\n );\n }\n\n if (\n this.ptmSources.includes(PtmSource.dbPTM) &&\n this.dbPtmData.result\n ) {\n data.push(...this.dbPtmData.result.map(convertDbPtmToPtm));\n }\n\n return Promise.resolve(data);\n },\n onError: () => {\n // fail silently\n },\n }\n );\n\n readonly uniprotPtmData: MobxPromise<UniprotFeature[]> = remoteData(\n {\n await: () => [\n this.mutationData,\n this.activeTranscript,\n this.allTranscripts,\n ],\n invoke: async () => {\n let uniprotId: string | undefined;\n\n if (this.activeTranscript.result) {\n const transcript = this.transcriptsByTranscriptId[\n this.activeTranscript.result\n ];\n uniprotId = transcript?.uniprotId;\n }\n\n if (uniprotId) {\n // TODO we need to update genome nexus for this one to work,\n // for now we are getting the data directly from uniprot API\n // return this.dataFetcher.fetchPtmData(\n // this.activeTranscript.result\n // );\n return this.dataFetcher.fetchUniprotFeatures(uniprotId, [\n UniprotCategory.PTM,\n ]);\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly uniprotTopologyData: MobxPromise<UniprotTopology[]> = remoteData(\n {\n await: () => [\n this.mutationData,\n this.activeTranscript,\n this.allTranscripts,\n ],\n invoke: async () => {\n let uniprotId: string | undefined;\n const data: UniprotTopology[] = [];\n\n if (this.activeTranscript.result) {\n const transcript = this.transcriptsByTranscriptId[\n this.activeTranscript.result\n ];\n uniprotId = transcript?.uniprotId;\n }\n\n if (uniprotId) {\n // TODO we need to update genome nexus for this one to work,\n // for now we are getting the data directly from uniprot API\n const uniprotFeatures = await this.dataFetcher.fetchUniprotFeatures(\n uniprotId,\n [UniprotCategory.TOPOLOGY]\n );\n uniprotFeatures.forEach(uniprotFeature => {\n let uniprotTopology = convertUniprotFeatureToUniprotTopology(\n uniprotFeature\n );\n if (uniprotTopology) {\n data.push(uniprotTopology);\n }\n });\n return data;\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly dbPtmData: MobxPromise<DbPtm[]> = remoteData(\n {\n await: () => [this.mutationData, this.activeTranscript],\n invoke: async () => {\n if (this.activeTranscript.result) {\n return this.dataFetcher.fetchPtmData(\n this.activeTranscript.result\n );\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly ptmDataByProteinPosStart: MobxPromise<\n { [pos: number]: PostTranslationalModification[] } | undefined\n > = remoteData(\n {\n await: () => [this.ptmData],\n invoke: async () =>\n this.ptmData.result\n ? groupPtmDataByPosition(this.ptmData.result)\n : {},\n },\n {}\n );\n\n readonly ptmDataByTypeAndProteinPosStart: MobxPromise<\n | {\n [type: string]: {\n [position: number]: PostTranslationalModification[];\n };\n }\n | undefined\n > = remoteData(\n {\n await: () => [this.ptmData],\n invoke: async () =>\n this.ptmData.result\n ? groupPtmDataByTypeAndPosition(this.ptmData.result)\n : {},\n },\n {}\n );\n\n readonly cancerHotspotsData: MobxPromise<Hotspot[]> = remoteData(\n {\n await: () => [this.mutationData, this.activeTranscript],\n invoke: async () => {\n if (this.activeTranscript.result) {\n // TODO resolve protein start pos if missing\n return this.dataFetcher.fetchCancerHotspotData(\n this.activeTranscript.result\n );\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly cancerHotspotsDataByProteinPosStart: MobxPromise<{\n [pos: number]: Hotspot[];\n }> = remoteData(\n {\n await: () => [this.cancerHotspotsData],\n invoke: async () =>\n this.cancerHotspotsData.result\n ? groupCancerHotspotDataByPosition(\n this.cancerHotspotsData.result\n )\n : {},\n },\n {}\n );\n\n // Hotspots\n readonly hotspotData: MobxPromise<AggregatedHotspots[]> = remoteData({\n await: () => [this.mutationData],\n invoke: () => {\n return this.dataFetcher.fetchAggregatedHotspotsData(this.mutations);\n },\n });\n\n readonly indexedHotspotData: MobxPromise<\n IHotspotIndex | undefined\n > = remoteData({\n await: () => [this.hotspotData],\n invoke: () => Promise.resolve(indexHotspotsData(this.hotspotData)),\n });\n\n @computed\n get hotspotsByPosition(): { [pos: number]: Hotspot[] } {\n if (this.indexedHotspotData.result) {\n return groupHotspotsByMutations(\n this.mutationsByPosition,\n this.indexedHotspotData.result,\n defaultHotspotFilter\n );\n } else {\n return {};\n }\n }\n\n readonly oncoKbCancerGenes: MobxPromise<CancerGene[] | Error> = remoteData(\n {\n invoke: () => this.dataFetcher.fetchOncoKbCancerGenes(),\n },\n []\n );\n\n readonly oncoKbInfo: MobxPromise<OncoKBInfo> = remoteData(\n {\n invoke: () => this.dataFetcher.fetchOncoKbInfo(),\n onError: () => ONCOKB_DEFAULT_INFO,\n },\n ONCOKB_DEFAULT_INFO\n );\n\n @computed\n get usingPublicOncoKbInstance() {\n return this.oncoKbInfo.result\n ? this.oncoKbInfo.result.publicInstance\n : USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB;\n }\n\n readonly oncoKbAnnotatedGenes: MobxPromise<{\n [entrezGeneId: number]: boolean;\n }> = remoteData(\n {\n await: () => [this.oncoKbCancerGenes],\n invoke: () =>\n Promise.resolve(\n _.reduce(\n this.oncoKbCancerGenes.result,\n (\n map: { [entrezGeneId: number]: boolean },\n next: CancerGene\n ) => {\n if (next && next.oncokbAnnotated) {\n map[next.entrezGeneId] = true;\n }\n return map;\n },\n {}\n )\n ),\n },\n {}\n );\n\n readonly oncoKbData: MobxPromise<IOncoKbData | Error> = remoteData(\n {\n await: () => [this.mutationData, this.oncoKbAnnotatedGenes],\n invoke: () =>\n this.config.enableOncoKb\n ? this.dataFetcher.fetchOncoKbData(\n this.mutations,\n this.oncoKbAnnotatedGenes.result!,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId\n )\n : Promise.resolve(ONCOKB_DEFAULT_DATA),\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n },\n ONCOKB_DEFAULT_DATA\n );\n\n @computed\n get oncoKbDataByPosition(): { [pos: number]: IndicatorQueryResp[] } {\n if (\n this.oncoKbData.result &&\n !(this.oncoKbData.result instanceof Error)\n ) {\n return groupOncoKbIndicatorDataByMutations(\n this.mutationsByPosition,\n this.oncoKbData.result,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId,\n defaultOncoKbIndicatorFilter\n );\n } else {\n return {};\n }\n }\n\n readonly civicGenes: MobxPromise<ICivicGeneIndex | undefined> = remoteData({\n await: () => [this.mutationData],\n invoke: async () =>\n this.config.enableCivic\n ? fetchCivicGenes(this.mutationData.result || [])\n : {},\n onError: () => {\n // fail silently\n },\n });\n\n readonly civicVariants = remoteData<ICivicVariantIndex | undefined>({\n await: () => [this.civicGenes, this.mutationData],\n invoke: async () => {\n if (this.config.enableCivic && this.civicGenes.result) {\n return fetchCivicVariants(\n this.civicGenes.result as ICivicGeneIndex,\n this.mutationData.result || []\n );\n } else {\n return {};\n }\n },\n onError: () => {\n // fail silently\n },\n });\n\n readonly indexedVariantAnnotations: MobxPromise<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n > = remoteData({\n invoke: async () =>\n !_.isEmpty(this.getMutations())\n ? await this.dataFetcher.fetchVariantAnnotationsIndexedByGenomicLocation(\n this.getMutations(),\n this.annotationFields,\n this.isoformOverrideSource\n )\n : undefined,\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n });\n\n readonly indexedMyVariantInfoAnnotations: MobxPromise<\n IMyVariantInfoIndex | undefined\n > = remoteData({\n await: () => [this.mutationData],\n invoke: async () =>\n !_.isEmpty(this.getMutations())\n ? await this.dataFetcher.fetchMyVariantInfoAnnotationsIndexedByGenomicLocation(\n this.getMutations(),\n this.isoformOverrideSource\n )\n : undefined,\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n });\n\n @computed\n get mutationsByTranscriptId(): { [transcriptId: string]: T[] } {\n if (\n this.indexedVariantAnnotations.result &&\n this.transcriptsWithAnnotations.result &&\n this.canonicalTranscript.isComplete\n ) {\n return _.fromPairs(\n this.transcriptsWithAnnotations.result.map((t: string) => [\n t,\n this.getAnnotatedMutations(t),\n ])\n );\n } else {\n return {};\n }\n }\n\n @autobind\n protected getDefaultTumorType(mutation: T): string {\n return this.config.getTumorType\n ? this.config.getTumorType(mutation)\n : '';\n }\n\n @autobind\n protected getDefaultEntrezGeneId(mutation: T): number {\n // assuming all mutations in this store is for the same gene\n return (\n this.gene.entrezGeneId ||\n (mutation.gene && mutation.gene.entrezGeneId) ||\n 0\n );\n }\n\n readonly ensemblTranscriptLookUp: MobxPromise<any | undefined> = remoteData(\n {\n await: () => [this.activeTranscript],\n invoke: async () => {\n const ensemblTranscriptLookUpLink =\n this.genomeBuild === 'hg19'\n ? `https://grch37.rest.ensembl.org/lookup/id/${this.activeTranscript.result}?content-type=application/json`\n : `https://rest.ensembl.org/lookup/id/${this.activeTranscript.result}?content-type=application/json`;\n return this.activeTranscript.result\n ? get(ensemblTranscriptLookUpLink)\n : undefined;\n },\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n }\n );\n\n @computed\n // Get genome build for exon track\n public get genomeBuild(): string {\n return this.config.genomeBuild || 'hg19';\n }\n}\n\nexport default DefaultMutationMapperStore;\n","import { WindowWrapper } from 'cbioportal-frontend-commons';\n\nlet windowInstance: WindowWrapper | undefined;\n\nexport function getDefaultWindowInstance() {\n if (!windowInstance) {\n windowInstance = new WindowWrapper();\n }\n\n return windowInstance;\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { formatPercentValue } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './defaultMutationRateSummary.module.scss';\n\nexport type MutationRate = {\n rate: number;\n title: string;\n description?: string;\n};\n\nexport type DefaultMutationRateSummaryProps = {\n rates: MutationRate[];\n fractionDigits?: number;\n};\n\nexport default class DefaultMutationRateSummary extends React.Component<\n DefaultMutationRateSummaryProps\n> {\n public render() {\n return (\n <React.Fragment>\n {this.props.rates.map(r => (\n <div key={r.title} className={styles.mutationRateSummary}>\n <span>{r.title}: </span>\n <span>\n {formatPercentValue(\n r.rate,\n this.props.fractionDigits\n )}\n %\n </span>\n {r.description && (\n <DefaultTooltip\n placement=\"right\"\n overlay={<span>{r.description}</span>}\n >\n <i\n className=\"fa fa-info-circle\"\n style={{ marginLeft: '0.2rem' }}\n />\n </DefaultTooltip>\n )}\n </div>\n ))}\n </React.Fragment>\n );\n }\n}\n","import classNames from 'classnames';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport Select from 'react-select';\n\nimport { Mutation, RemoteData } from 'cbioportal-utils';\nimport {\n EnsemblTranscript,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\n\nimport styles from './transcriptDropdown.module.scss';\n\nexport type TranscriptDropdownProps = {\n showDropDown: boolean;\n showOnlyAnnotatedTranscriptsInDropdown: boolean;\n activeTranscript?: string;\n transcriptsByTranscriptId: { [transcriptId: string]: EnsemblTranscript };\n canonicalTranscript: RemoteData<EnsemblTranscript | undefined>;\n transcriptsWithProteinLength: RemoteData<string[] | undefined>;\n transcriptsWithAnnotations: RemoteData<string[] | undefined>;\n indexedVariantAnnotations: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] };\n onChange: (value: string) => void;\n loadingIndicator?: JSX.Element;\n};\n\n@observer\nexport default class TranscriptDropdown extends React.Component<\n TranscriptDropdownProps,\n {}\n> {\n public render() {\n const {\n showDropDown,\n canonicalTranscript,\n showOnlyAnnotatedTranscriptsInDropdown,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptsWithProteinLength,\n transcriptsWithAnnotations,\n indexedVariantAnnotations,\n mutationsByTranscriptId,\n } = this.props;\n\n const canonicalTranscriptId =\n canonicalTranscript.result &&\n canonicalTranscript.result.transcriptId;\n\n if (!showDropDown) {\n return <span />;\n } else if (showOnlyAnnotatedTranscriptsInDropdown) {\n const isLoading =\n transcriptsWithProteinLength.isPending ||\n transcriptsWithAnnotations.isPending ||\n canonicalTranscript.isPending;\n const requiredData =\n indexedVariantAnnotations.result &&\n Object.keys(indexedVariantAnnotations.result).length > 0 &&\n canonicalTranscriptId &&\n transcriptsWithAnnotations.result &&\n transcriptsWithAnnotations.result.length > 0;\n\n return (\n <div className={classNames('small', styles.dropDown)}>\n {this.loadingIndicator(isLoading)}\n {!isLoading &&\n requiredData &&\n this.getDropdownTranscripts(\n activeTranscript || canonicalTranscriptId!,\n transcriptsWithAnnotations.result!,\n canonicalTranscriptId!,\n transcriptsByTranscriptId,\n mutationsByTranscriptId\n )}\n </div>\n );\n } else {\n // using existing annotations, show all transcripts with protein length\n const isLoading =\n transcriptsWithProteinLength.isPending ||\n canonicalTranscript.isPending;\n const requiredData =\n transcriptsWithProteinLength.result &&\n transcriptsWithProteinLength.result.length > 0 &&\n canonicalTranscriptId;\n return (\n <div className={classNames('small', styles.dropDown)}>\n {this.loadingIndicator(isLoading)}\n {!isLoading &&\n requiredData &&\n this.getDropdownTranscripts(\n activeTranscript || canonicalTranscriptId!!,\n transcriptsWithProteinLength.result!!,\n canonicalTranscriptId!!,\n transcriptsByTranscriptId\n )}\n </div>\n );\n }\n }\n\n private getDropdownTranscripts(\n activeTranscript: string,\n allTranscripts: string[],\n canonicalTranscript: string,\n transcriptsByTranscriptId: {\n [transcriptId: string]: EnsemblTranscript;\n },\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] }\n ) {\n const activeRefseqMrnaId =\n transcriptsByTranscriptId[activeTranscript].refseqMrnaId;\n return (\n <div>\n <Select\n value={{\n label: activeRefseqMrnaId\n ? activeRefseqMrnaId\n : activeTranscript,\n value: activeTranscript,\n }}\n clearable={false}\n // need to explicitly set delteRemoves for cleable\n // https://github.com/JedWatson/react-select/issues/1560\n deleteRemoves={false}\n options={this.sortTranscripts(allTranscripts).map(\n (t: string) => {\n const length =\n transcriptsByTranscriptId[t].proteinLength;\n const refseqMrnaId =\n transcriptsByTranscriptId[t].refseqMrnaId;\n const ccdsId = transcriptsByTranscriptId[t].ccdsId;\n const nrOfMutations =\n mutationsByTranscriptId &&\n mutationsByTranscriptId[t] &&\n mutationsByTranscriptId[t].length;\n const label = `${\n refseqMrnaId ? `${refseqMrnaId} / ` : ''\n }${t} ${ccdsId ? `(${ccdsId})` : ''} ${\n length ? `(${length} amino acids)` : ''\n } ${\n nrOfMutations\n ? `(${nrOfMutations} mutations)`\n : ''\n } ${t === canonicalTranscript ? ' (default)' : ''}`;\n return { label: label, value: t };\n }\n )}\n onChange={(option: any) => {\n if (option.value) {\n this.props.onChange(option.value);\n }\n }}\n />\n </div>\n );\n }\n\n private sortTranscripts(transcripts: string[]) {\n const { canonicalTranscript, transcriptsByTranscriptId } = this.props;\n\n // sort transcripts for dropdown\n // canonical id first\n // then ones with refseq id\n // then protein length\n // lastly the ensembl id\n transcripts = _.orderBy(\n transcripts,\n [\n t =>\n canonicalTranscript.result &&\n t === canonicalTranscript.result.transcriptId,\n t =>\n transcriptsByTranscriptId[t].hasOwnProperty('refseqMrnaId'),\n t => transcriptsByTranscriptId[t].proteinLength,\n t => t,\n ],\n ['desc', 'desc', 'desc', 'asc']\n );\n return transcripts;\n }\n\n private loadingIndicator(isLoading: boolean) {\n return isLoading\n ? this.props.loadingIndicator || (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n )\n : null;\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { getNCBIlink } from 'cbioportal-frontend-commons';\nimport { Mutation, RemoteData } from 'cbioportal-utils';\nimport {\n EnsemblTranscript,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\n\nimport { getUrl } from '../../util/DataFetcherUtils';\nimport TranscriptDropdown from './TranscriptDropdown';\nimport styles from './geneSummary.module.scss';\n\nexport type GeneSummaryProps = {\n hugoGeneSymbol: string;\n uniprotId?: string;\n transcriptSummaryUrlTemplate?: string;\n showDropDown: boolean;\n showOnlyAnnotatedTranscriptsInDropdown: boolean;\n compactStyle?: boolean; // compactStyle = false: \"RefSeq: NM_000546 Ensembl: ENST00000269305...\", compactStyle = true: \"NM_000546 | ENST00000269305...\"\n transcriptsByTranscriptId: { [transcriptId: string]: EnsemblTranscript };\n activeTranscript?: string;\n canonicalTranscript: RemoteData<EnsemblTranscript | undefined>;\n transcriptsWithProteinLength: RemoteData<string[] | undefined>;\n transcriptsWithAnnotations: RemoteData<string[] | undefined>;\n indexedVariantAnnotations: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] };\n onTranscriptChange: (transcriptId: string) => void;\n loadingIndicator?: JSX.Element;\n};\n\nconst GeneSummaryInfo: React.FunctionComponent<GeneSummaryProps> = ({\n uniprotId,\n showDropDown,\n canonicalTranscript,\n compactStyle,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptSummaryUrlTemplate,\n}) => {\n const canonicalTranscriptId =\n canonicalTranscript.result && canonicalTranscript.result.transcriptId;\n const transcript =\n activeTranscript && activeTranscript === canonicalTranscriptId\n ? (canonicalTranscript.result as EnsemblTranscript)\n : transcriptsByTranscriptId[activeTranscript!];\n const refseqMrnaId = transcript && transcript.refseqMrnaId;\n const ccdsId = transcript && transcript.ccdsId;\n\n const refSeq = refseqMrnaId ? (\n <a href={getNCBIlink(`/nuccore/${refseqMrnaId}`)} target=\"_blank\">\n {refseqMrnaId}\n </a>\n ) : (\n '-'\n );\n const ensembl = showDropDown\n ? activeTranscript && (\n <a\n href={getUrl(transcriptSummaryUrlTemplate!, {\n transcriptId: activeTranscript,\n })}\n target=\"_blank\"\n >\n {activeTranscript}\n </a>\n )\n : canonicalTranscriptId && (\n // down't show drop down, only the canonical transcript\n <a\n href={getUrl(transcriptSummaryUrlTemplate!, {\n transcriptId: canonicalTranscriptId,\n })}\n target=\"_blank\"\n >\n {canonicalTranscriptId}\n </a>\n );\n const ccds = ccdsId ? (\n <a\n href={getNCBIlink({\n pathname: '/CCDS/CcdsBrowse.cgi',\n query: {\n REQUEST: 'CCDS',\n DATA: ccdsId,\n },\n })}\n target=\"_blank\"\n >\n {ccdsId}\n </a>\n ) : (\n '-'\n );\n\n const uniprot = uniprotId ? (\n <a\n href={`https://www.uniprot.org/uniprot/${uniprotId}`}\n target=\"_blank\"\n >\n {uniprotId}\n </a>\n ) : (\n '-'\n );\n\n const compactGeneSummaryInfo = (\n <div>\n <span data-test=\"compactGeneSummaryRefSeq\">{refSeq}</span>\n {` | `}\n {ensembl}\n <br />\n <span data-test=\"compactGeneSummaryCCDS\">{ccds}</span>\n {` | `}\n <span data-test=\"compactGeneSummaryUniProt\">{uniprot}</span>\n </div>\n );\n\n const geneSummaryInfo = (\n <div>\n <div>\n <span data-test=\"GeneSummaryRefSeq\">\n {'RefSeq: '}\n {refSeq}\n </span>\n </div>\n <div>\n <span>Ensembl: </span>\n {ensembl}\n </div>\n <div>\n <span data-test=\"GeneSummaryCCDS\">\n {'CCDS: '}\n {ccds}\n </span>\n </div>\n <div>\n <span data-test=\"GeneSummaryUniProt\">\n {'UniProt: '}\n {uniprot}\n </span>\n </div>\n </div>\n );\n return compactStyle ? compactGeneSummaryInfo : geneSummaryInfo;\n};\n\n@observer\nexport default class GeneSummary extends React.Component<GeneSummaryProps, {}> {\n public static defaultProps: Partial<GeneSummaryProps> = {\n transcriptSummaryUrlTemplate:\n 'http://grch37.ensembl.org/homo_sapiens/Transcript/Summary?t=<%= transcriptId %>',\n compactStyle: false,\n };\n\n public render() {\n const {\n hugoGeneSymbol,\n showDropDown,\n showOnlyAnnotatedTranscriptsInDropdown,\n canonicalTranscript,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptsWithAnnotations,\n transcriptsWithProteinLength,\n indexedVariantAnnotations,\n mutationsByTranscriptId,\n onTranscriptChange,\n loadingIndicator,\n } = this.props;\n\n return (\n <div\n className={\n this.props.compactStyle\n ? styles.geneSummaryCompact\n : styles.geneSummary\n }\n >\n {!this.props.compactStyle && (\n <h4 className={styles.hugoSymbol}>{hugoGeneSymbol}</h4>\n )}\n <TranscriptDropdown\n showDropDown={showDropDown}\n showOnlyAnnotatedTranscriptsInDropdown={\n showOnlyAnnotatedTranscriptsInDropdown\n }\n activeTranscript={activeTranscript}\n transcriptsByTranscriptId={transcriptsByTranscriptId}\n canonicalTranscript={canonicalTranscript}\n transcriptsWithProteinLength={transcriptsWithProteinLength}\n transcriptsWithAnnotations={transcriptsWithAnnotations}\n indexedVariantAnnotations={indexedVariantAnnotations}\n mutationsByTranscriptId={mutationsByTranscriptId}\n onChange={onTranscriptChange}\n loadingIndicator={loadingIndicator}\n />\n <GeneSummaryInfo {...this.props} />\n </div>\n );\n }\n}\n","import { action, computed, makeObservable, observable } from 'mobx';\nimport * as React from 'react';\nimport { ReactNode } from 'react';\nimport { TableProps } from 'react-table';\n\nimport { MobxCache, Mutation, RemoteData } from 'cbioportal-utils';\n\nimport { DefaultPubMedCache } from '../../cache/DefaultPubMedCache';\nimport { MutationAlignerCache } from '../../cache/MutationAlignerCache';\nimport { FilterResetPanel } from './FilterResetPanel';\nimport { DataFilter } from '../../model/DataFilter';\nimport { ApplyFilterFn, FilterApplier } from '../../model/FilterApplier';\nimport { LollipopPlotControlsConfig } from '../../model/LollipopPlotControlsConfig';\nimport { MutationMapperDataFetcher } from '../../model/MutationMapperDataFetcher';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport { DefaultLollipopPlotControlsConfig } from '../../store/DefaultLollipopPlotControlsConfig';\nimport DefaultMutationMapperStore from '../../store/DefaultMutationMapperStore';\nimport { initDefaultTrackVisibility } from '../../util/TrackUtils';\nimport { getDefaultWindowInstance } from '../../util/DefaultWindowInstance';\nimport { ColumnSort, DataTableColumn } from '../dataTable/DataTable';\nimport DefaultMutationRateSummary, {\n MutationRate,\n} from './DefaultMutationRateSummary';\nimport DefaultMutationTable from '../mutationTable/DefaultMutationTable';\nimport GeneSummary from './GeneSummary';\nimport LollipopMutationPlot from '../lollipopMutationPlot/LollipopMutationPlot';\nimport { DEFAULT_MUTATION_COLUMNS } from '../mutationTable/MutationColumnHelper';\nimport {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\n\nexport type MutationMapperProps = {\n hugoSymbol?: string;\n entrezGeneId?: number;\n data?: Partial<Mutation>[];\n store?: MutationMapperStore<Mutation>;\n lollipopPlotControlsConfig?: LollipopPlotControlsConfig;\n windowWrapper?: { size: { width: number; height: number } };\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n showTrackSelector?: boolean;\n mutationTableColumns?: DataTableColumn<Partial<Mutation>>[];\n customMutationTableProps?: Partial<TableProps<Partial<Mutation>>>;\n showFilterResetPanel?: boolean;\n showPlotYAxis?: boolean;\n showPlotYMaxSlider?: boolean;\n showPlotLegendToggle?: boolean;\n showPlotDownloadControls?: boolean;\n plotYMaxFractionDigits?: number;\n plotYMaxLabelPostfix?: string;\n plotTopYAxisSymbol?: string;\n plotBottomYAxisSymbol?: string;\n plotTopYAxisDefaultMax?: number;\n plotTopYAxisDefaultMin?: number;\n plotBottomYAxisDefaultMax?: number;\n plotBottomYAxisDefaultMin?: number;\n plotYAxisLabelPadding?: number;\n plotLollipopTooltipCountInfo?: (\n count: number,\n mutations?: Partial<Mutation>[]\n ) => JSX.Element;\n plotVizHeight?: number;\n customControls?: JSX.Element;\n mutationTable?: JSX.Element;\n mutationTableInitialSort?: ColumnSort[];\n mutationTableInitialSortRemoteData?: (RemoteData<any> | undefined)[];\n mutationRates?: MutationRate[];\n pubMedCache?: MobxCache;\n mutationAlignerCache?: MobxCache;\n // TODO annotateMutations?: boolean;\n dataFetcher?: MutationMapperDataFetcher;\n mutationAlignerUrlTemplate?: string;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n enableOncoKb?: boolean;\n enableCivic?: boolean;\n enableRevue?: boolean;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n showTranscriptDropDown?: boolean;\n showOnlyAnnotatedTranscriptsInDropdown?: boolean;\n filterMutationsBySelectedTranscript?: boolean;\n transcriptSummaryUrlTemplate?: string;\n isoformOverrideSource?: string;\n ptmSources?: string[];\n annotationFields?: string[];\n mainLoadingIndicator?: JSX.Element;\n geneSummaryLoadingIndicator?: JSX.Element;\n getLollipopColor?: (mutations: Partial<Mutation>[]) => string;\n getMutationCount?: (mutation: Partial<Mutation>) => number;\n getTumorType?: (mutation: Partial<Mutation>) => string;\n onXAxisOffset?: (offset: number) => void;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n\n dataFilters?: DataFilter[];\n selectionFilters?: DataFilter[];\n highlightFilters?: DataFilter[];\n groupFilters?: { group: string; filter: DataFilter }[];\n filterAppliersOverride?: { [filterType: string]: ApplyFilterFn };\n filterApplier?: FilterApplier;\n onTranscriptChange?: (transcript: string) => void;\n compactStyle?: boolean;\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\nexport function initDefaultMutationMapperStore(props: MutationMapperProps) {\n return new DefaultMutationMapperStore(\n {\n entrezGeneId: props.entrezGeneId, // entrezGeneId is required to display uniprot id\n hugoGeneSymbol: props.hugoSymbol ? props.hugoSymbol! : '',\n },\n {\n annotationFields: props.annotationFields,\n isoformOverrideSource: props.isoformOverrideSource,\n ptmSources: props.ptmSources,\n filterMutationsBySelectedTranscript:\n props.filterMutationsBySelectedTranscript,\n genomeNexusUrl: props.genomeNexusUrl,\n oncoKbUrl: props.oncoKbUrl,\n enableCivic: props.enableCivic,\n enableOncoKb: props.enableOncoKb,\n enableRevue: props.enableRevue,\n cachePostMethodsOnClients: props.cachePostMethodsOnClients,\n apiCacheLimit: props.apiCacheLimit,\n getMutationCount: props.getMutationCount,\n getTumorType: props.getTumorType,\n dataFetcher: props.dataFetcher,\n filterApplier: props.filterApplier,\n filterAppliersOverride: props.filterAppliersOverride,\n dataFilters: props.dataFilters,\n selectionFilters: props.selectionFilters,\n highlightFilters: props.highlightFilters,\n groupFilters: props.groupFilters,\n },\n () => (props.data || []) as Mutation[]\n );\n}\n\nexport default class MutationMapper<\n P extends MutationMapperProps = MutationMapperProps\n> extends React.Component<P, {}> {\n public static defaultProps: Partial<MutationMapperProps> = {\n showFilterResetPanel: true,\n showOnlyAnnotatedTranscriptsInDropdown: false,\n showTranscriptDropDown: false,\n enableCivic: true,\n enableOncoKb: true,\n enableRevue: true,\n filterMutationsBySelectedTranscript: false,\n cachePostMethodsOnClients: true,\n };\n\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @observable\n private _trackVisibility: TrackVisibility | undefined;\n\n @observable\n protected lollipopPlotGeneX: number | undefined;\n\n @computed\n protected get geneWidth(): number {\n if (this.lollipopPlotGeneX) {\n return this.windowWrapper.size.width * 0.7 - this.lollipopPlotGeneX;\n } else {\n return 666;\n }\n }\n\n @computed\n protected get trackVisibility(): TrackVisibility {\n if (this.props.trackVisibility) {\n return this.props.trackVisibility!;\n } else {\n if (!this._trackVisibility) {\n this._trackVisibility = initDefaultTrackVisibility();\n }\n\n return this._trackVisibility;\n }\n }\n\n protected getTrackDataStatus(): TrackDataStatus {\n // TODO dummy method for now: move the implementation from cbioportal-frontend\n return {};\n }\n\n @computed get trackDataStatus() {\n return this.getTrackDataStatus();\n }\n\n protected get plotTopYAxisSymbol(): string | undefined {\n return this.props.plotTopYAxisSymbol;\n }\n\n protected get plotYMaxLabelPostfix(): string | undefined {\n return this.props.plotYMaxLabelPostfix;\n }\n\n protected get plotBottomYAxisSymbol(): string | undefined {\n return this.props.plotBottomYAxisSymbol;\n }\n\n protected get plotTopYAxisDefaultMax(): number | undefined {\n return this.props.plotTopYAxisDefaultMax;\n }\n\n protected get plotTopYAxisDefaultMin(): number | undefined {\n return this.props.plotTopYAxisDefaultMin;\n }\n\n protected get plotBottomYAxisDefaultMax(): number | undefined {\n return this.props.plotBottomYAxisDefaultMax;\n }\n\n protected get plotBottomYAxisDefaultMin(): number | undefined {\n return this.props.plotBottomYAxisDefaultMin;\n }\n\n @computed\n protected get store(): MutationMapperStore<Mutation> {\n return this.props.store\n ? this.props.store!\n : initDefaultMutationMapperStore(this.props);\n }\n\n protected get lollipopPlotControlsConfig(): LollipopPlotControlsConfig {\n return this.props.lollipopPlotControlsConfig\n ? this.props.lollipopPlotControlsConfig!\n : new DefaultLollipopPlotControlsConfig();\n }\n\n protected get pubMedCache(): MobxCache {\n return this.props.pubMedCache\n ? this.props.pubMedCache!\n : new DefaultPubMedCache();\n }\n\n protected get mutationAlignerCache(): MobxCache {\n // mutationAlignerUrlTemplate property is ignored if a custom cache implementation is provided\n return this.props.mutationAlignerCache\n ? this.props.mutationAlignerCache!\n : new MutationAlignerCache(this.props.mutationAlignerUrlTemplate);\n }\n\n protected getWindowWrapper() {\n return this.props.windowWrapper\n ? this.props.windowWrapper!\n : getDefaultWindowInstance();\n }\n\n @computed\n protected get windowWrapper(): { size: { width: number; height: number } } {\n return this.getWindowWrapper();\n }\n\n protected get mutationTableInfo(): JSX.Element | undefined {\n // TODO implement default\n // @computed\n // get multipleMutationInfo(): string {\n // const count = this.store.dataStore.duplicateMutationCountInMultipleSamples;\n // const mutationsLabel = count === 1 ? \"mutation\" : \"mutations\";\n //\n // return count > 0 ? `: includes ${count} duplicate ${mutationsLabel} in patients with multiple samples` : \"\";\n // }\n //\n // @computed get itemsLabelPlural(): string {\n // return `Mutations${this.multipleMutationInfo}`;\n // }\n\n return undefined;\n }\n\n protected get mutationTableComponent(): JSX.Element | null {\n if (this.props.mutationTable) {\n return this.props.mutationTable!;\n } else {\n let columns: DataTableColumn<\n Partial<Mutation>\n >[] = DEFAULT_MUTATION_COLUMNS;\n if (this.props.mutationTableColumns) {\n columns = this.props.mutationTableColumns!;\n }\n\n return (\n <DefaultMutationTable\n dataStore={this.store.dataStore}\n columns={columns}\n initialSort={this.props.mutationTableInitialSort}\n initialSortRemoteData={\n this.props.mutationTableInitialSortRemoteData\n }\n reactTableProps={this.props.customMutationTableProps}\n hotspotData={this.store.indexedHotspotData}\n oncoKbData={this.store.oncoKbData}\n usingPublicOncoKbInstance={\n this.store.usingPublicOncoKbInstance\n }\n oncoKbCancerGenes={this.store.oncoKbCancerGenes}\n myCancerGenomeData={this.store.myCancerGenomeData}\n enableCivic={this.props.enableCivic}\n enableRevue={this.props.enableRevue}\n civicGenes={this.store.civicGenes}\n civicVariants={this.store.civicVariants}\n indexedMyVariantInfoAnnotations={\n this.store.indexedMyVariantInfoAnnotations\n }\n indexedVariantAnnotations={\n this.store.indexedVariantAnnotations\n }\n selectedTranscriptId={this.store.selectedTranscript}\n pubMedCache={this.pubMedCache}\n info={this.mutationTableInfo}\n />\n );\n }\n }\n\n protected get mutationPlot(): JSX.Element | null {\n return (\n <LollipopMutationPlot\n store={this.store}\n controlsConfig={this.lollipopPlotControlsConfig}\n pubMedCache={this.pubMedCache}\n mutationAlignerCache={this.mutationAlignerCache}\n geneWidth={this.geneWidth}\n vizHeight={this.props.plotVizHeight}\n trackVisibility={this.trackVisibility}\n customControls={this.customControls}\n tracks={this.props.tracks}\n showYMaxSlider={this.props.showPlotYMaxSlider}\n showLegendToggle={this.props.showPlotLegendToggle}\n showDownloadControls={this.props.showPlotDownloadControls}\n filterResetPanel={\n this.props.showFilterResetPanel &&\n this.isFiltered &&\n this.filterResetPanel\n ? this.filterResetPanel\n : undefined\n }\n trackDataStatus={this.trackDataStatus}\n showTrackSelector={this.props.showTrackSelector}\n onXAxisOffset={this.onXAxisOffset}\n onTrackVisibilityChange={this.props.onTrackVisibilityChange}\n getMutationCount={this.props.getMutationCount}\n getLollipopColor={this.props.getLollipopColor}\n yMaxLabelPostfix={this.plotYMaxLabelPostfix}\n yMaxFractionDigits={this.props.plotYMaxFractionDigits}\n yAxisLabelPadding={this.props.plotYAxisLabelPadding}\n showYAxis={this.props.showPlotYAxis}\n topYAxisSymbol={this.plotTopYAxisSymbol}\n bottomYAxisSymbol={this.plotBottomYAxisSymbol}\n topYAxisDefaultMax={this.plotTopYAxisDefaultMax}\n topYAxisDefaultMin={this.plotBottomYAxisDefaultMin}\n bottomYAxisDefaultMax={this.plotBottomYAxisDefaultMax}\n bottomYAxisDefaultMin={this.plotBottomYAxisDefaultMin}\n lollipopTooltipCountInfo={\n this.props.plotLollipopTooltipCountInfo\n }\n collapsePtmTrack={this.props.collapsePtmTrack}\n collapseUniprotTopologyTrack={\n this.props.collapseUniprotTopologyTrack\n }\n />\n );\n }\n\n protected get customControls(): JSX.Element | undefined {\n return this.props.customControls;\n }\n\n protected get geneSummary(): JSX.Element | null {\n return (\n <GeneSummary\n hugoGeneSymbol={this.store.gene.hugoGeneSymbol}\n uniprotId={this.store.uniprotId.result}\n showDropDown={!!this.props.showTranscriptDropDown}\n showOnlyAnnotatedTranscriptsInDropdown={\n !!this.props.showOnlyAnnotatedTranscriptsInDropdown\n }\n transcriptsByTranscriptId={this.store.transcriptsByTranscriptId}\n canonicalTranscript={this.store.canonicalTranscript}\n loadingIndicator={this.props.geneSummaryLoadingIndicator}\n activeTranscript={this.store.activeTranscript!.result}\n indexedVariantAnnotations={this.store.indexedVariantAnnotations}\n transcriptsWithAnnotations={\n this.store.transcriptsWithAnnotations\n }\n transcriptsWithProteinLength={\n this.store.transcriptsWithProteinLength\n }\n mutationsByTranscriptId={this.store.mutationsByTranscriptId}\n transcriptSummaryUrlTemplate={\n this.props.transcriptSummaryUrlTemplate\n }\n onTranscriptChange={this.handleTranscriptChange}\n compactStyle={this.props.compactStyle}\n />\n );\n }\n\n protected get mutationRates(): MutationRate[] | undefined {\n return this.props.mutationRates;\n }\n\n protected getMutationRateSummary() {\n return this.mutationRates ? (\n <DefaultMutationRateSummary rates={this.mutationRates!} />\n ) : null;\n }\n\n protected get mutationRateSummary(): JSX.Element | null {\n return this.getMutationRateSummary();\n }\n\n protected get isFiltered(): boolean {\n return (\n this.store.dataStore.selectionFilters.length > 0 ||\n this.store.dataStore.dataFilters.length > 0\n );\n }\n\n protected get isMutationTableDataLoading(): boolean {\n // Child classes should override this method\n return false;\n }\n\n protected get filterResetPanel(): JSX.Element | null {\n const dataStore = this.store.dataStore;\n const tableData =\n dataStore.sortedFilteredSelectedData.length > 0\n ? dataStore.sortedFilteredSelectedData\n : dataStore.sortedFilteredData;\n const allData = dataStore.allData;\n\n return (\n <FilterResetPanel\n filterInfo={`Showing ${tableData.length} of ${allData.length} mutations.`}\n resetFilters={this.resetFilters}\n />\n );\n }\n\n protected get mutationTable(): JSX.Element | null {\n return <span>{this.mutationTableComponent}</span>;\n }\n\n protected get proteinChainPanel(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get mutationFilterPanel(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get view3dButton(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get isMutationPlotDataLoading(): boolean {\n return this.store.pfamDomainData.isPending;\n }\n\n protected get isLoading(): boolean {\n return (\n this.store.mutationData.isPending ||\n this.isMutationPlotDataLoading ||\n this.isMutationTableDataLoading ||\n (!!this.store.activeTranscript &&\n this.store.activeTranscript.isPending)\n );\n }\n\n protected get loadingIndicator(): JSX.Element {\n return this.props.mainLoadingIndicator ? (\n this.props.mainLoadingIndicator!\n ) : (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n );\n }\n\n public render(): ReactNode {\n return this.isLoading ? (\n this.loadingIndicator\n ) : (\n <div>\n <div style={{ display: 'flex' }}>\n <div\n className=\"borderedChart\"\n style={{ marginRight: '1rem' }}\n >\n {this.mutationPlot}\n {this.proteinChainPanel}\n </div>\n <div className=\"mutationMapperMetaColumn\">\n {this.geneSummary}\n {this.mutationRateSummary}\n {this.mutationFilterPanel}\n {this.view3dButton}\n </div>\n </div>\n {this.mutationTable}\n </div>\n );\n }\n\n @action.bound\n protected handleTranscriptChange(transcriptId: string) {\n if (this.store.setSelectedTranscript) {\n this.store.setSelectedTranscript(transcriptId);\n }\n // TODO this.close3dPanel();\n if (this.props.onTranscriptChange) {\n this.props.onTranscriptChange(transcriptId);\n }\n }\n\n @action.bound\n protected onXAxisOffset(offset: number) {\n if (this.props.onXAxisOffset) {\n this.props.onXAxisOffset(offset);\n } else {\n this.lollipopPlotGeneX = offset;\n }\n }\n\n @action.bound\n protected resetFilters() {\n this.store.dataStore.clearDataFilters();\n this.store.dataStore.clearSelectionFilters();\n this.store.dataStore.clearHighlightFilters();\n }\n}\n"],"names":["img","_","civicTextLogo","sortValue","download","civicLogoNoVariantsSrc","civicLogoSrc","placeArrow","mcgLogo","hotspotImg","hotspot3dImg","React","revueLogo","oncoKbSortValue","civicSortValue","myCancerGenomeSortValue","hotspotSortValue","revueSortValue","_a","styles","classnames"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../src/component/StatusHelpers.tsx","../src/images/civic_text_logo.png","../src/component/civic/CivicCard.tsx","../src/images/civic-logo.png","../src/images/civic-logo-no-variants.png","../src/component/civic/Civic.tsx","../src/component/clinvar/ClinvarSummary.tsx","../src/images/mcg_logo.png","../src/component/myCancerGenome/MyCancerGenome.tsx","../src/component/hotspot/HotspotInfo.tsx","../src/images/cancer-hotspots.svg","../src/images/3d-hotspots.svg","../src/component/column/HotspotAnnotation.tsx","../src/util/DataFetcherUtils.ts","../src/images/vue_logo.png","../src/component/revue/Revue.tsx","../src/component/column/Annotation.tsx","../src/component/clinvar/ClinvarHelper.ts","../src/component/column/ClinvarInterpretation.tsx","../src/component/column/ColumnHeader.tsx","../src/component/dbsnp/DbsnpId.tsx","../src/component/column/MyVariantInfoHelper.tsx","../src/component/column/Dbsnp.tsx","../src/util/GnomadUtils.ts","../src/component/gnomad/GnomadFrequencyTable.tsx","../src/component/gnomad/GnomadFrequency.tsx","../src/component/column/Gnomad.tsx","../src/component/column/VariantAnnotationHelper.ts","../src/component/column/HgvsHelper.ts","../src/component/column/Hgvsc.tsx","../src/component/column/Hgvsg.tsx","../src/component/column/MutationStatus.tsx","../src/component/column/ProteinChange.tsx","../src/component/column/Signal.tsx","../src/util/SelectorUtils.ts","../src/component/filter/DropdownSelector.tsx","../src/component/filter/BadgeLabel.tsx","../src/component/filter/BadgeSelector.tsx","../src/util/MutationTypeUtils.ts","../src/component/filter/ProteinImpactTypeHelper.tsx","../src/component/filter/ProteinImpactTypeDropdownSelector.tsx","../src/component/filter/ProteinImpactTypeBadgeSelector.tsx","../src/component/filter/MutationStatusBadgeSelector.tsx","../src/component/dataTable/ColumnSelector.tsx","../src/component/mutationMapper/FilterResetPanel.tsx","../src/model/DataFilter.ts","../src/util/FilterUtils.ts","../src/component/dataTable/SearchBox.tsx","../src/component/dataTable/DataTableToolbar.tsx","../src/component/dataTable/DataTable.tsx","../src/component/column/MutationType.tsx","../src/component/mutationTable/MutationColumnHelper.tsx","../src/component/mutationTable/DefaultMutationTable.tsx","../src/component/lollipopPlot/Domain.tsx","../src/model/LollipopSpec.ts","../src/component/lollipopPlot/Lollipop.tsx","../src/store/DefaultLollipopPlotControlsConfig.ts","../src/util/LollipopPlotUtils.ts","../src/util/PfamUtils.ts","../src/component/track/TrackSelector.tsx","../src/util/TrackUtils.ts","../src/component/lollipopMutationPlot/DefaultLollipopPlotLegend.tsx","../src/component/lollipopPlot/Sequence.tsx","../src/component/lollipopPlot/LollipopPlotNoTooltip.tsx","../src/component/lollipopPlot/LollipopPlot.tsx","../src/component/lollipopMutationPlot/AxisScaleSwitch.tsx","../src/component/lollipopMutationPlot/PercentToggle.tsx","../src/component/lollipopMutationPlot/LollipopMutationPlotControls.tsx","../src/filter/HotspotFilter.ts","../src/component/track/TrackCircle.tsx","../src/util/LabelUtils.tsx","../src/component/track/TrackRect.tsx","../src/component/track/TrackItem.tsx","../src/component/track/Track.tsx","../src/component/track/HotspotTrack.tsx","../src/filter/OncoKbFilter.ts","../src/component/track/OncoKbTrackTooltip.tsx","../src/component/track/OncoKbTrack.tsx","../src/component/track/ExonTrack.tsx","../src/component/ptm/PtmReferenceList.tsx","../src/component/ptm/PtmAnnotationTable.tsx","../src/component/track/PtmTrack.tsx","../src/component/track/UniprotTopologyTrack.tsx","../src/component/track/TrackPanel.tsx","../src/component/lollipopPlot/DomainTooltip.tsx","../src/component/lollipopMutationPlot/LollipopMutationPlot.tsx","../src/component/lollipopMutationPlot/LollipopTooltipCountInfo.tsx","../src/cache/DefaultStringQueryCache.ts","../src/cache/DefaultPubMedCache.ts","../src/cache/MutationAlignerCache.ts","../src/store/DefaultMutationMapperDataStore.ts","../src/store/DefaultMutationMapperDataFetcher.ts","../src/store/DefaultMutationMapperFilterApplier.ts","../src/store/DefaultMutationMapperStore.ts","../src/util/DefaultWindowInstance.ts","../src/component/mutationMapper/DefaultMutationRateSummary.tsx","../src/component/mutationMapper/TranscriptDropdown.tsx","../src/component/mutationMapper/GeneSummary.tsx","../src/component/mutationMapper/MutationMapper.tsx"],"sourcesContent":["import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport classNames from 'classnames';\nimport * as React from 'react';\n\nimport annotationStyles from './column/annotation.module.scss';\n\nexport function loaderIcon(className?: string) {\n return (\n <span\n className={classNames(\n `${annotationStyles['annotation-item']}`,\n `${annotationStyles['annotation-item-load']}`,\n className\n )}\n >\n <i className=\"fa fa-spinner fa-pulse\" />\n </span>\n );\n}\n\nexport function errorIcon(errorMessage: string) {\n return (\n <DefaultTooltip\n overlay={<span>{errorMessage}</span>}\n placement=\"right\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <span className={`${annotationStyles['annotation-item-error']}`}>\n <i className=\"fa fa-exclamation-triangle text-danger\" />\n </span>\n </DefaultTooltip>\n );\n}\n","var img = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAA7CAYAAACZg3PSAAAD8GlDQ1BJQ0MgUHJvZmlsZQAAOI2NVd1v21QUP4lvXKQWP6Cxjg4Vi69VU1u5GxqtxgZJk6XpQhq5zdgqpMl1bhpT1za2021Vn/YCbwz4A4CyBx6QeEIaDMT2su0BtElTQRXVJKQ9dNpAaJP2gqpwrq9Tu13GuJGvfznndz7v0TVAx1ea45hJGWDe8l01n5GPn5iWO1YhCc9BJ/RAp6Z7TrpcLgIuxoVH1sNfIcHeNwfa6/9zdVappwMknkJsVz19HvFpgJSpO64PIN5G+fAp30Hc8TziHS4miFhheJbjLMMzHB8POFPqKGKWi6TXtSriJcT9MzH5bAzzHIK1I08t6hq6zHpRdu2aYdJYuk9Q/881bzZa8Xrx6fLmJo/iu4/VXnfH1BB/rmu5ScQvI77m+BkmfxXxvcZcJY14L0DymZp7pML5yTcW61PvIN6JuGr4halQvmjNlCa4bXJ5zj6qhpxrujeKPYMXEd+q00KR5yNAlWZzrF+Ie+uNsdC/MO4tTOZafhbroyXuR3Df08bLiHsQf+ja6gTPWVimZl7l/oUrjl8OcxDWLbNU5D6JRL2gxkDu16fGuC054OMhclsyXTOOFEL+kmMGs4i5kfNuQ62EnBuam8tzP+Q+tSqhz9SuqpZlvR1EfBiOJTSgYMMM7jpYsAEyqJCHDL4dcFFTAwNMlFDUUpQYiadhDmXteeWAw3HEmA2s15k1RmnP4RHuhBybdBOF7MfnICmSQ2SYjIBM3iRvkcMki9IRcnDTthyLz2Ld2fTzPjTQK+Mdg8y5nkZfFO+se9LQr3/09xZr+5GcaSufeAfAww60mAPx+q8u/bAr8rFCLrx7s+vqEkw8qb+p26n11Aruq6m1iJH6PbWGv1VIY25mkNE8PkaQhxfLIF7DZXx80HD/A3l2jLclYs061xNpWCfoB6WHJTjbH0mV35Q/lRXlC+W8cndbl9t2SfhU+Fb4UfhO+F74GWThknBZ+Em4InwjXIyd1ePnY/Psg3pb1TJNu15TMKWMtFt6ScpKL0ivSMXIn9QtDUlj0h7U7N48t3i8eC0GnMC91dX2sTivgloDTgUVeEGHLTizbf5Da9JLhkhh29QOs1luMcScmBXTIIt7xRFxSBxnuJWfuAd1I7jntkyd/pgKaIwVr3MgmDo2q8x6IdB5QH162mcX7ajtnHGN2bov71OU1+U0fqqoXLD0wX5ZM005UHmySz3qLtDqILDvIL+iH6jB9y2x83ok898GOPQX3lk3Itl0A+BrD6D7tUjWh3fis58BXDigN9yF8M5PJH4B8Gr79/F/XRm8m241mw/wvur4BGDj42bzn+Vmc+NL9L8GcMn8F1kAcXgSteGGAAArh0lEQVR4Ae2cCZSdVZXvv6q6VbfmpJIQMg+QhEpImEwgGAIEAkG0nwOoRNCW1cpTH+3DEYfn0ra7tQHlPZ/vgfhcgKtFbQRRcKATMGQiARJChkplrKRSQ2qe69Zc9fbv3PrfnPvVraQizVrai5N1cs53hj389z77nG+4FQRvp7cReAsQSHsLaL5NcmwInA32Q2Mj+Zcz6myU+8uR+q9bEjAX7qr712gnR6L0s99H/S82Rd5iyQSY2ISv1U4pMNUWvlb7X2vpOxH1dC/7fegnZxq0ujJt1JXGgk8Y7/C1aFH69Py6P2bM9dMxGjMRb6Do+SV1PzNc/dSlBGU4+/3UNU8lbX9ugoZ4i4auVdLu17n2eZ+prrkaRymHyrC6n2nXOOYNeLl/uC4nk4OJvnW7pPl+ST2ch4e7Ahqio7pfMkj9bsJY/vuPilhhRQSeSvr9usYjo5TwQaOudl+pMECio9If69fhozHhus+H+mi8mUdKJYOcQn3xkSMNIgxwKLAnZw6XtNFPQgacqS+UaSOTGBPWSfwpxcsv/X5o+LpLb0o/+2M0h/K06c06lhRDeF8ZfyXCQ6BR+spJaCnir1K1UZI0bzSgoEUSTdUpNTdc11hK+Ii/6pQa48+VDL5eavN5+XM1n3FgkhXKtNFHQg6cqtdy93CmD9okORf0SeLJGB/7cJ1+n47kk77SnxIelPQpi59K60qd/lzHkoKUElZKQJPMSlRWmwwhIKSYFEIZAKX0FbNLl1IBR5uS6FHKKegTmOKrUuMYK56+DJKLcSTpix7SUbpRSj/GkkQ/PB+nilrOHs7UaZMu8O2x3GU5Zhna6oOW6KmkTzL5coXxZxw5rL/0FPbhSKl+OZiRSMhAfURCiLNNCEWSkJRSBkW0EgUWpa+g5kEHYBAWwaUMq5QsJeljHON98OBJFlBWTdATAJQCUXw1XnpAX84EXwyqEhlI0CExFxmkJ7pJT9qQh/6wbppvXa4fjHIs51nOHa5Dh7kk+BKpOiy3W1Y7OCjDA7q+TL5ccl5K4Q8dyWfVBF7CX9iDARkZGE+7EvyV/LraXAkQZ5NkJEoUknGlBOCwCgGNrBVJvxREUOYq+YZFESlEKWdDAXjCT7R8evSRABp6ZNWt6sCRAcRfcxgrR4K/ogT9yowhQQMjSU85BbrKwWQ48VfklUOgA2OZW2A5/0v3fGPxu254/+U5uQVFfd29wcm6quafPfnohud+/8tS64cfCXrK0IIuZVgm4a8SXmTfuaQ789ENWmCA/mSiJDggK3U/aY7fNqIuBiM6UjRorAwEU4TFwCgBUMqsRH810i/lmAf4JIQELK1QGZWSjJL0MUYAipZK6NEnhQWUDGpdjh88GSv+zCExDieGX6dlRQlKQKWPMSRooAeOlD+ccQ501UKCPklyID/zycgoGswv3Lzu9dvnz7/k4qbGxqCjszPo6+8LBvr6gs6uWPDc75986qGf3L/exjUM5xYriWDCxaqOHljAX7gLe9nDdy74S3fkQS4ffx8DeJFpAx9FNHTDJsxPmQRCys4UjQgkA2nlIjyKABQg+9kpuuram869afV7zpty7vSiWTPmTopEsqJDQ0PB4OBQ0NhY017XUNdy+Ehp9eu7tpe/tGV9pdFAESmDYeVYACSwKAETOeRYAgmgZFCrOpm1YinlXPQxR07VZnV4+MDbZeKaeRgRXcdZHj+cC61EV8ljVUdXkbBn3nkLM4+UlWIkaMOj4InHf3fzrNkLLz5y9EhQV1sTdJkzDRguGelAHASXXrT81ptv+EDjH9b/eptdIqOiuByUxc7Chq9wRxbqyEjOXfuhv5218srVc3Nz83MWFl84vacHaMzzB/qCisqKhlisPbZj57ayl15ef+zIkQP11oWO8g2cyM/Ijz1OmxSFTjvIOhlHllP5UQrhUQagBfa4RcUXnvOtr//ziiuWXn1hNHt8fsxA6+npDvp6+4Ke3t5gaDAuW1paWhDJyAgiWZmGeLptA9V1G7eu2/pvTz6+49CR/Q1Gk9XJYHhn/+wnz31g1TVrbhw0A6Tb3HBqaGwISg+UBrd9/Pp/tj4QHHr0kWduvnblDVdkZKQHkXThdWomtGrraoIXN6zbce83Pvmw9cC30XKrZRwcByHhlDg0ek6wPPGH33/8pg/e8rG16JVKnsamxuDwkUPBs7/7t+d++ouHNtgchHaOtfe1k59vaW6JmnGD9nZ8Lp6gk2GYdMY6ghOVZQcf+ME3fmA9tZaRCecHE4ztMLESGwh7nH3c6uveNePrX/7mtQvmX3ReWpCZ1dXVFfR097iI2NODfxJuBoN0wyMzM+L4gf+hIwcObdn+p5e//4NvbbIhwoFICV8iOLzBA/5vKmLJqfBUFAFcgGGVoJBWLUAXkZ/6+W/WrFxx46W9vRlZzU1NQWvlwaDTwnx3d3fQb2G+17J5lkFsqljONKeKWs7MzA6yolmTr3nnje+fN3fRql/+6rFf/HHd0yVGU46VW1tfm11ZecIAGnDAWF9SqjhRbsYopw1ZQHDop//6UNnMqbOviGaZ2OlpAc7sJ6JnXW0tDr7E2pmHQwIeJQCiOyCyoHAsGXLCouJL3lFfXxe0tbYGg+jkJQx4/FhZUFFVHvxu3dP7rQvMSNGPrr1rXldXd7S1tdlFqgyTy09Dxq7fIkp+/rgLrJ0IAuZk6gxGHmxBpJSjFy1asHjqw//nJ+9esviK4rbWWFBT0xC0tbUF3bawu3Eso9lvC9slwz4jPT3IMlwMdyuzgqLxExesvubmBefPWbDi8Sce/t+v7tjMwoIPKxIc4K38phzL6DhCEIW4opXAxRATLU+648N3LvzuP37/1khmYUFNTV0A4JwdYjEL8YPYZ5Q0fDzE4IM2rrOzPWhqaRrf3d0FYBgDi8E7r6+vN9re2RE0NDTYOI5ByamltSlo72ilke0AQAY3blnfdefHPtsZjUTzOmOdIxyLwb19PcZ7MLpq5U0Xb9j8/CvWxNbD6mSrRHeS71iF1169Zs6sWbMXVFZWBVVVFRaR45EgPtSWt0Wc2vqTQVnZgbLGxlo5At0RW2SRjo42i97xOWlmYD8NmZP22QLs6nI6yqkokYcFzgScDD2xwaQfPvjQ1R/6wJ3Xm99klZWVB3V1dUGrOXx3TywYHBjVBywmx3FMz0izhd8ftLa1BA2NdTM6O9vkUOInhzJ2p08j94Xk8SIkp4IRyiWtWruedPuHPn7h/d99aG1XV2/W8fJDplStO4ziKLglQo8lxTo6g5q6aos6xyo2bPrDIZuDjDJKdpA2mJluqxt6qWim0Rdf/YoOeHTkwKF91ZddfPn8iIV9jBZO0bRo0JfVGxQvWLzEHKvU+nXGkyGRAd2JEBhz3C3/5bZL2WJwoL7+3iR5huz8iLP2W3vlyRPHbTwYAgJ00g4fPdDe1toW9NoWSgBFbj91dfUEXeYQFtHYI8FA2KMPDk6btuVJP/yfD13z0bWfXlNdXW9R6qQ5RvLCS4WVzU9KgwODQbMtzPr6mmD/gT1bSkp3sxWGkzxUZbjfXZ/JsRiExoCC1ypaAS7nKlbKhNtv+/iiB+97aG1HR28W54U6O69YmLcumzh8EHUX9t/Q0EAwYNtYup130tIykqJHr53BOmKtQayrPdi5a9uLDB+ehwwO3PjZNsOF8DBtxhLah0FEVrYyUsbGTc9XLF961fzB6MBwlEg2ZEbETiLRzGD6jDnzbDyOg0GJpXIsqzrHIlKTC5Yvv3pxr4UHcliWvv4e49NtTtfZu69k1zEbjzeT0WngjT2vtpQe3lc7qeicc+PnzIjDg26ODG3tLeZUjcGx8oMHbTzYoz+OLUyou2iFU93+4U+vKS+vDCoqKtzW19ffP0ImG29Rud+il52t7AyX7qLkKRxsh3C7RWt7U+urOzZttOE4seRWCX/JYNXU6UyOBVc5lVaMH63G254+7bv/8OCtXV39WdUnq4LGhjoHNAdlpYGBgaCr2/Z42+cpe/t6g8wIB8ZIkJ2VHdjdSkAk6Yy1GyitQWVVecmBQ3tP2HwOA/5WxLo2TMx5DBSfh3jhsMNGPiWAAbHt1Y0tsa62ruxobk6v3dKHD9oomhXJDPJz8/LfcemVc8yxOawStVI5VsE1V62eNnHCpAlV1VXupiQsS8zOMkSx2rrqyqaWBujg5GQMBLu+x3/2fzd+8uOffb/Jm8k5j2YifEdnmx3mW4n6rc+/8OyO4fHYisXCXBzNRStb1MUf+dCn11RVnbTtuCro6OhwZz1fnn7TlzvOWFenydplZ7cBO09Ggojpm51t+OewTuw5i/Ht6GgJDh0ueam+sbbZmsBfNpCTndGpoHU6x0IBkhSRY7HFIAkRa/z3HvhfN0Qy8/JPVJRb+K03p+qxqKGpdno2J2praw4amuqDjnZCf49FpY7ugb7+2OTJUybYowc7oOY75TrsbNUZa+t5acu654w2Gz9KYQh4o5jbMqCfHuHgeYoPfSQcbngr1ArDMahn7C/dV7Ns2TvnZmaaXWyrCqdoNDvotUhj2+Fcc6yj1o+evmNxpqEt/86//fTFAwP9zqmIwr4sOAm38n2mq93VHbPxhG9lMe45eGhf80M//t4L717zvisLCsaPZ+vkXNVtxj9y9GDla6+//LrNI7FIFLHAgowc47/5P/7pPS12juI8a7i6HcGXpdt2geaWpqAJ/A1fO6MS0Toys7KGisYXFWRHcwJbS7bQs+xs1RzUN9aXv7R53WajDf5EbA6BLAjhCJbSwaqp0+kcixkopDCsbZCVQgguvOfuLy1esfz6i8orKi1SxZ0qPcLweOq38wMroK6+1g7btf0739heevDQ/nIL82wzOE3frFlzc65ctnLeeecVF9tWOO7w0f3rGhvrq60PhVAG78Gg8B8gymUYjwgO5PGyPpfc+cuFeDcXHvHTsYHx0ubnj1614tq5dkh3B+3QzaHdlWaaY2UHFy5ccoHN22aZLR8ZwElyYNC8K69YeQFnoF47sIfl4BDPtmIRom/bq5s4r2Egcvx8YBVLLoKVHT/U9sNH7t85Y/qccyZMmAiuwZ69O5usIGIyRk6F/jIoeBT+6ufPXD+haNrE4+XHnNNwdvRlQQacqs5uICorT3Ts2b/zoNE+bnPBxOG/aOHF45YvXbl46rQZ53d3x6K2RT9lfeKPc3ETI+dicSOD5LBq6nQmxwJMPIUV4juWO8DeeeddKxubW+0hZ6Otsm53vvHZdPZ1uzsMOyv0r//T77ccPXbwhPX7K6H3xIljfZZ3Tzt3RsbVV9+w4vn1zz1tY5zSw7TgTQLMftvqhlxUMqfiPBVOEbcVukiGUaCDMQFicMu2DSd5GGirNJeVO2I7NE+LGN3x4ycUTZ48raiurhpQFTHlWAW3vv8jsy3K5rVUtritJSxHn0Ue7sSqa6rKbb6cClrII0wVAZyhKquO91pmy1RiXPo7Lls+fufr23EyzlQoTM6dN6940tUr1lxEpGq0O+T4TnEKD57NsfW1tDXadlzV/uwfn3ypra2l0eb6ztK7v3R3meXXFhVflL+weMnCPft27rIxLHxurXXOlGMlyWz9o6bTOZZTzGYiLeN8x8pfff1N02dMnTetqroi6LJb+PiBmSnxxAGd85QdXoONm9e/Yk5VZj3s2wisO66EwNW1lf323IrVDfgoAOA4tQDFUQbMcYYwPg6UYdthOJ06lCZFLJyDnHHgYEnlsqVXLsjq5+5w5MKLZkftDNgdXHPV9Rf86tf/ikGZh+4oh3MX3LH2oxeyDfba4Rx0fMfiYIzTcr7as+81jIRj+asenaAZfPSOj05+983vXtLb05s7ZcqUwsnnTM6By/x586OD/bkZx45VBI89/uPd5lg1Nhze2IGc91//7lMLB4fSstrteNFlh/0wFn0uYnZwVut/5rlfbjCnqrV54K+zoxwdXPvtLpDM1ks79lFGfuwkp3Ky2/Vp05kcCzABQo6FkTlj5X7us1+6wkKnhWC71TaQMaifcCoOjDV1J5v2lOwqsz6UarDMU1ytBKKJcxgrCbMIzzUWh7fCP3ydYrbVDXG+clErxNPGmBzxvuHx0AIUaJPT1/3pD6XLl69c4M5TPCiEi5dyMnLtEUFfUFy8aI41HxjuwtlJGLfwssuWzuQpNs+gwnrjVDimnWc695e6GxAMhZ6Sw6rxreTLn/vmylkzz5/e3x93cM53g/2DQVPDQFBfdzQ4UlZmEb9Jiwv9db7Ke997blnMmwzeaNhzTlMjGX93t2r99vairKWlGdzZ3ohY4O/vGj7+1NEVef2sxf6mt0LgJhMSkFhbIQYG3Jx5518wkz2cMwbnnZFpyCl84oQ7vCq04lxkRS2ERxlWAVkOAG+cmWtKQKU+yPOeiD3C0DnL2pJS/HGDk4fxAor55PSXNv171Wfu+lzLxAkTxw+YA4WfwuOYUTtrnTd7/lQbX8gcywnH+soXv7KgsGBS7okWnv73j9C9w2hi8OqqiuM2D6fS2QoaisKU6c1NbWmRzBp7at9mh/1+c2jLdsc2YGVba4sdMeqIfuDPAnP6Wxk9b+78cRMmTh1/sqbG8UqFP0/u0W1vyRuHbA5RCofCucAfexCRFIlEW5gJN2SmLvzjK8AazpRSeYTm+I6FcRPOVXzBonHnTJoyoYcHgHb3QxgO5/hDyMGgvdPeWcSVQBkpiJJyMpW0aV8fsVVaH45n0SpjKMxrxLU5hyVAAhCAAUCc2J13du157VB2Tk4QjUZHyM2BPtNeb+C4N6953/k2B+cijyNfd/2Ns7rsro1HJ/ZwIGk+fsP2yN2dPVzca+PlVPCXgdDDYWtWSnNfMtjdmm1V7kFrr9HmjhIHj7DVWwC28SxoLers97/vlpm8moGXuyMN4Y9TDQ722f9DgZ1fiVZEKLAX/sJcpbCnn7HCH8fynQrHGpNzjdWxWDUJ57rxhpumc2fFlsETZnenxt2alzEQb+m3v7LlhM0FYO3ZCI6T+Zk2XyGcIGwM51gRe6ga56MymS9b0/CZR44FOHIsF0H+9Kc/Hoqa82TnmmMx3pObem5ObpCXlxNcdNGl02xuwqmoX7Hsisl9Pbbd2RkqPA9jd9mB2Z7lNe/Zt0t6w1O6IJMMk56eaRuYOy+OlEFbukUdRayEcy1evGQCC5cDelgGrt3WaP81NdupPr6gFDmFs489dbVjIy0GP1qBvcPfyjElnCVVYkWR3MqyMsmx7FZ7FpGKkE20SJV4+MbLZUuKGICLguHMihDYVnU8UQKeGCJJKbcVGk8O8Kl4e1sh86BNBiSttqxXdrxcW1N/snlS0cSiXosMI7ZD226zMrOCC+YXT7R5OBY6pN3z3++ZnJWVm9Hdc9ItqjB/9+zKHO5Y+dGDNh4DoSuLBP7IASDI4XDNSLN/xt89kxtMxhH93I2IcxM3DyxIWYuLL5nEouYpelgGBmQOZdhLZffwE17w9heWjz+y+c5ulwmchJdK+sackrVJnianYgwZQ7s8MDCYjlMNpQ3GP3mxVe8+ffFKFB5+tSLjYhw/a0WoVB/jUVZOlaRYur160SoP8+Ta44tjQQO6YXBjO3dsP8BWSOQK0+GLi2hONMgvyM+49OKlk2w+z5cK1ty0ZhIfZrhXODbGn4c9eIXDgttX8sYBG+87FoaVXujjsDVd0kbThYjlnp4jTPLCzrSvKNIGzKmIWr4MqmfwVsN2C3NOeMFX2KoED+GuUn2SM4w/tMaczuRYAOA7mHOsmTOnFRKN3DYS2t8xrMsYOf6eUBFHgupaJQKr7pe0KycU4nsq96xKfMLlKb6i6zsXK9St2H9f/7uD0WzbDu2s5YwYopOdneNed6y69nocK99y3sqVKwtwHrcNhsbzHIlHK3X1Nc2Hjx7i8YAcC6eS0ZAFuUjGNn6OSmDm0eR8lcGLdounNhbcEwt8+oxzc3j9xMPgVHOlT9wnEwt0NPx9zP26sJe8yDzmNNpW6BOQc6lMnzhpUkH82yPb4w2AVMk9Z7JVZ0kC+nVfWL+eilRSm/mNe7o82lYY4gtQrECtWsBF59jL2zfX1tRUN0+cdE5Rb2/iiwjriqdIWsQd7ufOmcfjlZzbbrstmpedl95c35JyG+wf4DFDT7Bv357dNh6n8h2LqAB+yJPQ172vszMR5UAEEU+l+NnP3Cr+VQhzAdOVEyeeE21o4LxtHpcC/4hthUS7OPxumHhSqk6HX3cD/6P+S+0VqanLsdIQJ37XZ4oZKKkyq4ZnTZaYpyQauj7rkvOQcyqAS8Hb4wtoGNKPWP5ZI7Z9xzbbDrNdZBpJyz5AtMcOM2bMiNg7zRx7kJlrj6jse6Uedybzx/OS3T16saj12s5XSo2nnIoIqYilLUbOZXe38Xee7ow1QhecI/nrD6Plku2A7m4QZH05EnVzNl7Eh7+4sMm+LYapvTXF2TgWhnJ5wB7iEaAjBgxGHi0DmCWUoUKmfrbZppxKfFkc58fb+dS8h/kyKZVzJbbDP/7htwezbTvMyck2AyXrglGzbLuP2Hnl+lU3ZhcvLM5EZ/dlQIgv31zhWPblaoV9MkQokWPhVDrDaCtCJpc4KYymA/zdInE7oWbES34rAIhhmRO0bNGxlXLXaSmM/Z9jhzjjs/j/TFthwpmMpow0WNdY2z516vQpfC+dkcECHJkIxZwDLLlz2WnKMAF/fBgUF97Z7uJnELqTE8bgAepwkszaCmkGbZwrtnnrxpqTJ6ubJ9l26O7AQkbMs68u+Fz38mXLIkuXLk2P2VMeHmK6QzWULHHLzxN48vHjR49Yk5xK0QrHQkf4JunKtq6t26dp4+L6WcQf/lKBeQka9Q0nu7OysrNHi2jcfDoni989CU9sTR3Q1EbpJ+eJ1iDnl/1pV90fP2p9pGVODRUhSpTSihuwz43b3MHXVjsGTpWj9p1Pdm52MH36dF5Y8+TYz3omQxt1lapzDRA+GCjnnurwBh9HSMXXrXSLpF5CfmTHuTAyUSRxy71t++YDRK1su0MM04uaU02ePCn4zKfudgbgs6ChIXva7unMLT8vezs6Wvte3rb1dNsgGApTq5p1bd25u0IXAZNxZIHQl5bu7ux8Gwy0tDZ3gy93tb4sqnOnm5ubGxSMKxKOlMo+xrKDSo3RPDmgw95oJAGLDqOl0SKWAJBCciyM098Ra+9ySmRZxOoLO32cFY7Hjxfsdn2KfYBWaa3uHaOVfHajVYxjQxM+SgiPXChLyKNOZqz9EiJIs93JAQrw4cTKHz7bSQdkJ8MHB6MdujhX7LfP/vrAhz+89sqoPffp7rXPTryoxXmu3z68q61vCCJN6fb6ipe9yTx72y1aWfvxivJybgagOUybiKVtEJ3kWFYdTtbqHg0YzYzBZLpEHKeLvSu30chNJvV1dMb6wB+Ze/t86OIDkJtIO3XKFN4WgCOv4dyrOCuxA3KRwBVc/ARB2Vt8KYUjY0cypdVLp4tYDAszQYi+3bt31WC8zBEHzlMH+Rw7FOdYxJo6bep4m4MyRC5u28k8F9ITbUo/08cYHBAwAAYAQN7Ji2PxKCNxWPXlMMCHH3PYcJd8Hbjt96NWbOPmDTX795dUuPMUW49Hi8Ov+3adRwn2bTs/eEjqNwO6l87Wf+jggSNGG6ci+9ugHBrDjEicU3FWn66rGy8XtdLSkR/DOuyt7Dt8+GCr63M/2zqFuWggNw9Is7IygouXXMLjErAU7sJemON8ZF3Tj62wGdgTvViIwn9MUQuDjZZ8g0gpZ5T1L6yreuA+O+zal5gcIOOPWpLJ5OXnWQToDi65+JKp1iOliBLQwkEQmm2Ja3j5mX4U0WrzlXPboZ7f2JikhFN5h3f1aQXCizp8Mb7bEnfsevXo5ZdfPpNA736aZh1jSV2xbvvitdN+FdTW9/s/PFtic1JFK3iii/RLIm1+7M5ZA7Yg/OScLa4L8kKDReGcc39pSaNt0/Oybcvj5XWqxFe5OP1VK1fO3L33jWobg8OgNzSQh0WLPXFayUbJNe1agMwhkzQO56I+akrWJnkYExHCXy2OWWlpScvx48cbWcHuIR3ngVAmAhQWFAbvuGzZ1NmzZ/NqhMg1wTJ1VtE5lidbPne4pE4bfYxjPKuI1QMIblu0b6jYDm0rjG8VYb48mUcmLwkMGUigybFijz/6aCnjebzA1DDN0a7ZAvlRaRm/tToVrXBWbYNY3TecXSYng82dF8M8WBxOl3jEkmM5/J955ukqPmF2v0gaRd68vNygqKgoWL36pvOMIziCZ5Fl8Bf2YO5n2ukHf6KYv3PoWILPADB51DSaY/nGkGOhVMIYG7ds2M+PTPkwTq8S/JJ9vqAwP5g5c2bkH7/13ctsrpRCkSmWp1qeFspTv/jFL15ubVIQMFhphHK3JZpjOZkB3ueXqLNdWQ6l8CJxBrIxLmIdPFzasrdkr9sOiYQJWtwgjJKBlR8m8Bnyli0v7TRasWF6YMQKhwdRBvxcpLFyZLLY4e5yw3wsWrnPrzPSmast3OF/tOxw667dO6vdD1JGkZetMtdepC+5cPGEu+/+7AVGA2eRQ/n4T7d22WHKvffeK/x952Jb1IFejmVNo6cRFvCG+saQYgAGgLEnn/zlvn4Lw/HDrP3c3a0wVtmpzC9vcm3l3HLrrXMefvhhnGuyZSmFQjMszyQvWbJk3pYtWz7xwAMPfPtd73r3QmsjcsmxElHLvqpwK4VHCj6vRJ32+NNqm56U/Ogrx8JQTp9Xt798FFlz7G4qQcvTJdzG58cxe3ZlH9F1bn9l+4lhOn60AjM5lRZqkkC6AMMwfXdtulhUkmOBveTt3Lx50zEXuS3K8jYxPJ9oxi+cC21x/8O3/umyu+66C+cS/jiS8Hc2uPnmmy8sLy//xte+9rUvDo/TLkPU0nnLP+v+WRHLaCX203DEwhAdL7ywrnLr1s0H3B5vimWYduFwDgle/WDoT33qU4tKSkrW3HfffUvnzZs3x2ig0Iy777576VNPPfWejRs3fmbFihVXWpsB8e07rJBiRCwpxs+k3GIAyDA/rmUQ6HhJhsVI/ZYxugyFM8T+36OPlCIvf8dgLNshv/3j7y0cPnLwOPOHM7Sgi+PCx3csu0yd3EE8dJTg+ZV74W6fYtss5IWmHKvja1+/94262rrOVBj4bdm5OYH9RiPyyCOPvPPFF19c9dWvfvVSo4NjzViwYMH54L9169bbnn766U/Psl+2FBYWFv38iSc/ZP2pIpYO8XIqlTY8OZ3u8M5IrXIp5oxg7e2W27734AMvPvboT88rKMjP4mnw8G0+8xIJI/ElRDAUCRYtWlRE/vKXv3xJYkCowll07tw5s/7lX+5b/pWv3PuGdWMgFHCh2J2x7MId0kdueeZsdpcF03jCKErUpQ9tGCrhXKWlpc179u6pWLL4wpl8vcBWPlpCHz675vHDunXrdtg4HAtsMHzYsdxCsHYlObmu7bxojzX6k4fFD++8gk5shdCFBzog++BPHvvRps/d84V32Rg7jdsC5rVEKPENfndXv71sjwTXXXfdNPJ3vvOdy0PDEpddsb7gulWrVt1440071617Hj7w7LTsb4UIC0A+vnZ5KiVrc6pdNRkD48JEKwbHat2w4cXyZ3/7zMtd9rcZ+D4IPonXChbeqbMa+bsN7e1miG7IpE7207ygs52fq9uXmQbU7WvvuMYiG1shZytWipRxBIiCYV6On9sKnVoYQFnGlGMhLFnGwjE6X9626XBWtm3ftspT0VYbv0jqtB+G1tSebC4p2XvS5jJfzgVNaKMs/MTbL51ccl4eD4i2Ss6JvIDOSI8Q9aAp7Dus3ma59f7779u1d+/uY/yYxX6QYU0j8Web5MuL9raY/c4RUqkTfYzBjtn2ydD9933vgzZSj3vkVNxNyg6jr7zhQak5nQLENwYKAiDKtVpu/uw9f79+89ZNpS32jTareNBeyAIYwPiZB4/cyeA8qXIsxsIwqQ1MHlXYHU3W44//bDVNriP+36BFReSxsx1RK5lH/DpxV4hxQZLsDDlcqk2OJYN1/uhHP9pnY2w7BL/R6NuDUotoXXa+2leyb78NAwsyCoAPFsapfL5yKmFJX5/hFNeFbTCkCzg4h8vMYKxkFPY4Vovlprv//r/9uqKyshFn5xfmfBwQpsU1+ON8qbCnjT7G8G6Up/pz5s6a/cQTP7/OeBAGfYeSY1nz6Mk32mijAMUBYeUIx7K2xrVrb/vFzp07SlvNuZqam5yCEHPgANBZZFyAnzRV20/X8/Ny5n7sjo9NM1Li32uvbBJhLxXdNDPS8F9uGc3IGBMaOBZOgEM4g+3fv79h7969x9zzOYyRQu5+e4XDX7nhJ1fbt7+y1+YSvdkqoIMD+NEKXmGnEm/kc47FESLMy17l2LnV/p5EJAN6khE+7hhipXOsQ4cOVX/ik3f+tOLEicaODvt23s59PL8iUoVpjuWa782a7Ivm8vITwexZs9dcdNFF3JErnTZKaRDlyE3Z700GBUAwBN4rL0548h13fOSJ73//wfdcddVVy/n7AePGFwYF9hwrx7w//Cd6klnEr/jDZQCDY9ba36qqsV+g2J/hqduwcUOFjQBYeLGiANqlVHQxEivUEnMwngyNc2JISowtfXAGGax1+/btJXaHOjeak2XbAkOTE1G5zf6ugv1IodLeQJywXjkWzhnmdzqn6k5EX3PgsC6cFd1WGMkAc+RTtEJe9MAG8Bsw5xr8u09+4rFvf/vbtyyYv2Bum73xKBpXFOQV5LvXau40ZANHS/wRPKJwW3uH/TKoPrAP1eznZ/XBsePH9ljCgcEKnmR0OmM6k2NBAEIyCAxQBssp6xA38IUvfP43t99++7G/+Zv33jB16rmT+AozLy/PvSzl3RV3ju6WyyaT+JtNfBzHHVZHW7v9HLw54O8QNDY29JhCr/34xz9eb8PgB1/49dlDTPtpShAcLSvjbxBYU3Kyz6bt0xaGJ6KIjI2XyLnQiUEYjX4ZrdVuyzfd9uHbbmhuaYnyC+9w4usG+JaU7OfQDugIgeExOPRwZDkvfIQfGIonTm93dBn9HAHsYbN7HmZticSrpG57Rmb6Ip+2W/gwF/rgAU9oDhw9erj/9tvXPvb5z39+xerVN6xqLmjO4kch2facka0tKzPqIpiNTSS+I8OhYvZH8bjDbWlpcbmuvq7V7hR/Y3eKL9ng8AIdk3ON1bEQRsDgSMq0AxyKomDfE0888YrlAx+85YOLrrn2mstnzZ41l8O4u413WNio4cQLXv4+FJ/0EgnsD5hVHbDfe2/asmm3vbhusmEohbGgT8TqGuof6np91+sWqsttS8IfkhPPbrjdtoTBGSCDIx86KKMDTkA/44g87pC6ZevWvSbvUv5wGXe7fuJwjdHXr1/3srX7jiVZxUdOJcei3Xfk9ubmtn70qK4+6c6fPh++0iBZ9Ec+dMG55FjQIiEvOij3PPjggy9YftUeI1yxbNmydxQWjpvIVxp8pRpO/KqIv/LnonBbW6/hX7l/X8nO3zz7m1dtbFg3LXBscUbnAtyxJDkSFkNjpORujbsG9mAeYPK8iczrA0q9Dsh973vfO2/mzNlT7TVPjv2ZHjuzpqXZYwOX7C6w21bsyfXr1x+xORhYYR9AyYCGIvCFJ8+0/IwsyAXYKM98DAEwOCc3GdquZHzRwzDQQlZkHj+c9VIWveAJD+YgCzR0zmm2ugxAG/IjgxaDVZ3c8BFW8IE+byLgB17wR464N8X5yNmlC3rgXMLEqm48dH38oU+mLdfefBRdeuml04uLi+dYdHJ29PG3qNxy9OjR6m3btp2w8fCEB7rAjwx/spxaURm8tXismpzG6ljMSuVcAOYbG2WUcTiyblnD75qsyxkLATEYBgE0DOc7Ff0YFecRP9GEN8ZANsagNPNlFADSSocmPOAFIMxBJsmPrHIwLQqMDU94MAdZJKMMAA+BTh8ySGarurn+QvQdWQ5Am3QRH2SVoeFF5pp26DMOudBBThvGHrr0oYOPv126+WAGLWSGrrATX/QSXx8/6cf8lAmFx5pQhOQTo43rxFZodQRAMBSSA6AUGSBwEIzKXLLmSjkUJOMAZOgzTo4ASAJKNOVYKMxcGR85AAva0IKXZEYOrmlnPok+aDBfTgUPxkpWySkjUDKedgHOWCXxo48x8CLTDm/mSx85sOSSHowRH+ZAi/nQ0TWlnEPYy6mgj62Fv1XdfNmOudILnj5f6tCVfsLQ19G6k9PZOBYzRUzG5prsCyjlWIECDONIMR9Y5iKogERBKQl4tEObxDytUGjJqWgjiZbmAwSgUJJFi3Ek6EITPkq0cY0OOKV4yLHUDw/GCHDo0+bzgA/0KZknHa2akJV5OIzPh37xkeziBQ/hIj2gS6ad8YwFdz+DF1mL2pdLvHzcfL60+3wZL95WTZ1gdrbJJ4pCPnBSDqAEmJTSakEpKebPFTjQEHiib00Jx4KOnwGL5NMSDYECHbJAkQ5cK9EmGTCO5JYxGMd40RLYKn36jCWJj2irTXQwoO9U4ELSeF8P1cN8JA/9yCKayA9tSuElXXz8NZ9SNPySunj6+Ek36x6ZpMjInjO3aC4lGaHJciBKlPLbpJg1u4RwZAEtJblWdgPtP5+PeKhNY0RrNHriR6m5Kn05RzMEfCSXLyt18RYPxpJEnxIeyiy8v4aEc6Kzrxf10yaUfbNJNMIAhoH0+8VTwlLKYKqrT2P9+X6dfq4ZT9I8Hwy1qYyPjM+j7tOjrgWgdo2nFI2x0Nc86JBEj5JI8NeQwAKdSSrjV6f5XwqfZshZdYmeX1JXhpj6qEtQGSt8zRg/aa5Kv8+viw5to9X98T491VX641QfjabfrrF+6dM801h/3l9d3Vf0rRD+z6H/nxrwtwLkt2m+jcDbCLyNwNsIvBkE/j+/W42JtsVFTwAAAABJRU5ErkJggg==\";\n export default img;","import * as React from 'react';\nimport _ from 'lodash';\nimport { ICivicVariantSummary } from 'cbioportal-utils';\n\nimport civicTextLogo from '../../images/civic_text_logo.png';\nimport './civicCard.scss';\n\nexport interface ICivicCardProps {\n title: string;\n geneName: string;\n geneDescription: string;\n geneUrl: string;\n variants: { [name: string]: ICivicVariantSummary };\n}\n\nexport default class CivicCard extends React.Component<ICivicCardProps, {}> {\n /**\n * Generate variants\n * @param variantMap\n * @returns {JSX.Element[]}\n */\n public generateVariants(variantMap: {\n [name: string]: ICivicVariantSummary;\n }) {\n const list: JSX.Element[] = [];\n\n if (_.isEmpty(variantMap)) {\n list.push(this.variantItem('_naVariant_'));\n } else {\n for (let name in variantMap) {\n let variant = variantMap[name];\n let entryTypes = Object.entries(variant.evidenceCounts)\n .filter(([key, value]) => value !== 0)\n .map(([key, value]) => `${key.slice(0, -5)}: ${value}`) // Remove \"Count\" substring from key\n .join(', ');\n list.push(\n this.variantItem(\n name,\n variant.url,\n variant.name,\n entryTypes,\n variant.description\n )\n );\n }\n }\n\n return list;\n }\n\n /**\n * Get variant item\n * @param url\n * @param name\n * @param entryTypes\n * @param description\n * @returns {any}\n */\n public variantItem(\n key: string,\n url?: string,\n name?: string,\n entryTypes?: string,\n description?: string\n ) {\n let result;\n\n if (url || name || entryTypes || description) {\n result = (\n <div key={key} className=\"civic-card-variant\">\n <div className=\"civic-card-variant-header\">\n <span className=\"civic-card-variant-name\">\n <a href={url} target=\"_blank\">\n {name}\n </a>\n </span>\n <span className=\"civic-card-variant-entry-types\">\n {' '}\n Entries: {entryTypes}\n </span>\n </div>\n <div className=\"civic-card-variant-description summary\">\n {description}\n </div>\n </div>\n );\n } else {\n result = (\n <div key={key} className=\"civic-card-variant\">\n <div className=\"civic-card-variant-description summary\">\n Information about the oncogenic activity of this\n alteration is not yet available in CIViC.\n </div>\n </div>\n );\n }\n\n return result;\n }\n\n /**\n * Render civic card component\n * @returns {any}\n */\n public render() {\n return (\n <div className=\"civic-card\">\n <span>\n <div className=\"col s12 tip-header\">{this.props.title}</div>\n <div className=\"col s12 civic-card-content\">\n <div className=\"col s12 civic-card-gene\">\n <p>\n <span className=\"civic-card-gene-name\">\n <a\n href={this.props.geneUrl}\n target=\"_blank\"\n >\n <b>{this.props.geneName}</b>\n </a>\n </span>{' '}\n - {this.props.geneDescription}\n </p>\n </div>\n <div className=\"col s12\">\n <ul>\n {this.generateVariants(this.props.variants)}\n </ul>\n </div>\n\n <div className=\"item disclaimer\">\n <span>\n Disclaimer: This resource is intended for purely\n research purposes. It should not be used for\n emergencies or medical or professional advice.\n </span>\n </div>\n </div>\n </span>\n\n <div className=\"item footer\">\n <a href={this.props.geneUrl} target=\"_blank\">\n <img\n src={civicTextLogo}\n className=\"civic-logo\"\n alt=\"CIViC\"\n />\n </a>\n </div>\n </div>\n );\n }\n}\n","var img = \"data:image/png;base64,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\";\n export default img;","var img = \"data:image/png;base64,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\";\n export default img;","import _ from 'lodash';\nimport { observable, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\nimport {\n CIVIC_NA_VALUE,\n ICivicEntry,\n ICivicVariantSummary,\n} from 'cbioportal-utils';\nimport CivicCard from './CivicCard';\n\nimport civicLogoSrc from '../../images/civic-logo.png';\nimport civicLogoNoVariantsSrc from '../../images/civic-logo-no-variants.png';\n\nimport annotationStyles from '../column/annotation.module.scss';\n\nexport interface ICivicProps {\n civicEntry: ICivicEntry | null | undefined;\n civicStatus: 'pending' | 'error' | 'complete';\n hasCivicVariants: boolean;\n}\n\nexport function hideArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.display = 'none';\n}\n\nexport function sortValue(civicEntry: ICivicEntry | null | undefined): number {\n let score = 0;\n\n if (civicEntry) {\n score = 1;\n }\n\n return score;\n}\n\nexport function download(civicEntry: ICivicEntry | null | undefined): string {\n if (!civicEntry) {\n return CIVIC_NA_VALUE;\n }\n\n const variants: ICivicVariantSummary[] = _.values(civicEntry.variants);\n const values: string[] = [];\n\n if (variants && variants.length > 0 && variants[0].evidenceCounts) {\n _.forEach(variants[0].evidenceCounts, (value, key) => {\n values.push(`${key}: ${value}`);\n });\n }\n\n // this indicates that we have an entry but the evidence is empty\n if (values.length === 0) {\n return CIVIC_NA_VALUE;\n }\n\n return values.join(', ');\n}\n\n@observer\nexport default class Civic extends React.Component<ICivicProps, {}> {\n @observable tooltipDataLoadComplete: boolean = false;\n\n constructor(props: ICivicProps) {\n super(props);\n\n makeObservable(this);\n\n this.cardContent = this.cardContent.bind(this);\n }\n\n public render() {\n let civicContent: JSX.Element = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n const civicImgWidth: number = 14;\n let civicImgHeight: number = 14;\n let civicImgSrc = !this.props.hasCivicVariants\n ? civicLogoNoVariantsSrc\n : civicLogoSrc;\n\n if (this.props.civicStatus == 'error') {\n civicContent = errorIcon('Error fetching Civic data');\n } else if (this.props.civicEntry !== undefined) {\n if (\n this.props.civicEntry !== null &&\n this.props.civicStatus == 'complete'\n ) {\n civicContent = (\n <span className={`${annotationStyles['annotation-item']}`}>\n <img\n width={civicImgWidth}\n height={civicImgHeight}\n src={civicImgSrc}\n alt=\"Civic Variant Entry\"\n />\n </span>\n );\n\n civicContent = (\n <DefaultTooltip\n overlay={this.cardContent.bind(\n this,\n this.props.civicEntry\n )}\n placement=\"right\"\n trigger={['hover', 'focus']}\n onPopupAlign={hideArrow}\n destroyTooltipOnHide={false}\n >\n {civicContent}\n </DefaultTooltip>\n );\n }\n } else {\n // It's still unknown (undefined) if the current gene has a Civic entry or not.\n civicContent = loaderIcon('pull-left');\n }\n\n return civicContent;\n }\n\n private cardContent(civicEntry: ICivicEntry): JSX.Element {\n return (\n <CivicCard\n title={`CIViC Variants`}\n geneName={civicEntry.name}\n geneDescription={civicEntry.description}\n geneUrl={civicEntry.url}\n variants={civicEntry.variants}\n />\n );\n }\n}\n","import { DefaultTooltip, TruncatedText } from 'cbioportal-frontend-commons';\nimport { Clinvar } from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport * as React from 'react';\n\nexport type ClinvarSummaryProps = {\n clinvar?: Clinvar;\n};\n\nconst NoClinvarData = () => {\n return (\n <DefaultTooltip\n placement=\"topLeft\"\n overlay={<span>Variant has no ClinVar data.</span>}\n >\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n \n </span>\n </DefaultTooltip>\n );\n};\n\nconst ClinvarSummary = (props: ClinvarSummaryProps) => {\n if (!props.clinvar) {\n return <NoClinvarData />;\n } else {\n const clinvarId = props.clinvar.clinvarId;\n const clinvarLink = `https://www.ncbi.nlm.nih.gov/clinvar/variation/${clinvarId}/`;\n const clinicalSignificance = props.clinvar.clinicalSignificance;\n const conflictingClinicalSignificance =\n props.clinvar.conflictingClinicalSignificance;\n return (\n <TruncatedText\n maxLength={30}\n text={clinicalSignificance}\n addTooltip=\"always\"\n tooltip={\n <div style={{ maxWidth: 300 }}>\n <div>{clinicalSignificance}</div>\n {conflictingClinicalSignificance && (\n <div>{conflictingClinicalSignificance}</div>\n )}\n <div>\n (ClinVar ID:{' '}\n <a href={clinvarLink} target=\"_blank\">\n {clinvarId}\n </a>\n )\n </div>\n </div>\n }\n />\n );\n }\n};\n\nexport default ClinvarSummary;\n","var img = \"data:image/png;base64,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\";\n export default img;","import * as React from 'react';\nimport _ from 'lodash';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { parseMyCancerGenomeLink } from 'cbioportal-utils';\n\nimport mcgLogo from '../../images/mcg_logo.png';\nimport annotationStyles from '../column/annotation.module.scss';\nimport mcgStyles from './myCancerGenome.module.scss';\n\nexport interface IMyCancerGenomeProps {\n linksHTML: string[];\n}\n\nexport function placeArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.left = '10px';\n}\n\nexport function sortValue(links: string[]): number {\n return links.length > 0 ? 1 : 0;\n}\n\nexport function download(links: string[]): string {\n return links.length > 0 ? 'present' : 'not present';\n}\n\nexport function myCancerGenomeLinks(linksHTML: string[]) {\n const links: any[] = [];\n\n _.each(linksHTML, (link: string, index: number) => {\n // TODO this is a workaround, ideally we should fix the data itself\n // parse the data as an HTML dom element, since it is formatted as an HTML link.\n const myCancerGenomeLink = parseMyCancerGenomeLink(link);\n\n if (myCancerGenomeLink) {\n links.push(\n <li key={index}>\n <a href={myCancerGenomeLink.url} target=\"_blank\">\n {myCancerGenomeLink.text}\n </a>\n </li>\n );\n }\n });\n\n return (\n <span>\n <b>My Cancer Genome links:</b>\n <br />\n <ul className={mcgStyles['link-list']}>{links}</ul>\n </span>\n );\n}\n\nexport default class MyCancerGenome extends React.Component<\n IMyCancerGenomeProps\n> {\n public render() {\n let myCancerGenomeContent: JSX.Element = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n if (this.props.linksHTML.length > 0) {\n const arrowContent = <div className=\"rc-tooltip-arrow-inner\" />;\n const tooltipContent = myCancerGenomeLinks(this.props.linksHTML);\n\n myCancerGenomeContent = (\n <DefaultTooltip\n overlay={tooltipContent}\n placement=\"topLeft\"\n trigger={['hover', 'focus']}\n arrowContent={arrowContent}\n onPopupAlign={placeArrow}\n >\n <span\n className={`${annotationStyles['annotation-item']} mcg`}\n >\n <img\n width=\"14\"\n height=\"14\"\n src={mcgLogo}\n alt=\"My Cancer Genome Symbol\"\n />\n </span>\n </DefaultTooltip>\n );\n }\n\n return myCancerGenomeContent;\n }\n}\n","import * as React from 'react';\n\nimport hotspotStyles from './hotspotInfo.module.scss';\nimport { getNCBIlink } from 'cbioportal-frontend-commons';\n\nexport type HotspotInfoProps = {\n isHotspot: boolean;\n is3dHotspot: boolean;\n count?: number;\n customInfo?: JSX.Element;\n};\n\nexport function title(\n isHotspot: boolean,\n is3dHotspot: boolean,\n count?: number,\n customInfo?: JSX.Element\n) {\n const recurrentHotspot = isHotspot ? <b>Recurrent Hotspot</b> : null;\n const maybeAnd = isHotspot && is3dHotspot ? <span>and</span> : null;\n const clusteredHotspot = is3dHotspot ? <b>3D Clustered Hotspot</b> : null;\n\n let countInfo: JSX.Element | null = null;\n\n if (count) {\n const sample = count > 1 ? 'samples' : 'sample';\n countInfo = (\n <span>\n <b>{count}</b> {sample} with\n </span>\n );\n }\n\n return (\n <span>\n {countInfo} {recurrentHotspot} {maybeAnd} {clusteredHotspot}{' '}\n {customInfo}\n </span>\n );\n}\n\nexport function publication(isHotspot: boolean, is3dHotspot: boolean) {\n const recurrentHotspot = isHotspot\n ? 'a recurrent hotspot (statistically significant)'\n : '';\n const maybeAnd = isHotspot && is3dHotspot ? 'and' : '';\n const clusteredHotspot = is3dHotspot ? 'a 3D clustered hotspot' : '';\n\n const recurrentPublication = isHotspot ? (\n <a href={getNCBIlink(`/pubmed/26619011`)} target=\"_blank\">\n Chang et al., Nat Biotechnol, 2016\n </a>\n ) : (\n ''\n );\n\n const clusteredPublication = is3dHotspot ? (\n <a\n href=\"http://genomemedicine.biomedcentral.com/articles/10.1186/s13073-016-0393-x\"\n target=\"_blank\"\n >\n Gao et al., Genome Medicine, 2017\n </a>\n ) : (\n ''\n );\n\n return (\n <span>\n This mutated amino acid was identified as {recurrentHotspot}{' '}\n {maybeAnd} {clusteredHotspot} in a population-scale cohort of tumor\n samples of various cancer types using methodology based in part on{' '}\n {recurrentPublication} {maybeAnd} {clusteredPublication}.\n </span>\n );\n}\n\nexport function link(isHotspot: boolean, is3dHotspot: boolean) {\n const recurrentLink = isHotspot ? (\n <a href=\"https://www.cancerhotspots.org/\" target=\"_blank\">\n https://cancerhotspots.org/\n </a>\n ) : (\n ''\n );\n\n const maybeAnd = isHotspot && is3dHotspot ? 'and' : '';\n\n const clusteredLink = is3dHotspot ? (\n <a href=\"https://www.3dhotspots.org/\" target=\"_blank\">\n https://3dhotspots.org/\n </a>\n ) : (\n ''\n );\n\n return (\n <span>\n Explore all mutations at {recurrentLink} {maybeAnd} {clusteredLink}.\n </span>\n );\n}\n\nexport const HotspotInfo: React.FunctionComponent<HotspotInfoProps> = props => {\n const { isHotspot, is3dHotspot, count, customInfo } = props;\n\n return (\n <span className={hotspotStyles['hotspot-info']}>\n {title(isHotspot, is3dHotspot, count, customInfo)}\n <br />\n {publication(isHotspot, is3dHotspot)}\n <br />\n <br />\n {link(isHotspot, is3dHotspot)}\n </span>\n );\n};\n","var img = \"data:image/svg+xml,%3c%3fxml version='1.0' encoding='utf-8'%3f%3e%3c!-- Generated by IcoMoon.io --%3e%3c!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='1024' height='1024' viewBox='0 0 1024 1024'%3e %3cg id='icomoon-ignore'%3e %3c/g%3e %3cpath fill='%23ff9900' d='M321.008 1045.333c-68.245-142.008-31.901-223.379 20.551-300.044 57.44-83.956 72.244-167.065 72.244-167.065s45.153 58.7 27.092 150.508c79.772-88.8 94.824-230.28 82.783-284.464 180.315 126.012 257.376 398.856 153.523 601.065 552.372-312.532 137.399-780.172 65.155-832.851 24.081 52.676 28.648 141.851-20 185.127-82.352-312.276-285.972-376.276-285.972-376.276 24.083 161.044-87.296 337.144-194.696 468.731-3.775-64.216-7.783-108.528-41.549-169.98-7.58 116.656-96.732 211.748-120.873 328.628-32.701 158.287 24.496 274.18 241.748 396.623z'%3e%3c/path%3e%3c/svg%3e\";\n export default img;","var img = \"data:image/svg+xml,%3c%3fxml version='1.0' encoding='utf-8'%3f%3e%3c!-- Generator: Adobe Illustrator 16.0.4%2c SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3e%3c!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='24.263px' height='36.366px' viewBox='0 0 24.263 36.366' enable-background='new 0 0 24.263 36.366' xml:space='preserve'%3e%3cg%3e %3cpath fill='%23FF9900' d='M6.828%2c27.947c-1.859-3.872-0.869-6.094%2c0.564-8.184c1.565-2.296%2c1.968-4.558%2c1.968-4.558 s1.231%2c1.6%2c0.742%2c4.104c2.181-2.423%2c2.591-6.286%2c2.256-7.764c4.921%2c3.436%2c7.027%2c10.889%2c4.19%2c16.401 C31.627%2c19.419%2c20.3%2c6.66%2c18.326%2c5.221c0.656%2c1.439%2c0.783%2c3.873-0.546%2c5.053C15.536%2c1.75%2c9.98%2c0%2c9.98%2c0 c0.657%2c4.397-2.388%2c9.208-5.316%2c12.8C4.56%2c11.046%2c4.451%2c9.831%2c3.53%2c8.155c-0.201%2c3.183-2.636%2c5.785-3.298%2c8.974 C-0.659%2c21.445%2c0.9%2c24.61%2c6.828%2c27.947L6.828%2c27.947z'/%3e %3ctext transform='matrix(0.583 0 0 0.583 3.7324 36.1963)' fill='black' font-family='Arial-BoldItalicMT' font-size='20.6802'%3e3D%3c/text%3e%3c/g%3e%3c/svg%3e\";\n export default img;","import * as React from 'react';\n\nimport { HotspotInfo } from '../hotspot/HotspotInfo';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { loaderIcon } from '../StatusHelpers';\n\nimport hotspotImg from '../../images/cancer-hotspots.svg';\nimport hotspot3dImg from '../../images/3d-hotspots.svg';\nimport annotationStyles from './annotation.module.scss';\n\nexport interface ICancerHotspotsProps {\n status: 'pending' | 'error' | 'complete';\n isHotspot: boolean;\n is3dHotspot: boolean;\n}\n\nexport function sortValue(isHotspot: boolean, is3dHotspot: boolean): number {\n let score: number = 0;\n\n if (isHotspot) {\n score += 1;\n }\n\n if (is3dHotspot) {\n score += 0.5;\n }\n\n return score;\n}\n\nexport function placeArrow(tooltipEl: any) {\n const arrowEl = tooltipEl.querySelector('.rc-tooltip-arrow');\n arrowEl.style.left = '10px';\n}\n\nexport default class HotspotAnnotation extends React.Component<\n ICancerHotspotsProps,\n {}\n> {\n constructor(props: ICancerHotspotsProps) {\n super(props);\n this.state = {};\n }\n\n public render() {\n const { isHotspot, is3dHotspot } = this.props;\n\n let hotspotContent = (\n <span className={`${annotationStyles['annotation-item']}`} />\n );\n\n if (this.props.status === 'pending') {\n hotspotContent = loaderIcon('pull-left');\n } else if (isHotspot || is3dHotspot) {\n const hotspotsImgWidth: number = 14;\n let hotspotsImgHeight: number = 14;\n let hotspotsImgSrc = hotspotImg;\n\n // if it is a 3D hotspot but not a recurrent hotspot, show the 3D hotspot icon\n if (!isHotspot) {\n hotspotsImgSrc = hotspot3dImg;\n hotspotsImgHeight = 18;\n }\n\n const arrowContent = <div className=\"rc-tooltip-arrow-inner\" />;\n const tooltipContent = (\n <HotspotInfo isHotspot={isHotspot} is3dHotspot={is3dHotspot} />\n );\n\n hotspotContent = (\n <DefaultTooltip\n overlay={tooltipContent}\n placement=\"topLeft\"\n trigger={['hover', 'focus']}\n arrowContent={arrowContent}\n onPopupAlign={placeArrow}\n >\n <span\n className={`${annotationStyles['annotation-item']} chang_hotspot`}\n >\n <img\n width={hotspotsImgWidth}\n height={hotspotsImgHeight}\n src={hotspotsImgSrc}\n alt=\"Recurrent Hotspot Symbol\"\n />\n </span>\n </DefaultTooltip>\n );\n }\n\n return hotspotContent;\n }\n}\n","import { cachePostMethodsOnClient } from 'cbioportal-frontend-commons';\nimport {\n indexAnnotationsByGenomicLocation,\n IOncoKbData,\n Mutation,\n uniqueGenomicLocations,\n} from 'cbioportal-utils';\nimport {\n GenomeNexusAPI,\n GenomeNexusAPIInternal,\n} from 'genome-nexus-ts-api-client';\nimport { OncoKbAPI, OncoKBInfo } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\n\nexport const DEFAULT_MUTATION_ALIGNER_URL_TEMPLATE =\n 'http://mutationaligner.org/api/domains/<%= pfamDomainId %>?metadata=true';\nexport const DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE =\n 'https://www.cbioportal.org/proxy/mutationaligner.org/api/domains/<%= pfamDomainId %>?metadata=true';\nexport const DEFAULT_MY_GENE_URL_TEMPLATE =\n 'https://mygene.info/v3/gene/<%= entrezGeneId %>?fields=uniprot';\nexport const DEFAULT_UNIPROT_ID_URL_TEMPLATE =\n 'https://rest.uniprot.org/uniprotkb/search?query=accession:<%= swissProtAccession %>&format=tsv&fields=id';\nexport const DEFAULT_GENOME_NEXUS_URL = 'https://www.genomenexus.org/';\n\n// The legacy instance does not require an authentication but the data will not be update.\nexport const DEFAULT_ONCO_KB_URL = 'https://legacy.oncokb.org/';\nexport const ONCOKB_DEFAULT_DATA: IOncoKbData = {\n indicatorMap: {},\n};\n\n// Set the default to false since most of the instances are not public instance.\n// The only one we have right now is public.api.oncokb.org\nexport const USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB = false;\n\nexport const ONCOKB_DEFAULT_INFO: OncoKBInfo = {\n apiVersion: {\n version: 'v1.0.0',\n major: 1,\n minor: 0,\n patch: 0,\n stable: true,\n suffixTokens: [],\n },\n appVersion: {\n version: 'v1.0.0',\n major: 1,\n minor: 0,\n patch: 0,\n stable: true,\n suffixTokens: [],\n },\n dataVersion: {\n version: 'v2.0',\n date: '12/19/2019',\n },\n levels: [],\n ncitVersion: '19.03d',\n oncoTreeVersion: 'oncotree_2019_12_01',\n publicInstance: USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n};\n\nconst DEFAULT_GENOME_NEXUS_CLIENT = initGenomeNexusClient();\n\nexport function getUrl(urlTemplate: string, templateVariables: any) {\n return _.template(urlTemplate)(templateVariables);\n}\n\nexport async function fetchVariantAnnotationsByMutation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'mskcc',\n client: Partial<GenomeNexusAPI> = DEFAULT_GENOME_NEXUS_CLIENT\n) {\n const genomicLocations = uniqueGenomicLocations(mutations);\n\n return genomicLocations.length > 0 &&\n client.fetchVariantAnnotationByGenomicLocationPOST\n ? await client.fetchVariantAnnotationByGenomicLocationPOST({\n genomicLocations,\n // this is a workaround to ignore the incorrect type definition generated by the swagger client generator\n // \"fields\" is a list of predefined string values, but the type generator incorrectly defines it as a single value\n fields: fields as any,\n isoformOverrideSource,\n })\n : [];\n}\n\nexport async function fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'mskcc',\n client: Partial<GenomeNexusAPI> = DEFAULT_GENOME_NEXUS_CLIENT\n) {\n const variantAnnotations = await fetchVariantAnnotationsByMutation(\n mutations,\n fields,\n isoformOverrideSource,\n client\n );\n return indexAnnotationsByGenomicLocation(variantAnnotations);\n}\n\nexport function initGenomeNexusClient(\n genomeNexusUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): GenomeNexusAPI {\n const client = new GenomeNexusAPI(\n genomeNexusUrl || DEFAULT_GENOME_NEXUS_URL\n );\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(GenomeNexusAPI, [], /POST$/, apiCacheLimit);\n }\n\n return client;\n}\n\nexport function initGenomeNexusInternalClient(\n genomeNexusUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): GenomeNexusAPIInternal {\n const client = new GenomeNexusAPIInternal(\n genomeNexusUrl || DEFAULT_GENOME_NEXUS_URL\n );\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(\n GenomeNexusAPIInternal,\n [],\n /POST$/,\n apiCacheLimit\n );\n }\n\n return client;\n}\n\nexport function initOncoKbClient(\n oncoKbUrl?: string,\n cachePostMethods?: boolean,\n apiCacheLimit?: number\n): OncoKbAPI {\n const client = new OncoKbAPI(oncoKbUrl || DEFAULT_ONCO_KB_URL);\n\n if (cachePostMethods) {\n cachePostMethodsOnClient(OncoKbAPI, [], undefined, apiCacheLimit);\n }\n\n return client;\n}\n","var img = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEIAAABCCAMAAADUivDaAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAALiMAAC4jAXilP3YAAAG/UExURUdwTEg7ejMqVlRFjltLmioiRzUrWgAAAAAAAFhIliwkS1BCiAAAAE9BhkU5dVBCiCAaNiAaNllJmEk8fB8ZNE1Ag0c6eCwkS1hIlRgUKUk8fC4mTlhIljwyZhkUKkk8fD0yaCcgQ1VFjysjSVVGkD0yaEg7eUo9fldIlA8MGTovYkk8fE1Ag0k8ezswZDguXwkIEA4MGFVGkTwxZlJEjE9BhiAaNko9fU0/gjkvYUk8fEs+gAoJEj80ax0YMT4zaTwxZUs9fk0/g0s9f00/ggAAAEs9fykiRS0lTEk8fD0yaE9Bhks9f01AgzUrWltKmUc6eUw/gUw+gUs+gDUsWlhIlTEoUzAnUTQrWFtLm05AhAAAAFpKmCAbNzQrWCwkS0w+gEs9fiAbNywkSy8nUDAnUT0yZ05AhU0/g0c6eS0lTSkiRUc6eSoiRyghRFhIlkc6eEc6eEs9f0s+gEg7eQAAAFhIlCAaNldIlE5AhVBBh0w+gF9Oof///25fqPf2+bWv0KqjysnF3JSKve7t9Htvr9zZ6F5NoF5Nn11Mnoh9tuXj7tPP4p+Xw7+61l5Nnkw+gU9BhlJEjFBCiFJDij9E+XgAAAB8dFJOUwDVY/P+MHMBCfxO9AXnlfMwKvvOO9vFUvsrzE77jyqwkEjzUvOPxsX6E2ux2rdsbBQU+W34+D67vW+3lhtuPm5uldu9vArVSFPNjvTFzWP+sNXV1GL6Uktl/swC+y9kVPHGKUlNU47p3LxJSrZJSfq8sby8tQj9O/3o8/DbpSzOAAAC+klEQVRYw7VY5V/cQBB9wNG7wx2KFHeXUrQUSt3d3d19epxyBxSp/MH9QG5js5uEH7yPM5uXzcyb2Z0AO4i8spnZ+fIfG/++fyufn50py/P4fGdXb2GSjEgW9nZ1uic4Ut9BHDrqG109728+tkQyLJU2+x0ZblWkSIVURZGaIFBXRU6oqgsoGO5fIDc4XCxluNJE7tD0UMKQGSS3CGayDLt85B6+XQzD6TPkBb6LNoacIHlDMMfCsCeLvCJrt1kPGeQdGSZ9PKatoNXAkF2yJYqSbL2y2mlraBc1V6lV1uLPNGLsExHhj2g1V5mmqNaWrIolv1iKlbR7IW2p1hgaRX+IC44EwxAT3rDoH683Kc4yO11jKKJiEyFhewcAGBgShtACs0o4BX9UNw4NAEC/YVnYGjDWZ/zKfgB4azAkxLK4jSLOxnofgMBe9ntteV3lPSOfgP2m82JZmlchmkWzfRQ4IFlpyWtCFqVhoMAx+UREtCYLUgFwUBY1U171dIct698Dc06FYLbaBNMD5FsVJN63wpWHdROUDxTKJRRjImQrnlzgrxshRxlta/jN7MIgr4SNdZmYXeTbjMu2vIYlstJiMWe3LlpbS1zRzXrsujAFL2IujzjTRT7Y1Gl+64p5VxFmbYGtRizyihnLY4FrqMPWSrXKK2osjzBHMWrtFzZ5hXQ+phkSjQQAPGMcIUNeI3JZaV0LfaTs1np5cAcD9QHA4CXGo8srqjye3gwCALo5n969lIdk9+ZR9GBdeXTJtU20/lw72K+TSl4KWdGp9NF+OaWUl1TblHok7hcnSSUvuazu+dW3nLCRgZXVzWzDTem4Ul6yTbQ63viiBoqE442PvXfq8mK1bbl3bsftF7jq88Rw7faOTALbMY8ANS0uGVpqpJNV8XlXDOeKVRNiQ60jQW3DIfWYWdSWVBIk24qcp+Wjpapp+c4NVyP3q49fWYLPL1/4XQ/+U+MTuZY/B7kT41Ne/198mZ4ce3p348+JJ+Vjk9Py/xf/AcNnNJ7Pvm7cAAAAAElFTkSuQmCC\";\n export default img;","import React from 'react';\nimport { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Vues as VUE } from 'genome-nexus-ts-api-client';\nimport annotationStyles from '../column/annotation.module.scss';\nimport revueLogo from '../../images/vue_logo.png';\n\nexport const RevueTooltipContent: React.FunctionComponent<{\n vue: VUE;\n}> = props => {\n return (\n <ul>\n <li>\n Predicted Effect by{` `}\n {\n <a\n href=\"https://useast.ensembl.org/info/docs/tools/vep/index.html\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n VEP\n </a>\n }\n : <strong>{props.vue.defaultEffect}</strong>\n </li>\n <li>\n Revised Protein Effect by{` `}\n {\n <a\n href=\"https://cancerrevue.org\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n reVUE\n </a>\n }\n {` (`}\n {props.vue.references.map((reference, index) => (\n <span key={index}>\n <a\n href={`https://pubmed.ncbi.nlm.nih.gov/${reference.pubmedId}/`}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {reference.referenceText}\n </a>\n {index < props.vue.references.length - 1 && ';'}\n </span>\n ))}\n {`): `}\n <strong>{props.vue.revisedProteinEffect}</strong>\n </li>\n </ul>\n );\n};\n\nexport function sortValue(vue: VUE | undefined): number {\n return 0;\n}\n\nexport const RevueCell: React.FunctionComponent<{\n vue: VUE;\n}> = props => {\n return (\n <DefaultTooltip\n placement=\"bottom\"\n overlay={<RevueTooltipContent vue={props.vue} />}\n >\n <span\n className={`${annotationStyles['annotation-item']}`}\n style={{ display: 'inline-flex' }}\n >\n <img src={revueLogo} alt=\"reVUE logo\" width={14} height={14} />\n </span>\n </DefaultTooltip>\n );\n};\n","import {\n getCivicEntry,\n getMyCancerGenomeLinks,\n getRemoteDataGroupStatus,\n getVariantAnnotation,\n ICivicEntry,\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n is3dHotspot,\n isLinearClusterHotspot,\n MobxCache,\n Mutation,\n OncoKbCardDataType,\n RemoteData,\n} from 'cbioportal-utils';\nimport { CancerGene, IndicatorQueryResp } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n getIndicatorData,\n calculateOncoKbAvailableDataType,\n} from 'oncokb-frontend-commons';\nimport { defaultArraySortMethod } from 'cbioportal-utils';\nimport Civic, { sortValue as civicSortValue } from '../civic/Civic';\nimport MyCancerGenome, {\n sortValue as myCancerGenomeSortValue,\n} from '../myCancerGenome/MyCancerGenome';\nimport {\n OncoKB,\n oncoKbAnnotationSortValue as oncoKbSortValue,\n} from 'oncokb-frontend-commons';\nimport HotspotAnnotation, {\n sortValue as hotspotSortValue,\n} from './HotspotAnnotation';\nimport { USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB } from '../../util/DataFetcherUtils';\nimport { CanonicalMutationType } from 'cbioportal-frontend-commons';\nimport { VariantAnnotation, Vues as VUE } from 'genome-nexus-ts-api-client';\nimport { RevueCell, sortValue as revueSortValue } from '../revue/Revue';\nimport annotationStyles from './annotation.module.scss';\n\nexport type AnnotationProps = {\n mutation?: Mutation;\n enableOncoKb: boolean;\n enableMyCancerGenome: boolean;\n enableHotspot: boolean;\n enableCivic: boolean;\n enableRevue: boolean;\n hotspotData?: RemoteData<IHotspotIndex | undefined>;\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>;\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>;\n usingPublicOncoKbInstance: boolean;\n mergeOncoKbIcons?: boolean;\n oncoKbContentPadding?: number;\n pubMedCache?: MobxCache;\n resolveEntrezGeneId?: (mutation: Mutation) => number;\n resolveTumorType?: (mutation: Mutation) => string;\n myCancerGenomeData?: IMyCancerGenomeData;\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>;\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n userDisplayName?: string;\n hasMultipleCancerTypes?: boolean;\n};\n\nexport type GenericAnnotationProps = {\n annotation: IAnnotation;\n enableCivic: boolean;\n enableHotspot: boolean;\n enableMyCancerGenome: boolean;\n enableOncoKb: boolean;\n enableRevue: boolean;\n mergeOncoKbIcons?: boolean;\n oncoKbContentPadding?: number;\n pubMedCache?: MobxCache;\n userDisplayName?: string;\n hasMultipleCancerTypes?: boolean;\n};\n\nexport interface IAnnotation {\n isHotspot: boolean;\n is3dHotspot: boolean;\n hotspotStatus: 'pending' | 'error' | 'complete';\n oncoKbIndicator?: IndicatorQueryResp;\n oncoKbAvailableDataTypes: OncoKbCardDataType[];\n oncoKbStatus: 'pending' | 'error' | 'complete';\n oncoKbGeneExist: boolean;\n isOncoKbCancerGene: boolean;\n usingPublicOncoKbInstance: boolean;\n myCancerGenomeLinks: string[];\n civicEntry?: ICivicEntry | null;\n civicStatus: 'pending' | 'error' | 'complete';\n hasCivicVariants: boolean;\n hugoGeneSymbol: string;\n vue?: VUE;\n}\n\nexport const DEFAULT_ANNOTATION_DATA: IAnnotation = {\n oncoKbStatus: 'complete',\n oncoKbGeneExist: false,\n isOncoKbCancerGene: false,\n oncoKbAvailableDataTypes: [],\n usingPublicOncoKbInstance: false,\n isHotspot: false,\n is3dHotspot: false,\n hotspotStatus: 'complete',\n hugoGeneSymbol: '',\n hasCivicVariants: true,\n myCancerGenomeLinks: [],\n civicStatus: 'complete',\n};\n\nfunction getDefaultEntrezGeneId(mutation: Mutation): number {\n return (mutation.gene && mutation.gene.entrezGeneId) || 0;\n}\n\nfunction getDefaultTumorType(): string {\n return '';\n}\n\nconst memoized: Map<string, IAnnotation> = new Map();\nexport function getAnnotationData(\n mutation?: Mutation,\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>,\n hotspotData?: RemoteData<IHotspotIndex | undefined>,\n myCancerGenomeData?: IMyCancerGenomeData,\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>,\n usingPublicOncoKbInstance?: boolean,\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>,\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n resolveTumorType: (mutation: Mutation) => string = getDefaultTumorType,\n resolveEntrezGeneId: (mutation: Mutation) => number = getDefaultEntrezGeneId\n): IAnnotation {\n let value: Partial<IAnnotation>;\n\n if (mutation) {\n let key = '';\n const memoize =\n oncoKbCancerGenes?.isComplete &&\n hotspotData?.isComplete &&\n !!myCancerGenomeData &&\n oncoKbData?.isComplete &&\n civicGenes?.isComplete &&\n civicVariants?.isComplete &&\n indexedVariantAnnotations?.isComplete;\n\n if (memoize) {\n key = JSON.stringify(mutation) + !!usingPublicOncoKbInstance;\n const val = memoized.get(key);\n if (val) {\n return val;\n }\n }\n\n const entrezGeneId = resolveEntrezGeneId(mutation);\n\n let oncoKbIndicator: IndicatorQueryResp | undefined;\n const hugoGeneSymbol = mutation.gene\n ? mutation.gene.hugoGeneSymbol\n : undefined;\n\n let oncoKbGeneExist = false;\n let isOncoKbCancerGene = false;\n if (oncoKbCancerGenes && !(oncoKbCancerGenes.result instanceof Error)) {\n oncoKbGeneExist =\n _.find(\n oncoKbCancerGenes.result,\n (gene: CancerGene) =>\n (mutation.mutationType &&\n mutation.mutationType.toLowerCase() ===\n CanonicalMutationType.FUSION) ||\n (gene.oncokbAnnotated &&\n gene.entrezGeneId === entrezGeneId)\n ) !== undefined;\n isOncoKbCancerGene =\n _.find(\n oncoKbCancerGenes.result,\n (gene: CancerGene) => gene.entrezGeneId === entrezGeneId\n ) !== undefined;\n }\n\n value = {\n hugoGeneSymbol,\n oncoKbGeneExist,\n isOncoKbCancerGene,\n usingPublicOncoKbInstance: usingPublicOncoKbInstance\n ? usingPublicOncoKbInstance\n : USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n civicEntry:\n civicGenes &&\n civicGenes.result &&\n civicVariants &&\n civicVariants.result\n ? getCivicEntry(\n mutation,\n civicGenes.result,\n civicVariants.result\n )\n : undefined,\n civicStatus:\n civicGenes &&\n civicGenes.status &&\n civicVariants &&\n civicVariants.status\n ? getRemoteDataGroupStatus(civicGenes, civicVariants)\n : 'pending',\n hasCivicVariants: true,\n myCancerGenomeLinks: myCancerGenomeData\n ? getMyCancerGenomeLinks(mutation, myCancerGenomeData)\n : [],\n isHotspot:\n hotspotData?.isComplete && hotspotData.result\n ? isLinearClusterHotspot(mutation, hotspotData.result)\n : false,\n is3dHotspot:\n hotspotData?.isComplete && hotspotData.result\n ? is3dHotspot(mutation, hotspotData.result)\n : false,\n hotspotStatus: hotspotData ? hotspotData.status : 'pending',\n vue:\n indexedVariantAnnotations?.isComplete &&\n indexedVariantAnnotations.result\n ? getVariantAnnotation(\n mutation,\n indexedVariantAnnotations.result\n )?.annotation_summary?.vues\n : undefined,\n };\n\n // oncoKbData may exist but it might be an instance of Error, in that case we flag the status as error\n if (oncoKbData && oncoKbData.result instanceof Error) {\n value = {\n ...value,\n oncoKbStatus: 'error',\n oncoKbIndicator: undefined,\n };\n } else if (oncoKbGeneExist) {\n // actually, oncoKbData.result shouldn't be an instance of Error in this case (we already check it above),\n // but we need to check it again in order to avoid TS errors/warnings\n\n // Always show oncogenicity icon even when the indicatorMapResult is empty.\n // We want to show an icon for genes that haven't been annotated by OncoKB\n let oncoKbAvailableDataTypes: OncoKbCardDataType[] = [\n OncoKbCardDataType.BIOLOGICAL,\n ];\n if (\n oncoKbData &&\n oncoKbData.result &&\n !(oncoKbData.result instanceof Error) &&\n oncoKbData.status === 'complete'\n ) {\n oncoKbIndicator = getIndicatorData(\n mutation,\n oncoKbData.result,\n resolveTumorType,\n resolveEntrezGeneId\n );\n oncoKbAvailableDataTypes = _.uniq([\n ...oncoKbAvailableDataTypes,\n ...calculateOncoKbAvailableDataType(\n _.values(oncoKbData.result.indicatorMap)\n ),\n ]);\n }\n\n value = {\n ...value,\n oncoKbStatus: oncoKbData ? oncoKbData.status : 'pending',\n oncoKbIndicator,\n oncoKbAvailableDataTypes,\n };\n } else if (oncoKbData && oncoKbData.isPending) {\n value = {\n ...value,\n oncoKbStatus: 'pending',\n oncoKbIndicator: undefined,\n };\n } else {\n value = {\n ...value,\n oncoKbStatus: 'complete',\n oncoKbIndicator: undefined,\n };\n }\n if (memoize) {\n memoized.set(key, value as any);\n }\n } else {\n value = DEFAULT_ANNOTATION_DATA;\n }\n\n return value as IAnnotation;\n}\n\nexport function annotationSortMethod(a: IAnnotation, b: IAnnotation) {\n return defaultArraySortMethod(sortValue(a), sortValue(b));\n}\n\nexport function sortValue(annotation: IAnnotation): number[] {\n return _.flatten([\n oncoKbSortValue(annotation.oncoKbIndicator),\n civicSortValue(annotation.civicEntry),\n myCancerGenomeSortValue(annotation.myCancerGenomeLinks),\n hotspotSortValue(annotation.isHotspot, annotation.is3dHotspot),\n revueSortValue(annotation.vue),\n annotation.isOncoKbCancerGene ? 1 : 0,\n ]);\n}\n\nexport function GenericAnnotation(props: GenericAnnotationProps): JSX.Element {\n const {\n annotation,\n enableCivic,\n enableHotspot,\n enableMyCancerGenome,\n enableOncoKb,\n enableRevue,\n pubMedCache,\n userDisplayName,\n mergeOncoKbIcons,\n oncoKbContentPadding,\n hasMultipleCancerTypes,\n } = props;\n\n return (\n <span style={{ display: 'flex', minWidth: 100 }}>\n {enableOncoKb && (\n <OncoKB\n usingPublicOncoKbInstance={\n annotation.usingPublicOncoKbInstance\n }\n hugoGeneSymbol={annotation.hugoGeneSymbol}\n geneNotExist={!annotation.oncoKbGeneExist}\n isCancerGene={annotation.isOncoKbCancerGene}\n status={annotation.oncoKbStatus}\n indicator={annotation.oncoKbIndicator}\n availableDataTypes={annotation.oncoKbAvailableDataTypes}\n mergeAnnotationIcons={mergeOncoKbIcons}\n userDisplayName={userDisplayName}\n contentPadding={oncoKbContentPadding}\n hasMultipleCancerTypes={hasMultipleCancerTypes}\n />\n )}\n {/* only show reVUE when reVUE is enabled and there are reVUE mutations in the query */}\n {enableRevue ? (\n annotation.vue ? (\n <RevueCell vue={annotation.vue} />\n ) : (\n <span\n className={`${annotationStyles['annotation-item']}`}\n />\n )\n ) : (\n <></>\n )}\n {enableCivic && (\n <Civic\n civicEntry={annotation.civicEntry}\n civicStatus={annotation.civicStatus}\n hasCivicVariants={annotation.hasCivicVariants}\n />\n )}\n {enableMyCancerGenome && (\n <MyCancerGenome linksHTML={annotation.myCancerGenomeLinks} />\n )}\n {enableHotspot && (\n <HotspotAnnotation\n isHotspot={annotation.isHotspot}\n is3dHotspot={annotation.is3dHotspot}\n status={annotation.hotspotStatus}\n />\n )}\n </span>\n );\n}\n\n@observer\nexport default class Annotation extends React.Component<AnnotationProps, {}> {\n public render() {\n const annotation = this.getAnnotationData(this.props);\n return <GenericAnnotation {...this.props} annotation={annotation} />;\n }\n\n private getAnnotationData(props: AnnotationProps) {\n const {\n mutation,\n oncoKbCancerGenes,\n hotspotData,\n myCancerGenomeData,\n oncoKbData,\n usingPublicOncoKbInstance,\n resolveEntrezGeneId,\n resolveTumorType,\n civicGenes,\n civicVariants,\n indexedVariantAnnotations,\n } = props;\n\n return getAnnotationData(\n mutation,\n oncoKbCancerGenes,\n hotspotData,\n myCancerGenomeData,\n oncoKbData,\n usingPublicOncoKbInstance,\n civicGenes,\n civicVariants,\n indexedVariantAnnotations,\n resolveTumorType,\n resolveEntrezGeneId\n );\n }\n}\n","import { getVariantAnnotation, Mutation, RemoteData } from 'cbioportal-utils';\nimport { Clinvar, VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nexport function getClinvarData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >\n): Clinvar | undefined {\n const variantAnnotation = getVariantAnnotation(\n mutation,\n indexedVariantAnnotations!.result\n );\n return variantAnnotation?.clinvar?.annotation;\n}\n","import { Clinvar, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod, Mutation, RemoteData } from 'cbioportal-utils';\nimport ClinvarSummary from '../clinvar/ClinvarSummary';\nimport { getClinvarData } from '../clinvar/ClinvarHelper';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\n\ntype ClinvarInterpretationProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n};\n\nexport function download(clinvar?: Clinvar): string {\n const clinicalSignificance = clinvar?.clinicalSignificance;\n const conflictingClinicalSignificance =\n clinvar?.conflictingClinicalSignificance;\n if (clinicalSignificance && conflictingClinicalSignificance) {\n return (\n clinicalSignificance + '(' + conflictingClinicalSignificance + ')'\n );\n } else if (clinicalSignificance) {\n return clinicalSignificance;\n } else {\n return '';\n }\n}\n\nexport function sortValue(clinvar?: Clinvar): string | null {\n if (clinvar && clinvar.clinicalSignificance) {\n return clinvar.clinicalSignificance;\n } else {\n return null;\n }\n}\n\nexport function clinvarSortMethod(a: Clinvar, b: Clinvar) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class ClinvarInterpretation extends React.Component<\n ClinvarInterpretationProps,\n {}\n> {\n public render() {\n if (this.props.indexedVariantAnnotations) {\n let content;\n const status = this.props.indexedVariantAnnotations.status;\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n const clinvarData = getClinvarData(\n this.props.mutation,\n this.props.indexedVariantAnnotations\n );\n content = <ClinvarSummary clinvar={clinvarData} />;\n }\n return content;\n } else {\n return <div />;\n }\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nexport type ColumnHeaderProps = {\n headerContent: string | JSX.Element;\n overlay?: JSX.Element;\n className?: string;\n};\n\nclass ColumnHeader extends React.Component<ColumnHeaderProps> {\n public static defaultProps = {\n className: 'text-wrap',\n };\n\n public render() {\n let content = this.props.headerContent;\n\n if (this.props.overlay) {\n content = (\n <DefaultTooltip\n mouseEnterDelay={0.5}\n placement=\"top\"\n overlay={this.props.overlay}\n destroyTooltipOnHide={true}\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return (\n <span\n className={\n this.props.className || ColumnHeader.defaultProps.className\n }\n >\n {content}\n </span>\n );\n }\n}\n\nexport default ColumnHeader;\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { getDbsnpRsId } from 'cbioportal-utils';\nimport { MyVariantInfo } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nexport type DbsnpIdProps = {\n myVariantInfo?: MyVariantInfo;\n};\n\n@observer\nexport default class DbsnpId extends React.Component<DbsnpIdProps, {}> {\n public render() {\n const rsId = getDbsnpRsId(this.props.myVariantInfo);\n\n if (rsId == null) {\n return (\n <DefaultTooltip\n placement=\"topRight\"\n overlay={<span>Variant has no dbSNP data.</span>}\n >\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n \n </span>\n </DefaultTooltip>\n );\n } else {\n let dbsnpLink = 'https://www.ncbi.nlm.nih.gov/snp/' + rsId;\n return (\n <DefaultTooltip\n placement=\"top\"\n overlay={\n <span>Click to see variant on dbSNP website.</span>\n }\n >\n <span style={{ textAlign: 'right', float: 'right' }}>\n <a href={dbsnpLink} target=\"_blank\">\n {rsId}\n </a>\n </span>\n </DefaultTooltip>\n );\n }\n }\n}\n","import {\n getMyVariantInfoAnnotation,\n getVariantAnnotation,\n Mutation,\n RemoteData,\n} from 'cbioportal-utils';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport * as React from 'react';\n\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\n\nexport type MyVariantInfoProps = {\n mutation?: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >;\n className?: string;\n};\n\nexport function renderMyVariantInfoContent(\n props: MyVariantInfoProps,\n getContent: (\n myVariantInfo?: MyVariantInfo,\n variantAnnotation?: VariantAnnotation\n ) => JSX.Element\n) {\n let content;\n const status = props.indexedMyVariantInfoAnnotations?.status || 'complete';\n const variantAnnotation = props.indexedVariantAnnotations\n ? getVariantAnnotation(\n props.mutation,\n props.indexedVariantAnnotations.result\n )\n : undefined;\n const myVariantInfo = getMyVariantInfoAnnotation(\n props.mutation,\n props.indexedMyVariantInfoAnnotations?.result\n );\n\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n content = getContent(myVariantInfo, variantAnnotation);\n }\n\n return <div className={props.className}>{content}</div>;\n}\n\nexport function getMyVariantInfoData(\n mutation?: Mutation,\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >\n) {\n return getMyVariantInfoAnnotation(\n mutation,\n indexedMyVariantInfoAnnotations\n ? indexedMyVariantInfoAnnotations.result\n : undefined\n );\n}\n","import autobind from 'autobind-decorator';\nimport { getDbsnpRsId } from 'cbioportal-utils';\nimport { MyVariantInfo } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\nimport DbsnpId from '../dbsnp/DbsnpId';\nimport {\n MyVariantInfoProps,\n renderMyVariantInfoContent,\n} from './MyVariantInfoHelper';\n\nexport function download(myVariantInfo?: MyVariantInfo): string {\n const value = sortValue(myVariantInfo);\n\n return value ? value.toString() : '';\n}\n\nexport function sortValue(myVariantInfo?: MyVariantInfo): string | null {\n return getDbsnpRsId(myVariantInfo);\n}\n\nexport function dbsnpSortMethod(a: MyVariantInfo, b: MyVariantInfo) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Dbsnp extends React.Component<MyVariantInfoProps, {}> {\n public static defaultProps: Partial<MyVariantInfoProps> = {\n className: 'pull-right mr-1',\n };\n\n public render() {\n return renderMyVariantInfoContent(this.props, this.getContent);\n }\n\n @autobind\n public getContent(myVariantInfo: MyVariantInfo) {\n return <DbsnpId myVariantInfo={myVariantInfo} />;\n }\n}\n","import _ from 'lodash';\n\nimport {\n AlleleCount,\n AlleleFrequency,\n AlleleNumber,\n Gnomad,\n Homozygotes,\n MyVariantInfo,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\nimport { GnomadSummary } from '../model/GnomadSummary';\n\nconst GNOMAD_POPULATION_NAME: { [key: string]: string } = {\n African: 'afr',\n Latino: 'amr',\n Other: 'oth',\n 'European (Non-Finnish)': 'nfe',\n 'European (Finnish)': 'fin',\n 'Ashkenazi Jewish': 'asj',\n 'East Asian': 'eas',\n 'South Asian': 'sas',\n Total: '',\n};\n\nexport enum GnomadTableColumnName {\n population = 'population',\n alleleCount = 'ac',\n alleleNumber = 'an',\n homozygotes = 'hom',\n alleleFrequency = 'af',\n}\n\nexport function calculateGnomadAlleleFrequency(\n count: number | null,\n totalNumber: number | null,\n frequency: number | null\n): number {\n if (frequency !== null) {\n return frequency;\n } else {\n return count && totalNumber && totalNumber !== 0\n ? count / totalNumber\n : 0;\n }\n}\n\nexport function calculateGnomadTableNumber(\n gnomadExome?: number | null,\n gnomadGenome?: number | null\n) {\n let result = 0;\n if (gnomadGenome && gnomadExome) {\n result = gnomadGenome + gnomadExome;\n } else if (gnomadGenome) {\n result = gnomadGenome;\n } else if (gnomadExome) {\n result = gnomadExome;\n }\n return result;\n}\n\nexport function getGnomadUrl(\n annotation?: VariantAnnotation,\n myVariantInfo?: MyVariantInfo\n) {\n let gnomadUrl = '';\n\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n // get gnomad link from chrom, location, ref and alt\n gnomadUrl =\n myVariantInfo && myVariantInfo.vcf\n ? generateGnomadUrl(\n annotation?.seq_region_name || null,\n myVariantInfo.vcf.position,\n myVariantInfo.vcf.ref,\n myVariantInfo.vcf.alt\n )\n : '';\n }\n\n return gnomadUrl;\n}\n\nexport function getGnomadDataSortedByFrequency(myVariantInfo?: MyVariantInfo) {\n const gnomadData = getGnomadData(myVariantInfo);\n return gnomadData ? sortGnomadDataByFrequency(gnomadData) : gnomadData;\n}\n\nexport function sortGnomadDataByFrequency(gnomadData: {\n [key: string]: GnomadSummary;\n}) {\n // sort by frequency\n const sorted = _.sortBy(Object.values(gnomadData).slice(0, 8), [\n 'alleleFrequency',\n ]).reverse();\n\n // add the total row at the bottom\n sorted.push(gnomadData['Total']);\n\n return sorted;\n}\n\nexport function setGnomadTableData(\n key: string,\n data: Gnomad,\n result: { [key: string]: GnomadSummary }\n) {\n // Access data by population name and column name in the format of: GnomadTableColumnName_POPULATION_NAME, e.g. \"ac_afr\"\n // If access \"total\" data, the name would be e.g. \"ac\" for alleleCount, \"an\" for alleleNumber\n const alleleCountName: keyof AlleleCount = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.alleleCount + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleCount\n ).toString() as keyof AlleleCount;\n const alleleNumberName: keyof AlleleNumber = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.alleleNumber + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleNumber\n ).toString() as keyof AlleleNumber;\n const homozygotesName: keyof Homozygotes = (GNOMAD_POPULATION_NAME[key]\n ? GnomadTableColumnName.homozygotes + '_' + GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.homozygotes\n ).toString() as keyof Homozygotes;\n const alleleFrequencyName: keyof AlleleFrequency = (GNOMAD_POPULATION_NAME[\n key\n ]\n ? GnomadTableColumnName.alleleFrequency +\n '_' +\n GNOMAD_POPULATION_NAME[key]\n : GnomadTableColumnName.alleleFrequency\n ).toString() as keyof AlleleFrequency;\n\n result[key] = {\n population: key,\n alleleCount: data.alleleCount[alleleCountName]\n ? data.alleleCount[alleleCountName]\n : 0,\n alleleNumber: data.alleleNumber[alleleNumberName]\n ? data.alleleNumber[alleleNumberName]\n : 0,\n homozygotes: data.homozygotes[homozygotesName]\n ? data.homozygotes[homozygotesName]\n : 0,\n alleleFrequency: calculateGnomadAlleleFrequency(\n data.alleleCount[alleleCountName],\n data.alleleNumber[alleleNumberName],\n data.alleleFrequency[alleleFrequencyName]\n ),\n } as GnomadSummary;\n}\n\nexport function getGnomadData(myVariantInfo?: MyVariantInfo) {\n let gnomadData: { [key: string]: GnomadSummary } | undefined;\n\n // check if gnomad data is valid\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n const gnomadExome: { [key: string]: GnomadSummary } = {};\n const gnomadGenome: { [key: string]: GnomadSummary } = {};\n const combinedGnomad: { [key: string]: GnomadSummary } = {};\n // If gnomadExome data exists, set gnomadExome\n if (myVariantInfo.gnomadExome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key =>\n setGnomadTableData(key, myVariantInfo.gnomadExome, gnomadExome)\n );\n gnomadData = gnomadExome;\n }\n\n // If gnomadGenome data exists, set gnomadGenome\n if (myVariantInfo.gnomadGenome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key =>\n setGnomadTableData(\n key,\n myVariantInfo.gnomadGenome,\n gnomadGenome\n )\n );\n gnomadData = gnomadGenome;\n }\n\n // If both gnomadExome and gnomadGenome exist, combine gnomadExome and gnomadGenome together, set to combinedGnomad\n if (myVariantInfo.gnomadExome && myVariantInfo.gnomadGenome) {\n Object.keys(GNOMAD_POPULATION_NAME).forEach(key => {\n combinedGnomad[key] = {\n population: key,\n alleleCount: calculateGnomadTableNumber(\n gnomadExome[key]?.alleleCount,\n gnomadGenome[key]?.alleleCount\n ),\n alleleNumber: calculateGnomadTableNumber(\n gnomadExome[key]?.alleleNumber,\n gnomadGenome[key]?.alleleNumber\n ),\n homozygotes: calculateGnomadTableNumber(\n gnomadExome[key]?.homozygotes,\n gnomadGenome[key]?.homozygotes\n ),\n alleleFrequency: calculateGnomadAlleleFrequency(\n calculateGnomadTableNumber(\n gnomadExome[key]?.alleleCount,\n gnomadGenome[key]?.alleleCount\n ),\n calculateGnomadTableNumber(\n gnomadExome[key]?.alleleNumber,\n gnomadGenome[key]?.alleleNumber\n ),\n null\n ),\n } as GnomadSummary;\n });\n gnomadData = combinedGnomad;\n }\n }\n // If only one type of gnomad(Exome or Genome) exists, show result from this type. If both types exist, show combined result.\n return gnomadData;\n}\n\nexport function generateGnomadUrl(\n chromosome: string | null,\n position: string | null,\n reference: string | null,\n variant: string | null\n) {\n if (chromosome && position && reference && variant) {\n return `https://gnomad.broadinstitute.org/variant/${chromosome}-${position}-${reference}-${variant}`;\n } else {\n return 'https://gnomad.broadinstitute.org/';\n }\n}\n","import autobind from 'autobind-decorator';\nimport * as React from 'react';\nimport ReactTable, { RowInfo } from 'react-table';\n\nimport { GnomadSummary } from '../../model/GnomadSummary';\nimport { GnomadTableColumnName } from '../../util/GnomadUtils';\nimport ColumnHeader from '../column/ColumnHeader';\n\nimport './gnomadFrequencyTable.scss';\n\nexport interface IGnomadFrequencyTableProps {\n data: GnomadSummary[];\n gnomadUrl: string;\n hideDisclaimer?: boolean;\n}\n\nexport function frequencyOutput(frequency: number) {\n if (frequency === 0) {\n return <span>0</span>;\n } else {\n // show frequency as number with 4 significant digits\n return (\n <span>\n {frequency.toLocaleString(undefined, {\n maximumSignificantDigits: 2,\n minimumSignificantDigits: 2,\n })}\n </span>\n );\n }\n}\n\nconst headerClassName = 'text-wrap font-weight-bold';\n\nconst HEADERS = {\n [GnomadTableColumnName.population]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Population</span>}\n />\n ),\n [GnomadTableColumnName.alleleCount]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Count</span>}\n overlay={<span>Number of individuals with this allele</span>}\n />\n ),\n [GnomadTableColumnName.alleleNumber]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Number</span>}\n overlay={\n <span>\n Number of times any allele has been observed at this\n position in the population\n </span>\n }\n />\n ),\n [GnomadTableColumnName.homozygotes]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Number of Homozygotes</span>}\n overlay={\n <span>\n Number of individuals carrying this allele in both copies\n </span>\n }\n />\n ),\n [GnomadTableColumnName.alleleFrequency]: (\n <ColumnHeader\n className={headerClassName}\n headerContent={<span>Allele Frequency</span>}\n overlay={<span>Proportion of the population with this allele</span>}\n />\n ),\n};\n\nfunction renderNumericalValue(column: any) {\n return <span className=\"pull-right mr-1\">{column.value}</span>;\n}\n\nconst Disclaimer: React.FunctionComponent<{ gnomadUrl: string }> = props => {\n const myVariantInfoLink = (\n <a href=\"https://myvariant.info/\" target=\"_blank\">\n myvariant.info\n </a>\n );\n\n const genomeNexusLink = (\n <a href=\"https://www.genomenexus.org/\" target=\"_blank\">\n genomenexus.org\n </a>\n );\n\n const gnomadLink = (\n <a href={props.gnomadUrl} target=\"_blank\">\n gnomAD\n </a>\n );\n\n return (\n <div\n style={{\n fontSize: 'x-small',\n textAlign: 'center',\n paddingTop: 5,\n }}\n >\n Source: {genomeNexusLink}, which serves {myVariantInfoLink}'s gnomAD\n data.\n <br />\n Latest {gnomadLink} data may differ.\n </div>\n );\n};\n\nexport default class GnomadFrequencyTable extends React.Component<\n IGnomadFrequencyTableProps,\n {}\n> {\n public render() {\n return (\n <div className=\"gnomad-frequency-table\" data-test=\"gnomad-table\">\n <ReactTable\n data={this.props.data}\n showPagination={false}\n pageSize={this.props.data.length}\n sortable={false}\n className=\"-striped -highlight\"\n getTrProps={this.getTrProps}\n columns={[\n {\n id: GnomadTableColumnName.population,\n accessor: 'population',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.population],\n width: 160,\n },\n {\n id: GnomadTableColumnName.alleleCount,\n accessor: 'alleleCount',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.alleleCount],\n width: 55,\n },\n {\n id: GnomadTableColumnName.alleleNumber,\n accessor: 'alleleNumber',\n Cell: renderNumericalValue,\n Header: HEADERS[GnomadTableColumnName.alleleNumber],\n width: 80,\n },\n {\n id: GnomadTableColumnName.homozygotes,\n Cell: renderNumericalValue,\n accessor: 'homozygotes',\n Header: HEADERS[GnomadTableColumnName.homozygotes],\n width: 100,\n },\n {\n id: GnomadTableColumnName.alleleFrequency,\n accessor: 'alleleFrequency',\n Header:\n HEADERS[GnomadTableColumnName.alleleFrequency],\n Cell: (column: any) => (\n <span\n className=\"pull-right mr-1\"\n data-test=\"allele-frequency-data\"\n >\n {frequencyOutput(column.value)}\n </span>\n ),\n width: 120,\n },\n ]}\n />\n {!this.props.hideDisclaimer && (\n <Disclaimer gnomadUrl={this.props.gnomadUrl} />\n )}\n </div>\n );\n }\n\n @autobind\n protected getTrProps(state: any, row?: RowInfo) {\n return {\n style: {\n fontWeight:\n state && row && row.index === this.props.data.length - 1\n ? 'bold'\n : undefined,\n },\n };\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { GnomadSummary } from '../../model/GnomadSummary';\nimport GnomadFrequencyTable from './GnomadFrequencyTable';\nimport {\n getGnomadData,\n getGnomadDataSortedByFrequency,\n getGnomadUrl,\n sortGnomadDataByFrequency,\n} from '../../util/GnomadUtils';\n\nexport type GnomadFrequencyProps = {\n myVariantInfo?: MyVariantInfo;\n annotation?: VariantAnnotation;\n};\n\nexport const GnomadFrequencyValue: React.FunctionComponent<{\n gnomadData?: { [key: string]: GnomadSummary };\n}> = props => {\n if (props.gnomadData) {\n // The column will show the total frequency\n // Column will show 0 if the total frequency is 0, still has the tooltip to show the gnomad table (since gnomad data is still available)\n if (props.gnomadData['Total'].alleleFrequency === 0) {\n return <span>0</span>;\n } else {\n // show frequency as number with 4 significant digits\n return (\n <span>\n {props.gnomadData['Total'].alleleFrequency.toLocaleString(\n undefined,\n {\n maximumSignificantDigits: 2,\n minimumSignificantDigits: 2,\n }\n )}\n </span>\n );\n }\n } else {\n return (\n <span\n style={{\n height: '100%',\n width: '100%',\n display: 'block',\n overflow: 'hidden',\n }}\n >\n \n </span>\n );\n }\n};\n\nexport const GnomadFrequencyBreakdown: React.FunctionComponent<GnomadFrequencyProps & {\n gnomadData?: { [key: string]: GnomadSummary };\n hideDisclaimer?: boolean;\n}> = props => {\n const myVariantInfo = props.myVariantInfo;\n let content = <span>Variant has no data in gnomAD.</span>;\n\n // Checking if gnomad data is valid\n if (\n myVariantInfo &&\n (myVariantInfo.gnomadExome || myVariantInfo.gnomadGenome)\n ) {\n const gnomadUrl = getGnomadUrl(props.annotation, myVariantInfo);\n const sorted = props.gnomadData\n ? sortGnomadDataByFrequency(props.gnomadData)\n : getGnomadDataSortedByFrequency(myVariantInfo);\n\n if (sorted) {\n content = (\n <GnomadFrequencyTable\n data={sorted}\n gnomadUrl={gnomadUrl}\n hideDisclaimer={props.hideDisclaimer}\n />\n );\n }\n }\n\n return content;\n};\n\n@observer\nexport default class GnomadFrequency extends React.Component<\n GnomadFrequencyProps,\n {}\n> {\n public render() {\n const gnomadData = getGnomadData(this.props.myVariantInfo);\n\n return (\n <DefaultTooltip\n overlay={() => (\n <GnomadFrequencyBreakdown\n {...this.props}\n gnomadData={gnomadData}\n />\n )}\n placement=\"topRight\"\n trigger={['hover', 'focus']}\n destroyTooltipOnHide={true}\n >\n <span>\n <GnomadFrequencyValue gnomadData={gnomadData} />\n </span>\n </DefaultTooltip>\n );\n }\n}\n","import autobind from 'autobind-decorator';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\n\nimport { calculateGnomadAlleleFrequency } from '../../util/GnomadUtils';\nimport GnomadFrequency from '../gnomad/GnomadFrequency';\nimport {\n MyVariantInfoProps,\n renderMyVariantInfoContent,\n} from './MyVariantInfoHelper';\n\nexport function download(myVariantInfo?: MyVariantInfo): string {\n const value = sortValue(myVariantInfo);\n\n return value ? value.toString() : '';\n}\n\nexport function sortValue(myVariantInfo?: MyVariantInfo): number | null {\n // If has both gnomadExome and gnomadGenome, sort by the total frequency\n if (\n myVariantInfo &&\n myVariantInfo.gnomadExome &&\n myVariantInfo.gnomadGenome\n ) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadExome.alleleCount.ac +\n myVariantInfo.gnomadGenome.alleleCount.ac,\n myVariantInfo.gnomadExome.alleleNumber.an +\n myVariantInfo.gnomadGenome.alleleNumber.an,\n null\n );\n }\n\n // If only has gnomadExome, sort by gnomadExome frequency\n else if (myVariantInfo && myVariantInfo.gnomadExome) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadExome.alleleCount.ac,\n myVariantInfo.gnomadExome.alleleNumber.an,\n myVariantInfo.gnomadExome.alleleFrequency.af\n );\n }\n\n // If only has gnomadGenome, sort by gnomadGenome frequency\n else if (myVariantInfo && myVariantInfo.gnomadGenome) {\n return calculateGnomadAlleleFrequency(\n myVariantInfo.gnomadGenome.alleleCount.ac,\n myVariantInfo.gnomadGenome.alleleNumber.an,\n myVariantInfo.gnomadGenome.alleleFrequency.af\n );\n }\n\n // If myVariantInfo is null, return null\n return null;\n}\n\nexport function gnomadSortMethod(a: MyVariantInfo, b: MyVariantInfo) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Gnomad extends React.Component<MyVariantInfoProps, {}> {\n public static defaultProps: Partial<MyVariantInfoProps> = {\n className: 'pull-right mr-1',\n };\n\n public render() {\n return renderMyVariantInfoContent(this.props, this.getContent);\n }\n\n @autobind\n public getContent(\n myVariantInfo: MyVariantInfo,\n variantAnnotation?: VariantAnnotation\n ) {\n return (\n <GnomadFrequency\n myVariantInfo={myVariantInfo}\n annotation={variantAnnotation}\n />\n );\n }\n}\n","import { getVariantAnnotation, Mutation, RemoteData } from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nexport function getAnnotation(\n mutation?: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >\n) {\n return indexedVariantAnnotations\n ? getVariantAnnotation(mutation, indexedVariantAnnotations.result)\n : undefined;\n}\n","import { VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport {\n generateHgvsgByMutation,\n Mutation,\n RemoteData,\n} from 'cbioportal-utils';\nimport { getAnnotation } from './VariantAnnotationHelper';\n\nexport function getHgvsgColumnData(mutation: Mutation): string | null {\n return generateHgvsgByMutation(mutation) || null;\n}\n\nexport function getHgvscColumnData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n selectedTranscriptId?: string\n): string | null {\n const variantAnnotation = getAnnotation(\n mutation,\n indexedVariantAnnotations\n );\n\n if (!variantAnnotation) {\n return null;\n }\n\n let data: string | null =\n variantAnnotation.annotation_summary?.transcriptConsequenceSummary\n ?.hgvsc || null;\n\n // return data from transcriptConsequenceSummaries if transcript dropdown is enabled\n if (selectedTranscriptId) {\n const transcriptConsequenceSummary = variantAnnotation.annotation_summary?.transcriptConsequenceSummaries?.find(\n transcriptConsequenceSummary =>\n transcriptConsequenceSummary.transcriptId ===\n selectedTranscriptId\n );\n data = transcriptConsequenceSummary\n ? transcriptConsequenceSummary.hgvsc\n : null;\n }\n\n return data;\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod, Mutation, RemoteData } from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\n\nimport { getHgvscColumnData } from './HgvsHelper';\n\ntype HgvscProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n selectedTranscriptId?: string;\n};\n\nexport function download(hgvsc?: string | null): string {\n return hgvsc || '';\n}\n\nexport function sortValue(hgvsc?: string | null): number | null {\n return hgvsc ? parseInt(hgvsc.split('c.')[1]) : null;\n}\n\nexport function hgvscSortMethod(a: string | null, b: string | null) {\n return defaultSortMethod(sortValue(a), sortValue(b));\n}\n\n@observer\nexport default class Hgvsc extends React.Component<HgvscProps, {}> {\n get hgvsc() {\n return getHgvscColumnData(\n this.props.mutation,\n this.props.indexedVariantAnnotations,\n this.props.selectedTranscriptId\n );\n }\n\n public render() {\n return <div>{this.hgvsc}</div>;\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { generateHgvsgByMutation, Mutation } from 'cbioportal-utils';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\n\nimport hgvsgStyles from './hgvsg.module.scss';\n\ntype HgvsgProps = {\n mutation: Mutation;\n constructHref?: (hgvsg: string) => string;\n constructLink?: (\n hgvsg: string,\n content: JSX.Element,\n href?: string\n ) => JSX.Element;\n mainContent?: (hgvsg?: string) => JSX.Element;\n tooltipContent?: (hgvsg?: string) => JSX.Element;\n disableTooltip?: boolean;\n};\n\nexport function hgvsgSortMethod(a: string, b: string) {\n return defaultSortMethod(a, b);\n}\n\n@observer\nexport default class Hgvsg extends React.Component<HgvsgProps, {}> {\n public static defaultProps: Partial<HgvsgProps> = {\n constructLink: (hgvsg: string, content: JSX.Element, href?: string) => (\n <a\n href={href || `https:/www.genomenexus.org/variant/${hgvsg}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {content}\n </a>\n ),\n mainContent: (hgvsg?: string) => (\n <>\n {hgvsg} \n <i className=\"fa fa-external-link\" />\n </>\n ),\n tooltipContent: () => (\n <>\n Genome Nexus\n <div className={hgvsgStyles['genome-nexus-logo']} />\n </>\n ),\n };\n\n get hgvsg() {\n return generateHgvsgByMutation(this.props.mutation);\n }\n\n public render() {\n const constructLink = this.props.constructLink!;\n const mainContent = this.props.mainContent!;\n const tooltipContent = this.props.tooltipContent!;\n\n if (!this.hgvsg) {\n return <span />;\n } else {\n const href = this.props.constructHref\n ? this.props.constructHref(this.hgvsg)\n : undefined;\n\n const content = (\n <span className={hgvsgStyles['hgvsg-data']}>\n {constructLink(this.hgvsg, mainContent(this.hgvsg), href)}\n </span>\n );\n\n return this.props.disableTooltip ? (\n content\n ) : (\n <DefaultTooltip\n placement=\"topLeft\"\n overlay={\n <div>\n {this.hgvsg}\n <br />\n Click to see this variant on \n {constructLink(\n this.hgvsg,\n tooltipContent(this.hgvsg)\n )}\n </div>\n }\n >\n {content}\n </DefaultTooltip>\n );\n }\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './mutationStatus.module.scss';\n\ntype MutationStatusProps = {\n value?: string;\n mutation?: Mutation;\n displayValueMap?: { [mutationStatus: string]: string };\n enableTooltip?: boolean;\n styleMap?: { [mutationStatus: string]: React.CSSProperties };\n};\n\nexport class MutationStatus extends React.Component<MutationStatusProps, {}> {\n public static defaultProps: Partial<MutationStatusProps> = {\n enableTooltip: true,\n };\n\n public render() {\n const value =\n this.props.value ||\n (this.props.mutation\n ? this.props.mutation.mutationStatus\n : undefined);\n let content: JSX.Element;\n\n if (value) {\n if (value.toLowerCase().includes('somatic')) {\n content = (\n <span\n className={styles.somatic}\n style={\n this.props.styleMap\n ? this.props.styleMap[value.toLowerCase()]\n : undefined\n }\n >\n {(this.props.displayValueMap &&\n (this.props.displayValueMap[value.toLowerCase()] ||\n this.props.displayValueMap['somatic'])) ||\n 'Somatic'}\n </span>\n );\n } else if (value.toLowerCase().includes('germline')) {\n content = (\n <span\n className={styles.germline}\n style={\n this.props.styleMap\n ? this.props.styleMap[value.toLowerCase()]\n : undefined\n }\n >\n {(this.props.displayValueMap &&\n (this.props.displayValueMap[value.toLowerCase()] ||\n this.props.displayValueMap['germline'])) ||\n 'Germline'}\n </span>\n );\n } else {\n content = <span className={styles.unknown}>{value}</span>;\n }\n } else {\n content = <span />;\n }\n\n if (this.props.enableTooltip) {\n content = (\n <DefaultTooltip\n overlay={<span>{value}</span>}\n placement=\"right\"\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return content;\n }\n}\n","import { calcProteinChangeSortValue, Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport { defaultSortMethod } from 'cbioportal-utils';\nimport styles from './proteinChange.module.scss';\n\ntype ProteinChangeProps = {\n mutation: Mutation;\n enableMutationStatusIndicator?: boolean;\n};\n\nexport function proteinChangeSortMethod(a: string, b: string) {\n return defaultSortMethod(\n a ? calcProteinChangeSortValue(a) : null,\n b ? calcProteinChangeSortValue(b) : null\n );\n}\n\nexport default class ProteinChange extends React.Component<\n ProteinChangeProps,\n {}\n> {\n public static defaultProps: Partial<ProteinChangeProps> = {\n enableMutationStatusIndicator: true,\n };\n\n public render() {\n // use text as display value\n const mutation = this.props.mutation;\n const proteinChange = mutation.proteinChange;\n const mutationStatus = mutation.mutationStatus;\n\n // TODO TruncatedText\n // let content = (\n // <TruncatedText\n // text={proteinChange}\n // tooltip={<span>{proteinChange}</span>}\n // className={styles.proteinChange}\n // maxLength={40}\n // />\n // );\n\n let content = (\n <span className={styles.proteinChange}>{proteinChange}</span>\n );\n\n // add a germline indicator next to protein change if it is a germline mutation!\n if (\n this.props.enableMutationStatusIndicator &&\n mutationStatus &&\n mutationStatus.toLowerCase().includes('germline')\n ) {\n content = (\n <React.Fragment>\n {content}\n <span className={styles.germline}>Germline</span>\n </React.Fragment>\n );\n }\n\n return content;\n }\n}\n","import * as React from 'react';\nimport 'rc-tooltip/assets/bootstrap_white.css';\nimport {\n extendMutations,\n getVariantAnnotation,\n IExtendedSignalMutation,\n Mutation,\n RemoteData,\n formatNumberValueInSignificantDigits,\n defaultSortMethod,\n generateTumorTypeDecomposition,\n Pathogenicity,\n} from 'cbioportal-utils';\nimport { VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport {\n MutationTumorTypeFrequencyTable,\n FrequencyTableColumnEnum,\n DefaultTooltip,\n FREQUENCY_COLUMNS_DEFINITION,\n} from 'cbioportal-frontend-commons';\nimport { errorIcon, loaderIcon } from '../StatusHelpers';\nimport { observer } from 'mobx-react';\ntype SignalProps = {\n mutation: Mutation;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationType?: Pathogenicity;\n};\n\ntype SignalValueProps = SignalProps & {\n significantDigits?: number;\n};\n\nexport function getSignalData(\n mutation: Mutation,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n mutationType?: Pathogenicity // mutationType could be \"germline\", \"somatic\", or \"undefined\" which means both\n): IExtendedSignalMutation[] {\n let signalData: IExtendedSignalMutation[] = [];\n const variantAnnotation = indexedVariantAnnotations\n ? getVariantAnnotation(mutation, indexedVariantAnnotations.result)\n : undefined;\n if (\n variantAnnotation &&\n variantAnnotation.signalAnnotation &&\n variantAnnotation.signalAnnotation.annotation &&\n variantAnnotation.signalAnnotation.annotation.length > 0\n ) {\n // if mutation is somatic OR germline, get annotation depending on mutationType\n if (variantAnnotation.signalAnnotation.annotation.length === 1) {\n if (\n (mutationType === Pathogenicity.GERMLINE &&\n variantAnnotation.signalAnnotation.annotation[0].mutationStatus.includes(\n 'germline'\n )) ||\n (mutationType === Pathogenicity.SOMATIC &&\n variantAnnotation.signalAnnotation.annotation[0].mutationStatus.includes(\n 'somatic'\n ))\n ) {\n signalData = extendMutations([\n variantAnnotation.signalAnnotation.annotation[0],\n ]);\n }\n }\n // if mutation is both somatic AND germline, get annotation for both or get one of them depending on mutationType\n else {\n // if mutationType is undefined, get annotation for both somatic and germline\n if (mutationType === undefined) {\n signalData = extendMutations(\n variantAnnotation.signalAnnotation.annotation\n );\n }\n // if mutationType is defined, get annotation depending on mutationType\n else {\n variantAnnotation.signalAnnotation.annotation.forEach(\n annotation => {\n if (\n mutationType === Pathogenicity.GERMLINE &&\n annotation.mutationStatus.includes('germline')\n ) {\n signalData = extendMutations([annotation]);\n } else if (\n mutationType === Pathogenicity.SOMATIC &&\n annotation.mutationStatus.includes('somatic')\n ) {\n signalData = extendMutations([annotation]);\n }\n }\n );\n }\n }\n }\n return signalData;\n}\nexport function signalSortMethod(\n a: IExtendedSignalMutation,\n b: IExtendedSignalMutation\n) {\n return defaultSortMethod(getSortValue(a), getSortValue(b));\n}\nexport function getSortValue(\n signalData: IExtendedSignalMutation\n): number | null {\n return signalData ? signalData.germlineFrequency || null : null;\n}\n\nexport function download(\n signalData: IExtendedSignalMutation,\n mutationType?: Pathogenicity\n): string {\n return signalData && signalData.germlineFrequency !== null\n ? `${formatNumberValueInSignificantDigits(\n signalData.germlineFrequency,\n 2\n )}`\n : '';\n}\n\n// Get germline OR somatic frequency value\nexport function getSingleSignalValue(\n mutation: Mutation,\n mutationType: Pathogenicity,\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >,\n significantDigits?: number\n) {\n const signalData = getSignalData(\n mutation,\n indexedVariantAnnotations,\n mutationType\n );\n if (\n signalData &&\n signalData.length === 1 &&\n signalData[0].tumorTypeDecomposition\n ) {\n return formatNumberValueInSignificantDigits(\n signalData[0].germlineFrequency || signalData[0].somaticFrequency,\n significantDigits || 2\n );\n } else {\n return null;\n }\n}\n\nexport const SignalTable: React.FunctionComponent<SignalValueProps> = props => {\n // signal data should be either germline or somatic, so should be only one element\n const signalData = getSignalData(\n props.mutation,\n props.indexedVariantAnnotations,\n props.mutationType\n )[0];\n if (\n getSingleSignalValue(\n props.mutation,\n props.mutationType || Pathogenicity.GERMLINE,\n props.indexedVariantAnnotations\n ) !== null\n ) {\n return (\n <MutationTumorTypeFrequencyTable\n data={generateTumorTypeDecomposition(\n signalData,\n signalData.countsByTumorType,\n signalData.biallelicCountsByTumorType,\n signalData.qcPassCountsByTumorType,\n signalData.statsByTumorType\n )}\n columns={[\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.TUMOR_TYPE\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MUTATION_STATUS\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.SAMPLE_COUNT\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.VARIANT_COUNT\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.PREVALENCE_FREQUENCY\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.BIALLELIC_RATIO\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_AGE_AT_DX\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_TMB\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MSI_SCORE\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_LST\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_NTELOMERIC_AI\n ],\n FREQUENCY_COLUMNS_DEFINITION[\n FrequencyTableColumnEnum.MEDIAN_HRD_FRACTION_LOH\n ],\n ]}\n />\n );\n } else {\n return null;\n }\n};\n\n@observer\nexport default class Signal extends React.Component<SignalProps, {}> {\n public render() {\n if (this.props.indexedVariantAnnotations) {\n let content;\n const status = this.props.indexedVariantAnnotations.status;\n if (status === 'pending') {\n content = loaderIcon();\n } else if (status === 'error') {\n content = errorIcon('Error fetching Genome Nexus annotation');\n } else {\n content = <div />;\n const signalValue = getSingleSignalValue(\n this.props.mutation,\n this.props.mutationType || Pathogenicity.GERMLINE,\n this.props.indexedVariantAnnotations\n );\n if (signalValue !== null) {\n content = (\n <DefaultTooltip\n placement=\"top\"\n overlayStyle={{\n width: 800,\n }}\n overlay={\n <SignalTable\n mutation={this.props.mutation}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n mutationType={this.props.mutationType}\n />\n }\n >\n <span>{signalValue}</span>\n </DefaultTooltip>\n );\n }\n }\n\n return content;\n } else {\n return <div />;\n }\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport function handleOptionSelect(\n selectedValues: Array<{ value: string }>,\n allValues: string[],\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void\n) {\n if (onSelect) {\n onSelect(\n selectedValues.map(o => o.value),\n allValues.length === selectedValues.length\n );\n }\n}\n\nexport function getAllOptionValues(options?: { value: string }[]) {\n return (options || []).map(option => option.value);\n}\n\nexport function getSelectedOptionValues(\n allValues: string[],\n filter?: DataFilter<string>\n) {\n return allValues\n .filter(\n value =>\n !filter ||\n filter.values.find(\n filterValue =>\n value.toLowerCase() === filterValue.toLowerCase()\n )\n )\n .map(value => ({ value }));\n}\n","import { CheckedSelect, Option } from 'cbioportal-frontend-commons';\nimport classNames from 'classnames';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { components } from 'react-select';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport {\n getAllOptionValues,\n getSelectedOptionValues,\n handleOptionSelect,\n} from '../../util/SelectorUtils';\n\nexport type DropdownSelectorProps = {\n name?: string;\n placeholder?: string;\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void;\n showControls?: boolean;\n showNumberOfSelectedValues?: boolean;\n selectionIndicatorClassNames?: {\n base: string;\n allSelected: string;\n partiallySelected: string;\n };\n filter?: DataFilter<string>;\n options?: { label?: string | JSX.Element; value: string }[];\n};\n\nconst SelectionIndicator: React.FunctionComponent<{\n allValues: string[];\n selectedValues: { value: string }[];\n selectionIndicatorClassNames: string;\n}> = observer(props => {\n return (\n <div\n style={{\n marginRight: 5,\n marginTop: 'auto',\n marginBottom: 'auto',\n }}\n className={props.selectionIndicatorClassNames}\n >\n {props.selectedValues.length}/{props.allValues.length}\n </div>\n );\n});\n\n@observer\nexport class DropdownSelector extends React.Component<\n DropdownSelectorProps,\n {}\n> {\n public static defaultProps: Partial<DropdownSelectorProps> = {\n showNumberOfSelectedValues: true,\n selectionIndicatorClassNames: {\n base: 'badge',\n allSelected: 'badge-light',\n partiallySelected: 'badge-warning',\n },\n };\n\n constructor(props: DropdownSelectorProps) {\n super(props);\n makeObservable(this);\n }\n\n @computed\n public get allValues(): string[] {\n return getAllOptionValues(this.props.options);\n }\n\n @computed\n public get selectedValues(): { value: string }[] {\n return getSelectedOptionValues(this.allValues, this.props.filter);\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.options || []).map(option => ({\n label: <span>{option.label || option.value}</span>,\n value: option.value,\n }));\n }\n\n @computed\n public get selectionIndicatorClassNames(): string {\n const allValuesSelected =\n this.allValues.length === this.selectedValues.length;\n const classes = this.props.selectionIndicatorClassNames!;\n\n return classNames(classes.base, {\n [classes.allSelected]: allValuesSelected,\n [classes.partiallySelected]: !allValuesSelected,\n });\n }\n\n @computed\n public get components() {\n return this.props.showNumberOfSelectedValues\n ? {\n IndicatorsContainer: this.indicatorsContainer,\n }\n : undefined;\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n reactSelectComponents={this.components}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n showControls={this.props.showControls}\n />\n );\n }\n\n protected indicatorsContainer = (props: any) => {\n return (\n <div style={{ display: 'flex' }}>\n <SelectionIndicator\n allValues={this.allValues}\n selectedValues={this.selectedValues}\n selectionIndicatorClassNames={\n this.selectionIndicatorClassNames\n }\n />\n <components.IndicatorsContainer {...props} />\n </div>\n );\n };\n\n @action.bound\n private onChange(values: Array<{ value: string }>) {\n handleOptionSelect(values, this.allValues, this.props.onSelect);\n }\n}\n\nexport default DropdownSelector;\n","import * as React from 'react';\nimport { CSSProperties } from 'react';\n\nexport type BadgeLabelProps = {\n label: JSX.Element | string;\n badgeContent?: number | string;\n badgeStyleOverride?: CSSProperties;\n badgeClassName?: string;\n badgeFirst?: boolean;\n value?: string;\n isDriverAnnotated?: boolean;\n badgeLabelFormat?: (\n label: JSX.Element | string,\n badgeFirst?: boolean,\n value?: string,\n badge?: JSX.Element | null\n ) => JSX.Element;\n};\n\nexport const DEFAULT_BADGE_STYLE = {\n color: '#FFF',\n backgroundColor: '#000',\n borderStyle: 'solid',\n borderWidth: 'thin',\n};\n\nexport class BadgeLabel extends React.Component<BadgeLabelProps, {}> {\n public static defaultProps: Partial<BadgeLabelProps> = {\n badgeClassName: 'badge',\n badgeFirst: false,\n };\n\n protected get badge(): JSX.Element | null {\n return (\n <span\n style={\n this.props.badgeFirst\n ? this.props.isDriverAnnotated\n ? {}\n : { marginRight: 5 }\n : { marginLeft: 5 }\n }\n >\n <span\n className={this.props.badgeClassName}\n data-test={`badge-${this.props.value}`}\n style={{\n ...DEFAULT_BADGE_STYLE,\n ...this.props.badgeStyleOverride,\n ...(this.props.isDriverAnnotated\n ? { marginRight: 0, width: 'auto' }\n : {}),\n }}\n >\n {this.props.badgeContent}\n </span>\n </span>\n );\n }\n\n protected get badgeFirst(): JSX.Element {\n if (this.props.badgeLabelFormat) {\n return this.props.badgeLabelFormat(\n this.props.label,\n true,\n this.props.value,\n this.badge\n );\n } else {\n return (\n <>\n {this.badge}\n {this.props.label}\n </>\n );\n }\n }\n\n protected get badgeLast(): JSX.Element {\n if (this.props.badgeLabelFormat) {\n return this.props.badgeLabelFormat(\n this.props.label,\n false,\n this.props.value,\n this.badge\n );\n } else {\n return (\n <>\n {this.props.label}\n {this.badge}\n </>\n );\n }\n }\n\n public render(): JSX.Element {\n return this.props.badgeFirst ? this.badgeFirst : this.badgeLast;\n }\n}\n\nexport default BadgeLabel;\n","import autobind from 'autobind-decorator';\nimport _ from 'lodash';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { CSSProperties } from 'react';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport {\n getAllOptionValues,\n getSelectedOptionValues,\n handleOptionSelect,\n} from '../../util/SelectorUtils';\nimport { BadgeLabel, DEFAULT_BADGE_STYLE } from './BadgeLabel';\nimport {\n CheckBoxType,\n getSelectedValuesMap,\n Option,\n BadgeListSelector,\n} from 'cbioportal-frontend-commons';\n\nexport type BadgeSelectorOption = {\n value: string;\n label?: string | JSX.Element;\n badgeContent?: number | string;\n badgeStyleOverride?: CSSProperties;\n badgeStyleSelectedOverride?: CSSProperties;\n};\n\nexport type BadgeSelectorProps = {\n name?: string;\n placeholder?: string;\n isDisabled?: boolean;\n numberOfColumnsPerRow?: number;\n alignColumns?: boolean;\n uniformBadgeWidth?: boolean;\n alignmentPaddingWithinBadge?: boolean;\n onSelect?: (\n selectedOptionIds: string[],\n allValuesSelected?: boolean\n ) => void;\n selectedValues?: { value: string }[];\n getOptionLabel?: (\n option: Option,\n selectedValues: { [optionValue: string]: any },\n checkBoxType?: CheckBoxType\n ) => JSX.Element;\n getBadgeLabel?: (\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties,\n isDriverAnnotated?: boolean,\n badgeLabelFormat?: (\n label: JSX.Element | string,\n badgeFirst?: boolean,\n value?: string,\n badge?: JSX.Element | null\n ) => JSX.Element,\n badgeFirst?: boolean\n ) => JSX.Element;\n filter?: DataFilter<string>;\n options?: BadgeSelectorOption[];\n badgeClassName?: string;\n badgeContentPadding?: number;\n badgeCharWidth?: number;\n isDriverAnnotated?: boolean;\n onOnlyDriverVsVusSelect?: (\n selectedOption: string[],\n allValuesSelected: boolean\n ) => void;\n driverAnnotationIcon?: JSX.Element;\n onBadgeSelect?: (\n value: string,\n selectedValues: { value: string }[],\n onChange: (values: { value: string }[]) => void\n ) => void;\n onOnlySelect?: (\n value: string,\n onChange: (values: { value: string }[]) => void,\n onOnlyDriverVsVusChange: (values: { value: string }[]) => void\n ) => void;\n badgeLabelFormat?: (\n label: JSX.Element | string,\n badgeFirst?: boolean,\n value?: string,\n badge?: JSX.Element | null\n ) => JSX.Element;\n useOnlyFeature?: boolean;\n badgeFirst?: boolean;\n};\n\nexport const DEFAULT_BADGE_CHAR_WIDTH = 10;\nexport const DEFAULT_BADGE_CONTENT_PADDING = 7;\n\nexport function getBadgeStyleOverride(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeAlignmentStyle?: CSSProperties\n) {\n let override: CSSProperties = {\n ...badgeAlignmentStyle,\n ...option.badgeStyleOverride,\n };\n\n const defaultStyle = {\n ...DEFAULT_BADGE_STYLE,\n ...override,\n };\n\n const isSelected = option.value in selectedValues;\n\n if (!isSelected) {\n // by default swap background color and text color for unselected options\n override = option.badgeStyleSelectedOverride\n ? {\n ...badgeAlignmentStyle,\n ...option.badgeStyleSelectedOverride,\n }\n : {\n ...defaultStyle,\n color: defaultStyle.backgroundColor,\n backgroundColor: defaultStyle.color,\n borderColor: defaultStyle.backgroundColor,\n };\n }\n\n return override;\n}\n\nexport function calculateBadgeAlignmentStyle(\n maxLengthInCol: number,\n optionLength: number,\n badgeCharWidth: number = DEFAULT_BADGE_CHAR_WIDTH,\n badgeContentPadding: number = DEFAULT_BADGE_CONTENT_PADDING,\n padWithinBadge: boolean = false\n): CSSProperties {\n // this is an approximation with the assumption that each character has more or less equal width\n const totalWidth =\n maxLengthInCol * badgeCharWidth + badgeContentPadding * 2;\n\n if (padWithinBadge) {\n // no additional left or right margin, since all the padding is applied within the badge width\n return {\n width: totalWidth,\n };\n } else {\n // need additional left and right margins to adjust the alignment\n const width = optionLength * badgeCharWidth + badgeContentPadding * 2;\n const margin = (totalWidth - width) / 2;\n return {\n width,\n marginLeft: margin,\n marginRight: margin,\n };\n }\n}\n\nexport function getOptionContentLengths(\n options: BadgeSelectorOption[]\n): number[] {\n // string length of each badge content of an option\n return options\n .map((option: BadgeSelectorOption) => option.badgeContent)\n .filter(content => content !== undefined)\n .map(content => content!.toString().length);\n}\n\nexport function calculateBadgeAlignmentStyles(\n options: BadgeSelectorOption[],\n numberOfColumnsPerRow: number = 1,\n uniformBadgeWidth: boolean = false,\n badgeCharWidth: number = DEFAULT_BADGE_CHAR_WIDTH,\n badgeContentPadding: number = DEFAULT_BADGE_CONTENT_PADDING,\n alignmentPaddingWithinBadge: boolean = false\n): CSSProperties[] {\n // regardless of number of columns or alignmentPaddingWithinBadge value\n // set the width of all badges to the width of badge with the longest content\n if (uniformBadgeWidth) {\n const iterationCount = options.length;\n const maxLength = Math.max(...getOptionContentLengths(options));\n const badgeWidth = calculateBadgeAlignmentStyle(\n maxLength,\n maxLength,\n badgeCharWidth,\n badgeContentPadding,\n true\n );\n\n return _.times(iterationCount, () => badgeWidth);\n } else if (numberOfColumnsPerRow > 0) {\n const groupedByCol = _.groupBy(\n options,\n option => options.indexOf(option) % numberOfColumnsPerRow\n );\n\n return options.map((option: BadgeSelectorOption, index: number) => {\n // define a max badge length for each column\n const maxLengthInCol = Math.max(\n ...getOptionContentLengths(\n groupedByCol[index % numberOfColumnsPerRow]\n )\n );\n const length =\n option.badgeContent === undefined\n ? 0\n : option.badgeContent.toString().length;\n\n // align all badges with respect to the max badge length for the corresponding column\n return calculateBadgeAlignmentStyle(\n maxLengthInCol,\n length,\n badgeCharWidth,\n badgeContentPadding,\n alignmentPaddingWithinBadge\n );\n });\n } else {\n return [];\n }\n}\n\n@observer\nexport class BadgeSelector extends React.Component<BadgeSelectorProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @computed\n public get allValues() {\n return getAllOptionValues(this.props.options);\n }\n\n @computed\n public get selectedValues() {\n return (\n this.props.selectedValues ||\n getSelectedOptionValues(this.allValues, this.props.filter)\n );\n }\n\n @computed\n public get selectedValuesMap(): { [optionValue: string]: any } {\n return getSelectedValuesMap(this.selectedValues);\n }\n\n public getBadgeLabel(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties,\n isDriverAnnotated?: boolean,\n badgeLabelFormat?: (\n label: JSX.Element | string,\n badgeFirst?: boolean,\n value?: string,\n badge?: JSX.Element | null\n ) => JSX.Element,\n badgeFirst?: boolean\n ): JSX.Element {\n return this.props.getBadgeLabel ? (\n this.props.getBadgeLabel(\n option,\n selectedValues,\n badgeClassName,\n badgeAlignmentStyle,\n isDriverAnnotated,\n badgeLabelFormat,\n badgeFirst\n )\n ) : (\n <BadgeLabel\n label={option.label || option.value}\n badgeContent={option.badgeContent}\n badgeStyleOverride={getBadgeStyleOverride(\n option,\n selectedValues,\n badgeAlignmentStyle\n )}\n badgeClassName={this.props.badgeClassName}\n isDriverAnnotated={this.props.isDriverAnnotated}\n badgeLabelFormat={this.props.badgeLabelFormat}\n badgeFirst={this.props.badgeFirst}\n />\n );\n }\n\n @computed\n public get badgeAlignmentStyles(): CSSProperties[] | undefined {\n return this.props.alignColumns && this.props.options\n ? calculateBadgeAlignmentStyles(\n this.props.options,\n this.props.numberOfColumnsPerRow,\n this.props.uniformBadgeWidth,\n this.props.badgeCharWidth,\n this.props.badgeContentPadding,\n this.props.alignmentPaddingWithinBadge\n )\n : undefined;\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.options || []).map((option, index) => ({\n label: this.getBadgeLabel(\n option,\n this.selectedValuesMap,\n this.props.badgeClassName,\n this.badgeAlignmentStyles && this.props.numberOfColumnsPerRow\n ? this.badgeAlignmentStyles[index]\n : undefined,\n this.props.isDriverAnnotated,\n this.props.badgeLabelFormat,\n this.props.badgeFirst\n ),\n value: option.value,\n }));\n }\n\n public render() {\n return (\n <BadgeListSelector\n onChange={this.onChange}\n options={this.options}\n getOptionLabel={this.props.getOptionLabel}\n selectedValue={this.selectedValues}\n isDisabled={this.props.isDisabled}\n numberOfColumnsPerRow={this.props.numberOfColumnsPerRow}\n isDriverAnnotated={this.props.isDriverAnnotated}\n onOnlyDriverVsVusChange={this.onOnlyDriverVsVusChange}\n driverAnnotationIcon={this.props.driverAnnotationIcon}\n onBadgeSelect={this.props.onBadgeSelect}\n onOnlySelect={this.props.onOnlySelect}\n useOnlyFeature={this.props.useOnlyFeature}\n />\n );\n }\n\n @action.bound\n private onChange(values: Array<{ value: string }>) {\n handleOptionSelect(values, this.allValues, this.props.onSelect);\n }\n\n @action.bound\n private onOnlyDriverVsVusChange(values: Array<{ value: string }>) {\n handleOptionSelect(\n values,\n this.allValues,\n this.props.onOnlyDriverVsVusSelect\n );\n }\n}\n\nexport default BadgeSelector;\n","import {\n CanonicalMutationType,\n findFirstMostCommonElt,\n getCanonicalMutationType,\n getProteinImpactTypeFromCanonical,\n ProteinImpactType,\n MUT_COLOR_MISSENSE,\n MUT_COLOR_INFRAME,\n MUT_COLOR_TRUNC,\n MUT_COLOR_SPLICE,\n STRUCTURAL_VARIANT_COLOR,\n MUT_COLOR_OTHER,\n MUT_COLOR_OTHER_PASSENGER,\n MUT_COLOR_MISSENSE_PASSENGER,\n MUT_COLOR_INFRAME_PASSENGER,\n MUT_COLOR_TRUNC_PASSENGER,\n MUT_COLOR_SPLICE_PASSENGER,\n STRUCTURAL_VARIANT_PASSENGER_COLOR,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nimport { IProteinImpactTypeColors } from '../model/ProteinImpact';\n\nexport const DEFAULT_PROTEIN_IMPACT_TYPE_COLORS: IProteinImpactTypeColors = {\n missenseColor: MUT_COLOR_MISSENSE,\n missenseVusColor: MUT_COLOR_MISSENSE_PASSENGER,\n inframeColor: MUT_COLOR_INFRAME,\n inframeVusColor: MUT_COLOR_INFRAME_PASSENGER,\n truncatingColor: MUT_COLOR_TRUNC,\n truncatingVusColor: MUT_COLOR_TRUNC_PASSENGER,\n spliceColor: MUT_COLOR_SPLICE,\n spliceVusColor: MUT_COLOR_SPLICE_PASSENGER,\n fusionColor: STRUCTURAL_VARIANT_COLOR,\n fusionVusColor: STRUCTURAL_VARIANT_PASSENGER_COLOR,\n otherColor: MUT_COLOR_OTHER,\n otherVusColor: MUT_COLOR_OTHER_PASSENGER,\n};\n\nexport const MUTATION_TYPE_PRIORITY: {\n [canonicalMutationType: string]: number;\n} = {\n missense: 1,\n inframe: 2,\n truncating: 4,\n nonsense: 6,\n nonstop: 7,\n nonstart: 8,\n frameshift: 4,\n frame_shift_del: 4,\n frame_shift_ins: 5,\n in_frame_ins: 3,\n in_frame_del: 2,\n splice_site: 9,\n fusion: 10,\n silent: 11,\n other: 11,\n};\n\nexport function mutationTypeSort(\n typeA: CanonicalMutationType,\n typeB: CanonicalMutationType\n) {\n const priorityA = MUTATION_TYPE_PRIORITY[typeA];\n const priorityB = MUTATION_TYPE_PRIORITY[typeB];\n if (priorityA < priorityB) {\n return -1;\n } else if (priorityA > priorityB) {\n return 1;\n } else {\n return typeA.localeCompare(typeB);\n }\n}\n\nexport function getColorForProteinImpactType<T extends Mutation>(\n mutations: Partial<T>[],\n colors: IProteinImpactTypeColors = DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n getMutationCount: (mutation: Partial<T>) => number = () => 1,\n isPutativeDriver?: (mutation: Partial<T>) => boolean\n): string {\n const processedMutations = mutations.map(m => {\n return {\n count: Math.ceil(getMutationCount(m)),\n\n // if not coloring drivers vs vus, color everything as driver\n isPutativeDriver: !!(!isPutativeDriver || isPutativeDriver(m)),\n\n canonicalType: getCanonicalMutationType(\n (m.mutationType || '') as string\n ),\n };\n });\n // aggregate counts by type + driver status\n const counts: any = {};\n for (const pMut of processedMutations) {\n const key = `${pMut.canonicalType}_${pMut.isPutativeDriver}`;\n counts[key] = counts[key] || {\n count: 0,\n isPutativeDriver: pMut.isPutativeDriver,\n canonicalType: pMut.canonicalType,\n };\n counts[key].count += pMut.count;\n }\n\n const sortedMutations = _.sortBy(_.values(counts), [\n pMut => (pMut.isPutativeDriver ? 0 : 1), // putative driver preferred non putative driver\n pMut => -pMut.count, // sort descending by count - higher count preferred to lower count\n pMut => MUTATION_TYPE_PRIORITY[pMut.canonicalType], // finally, sort by specified priority\n ]);\n\n if (sortedMutations.length > 0) {\n const chosenMutation = sortedMutations[0];\n\n const proteinImpactType: ProteinImpactType = getProteinImpactTypeFromCanonical(\n chosenMutation.canonicalType\n );\n\n switch (proteinImpactType) {\n case ProteinImpactType.MISSENSE:\n return chosenMutation.isPutativeDriver\n ? colors.missenseColor\n : colors.missenseVusColor;\n case ProteinImpactType.TRUNCATING:\n return chosenMutation.isPutativeDriver\n ? colors.truncatingColor\n : colors.truncatingVusColor;\n case ProteinImpactType.INFRAME:\n return chosenMutation.isPutativeDriver\n ? colors.inframeColor\n : colors.inframeVusColor;\n case ProteinImpactType.FUSION:\n return chosenMutation.isPutativeDriver\n ? colors.fusionColor\n : colors.fusionVusColor;\n case ProteinImpactType.SPLICE:\n return chosenMutation.isPutativeDriver\n ? colors.spliceColor\n : colors.spliceVusColor;\n case ProteinImpactType.OTHER:\n return chosenMutation.isPutativeDriver\n ? colors.otherColor\n : colors.otherVusColor;\n default:\n return colors.otherColor;\n }\n } else {\n return '#FF0000'; // we only get here if theres no mutations, which shouldnt happen. red to indicate an error\n }\n}\n","import { ProteinImpactType } from 'cbioportal-frontend-commons';\nimport * as React from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\n\nexport function getProteinImpactTypeOptionDisplayValueMap(proteinImpactTypeColorMap: {\n [proteinImpactType: string]: string;\n}): { [proteinImpactType: string]: JSX.Element } {\n return {\n [ProteinImpactType.MISSENSE]: (\n <strong\n style={{\n color:\n proteinImpactTypeColorMap[ProteinImpactType.MISSENSE],\n }}\n >\n Missense\n </strong>\n ),\n [ProteinImpactType.TRUNCATING]: (\n <strong\n style={{\n color:\n proteinImpactTypeColorMap[ProteinImpactType.TRUNCATING],\n }}\n >\n Truncating\n </strong>\n ),\n [ProteinImpactType.INFRAME]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.INFRAME],\n }}\n >\n Inframe\n </strong>\n ),\n [ProteinImpactType.SPLICE]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.SPLICE],\n }}\n >\n Splice\n </strong>\n ),\n [ProteinImpactType.FUSION]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.FUSION],\n }}\n >\n SV/Fusion\n </strong>\n ),\n [ProteinImpactType.OTHER]: (\n <strong\n style={{\n color: proteinImpactTypeColorMap[ProteinImpactType.OTHER],\n }}\n >\n Other\n </strong>\n ),\n };\n}\n\nexport function getProteinImpactTypeColorMap(\n colors: IProteinImpactTypeColors\n): { [proteinImpactType: string]: string } {\n return {\n [ProteinImpactType.MISSENSE]: colors.missenseColor,\n [ProteinImpactType.TRUNCATING]: colors.truncatingColor,\n [ProteinImpactType.INFRAME]: colors.inframeColor,\n [ProteinImpactType.SPLICE]: colors.spliceColor,\n [ProteinImpactType.FUSION]: colors.fusionColor,\n [ProteinImpactType.OTHER]: colors.otherColor,\n };\n}\n","import { ProteinImpactType } from 'cbioportal-frontend-commons';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\nimport { DEFAULT_PROTEIN_IMPACT_TYPE_COLORS } from '../../util/MutationTypeUtils';\nimport DropdownSelector, { DropdownSelectorProps } from './DropdownSelector';\nimport {\n getProteinImpactTypeColorMap,\n getProteinImpactTypeOptionDisplayValueMap,\n} from './ProteinImpactTypeHelper';\n\nexport type ProteinImpactTypeDropdownSelectorProps = DropdownSelectorProps & {\n colors: IProteinImpactTypeColors;\n};\n\n@observer\nexport class ProteinImpactTypeDropdownSelector extends React.Component<\n ProteinImpactTypeDropdownSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<\n ProteinImpactTypeDropdownSelectorProps\n > = {\n colors: DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n };\n\n @computed\n protected get optionDisplayValueMap() {\n return getProteinImpactTypeOptionDisplayValueMap(\n this.proteinImpactTypeColors\n );\n }\n\n @computed\n protected get proteinImpactTypeColors() {\n return getProteinImpactTypeColorMap(this.props.colors);\n }\n\n @computed\n protected get options() {\n return Object.values(ProteinImpactType).map(value => ({\n value,\n label: this.optionDisplayValueMap[value],\n }));\n }\n\n public render() {\n return (\n <DropdownSelector\n name=\"proteinImpactTypeFilter\"\n placeholder=\"Protein Impact\"\n showControls={true}\n options={this.options}\n {...this.props}\n />\n );\n }\n}\n\nexport default ProteinImpactTypeDropdownSelector;\n","import { Option, ProteinImpactType } from 'cbioportal-frontend-commons';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { CSSProperties } from 'react';\n\nimport { IProteinImpactTypeColors } from '../../model/ProteinImpact';\nimport { DEFAULT_PROTEIN_IMPACT_TYPE_COLORS } from '../../util/MutationTypeUtils';\nimport { BadgeLabel } from './BadgeLabel';\nimport BadgeSelector, {\n BadgeSelectorOption,\n BadgeSelectorProps,\n getBadgeStyleOverride,\n} from './BadgeSelector';\nimport {\n getProteinImpactTypeColorMap,\n getProteinImpactTypeOptionDisplayValueMap,\n} from './ProteinImpactTypeHelper';\n\nexport type ProteinImpactTypeBadgeSelectorProps = BadgeSelectorProps & {\n colors: IProteinImpactTypeColors;\n counts?: { [proteinImpactType: string]: number };\n excludedProteinTypes?: string[];\n groupIndex?: number;\n groupNameWithOrdinal?: string;\n height?: number;\n};\n\nconst VALUES = [\n ProteinImpactType.MISSENSE,\n ProteinImpactType.TRUNCATING,\n ProteinImpactType.INFRAME,\n ProteinImpactType.SPLICE,\n ProteinImpactType.FUSION,\n ProteinImpactType.OTHER,\n];\n\nexport function getProteinImpactTypeOptionLabel(option: Option): JSX.Element {\n return <span>{option.label || option.value}</span>;\n}\n\nexport function getProteinImpactTypeBadgeLabel(\n option: BadgeSelectorOption,\n selectedValues: { [optionValue: string]: any },\n badgeClassName?: string,\n badgeAlignmentStyle?: CSSProperties,\n isDriverAnnotated?: boolean,\n badgeLabelFormat?: (\n label: JSX.Element | string,\n badgeFirst?: boolean,\n value?: string,\n badge?: JSX.Element | null\n ) => JSX.Element,\n badgeFirst?: boolean\n): JSX.Element {\n return (\n <BadgeLabel\n label={option.label || option.value}\n badgeContent={option.badgeContent}\n badgeStyleOverride={getBadgeStyleOverride(\n option,\n selectedValues,\n badgeAlignmentStyle\n )}\n badgeClassName={badgeClassName}\n badgeFirst={badgeFirst}\n value={option.value}\n isDriverAnnotated={isDriverAnnotated}\n badgeLabelFormat={badgeLabelFormat}\n />\n );\n}\n\n@observer\nexport class ProteinImpactTypeBadgeSelector<\n P extends ProteinImpactTypeBadgeSelectorProps = ProteinImpactTypeBadgeSelectorProps\n> extends React.Component<P, {}> {\n constructor(props: any) {\n super(props);\n }\n\n public static defaultProps: Partial<ProteinImpactTypeBadgeSelectorProps> = {\n colors: DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n alignColumns: true,\n numberOfColumnsPerRow: 2,\n };\n\n protected get optionDisplayValueMap() {\n return getProteinImpactTypeOptionDisplayValueMap(\n this.proteinImpactTypeColors\n );\n }\n\n protected get proteinImpactTypeColors() {\n return getProteinImpactTypeColorMap(this.props.colors);\n }\n\n protected get options() {\n // get options, hide \"Other\" if it's 0\n return VALUES.map(value => ({\n value,\n label: this.optionDisplayValueMap[value],\n badgeContent: this.props.counts\n ? this.props.counts[value]\n : undefined,\n badgeStyleOverride: {\n backgroundColor: this.proteinImpactTypeColors[value],\n },\n })).filter(\n type =>\n !(\n this.props.excludedProteinTypes?.includes(type.value) ||\n (type.value === ProteinImpactType.OTHER &&\n type.badgeContent === 0)\n )\n );\n }\n\n public render() {\n return (\n <div style={{ display: 'inline-flex' }}>\n <div>\n <table style={{ height: this.props.height }}>\n <BadgeSelector\n options={this.options}\n getOptionLabel={getProteinImpactTypeOptionLabel}\n getBadgeLabel={getProteinImpactTypeBadgeLabel}\n useOnlyFeature={true}\n badgeFirst={true}\n {...this.props}\n />\n </table>\n </div>\n {this.props.groupNameWithOrdinal && (\n <div\n style={{\n fontSize: 12,\n fontWeight: 'bold',\n textAlign: 'center',\n writingMode: 'vertical-lr',\n transform: 'rotate(180deg)',\n }}\n >\n {this.props.groupNameWithOrdinal}\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default ProteinImpactTypeBadgeSelector;\n","import { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { formatPercentValue } from 'cbioportal-utils';\n\nimport BadgeSelector, {\n BadgeSelectorOption,\n BadgeSelectorProps,\n} from './BadgeSelector';\n\nexport type MutationStatusBadgeSelectorProps = BadgeSelectorProps & {\n rates?: { [mutationStatus: string]: number };\n badgeSelectorOptions?: BadgeSelectorOption[];\n};\n\nexport const MUTATION_STATUS_BADGE_STYLE_OVERRIDE = {\n color: '#000',\n backgroundColor: '#FFF',\n borderColor: '#FFF',\n};\n\nexport function getMutationStatusFilterOptions() {\n return [\n {\n value: 'somatic',\n label: 'Somatic Mutation Frequency',\n badgeStyleOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n badgeStyleSelectedOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n },\n {\n value: 'germline',\n label: 'Germline Mutation Frequency',\n badgeStyleOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n badgeStyleSelectedOverride: MUTATION_STATUS_BADGE_STYLE_OVERRIDE,\n },\n ];\n}\n\n@observer\nexport class MutationStatusBadgeSelector extends React.Component<\n MutationStatusBadgeSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<MutationStatusBadgeSelectorProps> = {\n badgeSelectorOptions: getMutationStatusFilterOptions(),\n };\n\n @computed\n public get options() {\n return this.props.badgeSelectorOptions!.map(option => ({\n ...option,\n badgeContent: this.props.rates\n ? `${formatPercentValue(this.props.rates[option.value])}%`\n : undefined,\n }));\n }\n\n public render() {\n return (\n <table>\n <BadgeSelector options={this.options} {...this.props} />\n </table>\n );\n }\n}\n\nexport default MutationStatusBadgeSelector;\n","import autobind from 'autobind-decorator';\nimport { CheckedSelect, Option } from 'cbioportal-frontend-commons';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nexport type ColumnVisibilityDef = {\n id: string;\n name: string;\n visible: boolean;\n togglable?: boolean;\n};\n\nexport type ColumnSelectorProps = {\n name?: string;\n placeholder?: string;\n columnVisibility?: ColumnVisibilityDef[];\n onColumnToggled?: (selectedColumnIds: string[]) => void;\n showControls?: boolean;\n};\n\n@observer\nexport class ColumnSelector extends React.Component<ColumnSelectorProps, {}> {\n public static defaultProps: Partial<ColumnSelectorProps> = {\n name: 'dataTableColumns',\n placeholder: 'Columns',\n showControls: false,\n };\n\n constructor(props: ColumnSelectorProps) {\n super(props);\n makeObservable<ColumnSelector, 'onChange'>(this);\n }\n\n @computed\n public get selectedValues() {\n return (this.props.columnVisibility || [])\n .filter(c => c.visible)\n .map(c => ({ value: c.id }));\n }\n\n @computed\n public get options(): Option[] {\n return (this.props.columnVisibility || []).map(c => ({\n label: <span>{c.name}</span>,\n value: c.id,\n }));\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n showControls={this.props.showControls}\n />\n );\n }\n\n @action.bound\n private onChange(values: { value: string }[]) {\n if (this.props.onColumnToggled) {\n this.props.onColumnToggled(values.map(o => o.value));\n }\n }\n}\n\nexport default ColumnSelector;\n","import classNames from 'classnames';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport styles from './filterResetPanel.module.scss';\n\ntype FilterResetPanelProps = {\n resetFilters: () => void;\n filterInfo?: JSX.Element | string;\n additionalInfo?: JSX.Element | string;\n className?: string;\n buttonText?: string;\n buttonClass?: string;\n};\n\n@observer\nexport class FilterResetPanel extends React.Component<\n FilterResetPanelProps,\n {}\n> {\n public static defaultProps: Partial<FilterResetPanelProps> = {\n buttonText: 'Remove filter',\n buttonClass: classNames('btn', 'btn-secondary', 'btn-sm'),\n className: classNames(\n 'alert',\n 'alert-success',\n styles.filterResetPanel\n ),\n };\n\n public render() {\n return (\n <div\n className={this.props.className}\n data-test=\"filter-reset-panel\"\n >\n <span style={{ verticalAlign: 'middle' }}>\n <strong>{this.props.filterInfo}</strong>\n <button\n className={this.props.buttonClass}\n style={{ cursor: 'pointer', marginLeft: 6 }}\n onClick={this.props.resetFilters}\n >\n {this.props.buttonText}\n </button>\n <br />\n {this.props.additionalInfo}\n </span>\n </div>\n );\n }\n}\n\nexport default FilterResetPanel;\n","export enum DataFilterType {\n ONCOKB = 'oncokb',\n HOTSPOT = 'hotspot',\n POSITION = 'position',\n MUTATION = 'mutation',\n CANCER_TYPE = 'cancerType',\n PROTEIN_IMPACT_TYPE = 'proteinImpactType',\n MUTATION_STATUS = 'mutationStatus',\n PROTEIN_CHANGE = 'proteinChange',\n}\n\nexport type DataFilter<T = any> = {\n id?: string;\n type: string;\n values: T[];\n};\n","import {\n getProteinImpactType,\n ProteinImpactType,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nimport { MutationFilter, MutationFilterValue } from '../filter/MutationFilter';\nimport { MutationStatusFilter } from '../filter/MutationStatusFilter';\nimport { PositionFilter } from '../filter/PositionFilter';\nimport { ProteinImpactTypeFilter } from '../filter/ProteinImpactTypeFilter';\nimport { NumericalFilterValue } from '../filter/NumericalFilter';\nimport { CategoricalFilterValue } from '../filter/CategoricalFilter';\nimport DataStore from '../model/DataStore';\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport { ApplyFilterFn } from '../model/FilterApplier';\nimport { ProteinChangeFilter } from '../filter/ProteinChangeFilter';\n\nexport const TEXT_INPUT_FILTER_ID = '_mutationTableTextInputFilter_';\n\nexport function updatePositionSelectionFilters(\n dataStore: DataStore,\n position: number,\n isMultiSelect: boolean = false,\n defaultFilters: DataFilter[] = []\n) {\n const currentlySelected = dataStore.isPositionSelected(position);\n let selectedPositions: number[] = [];\n\n if (isMultiSelect) {\n // we need to keep previous positions if shift pressed,\n // but we still want to clear other filters tied with these positions\n selectedPositions = findAllUniquePositions(dataStore.selectionFilters);\n\n // remove current position if already selected\n if (currentlySelected) {\n selectedPositions = _.without(selectedPositions, position);\n }\n }\n\n // add current position into list if not selected\n if (!currentlySelected) {\n selectedPositions.push(position);\n }\n\n const positionFilter = {\n type: DataFilterType.POSITION,\n values: selectedPositions,\n };\n // we want to keep other filters (filters not related to positions) as is\n const otherFilters = dataStore.selectionFilters.filter(\n f => f.type !== DataFilterType.POSITION\n );\n\n // reset filters\n dataStore.clearSelectionFilters();\n dataStore.setSelectionFilters([\n positionFilter,\n ...defaultFilters,\n ...otherFilters,\n ]);\n}\n\nexport function updatePositionHighlightFilters(\n dataStore: DataStore,\n positions: number[],\n defaultFilters: DataFilter[] = []\n) {\n dataStore.clearHighlightFilters();\n\n const positionFilter = {\n type: DataFilterType.POSITION,\n values: positions,\n };\n dataStore.setHighlightFilters([...defaultFilters, positionFilter]);\n}\n\nexport function updatePositionRangeHighlightFilters(\n dataStore: DataStore,\n startPosition: number,\n endPosition: number,\n defaultFilters: DataFilter[] = []\n) {\n const positions: number[] = [];\n\n for (let i = startPosition; i <= endPosition; i++) {\n positions.push(i);\n }\n\n updatePositionHighlightFilters(dataStore, positions, defaultFilters);\n}\n\nexport function findAllUniquePositions(filters: DataFilter[]): number[] {\n return _.uniq(\n _.flatten(\n filters\n // pick only position filters\n .filter(f => f.type === DataFilterType.POSITION)\n // we need to spread f.values, since it might be an observable mobx array\n // (mobx observable arrays does not play well with some array functions)\n .map(f => [...f.values])\n )\n );\n}\n\nexport function indexPositions(\n filters: DataFilter[]\n): { [position: string]: { position: number } } {\n return _.keyBy(\n findAllUniquePositions(filters).map(p => ({ position: p })),\n 'position'\n );\n}\n\nexport function includesSearchTextIgnoreCase(\n value?: string,\n searchText?: string\n) {\n return (\n searchText &&\n (value || '').toLowerCase().includes(searchText.toLowerCase())\n );\n}\n\nexport function findTextInputFilter(dataFilters: DataFilter[]) {\n return dataFilters.find(f => f.id === TEXT_INPUT_FILTER_ID);\n}\n\nexport function findNonTextInputFilters(dataFilters: DataFilter[]) {\n return dataFilters.filter(f => f.id !== TEXT_INPUT_FILTER_ID);\n}\n\nexport function findOneMutationFilterValue(filter: MutationFilter) {\n return filter.values.length > 0 ? _.values(filter.values[0])[0] : undefined;\n}\n\nexport function applyDefaultPositionFilter(\n filter: PositionFilter,\n mutation: Mutation\n) {\n // const positions: {[position: string]: {position: number}} = indexPositions([filter]);\n // return !positions || !!positions[mutation.proteinPosStart+\"\"];\n\n return filter.values.includes(mutation.proteinPosStart);\n}\n\nexport function applyDefaultProteinImpactTypeFilter(\n filter: ProteinImpactTypeFilter,\n mutation: Mutation\n) {\n return filter.values.includes(\n getProteinImpactType(mutation.mutationType || 'other')\n );\n}\n\nexport function applyDefaultProteinChangeFilter(\n filter: ProteinChangeFilter,\n mutation: Mutation\n) {\n return (\n mutation.proteinChange !== undefined &&\n _.some(\n filter.values,\n value =>\n value.toLowerCase() === mutation.proteinChange.toLowerCase()\n )\n );\n}\n\nexport function applyDefaultMutationStatusFilter(\n filter: MutationStatusFilter,\n mutation: Mutation\n) {\n return (\n mutation.mutationStatus !== undefined &&\n _.some(\n filter.values,\n value =>\n value.toLowerCase() === mutation.mutationStatus!.toLowerCase()\n )\n );\n}\n\nexport function applyDefaultMutationFilter(\n filter: MutationFilter,\n mutation: Mutation\n) {\n const filterPredicates = filter.values.map((value: MutationFilterValue) => {\n const valuePredicates = Object.keys(value).map(key =>\n includesSearchTextIgnoreCase(\n (mutation as any)[key]\n ? (mutation as any)[key].toString()\n : undefined,\n (value as any)[key] ? (value as any)[key.toString()] : undefined\n )\n );\n\n // all predicates should be true in order for a match with a single MutationFilterValue\n // (multiple values within the same MutationFilterValue are subject to AND)\n return !valuePredicates.includes(false);\n });\n\n // a single true within a set of MutationFilterValues is a match for the entire filter\n // (multiple MutationFilterValues within the same MutationFilter are subject to OR)\n return filterPredicates.includes(true);\n}\n\nexport function groupDataByGroupFilters(\n groupFilters: { group: string; filter: DataFilter }[],\n sortedFilteredData: any[],\n applyFilter: ApplyFilterFn\n) {\n return groupFilters.map(groupFilter => ({\n group: groupFilter.group,\n data: sortedFilteredData.filter(\n // TODO simplify array flatten if possible\n m => applyFilter(groupFilter.filter, _.flatten([m])[0])\n ),\n }));\n}\n\nexport function groupDataByProteinImpactType(sortedFilteredData: any[]) {\n const filters = Object.values(ProteinImpactType).map(value => ({\n group: value,\n filter: {\n type: DataFilterType.PROTEIN_IMPACT_TYPE,\n values: [value],\n },\n }));\n\n const groupedData = groupDataByGroupFilters(\n filters,\n sortedFilteredData,\n applyDefaultProteinImpactTypeFilter\n );\n\n return _.keyBy(groupedData, d => d.group);\n}\n\nexport function onFilterOptionSelect(\n selectedValues:\n | string[]\n | NumericalFilterValue[]\n | CategoricalFilterValue[],\n allValuesSelected: boolean,\n dataStore: DataStore,\n dataFilterType: string,\n dataFilterId: string\n) {\n // all other filters except the current filter with the given data filter id\n const otherFilters = dataStore.dataFilters.filter(\n (f: DataFilter) => f.id !== dataFilterId\n );\n\n if (allValuesSelected) {\n // if all values are selected just remove the existing filter with the given data filter id\n // (assuming that no filtering required if everything is selected)\n dataStore.setDataFilters(otherFilters);\n } else {\n const dataFilter = {\n id: dataFilterId,\n type: dataFilterType,\n values: selectedValues,\n };\n\n // replace the existing data filter wrt the current selection (other filters + new data filter)\n dataStore.setDataFilters([...otherFilters, dataFilter]);\n }\n}\n\nexport function applyDataFiltersOnDatum(\n datum: any,\n dataFilters: DataFilter[],\n applyFilter: ApplyFilterFn\n) {\n return (\n dataFilters.length > 0 &&\n !dataFilters\n .map(dataFilter => applyFilter(dataFilter, datum))\n .includes(false)\n );\n}\n\nexport function applyDataFilters(\n data: any[],\n dataFilters: DataFilter[],\n applyFilter: ApplyFilterFn\n) {\n return dataFilters.length > 0\n ? data.filter(m => applyDataFiltersOnDatum(m, dataFilters, applyFilter))\n : data;\n}\n","import autobind from 'autobind-decorator';\nimport * as React from 'react';\nimport { FormEvent } from 'react';\n\ninterface ISearchBoxProps {\n onChange?: (input: string) => void;\n filterInputRef?: (input: HTMLInputElement) => void;\n placeholder?: string;\n searchIconClassName?: string;\n boxHeight?: number;\n}\n\nexport class SearchBox extends React.Component<ISearchBoxProps> {\n public static defaultProps = {\n placeholder: '',\n searchIconClassName: 'fa fa-search form-control-feedback',\n boxHeight: 33.5,\n };\n\n public render() {\n return (\n <div className=\"input-group\" style={{ display: 'flex' }}>\n <input\n type=\"text\"\n onInput={this.onChange}\n ref={this.props.filterInputRef}\n className=\"form-control\"\n placeholder={this.props.placeholder}\n aria-label=\"Search\"\n style={{ height: this.props.boxHeight }}\n />\n <div\n className=\"input-group-append\"\n style={{ height: this.props.boxHeight }}\n >\n <button\n className=\"btn btn-outline-secondary\"\n type=\"button\"\n disabled={true}\n >\n <i className=\"fa fa-search\" />\n </button>\n </div>\n </div>\n );\n }\n\n @autobind\n private onChange(event: FormEvent<any>) {\n if (this.props.onChange) {\n this.props.onChange(event.currentTarget.value);\n }\n }\n}\n\nexport default SearchBox;\n","import _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport {\n ColumnSelector,\n ColumnSelectorProps,\n ColumnVisibilityDef,\n} from './ColumnSelector';\nimport { SearchBox } from './SearchBox';\n\ntype DataTableToolbarProps = {\n showColumnVisibility?: boolean;\n visibilityToggle?: (selectedColumnIds: string[]) => void;\n columnVisibility?: ColumnVisibilityDef[];\n columnSelectorProps?: ColumnSelectorProps;\n showSearchBox?: boolean;\n onSearch?: (searchText: string) => void;\n filterInputRef?: (input: HTMLInputElement) => void;\n searchDelay?: number;\n searchPlaceHolder?: string;\n info?: JSX.Element;\n};\n\n@observer\nexport class DataTableToolbar extends React.Component<\n DataTableToolbarProps,\n {}\n> {\n public static defaultProps: Partial<DataTableToolbarProps> = {\n showColumnVisibility: true,\n showSearchBox: true,\n searchDelay: 400,\n };\n\n protected get searchBoxMargin() {\n return this.props.showColumnVisibility ? 5 : 'auto';\n }\n\n public render() {\n return (\n <div\n className=\"dataTableMainToolbar\"\n style={{\n paddingBottom: '0.4rem',\n display: 'flex',\n alignItems: 'flex-end',\n }}\n >\n {this.props.info}\n {this.props.showColumnVisibility && (\n <div\n className=\"small\"\n style={{ width: 150, marginLeft: 'auto' }}\n >\n <ColumnSelector\n columnVisibility={this.props.columnVisibility}\n onColumnToggled={this.props.visibilityToggle}\n {...this.props.columnSelectorProps}\n />\n </div>\n )}\n {this.props.showSearchBox && (\n <div\n className=\"small\"\n style={{ width: 200, marginLeft: this.searchBoxMargin }}\n >\n <SearchBox\n placeholder={this.props.searchPlaceHolder}\n onChange={\n this.props.onSearch\n ? _.debounce(\n this.props.onSearch,\n this.props.searchDelay\n )\n : this.props.onSearch\n }\n filterInputRef={this.props.filterInputRef}\n />\n </div>\n )}\n </div>\n );\n }\n}\n\nexport default DataTableToolbar;\n","import autobind from 'autobind-decorator';\nimport {\n resolveColumnVisibility,\n resolveColumnVisibilityByColumnDefinition,\n} from 'cbioportal-frontend-commons';\nimport { getRemoteDataGroupStatus, RemoteData } from 'cbioportal-utils';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport {\n action,\n computed,\n IReactionDisposer,\n IReactionPublic,\n observable,\n reaction,\n makeObservable,\n} from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport ReactTable, { Column, RowInfo, TableProps } from 'react-table';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport { DataStore } from '../../model/DataStore';\nimport { TEXT_INPUT_FILTER_ID } from '../../util/FilterUtils';\nimport { ColumnSelectorProps, ColumnVisibilityDef } from './ColumnSelector';\nimport { DataTableToolbar } from './DataTableToolbar';\n\nexport type DataTableColumn<T> = Column<T> & {\n name?: string;\n togglable?: boolean;\n searchable?: boolean;\n};\n\nexport enum ColumnSortDirection {\n ASC = 'asc',\n DESC = 'desc',\n}\n\nexport type ColumnSort = {\n column: string;\n sortDirection?: ColumnSortDirection;\n};\n\nexport type DataTableProps<T> = {\n data?: T[];\n dataStore?: DataStore;\n columns?: DataTableColumn<T>[];\n className?: string;\n reactTableProps?: Partial<TableProps<T>>;\n\n initialSort?: ColumnSort[];\n initialSortRemoteData?: (RemoteData<any> | undefined)[];\n initialItemsPerPage?: number;\n\n highlightColorLight?: string;\n highlightColorDark?: string;\n\n showColumnVisibility?: boolean;\n showSearchBox?: boolean;\n onSearch?: (\n input: string,\n visibleSearchableColumns: DataTableColumn<T>[]\n ) => void;\n searchDelay?: number;\n searchPlaceholder?: string;\n info?: JSX.Element;\n columnVisibility?: { [columnId: string]: boolean };\n columnSelectorProps?: ColumnSelectorProps;\n};\n\nexport function getInitialSortDataStatus(\n initialSortRemoteData?: (RemoteData<any> | undefined)[]\n) {\n return initialSortRemoteData\n ? getRemoteDataGroupStatus(..._.compact(initialSortRemoteData))\n : 'complete';\n}\n\nfunction getColumnVisibilityDef<T>(\n columns: DataTableColumn<T>[],\n columnVisibility: { [columnId: string]: boolean }\n) {\n const colVisProp: ColumnVisibilityDef[] = [];\n\n (columns || [])\n .filter(column => column.id)\n .forEach(column =>\n colVisProp.push({\n id: column.id!,\n name: column.name || column.id!,\n visible: columnVisibility[column.id!],\n togglable:\n column.togglable !== undefined ? column.togglable : true,\n })\n );\n\n return colVisProp;\n}\n\nexport default class DataTable<T> extends React.Component<\n DataTableProps<T>,\n {}\n> {\n public static defaultProps = {\n data: [],\n initialItemsPerPage: 10,\n highlightColorLight: '#B0BED9',\n highlightColorDark: '#9FAFD1',\n };\n\n private filterInput: HTMLInputElement | undefined;\n private filterInputReaction: IReactionDisposer | undefined;\n\n // this keeps the state of the latest action (latest user selection)\n @observable\n private _columnVisibilityOverride:\n | { [columnId: string]: boolean }\n | undefined;\n\n @observable\n private expanded: { [index: number]: boolean } = {};\n\n constructor(props: DataTableProps<T>) {\n super(props);\n\n makeObservable<\n DataTable<T>,\n | '_columnVisibilityOverride'\n | 'expanded'\n | 'onSearch'\n | 'onVisibilityToggle'\n | 'updateColumnVisibility'\n | 'onExpandedChange'\n | 'resetExpander'\n >(this);\n\n this.filterInputReaction = this.props.dataStore\n ? this.createFilterInputResetReaction(this.props.dataStore)\n : undefined;\n }\n\n @computed\n get tableData(): T[] | undefined {\n let data = this.props.data;\n\n if (this.props.dataStore) {\n data =\n this.props.dataStore.sortedFilteredSelectedData.length > 0\n ? this.props.dataStore.sortedFilteredSelectedData\n : this.props.dataStore.sortedFilteredData;\n }\n\n return data;\n }\n\n @computed\n get columns(): DataTableColumn<T>[] {\n return (this.props.columns || []).map(c => ({\n ...c,\n show: c.id ? this.columnVisibility[c.id] : c.expander || c.show,\n }));\n }\n\n @computed\n get needToCustomizeRowStyle() {\n return this.props.dataStore && this.props.dataStore.highlightFilters;\n }\n\n @computed\n get showPagination() {\n const initialItemsPerPage = this.props.initialItemsPerPage;\n\n return (\n this.tableData !== undefined &&\n this.tableData.length > initialItemsPerPage!\n );\n }\n\n @computed\n get initialSortDataStatus() {\n return getInitialSortDataStatus(this.props.initialSortRemoteData);\n }\n\n @computed\n get defaultSorted() {\n // we need to wait for the async data to complete,\n // otherwise initial sort won't work\n if (\n this.props.initialSort === undefined ||\n this.initialSortDataStatus === 'pending'\n ) {\n return undefined;\n } else {\n return this.props.initialSort.map(s => ({\n id: s.column,\n desc: s.sortDirection !== ColumnSortDirection.ASC, // default: DESC\n }));\n }\n }\n\n @computed\n public get columnVisibility(): { [columnId: string]: boolean } {\n return resolveColumnVisibility(\n this.columnVisibilityByColumnDefinition,\n this.props.columnVisibility,\n this._columnVisibilityOverride\n );\n }\n\n @computed\n public get columnVisibilityDef(): ColumnVisibilityDef[] {\n return getColumnVisibilityDef(\n this.props.columns || [],\n this.columnVisibility\n );\n }\n\n @computed\n public get columnVisibilityByColumnDefinition() {\n return resolveColumnVisibilityByColumnDefinition(\n (this.props.columns || [])\n .filter(c => c.id)\n .map(c => ({\n name: c.name || c.id!,\n id: c.id,\n visible: c.show,\n }))\n );\n }\n\n public render() {\n return (\n <div className=\"cbioportal-frontend\">\n <DataTableToolbar\n visibilityToggle={this.onVisibilityToggle}\n showSearchBox={this.props.showSearchBox}\n onSearch={this.onSearch}\n filterInputRef={this.filterInputRef}\n searchDelay={this.props.searchDelay}\n searchPlaceHolder={this.props.searchPlaceholder}\n info={this.props.info}\n showColumnVisibility={this.props.showColumnVisibility}\n columnVisibility={this.columnVisibilityDef}\n columnSelectorProps={this.props.columnSelectorProps}\n />\n <div\n className={classnames(\n this.props.className,\n 'cbioportal-frontend',\n 'default-data-table'\n )}\n >\n <ReactTable\n data={this.tableData}\n columns={this.columns}\n getTrProps={\n this.needToCustomizeRowStyle\n ? this.getTrProps\n : undefined\n }\n defaultSorted={this.defaultSorted}\n defaultPageSize={this.props.initialItemsPerPage}\n showPagination={this.showPagination}\n className=\"-striped -highlight\"\n previousText=\"<\"\n nextText=\">\"\n expanded={this.expanded}\n onExpandedChange={this.onExpandedChange}\n onPageChange={this.resetExpander}\n onPageSizeChange={this.resetExpander}\n onSortedChange={this.resetExpander}\n minRows={1}\n {...this.props.reactTableProps}\n />\n </div>\n </div>\n );\n }\n\n componentWillReceiveProps(nextProps: Readonly<DataTableProps<T>>) {\n if (nextProps.dataStore) {\n this.createExpanderResetReaction(nextProps.dataStore);\n }\n }\n\n componentWillUnmount(): void {\n if (this.filterInputReaction) {\n this.filterInputReaction();\n }\n }\n\n /**\n * This reaction is to reset expander component every time the data or selection filters update.\n * It would be cleaner if we could do this with a ReactTable callback (something like onDataChange),\n * but no such callback exists.\n */\n protected createExpanderResetReaction(dataStore: DataStore) {\n return reaction(\n () => [dataStore.selectionFilters, dataStore.dataFilters],\n (\n filters: DataFilter[][],\n prev: DataFilter[][],\n disposer: IReactionPublic\n ) => {\n if (filters.length > 0) {\n this.resetExpander();\n }\n disposer.dispose();\n }\n );\n }\n\n /**\n * This reaction is to reset search input box content when text input filter is reset.\n * TODO if possible directly render the value in the actual search box component instead of adding this reaction\n */\n protected createFilterInputResetReaction(dataStore: DataStore) {\n return reaction(\n () => dataStore.dataFilters,\n dataFilters => {\n if (this.filterInput) {\n const inputFilter = dataFilters.find(\n f => f.id === TEXT_INPUT_FILTER_ID\n );\n\n // reset the input text value in case of no text input filter\n if (!inputFilter) {\n this.filterInput.value = '';\n }\n }\n }\n );\n }\n\n @autobind\n protected getTrProps(state: any, row?: RowInfo) {\n return {\n style: {\n background: state && row && this.getRowBackground(row),\n },\n };\n }\n\n @autobind\n protected filterInputRef(input: HTMLInputElement) {\n this.filterInput = input;\n }\n\n @action.bound\n protected onSearch(searchText: string) {\n if (this.props.onSearch) {\n this.props.onSearch(\n searchText,\n this.columns.filter(c => c.searchable && c.show)\n );\n }\n }\n\n @action.bound\n protected onVisibilityToggle(selectedColumnIds: string[]) {\n // reset all column visibility\n Object.keys(this.columnVisibility).forEach(columnId =>\n this.updateColumnVisibility(columnId, false)\n );\n\n // make selected columns visible\n selectedColumnIds.forEach(columnId =>\n this.updateColumnVisibility(columnId, true)\n );\n }\n\n @action.bound\n protected updateColumnVisibility(id: string, visible: boolean) {\n // no previous action, need to init\n if (this._columnVisibilityOverride === undefined) {\n this._columnVisibilityOverride = resolveColumnVisibility(\n this.columnVisibilityByColumnDefinition,\n this.props.columnVisibility\n );\n }\n\n // update visibility\n if (\n this._columnVisibilityOverride &&\n this._columnVisibilityOverride[id] !== undefined\n ) {\n this._columnVisibilityOverride[id] = visible;\n }\n }\n\n @action.bound\n protected onExpandedChange(expanded: { [index: number]: boolean }) {\n this.expanded = expanded;\n }\n\n @action.bound\n protected resetExpander() {\n this.expanded = {};\n }\n\n protected isRowHighlighted(datum: T) {\n return (\n this.props.dataStore &&\n this.props.dataStore.dataHighlightFilter(datum)\n );\n }\n\n protected getRowBackground(row: RowInfo) {\n let background: string | undefined;\n\n if (this.isRowHighlighted(row.original)) {\n background =\n row.viewIndex % 2 === 1\n ? this.props.highlightColorDark\n : this.props.highlightColorLight;\n }\n\n return background;\n }\n}\n","import {\n DefaultTooltip,\n getCanonicalMutationType,\n} from 'cbioportal-frontend-commons';\nimport { Mutation } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './mutationType.module.scss';\n\ntype MutationTypeProps = {\n mutation: Mutation;\n};\n\ntype MutationTypeFormat = {\n label?: string;\n className: string;\n};\n\nexport const MAIN_MUTATION_TYPE_MAP: { [key: string]: MutationTypeFormat } = {\n missense: {\n label: 'Missense',\n className: 'missense-mutation',\n },\n inframe: {\n label: 'IF',\n className: 'inframe-mutation',\n },\n truncating: {\n label: 'Truncating',\n className: 'trunc-mutation',\n },\n nonsense: {\n label: 'Nonsense',\n className: 'trunc-mutation',\n },\n nonstop: {\n label: 'Nonstop',\n className: 'trunc-mutation',\n },\n nonstart: {\n label: 'Nonstart',\n className: 'trunc-mutation',\n },\n frameshift: {\n label: 'FS',\n className: 'trunc-mutation',\n },\n frame_shift_del: {\n label: 'FS del',\n className: 'trunc-mutation',\n },\n frame_shift_ins: {\n label: 'FS ins',\n className: 'trunc-mutation',\n },\n in_frame_ins: {\n label: 'IF ins',\n className: 'inframe-mutation',\n },\n in_frame_del: {\n label: 'IF del',\n className: 'inframe-mutation',\n },\n splice_site: {\n label: 'Splice',\n className: 'splice',\n },\n fusion: {\n label: 'Fusion',\n className: 'fusion',\n },\n silent: {\n label: 'Silent',\n className: 'other-mutation',\n },\n other: {\n label: 'Other',\n className: 'other-mutation',\n },\n};\n\n/**\n * Determines the display value by using the impact field.\n *\n * @param mutation column formatter data\n * @returns {string} mutation assessor text value\n */\nfunction getDisplayValue(mutation: Mutation): string {\n const entry: MutationTypeFormat | undefined = getMapEntry(mutation);\n\n // first, try to find a mapped value\n if (entry && entry.label) {\n return entry.label;\n }\n // if no mapped value, then return the text value as is\n else {\n return mutation.mutationType || '';\n }\n}\n\nfunction getClassName(mutation: Mutation): string {\n const value: MutationTypeFormat | undefined = getMapEntry(mutation);\n\n if (value && value.className) {\n return value.className;\n }\n // for unmapped values, use the \"other\" style\n else {\n return MAIN_MUTATION_TYPE_MAP['other'].className;\n }\n}\n\nfunction getMapEntry(mutation: Mutation) {\n const mutationType = mutation.mutationType;\n\n if (mutationType) {\n return MAIN_MUTATION_TYPE_MAP[getCanonicalMutationType(mutationType)];\n } else {\n return undefined;\n }\n}\n\nexport default class MutationType extends React.Component<\n MutationTypeProps,\n {}\n> {\n public render() {\n // use text for all purposes (display, sort, filter)\n const text = getDisplayValue(this.props.mutation);\n const className = getClassName(this.props.mutation);\n\n // use actual value for tooltip\n const toolTip = this.props.mutation.mutationType;\n\n let content = (\n <span className={(styles as any)[className]}>{text}</span>\n );\n\n // add tooltip only if the display value differs from the actual text value!\n if (toolTip && toolTip.toLowerCase() !== text.toLowerCase()) {\n content = (\n <DefaultTooltip\n overlay={<span>{toolTip}</span>}\n placement=\"left\"\n >\n {content}\n </DefaultTooltip>\n );\n }\n\n return content;\n }\n}\n","import { Mutation } from 'cbioportal-utils';\nimport _ from 'lodash';\nimport * as React from 'react';\n\nimport ColumnHeader from '../column/ColumnHeader';\nimport { Column } from 'react-table';\nimport ProteinChange, {\n proteinChangeSortMethod,\n} from '../column/ProteinChange';\nimport { annotationSortMethod } from '../column/Annotation';\nimport { gnomadSortMethod } from '../column/Gnomad';\nimport { clinvarSortMethod } from '../column/ClinvarInterpretation';\nimport MutationType from '../column/MutationType';\nimport { MutationStatus } from '../column/MutationStatus';\nimport { dbsnpSortMethod } from '../column/Dbsnp';\nimport { hgvscSortMethod } from '../column/Hgvsc';\nimport { hgvsgSortMethod } from '../column/Hgvsg';\nimport { signalSortMethod } from '../column/Signal';\n\nexport enum MutationColumn {\n PROTEIN_CHANGE = 'proteinChange',\n ANNOTATION = 'annotation',\n MUTATION_STATUS = 'mutationStatus',\n MUTATION_TYPE = 'mutationType',\n CHROMOSOME = 'chromosome',\n START_POSITION = 'startPosition',\n END_POSITION = 'endPosition',\n REFERENCE_ALLELE = 'referenceAllele',\n VARIANT_ALLELE = 'variantAllele',\n HGVSG = 'hgvsg',\n HGVSC = 'hgvsc',\n GNOMAD = 'gnomad',\n CLINVAR = 'clinvar',\n DBSNP = 'dbsnp',\n SIGNAL = 'signal',\n}\n\nexport enum MutationColumnName {\n PROTEIN_CHANGE = 'Protein Change',\n ANNOTATION = 'Annotation',\n MUTATION_STATUS = 'Mutation Status',\n MUTATION_TYPE = 'Mutation Type',\n CHROMOSOME = 'Chromosome',\n START_POSITION = 'Start Pos',\n END_POSITION = 'End Pos',\n REFERENCE_ALLELE = 'Ref',\n VARIANT_ALLELE = 'Var',\n HGVSG = 'HGVSg',\n HGVSC = 'HGVSc',\n GNOMAD = 'gnomAD',\n CLINVAR = 'ClinVar',\n DBSNP = 'dbSNP',\n SIGNAL = 'SIGNAL',\n}\n\nexport function rightAlignedCell(cellProps: any) {\n return <span className=\"pull-right mr-3\">{cellProps.value}</span>;\n}\n\nexport const MUTATION_COLUMN_HEADERS = {\n [MutationColumn.PROTEIN_CHANGE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.PROTEIN_CHANGE}\n </span>\n }\n />\n ),\n [MutationColumn.ANNOTATION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.ANNOTATION}\n </span>\n }\n />\n ),\n [MutationColumn.MUTATION_STATUS]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.MUTATION_STATUS}\n </span>\n }\n />\n ),\n [MutationColumn.MUTATION_TYPE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.MUTATION_TYPE}\n </span>\n }\n />\n ),\n [MutationColumn.CHROMOSOME]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.CHROMOSOME}\n </span>\n }\n />\n ),\n [MutationColumn.START_POSITION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.START_POSITION}\n </span>\n }\n />\n ),\n [MutationColumn.END_POSITION]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.END_POSITION}\n </span>\n }\n />\n ),\n [MutationColumn.REFERENCE_ALLELE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.REFERENCE_ALLELE}\n </span>\n }\n overlay={<span>Reference Allele</span>}\n />\n ),\n [MutationColumn.VARIANT_ALLELE]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.VARIANT_ALLELE}\n </span>\n }\n overlay={<span>Variant Allele</span>}\n />\n ),\n [MutationColumn.HGVSG]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">{MutationColumnName.HGVSG}</span>\n }\n />\n ),\n [MutationColumn.HGVSC]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">{MutationColumnName.HGVSC}</span>\n }\n />\n ),\n [MutationColumn.GNOMAD]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.GNOMAD}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n <a\n href=\"https://gnomad.broadinstitute.org/\"\n target=\"_blank\"\n >\n gnomAD\n </a>{' '}\n population allele frequencies. Overall population allele\n frequency is shown. Hover over a frequency to see the\n frequency for each specific population.\n </span>\n }\n />\n ),\n [MutationColumn.CLINVAR]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-left\">\n {MutationColumnName.CLINVAR}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n <a\n href=\"https://www.ncbi.nlm.nih.gov/clinvar/\"\n target=\"_blank\"\n >\n ClinVar\n </a>{' '}\n aggregates information about genomic variation and its\n relationship to human health.\n </span>\n }\n />\n ),\n [MutationColumn.DBSNP]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.DBSNP}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n The Single Nucleotide Polymorphism Database (\n <a href=\"https://www.ncbi.nlm.nih.gov/snp/\" target=\"_blank\">\n dbSNP\n </a>\n ) is a free public archive for genetic variation within and\n across different species.\n <br />\n NOTE: Currently only SNPs, single base deletions and\n insertions are supported.\n </span>\n }\n />\n ),\n [MutationColumn.SIGNAL]: (\n <ColumnHeader\n headerContent={\n <span className=\"pull-right mr-3\">\n {MutationColumnName.SIGNAL}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n }\n overlay={\n <span>\n Prevalence of germline mutations in cancer patients from{' '}\n <a href=\"https://www.signaldb.org/\" target=\"_blank\">\n SIGNAL\n </a>\n </span>\n }\n />\n ),\n};\n\n/**\n * These default columns only include static props.\n * So, for some columns, like Annotation, no default accessor or Cell (render) properties included.\n */\nexport const MUTATION_COLUMNS_DEFINITION = {\n [MutationColumn.PROTEIN_CHANGE]: {\n id: MutationColumn.PROTEIN_CHANGE,\n name: MutationColumnName.PROTEIN_CHANGE,\n accessor: MutationColumn.PROTEIN_CHANGE,\n searchable: true,\n Cell: (column: any) => <ProteinChange mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.PROTEIN_CHANGE],\n sortMethod: proteinChangeSortMethod,\n },\n [MutationColumn.ANNOTATION]: {\n id: MutationColumn.ANNOTATION,\n name: MutationColumnName.ANNOTATION,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.ANNOTATION],\n sortMethod: annotationSortMethod,\n },\n [MutationColumn.MUTATION_TYPE]: {\n id: MutationColumn.MUTATION_TYPE,\n name: MutationColumnName.MUTATION_TYPE,\n accessor: MutationColumn.MUTATION_TYPE,\n searchable: true,\n Cell: (column: any) => <MutationType mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.MUTATION_TYPE],\n },\n [MutationColumn.MUTATION_STATUS]: {\n id: MutationColumn.MUTATION_STATUS,\n name: MutationColumnName.MUTATION_STATUS,\n accessor: MutationColumn.MUTATION_STATUS,\n searchable: true,\n Cell: (column: any) => <MutationStatus mutation={column.original} />,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.MUTATION_STATUS],\n },\n [MutationColumn.CHROMOSOME]: {\n id: MutationColumn.CHROMOSOME,\n name: MutationColumnName.CHROMOSOME,\n accessor: MutationColumn.CHROMOSOME,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.CHROMOSOME],\n show: false,\n },\n [MutationColumn.START_POSITION]: {\n id: MutationColumn.START_POSITION,\n name: MutationColumnName.START_POSITION,\n accessor: MutationColumn.START_POSITION,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.START_POSITION],\n show: false,\n },\n [MutationColumn.END_POSITION]: {\n id: MutationColumn.END_POSITION,\n name: MutationColumnName.END_POSITION,\n accessor: MutationColumn.END_POSITION,\n searchable: true,\n Cell: rightAlignedCell,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.END_POSITION],\n show: false,\n },\n [MutationColumn.REFERENCE_ALLELE]: {\n id: MutationColumn.REFERENCE_ALLELE,\n name: MutationColumnName.REFERENCE_ALLELE,\n accessor: MutationColumn.REFERENCE_ALLELE,\n searchable: true,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.REFERENCE_ALLELE],\n show: false,\n },\n [MutationColumn.VARIANT_ALLELE]: {\n id: MutationColumn.VARIANT_ALLELE,\n name: MutationColumnName.VARIANT_ALLELE,\n accessor: MutationColumn.VARIANT_ALLELE,\n searchable: true,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.VARIANT_ALLELE],\n show: false,\n },\n [MutationColumn.HGVSG]: {\n id: MutationColumn.HGVSG,\n name: MutationColumnName.HGVSG,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.HGVSG],\n sortMethod: hgvsgSortMethod,\n },\n [MutationColumn.HGVSC]: {\n id: MutationColumn.HGVSC,\n name: MutationColumnName.HGVSC,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.HGVSC],\n sortMethod: hgvscSortMethod,\n },\n [MutationColumn.GNOMAD]: {\n id: MutationColumn.GNOMAD,\n name: MutationColumnName.GNOMAD,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.GNOMAD],\n sortMethod: gnomadSortMethod,\n },\n [MutationColumn.CLINVAR]: {\n id: MutationColumn.CLINVAR,\n name: MutationColumnName.CLINVAR,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.CLINVAR],\n sortMethod: clinvarSortMethod,\n show: false,\n },\n [MutationColumn.DBSNP]: {\n id: MutationColumn.DBSNP,\n name: MutationColumnName.DBSNP,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.DBSNP],\n sortMethod: dbsnpSortMethod,\n show: false,\n },\n [MutationColumn.SIGNAL]: {\n id: MutationColumn.SIGNAL,\n name: MutationColumnName.SIGNAL,\n Header: MUTATION_COLUMN_HEADERS[MutationColumn.SIGNAL],\n sortMethod: signalSortMethod,\n show: false,\n },\n};\n\nexport const DEFAULT_MUTATION_COLUMNS = [\n MUTATION_COLUMNS_DEFINITION[MutationColumn.PROTEIN_CHANGE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.MUTATION_TYPE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.MUTATION_STATUS],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.CHROMOSOME],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.START_POSITION],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.END_POSITION],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.REFERENCE_ALLELE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.VARIANT_ALLELE],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.HGVSG],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.HGVSC],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.CLINVAR],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.GNOMAD],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.DBSNP],\n MUTATION_COLUMNS_DEFINITION[MutationColumn.SIGNAL],\n];\n\nexport function mergeColumns(\n defaultColumns: Column<Partial<Mutation>>[],\n customColumns: Column<Partial<Mutation>>[]\n) {\n const merged: Column<Partial<Mutation>>[] = [];\n const overrides: Column<Partial<Mutation>>[] = [];\n\n defaultColumns.forEach(column => {\n const colOverride = customColumns.find(c => c.id === column.id);\n merged.push(colOverride || column);\n\n if (colOverride) {\n overrides.push(colOverride);\n }\n });\n\n return [...merged, ..._.difference(customColumns, overrides)];\n}\n","import {\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n getRemoteDataGroupStatus,\n MobxCache,\n Mutation,\n RemoteData,\n Pathogenicity,\n} from 'cbioportal-utils';\nimport { MyVariantInfo, VariantAnnotation } from 'genome-nexus-ts-api-client';\nimport { CancerGene } from 'oncokb-ts-api-client';\nimport _ from 'lodash';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { Column } from 'react-table';\n\nimport Annotation, { getAnnotationData } from '../column/Annotation';\nimport ClinvarInterpretation from '../column/ClinvarInterpretation';\nimport Dbsnp from '../column/Dbsnp';\nimport Gnomad from '../column/Gnomad';\nimport Hgvsc from '../column/Hgvsc';\nimport Hgvsg from '../column/Hgvsg';\nimport Signal, { getSignalData } from '../column/Signal';\nimport { getHgvscColumnData, getHgvsgColumnData } from '../column/HgvsHelper';\nimport { getMyVariantInfoData } from '../column/MyVariantInfoHelper';\nimport { MutationFilterValue } from '../../filter/MutationFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport {\n findNonTextInputFilters,\n TEXT_INPUT_FILTER_ID,\n} from '../../util/FilterUtils';\nimport DataTable, {\n DataTableColumn,\n DataTableProps,\n} from '../dataTable/DataTable';\nimport { MutationColumn } from './MutationColumnHelper';\n\nimport './defaultMutationTable.scss';\nimport { getClinvarData } from '../clinvar/ClinvarHelper';\n\nexport type DefaultMutationTableProps = {\n hotspotData?: RemoteData<IHotspotIndex | undefined>;\n oncoKbData?: RemoteData<IOncoKbData | Error | undefined>;\n myCancerGenomeData?: IMyCancerGenomeData;\n oncoKbCancerGenes?: RemoteData<CancerGene[] | Error | undefined>;\n usingPublicOncoKbInstance: boolean;\n indexedMyVariantInfoAnnotations?: RemoteData<\n { [genomicLocation: string]: MyVariantInfo } | undefined\n >;\n indexedVariantAnnotations?: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n selectedTranscriptId?: string;\n enableCivic?: boolean;\n enableRevue?: boolean;\n civicGenes?: RemoteData<ICivicGeneIndex | undefined>;\n civicVariants?: RemoteData<ICivicVariantIndex | undefined>;\n pubMedCache?: MobxCache;\n columns: Column<Partial<Mutation>>[];\n appendColumns?: boolean;\n} & DataTableProps<Partial<Mutation>>;\n\n@observer\nclass DefaultMutationTableComponent extends DataTable<Partial<Mutation>> {}\n\n@observer\nexport default class DefaultMutationTable extends React.Component<\n DefaultMutationTableProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n initialSort: [{ column: MutationColumn.ANNOTATION }],\n appendColumns: true,\n };\n\n @computed\n get annotationColumnData() {\n return [\n this.props.oncoKbCancerGenes,\n this.props.hotspotData,\n this.props.oncoKbData,\n this.props.civicVariants,\n ];\n }\n\n @computed\n get annotationColumnDataStatus() {\n return getRemoteDataGroupStatus(\n ..._.compact(this.annotationColumnData)\n );\n }\n\n @computed\n get indexedVariantAnnotationDataStatus() {\n return this.props.indexedVariantAnnotations\n ? this.props.indexedVariantAnnotations.status\n : 'complete';\n }\n\n @computed\n get myVariantInfoAnnotationsDataStatus() {\n return this.props.indexedMyVariantInfoAnnotations\n ? this.props.indexedMyVariantInfoAnnotations.status\n : 'complete';\n }\n\n @computed\n get annotationColumnAccessor() {\n return this.annotationColumnDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getAnnotationData(\n mutation,\n this.props.oncoKbCancerGenes,\n this.props.hotspotData,\n this.props.myCancerGenomeData,\n this.props.oncoKbData,\n this.props.usingPublicOncoKbInstance,\n this.props.civicGenes,\n this.props.civicVariants,\n this.props.indexedVariantAnnotations\n );\n }\n\n @computed\n get myVariantInfoAccessor() {\n return this.myVariantInfoAnnotationsDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getMyVariantInfoData(\n mutation,\n this.props.indexedMyVariantInfoAnnotations\n );\n }\n\n @computed\n get hgvsgAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) => getHgvsgColumnData(mutation);\n }\n\n @computed\n get hgvscAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getHgvscColumnData(\n mutation,\n this.props.indexedVariantAnnotations,\n this.props.selectedTranscriptId\n );\n }\n\n @computed\n get signalAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getSignalData(\n mutation,\n this.props.indexedVariantAnnotations,\n Pathogenicity.GERMLINE\n )[0];\n }\n\n @computed\n get clinvarAccessor() {\n return this.indexedVariantAnnotationDataStatus === 'pending'\n ? () => undefined\n : (mutation: Mutation) =>\n getClinvarData(\n mutation,\n this.props.indexedVariantAnnotations\n );\n }\n\n @computed\n get initialSortRemoteData() {\n return this.props.initialSortRemoteData || this.annotationColumnData;\n }\n\n protected getDefaultColumnAccessor(columnKey: MutationColumn) {\n switch (columnKey) {\n case MutationColumn.ANNOTATION:\n return this.annotationColumnAccessor;\n case MutationColumn.HGVSG:\n return this.hgvsgAccessor;\n case MutationColumn.HGVSC:\n return this.hgvscAccessor;\n case MutationColumn.GNOMAD:\n return this.myVariantInfoAccessor;\n case MutationColumn.CLINVAR:\n return this.clinvarAccessor;\n case MutationColumn.DBSNP:\n return this.myVariantInfoAccessor;\n case MutationColumn.SIGNAL:\n return this.signalAccessor;\n default:\n return undefined;\n }\n }\n\n protected getDefaultColumnCellRender(columnKey: MutationColumn) {\n switch (columnKey) {\n case MutationColumn.ANNOTATION:\n return (column: any) => (\n <Annotation\n mutation={column.original}\n enableOncoKb={true}\n enableHotspot={true}\n enableCivic={this.props.enableCivic || false}\n enableMyCancerGenome={true}\n enableRevue={true}\n hotspotData={this.props.hotspotData}\n oncoKbData={this.props.oncoKbData}\n oncoKbCancerGenes={this.props.oncoKbCancerGenes}\n usingPublicOncoKbInstance={\n this.props.usingPublicOncoKbInstance\n }\n pubMedCache={this.props.pubMedCache}\n civicGenes={this.props.civicGenes}\n civicVariants={this.props.civicVariants}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n case MutationColumn.HGVSG:\n return (column: any) => <Hgvsg mutation={column.original} />;\n case MutationColumn.HGVSC:\n return (column: any) => (\n <Hgvsc\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n selectedTranscriptId={this.props.selectedTranscriptId}\n />\n );\n case MutationColumn.GNOMAD:\n return (column: any) => (\n <Gnomad\n mutation={column.original}\n indexedMyVariantInfoAnnotations={\n this.props.indexedMyVariantInfoAnnotations\n }\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n case MutationColumn.CLINVAR:\n return (column: any) => (\n <ClinvarInterpretation\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n />\n );\n case MutationColumn.DBSNP:\n return (column: any) => (\n <Dbsnp\n mutation={column.original}\n indexedMyVariantInfoAnnotations={\n this.props.indexedMyVariantInfoAnnotations\n }\n />\n );\n case MutationColumn.SIGNAL:\n return (column: any) => (\n <Signal\n mutation={column.original}\n indexedVariantAnnotations={\n this.props.indexedVariantAnnotations\n }\n mutationType={Pathogenicity.GERMLINE}\n />\n );\n default:\n return undefined;\n }\n }\n\n @computed\n get columns() {\n return this.props.columns.map(c => {\n // we need to clone the column definition first,\n // directly modifying the props.columns breaks certain column functionality\n const column = { ...c };\n\n if (!column.accessor) {\n const defaultAccessor = this.getDefaultColumnAccessor(\n column.id as MutationColumn\n );\n if (defaultAccessor) {\n column.accessor = defaultAccessor;\n }\n }\n if (!column.Cell) {\n const defaultCellRender = this.getDefaultColumnCellRender(\n column.id as MutationColumn\n );\n if (defaultCellRender) {\n column.Cell = defaultCellRender;\n }\n }\n return column;\n });\n }\n\n public render() {\n return (\n <DefaultMutationTableComponent\n {...this.props}\n columns={this.columns}\n initialSortRemoteData={this.initialSortRemoteData}\n onSearch={this.onSearch}\n className=\"default-mutation-table\"\n />\n );\n }\n\n @action.bound\n protected onSearch(\n searchText: string,\n visibleSearchableColumns: DataTableColumn<Mutation>[]\n ) {\n if (this.props.dataStore) {\n // all other filters except current text input filter\n const otherFilters = findNonTextInputFilters(\n this.props.dataStore.dataFilters\n );\n\n let dataFilterValues: MutationFilterValue[] = [];\n\n if (searchText.length > 0) {\n dataFilterValues = visibleSearchableColumns.map(\n c => ({ [c.id!]: searchText } as MutationFilterValue)\n );\n\n const textInputFilter = {\n id: TEXT_INPUT_FILTER_ID,\n type: DataFilterType.MUTATION,\n values: dataFilterValues,\n };\n\n // replace current text input filter with the new one\n this.props.dataStore.setDataFilters([\n ...otherFilters,\n textInputFilter,\n ]);\n } else {\n // if no text input remove text input filter (set data filters to all other filters except input)\n this.props.dataStore.setDataFilters(otherFilters);\n }\n }\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { action, computed, observable, makeObservable } from 'mobx';\n\nimport $ from 'jquery';\n\nimport { DomainSpec } from '../../model/DomainSpec';\n\ntype DomainProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n color: string;\n label?: string;\n labelColor?: string;\n hitzoneClassName?: string;\n spec: DomainSpec;\n};\n\n@observer\nexport default class Domain extends React.Component<DomainProps, {}> {\n @observable private textElt: SVGTextElement | null = null;\n @observable private isMounted: boolean = false;\n private handlers: any;\n\n constructor(props: DomainProps) {\n super(props);\n makeObservable<Domain, 'textElt' | 'isMounted' | 'displayText'>(this);\n this.state = {\n displayText: props.label || '',\n };\n this.handlers = {\n textRef: action((text: SVGTextElement | null) => {\n this.textElt = text;\n }),\n };\n }\n public get hitRect() {\n return {\n x: this.props.x,\n y: this.props.y,\n width: this.props.width,\n height: this.props.height,\n };\n }\n\n private get centerX() {\n return this.props.x + this.props.width / 2;\n }\n\n private get centerY() {\n return this.props.y + this.props.height / 2;\n }\n\n @action componentDidMount() {\n this.isMounted = true;\n }\n\n @computed private get displayText() {\n // Truncate text if necessary\n const label = this.props.label || '';\n if (!this.textElt || !this.isMounted) {\n return label;\n }\n\n if (!$(this.textElt).is(':visible')) {\n return label;\n }\n\n let substringLength = label.length;\n // Find the number of characters that will fit inside\n while (\n substringLength > 0 &&\n this.textElt.getSubStringLength(0, substringLength) >\n this.props.width\n ) {\n substringLength -= 1;\n }\n let displayText = label;\n if (substringLength < label.length) {\n // If we have to do shortening\n substringLength -= 2; // make room for ellipsis \"..\"\n if (substringLength <= 0) {\n // too short to show any string\n displayText = '';\n } else {\n // if it's long enough to show anything at all\n displayText = label.substr(0, substringLength) + '..';\n }\n }\n return displayText;\n }\n\n private makeTextElement(reference: boolean) {\n let props: any = {\n x: this.centerX,\n y: this.centerY,\n textAnchor: 'middle',\n dy: '0.3em',\n fill: this.props.labelColor || '#FFFFFF',\n style: {\n fontSize: '12px',\n fontFamily: 'arial',\n },\n };\n const text = reference ? this.props.label || '' : this.displayText;\n if (reference) {\n props.ref = this.handlers.textRef;\n props.visibility = 'hidden';\n props.style = { opacity: 0 };\n props.className = this.props.hitzoneClassName;\n }\n return <text {...props}>{text}</text>;\n }\n\n render() {\n return (\n <g>\n <rect\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n fill={this.props.color}\n />\n {this.makeTextElement(true)}\n {this.makeTextElement(false)}\n <rect\n className={this.props.hitzoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","export enum LollipopPlacement {\n TOP,\n BOTTOM,\n}\n\nexport type LollipopSpec = {\n codon: number;\n count: number;\n group?: string;\n placement?: LollipopPlacement;\n label?: LollipopLabel;\n color?: string;\n tooltip?: JSX.Element;\n};\n\nexport type LollipopLabel = {\n text: string;\n textAnchor?: string;\n fontSize?: number;\n fontFamily?: string;\n show: boolean;\n};\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable, observable } from 'mobx';\n\nimport {\n LollipopLabel,\n LollipopPlacement,\n LollipopSpec,\n} from '../../model/LollipopSpec';\n\ntype LollipopProps = {\n x: number;\n stickBaseY: number;\n stickHeight: number;\n headRadius: number;\n hoverHeadRadius: number;\n headColor?: string;\n stickColor?: string;\n label?: LollipopLabel;\n hitzoneClassName?: string;\n spec: LollipopSpec;\n};\n\n@observer\nexport default class Lollipop extends React.Component<LollipopProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @observable public isHovered: boolean = false;\n\n @computed private get headRadius() {\n return this.isHovered\n ? this.props.hoverHeadRadius\n : this.props.headRadius;\n }\n\n @computed private get circleX() {\n return this.props.x;\n }\n\n @computed private get circleY() {\n return this.props.stickBaseY - this.props.stickHeight;\n }\n\n @computed private get textY() {\n if (this.props.spec.placement === LollipopPlacement.BOTTOM) {\n return (\n this.props.stickBaseY -\n this.props.stickHeight +\n this.props.headRadius +\n 5\n );\n } else {\n return (\n this.props.stickBaseY -\n this.props.stickHeight -\n this.props.headRadius -\n 5\n );\n }\n }\n\n @computed public get circleHitRect() {\n return {\n x: this.circleX - this.props.hoverHeadRadius,\n y: this.circleY - this.props.hoverHeadRadius,\n width: this.props.hoverHeadRadius * 2,\n height: this.props.hoverHeadRadius * 2,\n };\n }\n\n render() {\n let label = null;\n if (this.props.label) {\n label = (\n <text\n fill=\"#2E3436\"\n style={{\n fontSize: this.props.label.fontSize || 10,\n fontFamily: this.props.label.fontFamily || 'arial',\n }}\n textAnchor={this.props.label.textAnchor || 'middle'}\n dominantBaseline={\n this.props.spec.placement === LollipopPlacement.BOTTOM\n ? 'hanging'\n : 'baseline'\n }\n x={this.props.x}\n y={this.textY}\n >\n {this.props.label.show ? this.props.label.text : ''}\n </text>\n );\n }\n return (\n <g>\n <line\n strokeWidth=\"1\"\n stroke={this.props.stickColor || '#BABDB6'}\n x1={this.props.x}\n x2={this.props.x}\n y1={this.props.stickBaseY}\n y2={this.props.stickBaseY - this.props.stickHeight}\n />\n <circle\n stroke=\"#BABDB6\"\n strokeWidth=\"0.5\"\n fill={this.props.headColor || '#000000'}\n r={this.headRadius}\n cx={this.circleX}\n cy={this.circleY}\n />\n <circle\n className={this.props.hitzoneClassName}\n r={this.props.hoverHeadRadius}\n cx={this.circleX}\n cy={this.circleY}\n cursor=\"pointer\"\n style={{ opacity: 0 }}\n />\n {label}\n </g>\n );\n }\n}\n","import { observable, makeObservable } from 'mobx';\n\nimport LollipopPlotControlsConfig from '../model/LollipopPlotControlsConfig';\n\nexport class DefaultLollipopPlotControlsConfig\n implements LollipopPlotControlsConfig {\n @observable\n public bottomYMaxInput: number | undefined;\n\n @observable\n public legendShown = false;\n\n @observable\n public yMaxInput: number | undefined;\n\n constructor() {\n makeObservable(this);\n }\n}\n\nexport default DefaultLollipopPlotControlsConfig;\n","import {\n getTextWidth,\n longestCommonStartingSubstring,\n} from 'cbioportal-frontend-commons';\nimport { countMutationsByProteinChange, Mutation } from 'cbioportal-utils';\nimport { PfamDomainRange } from 'genome-nexus-ts-api-client';\nimport numeral from 'numeral';\n\nimport { LollipopSpec } from '../model/LollipopSpec';\n\nexport function lollipopLabelText(\n mutationsAtPosition: Mutation[],\n size?: number\n): string {\n const mutationCountsByProteinChange = countMutationsByProteinChange(\n mutationsAtPosition\n ).filter(c => c.proteinChange !== undefined);\n\n // only pick specified number of protein change values\n const proteinChanges = mutationCountsByProteinChange\n .map(m => m.proteinChange)\n .slice(0, size && size > 0 ? size : undefined);\n\n // sort alphabetically (to make it easier to find longest common starting substring)\n const proteinChangesSorted = proteinChanges.slice(0).sort();\n\n let startStr = '';\n if (proteinChangesSorted.length > 1) {\n // only need to compare first and last element of sorted string list to find longest common starting substring of all of them\n startStr = longestCommonStartingSubstring(\n proteinChangesSorted[0],\n proteinChangesSorted[proteinChangesSorted.length - 1]\n );\n }\n\n // remove longest common starting substring from all protein change values\n const proteinChangesTrimmed = proteinChanges.map(p =>\n p.substring(startStr.length)\n );\n\n // construct label (sorted by protein change count, not alphabetically)\n let label = startStr + proteinChangesTrimmed.join('/');\n\n if (proteinChanges.length < mutationCountsByProteinChange.length) {\n label = `${label} and ${mutationCountsByProteinChange.length -\n proteinChanges.length} more`;\n }\n\n return label;\n}\n\nexport function lollipopLabelTextAnchor(\n labelText: string,\n codon: number,\n fontFamily: string,\n fontSize: number,\n geneWidth: number,\n proteinLength: number\n): string {\n let anchor = 'middle';\n const approxLabelWidth = getTextWidth(\n labelText,\n fontFamily,\n `${fontSize}px`\n );\n const lollipopDistanceToOrigin = codon * (geneWidth / proteinLength);\n const lollipopDistanceToXMax = geneWidth - lollipopDistanceToOrigin;\n\n // if lollipop is too close to the origin, in order to prevent label overlap set anchor to \"start\"\n if (approxLabelWidth / 2 > lollipopDistanceToOrigin) {\n anchor = 'start';\n }\n // if lollipop is too close to the end of the protein, in order to prevent overflow set anchor to \"end\"\n else if (approxLabelWidth / 2 > lollipopDistanceToXMax) {\n anchor = 'end';\n }\n\n return anchor;\n}\n\nexport function calcYMaxInput(\n yMaxInput: number | undefined,\n yMaxStep: number,\n countRange: number[],\n oppositeCountRange: number[],\n yAxisSameScale?: boolean\n) {\n // allow the user input value to go over the actual count range\n let input = yMaxInput;\n\n if (input === undefined) {\n input = yAxisSameScale\n ? numeral(\n numeral(\n getCommonYAxisMaxSliderValue(\n yMaxStep,\n countRange,\n oppositeCountRange\n )\n ).format(String(yMaxStep))\n ).value()\n : numeral(\n numeral(getYAxisMaxSliderValue(yMaxStep, countRange)).format(\n String(yMaxStep)\n )\n ).value();\n }\n\n return input;\n}\n\nexport function getCommonYAxisMaxSliderValue(\n yMaxStep: number,\n countRange: number[],\n oppositeCountRange: number[],\n yMaxInput?: number\n) {\n const defaultTopMin = getYAxisMaxSliderValue(\n yMaxStep,\n countRange,\n yMaxInput\n );\n const defaultBottomMin = getYAxisMaxSliderValue(\n yMaxStep,\n oppositeCountRange,\n yMaxInput\n );\n\n return Math.max(defaultTopMin, defaultBottomMin);\n}\n\nexport function getYAxisMaxSliderValue(\n yMaxStep: number,\n countRange: number[],\n yMaxInput?: number\n) {\n const defaultMin = yMaxStep * Math.ceil(countRange[1] / yMaxStep);\n // we don't want max slider value to go over the actual max, even if the user input goes over it\n return Math.min(defaultMin, yMaxInput || defaultMin);\n}\n\nexport function getYAxisMaxInputValue(yMaxStep: number, input: string) {\n const value = parseFloat(input);\n return value < yMaxStep ? yMaxStep : value;\n}\n\nexport function calcCountRange(\n lollipops: LollipopSpec[],\n defaultMax: number = 5,\n defaultMin: number = 1\n): [number, number] {\n if (lollipops.length === 0) {\n return [0, 0];\n } else {\n let max = defaultMax;\n let min = defaultMin;\n\n for (const lollipop of lollipops) {\n max = Math.max(max, lollipop.count);\n min = Number.isInteger(lollipop.count)\n ? Math.min(min, lollipop.count)\n : Math.min(0.1, lollipop.count);\n }\n\n return [min, Math.max(min, max)];\n }\n}\n\nfunction isInThisDomain(codon: number) {\n return (range: PfamDomainRange): boolean => {\n return codon >= range.pfamDomainStart && codon <= range.pfamDomainEnd;\n };\n}\n\nexport function byMiddlemostPosition(averageCodon: number) {\n return (x: LollipopSpec, y: LollipopSpec): 1 | -1 | 0 => {\n const yDistance = Math.abs(y.codon - averageCodon);\n const xDistance = Math.abs(x.codon - averageCodon);\n if (yDistance > xDistance) {\n return -1;\n } else if (xDistance > yDistance) {\n return 1;\n } else {\n return 0;\n }\n };\n}\n\nexport function byWhetherExistsInADomain(remainingDomains: PfamDomainRange[]) {\n return (x: LollipopSpec, y: LollipopSpec): 0 | 1 | -1 => {\n const isYInADomain = remainingDomains.some(isInThisDomain(y.codon));\n const isXInADomain = remainingDomains.some(isInThisDomain(x.codon));\n if (\n (isYInADomain && isXInADomain) ||\n (!isYInADomain && !isXInADomain)\n ) {\n return 0;\n } else if (isYInADomain) {\n return 1;\n } else {\n return -1;\n }\n };\n}\n\nexport function byMutationCount(x: LollipopSpec, y: LollipopSpec): number {\n if (y.count > x.count) {\n return 1;\n } else if (y.count < x.count) {\n return -1;\n }\n return 0;\n}\n","import { PfamDomainRange } from 'genome-nexus-ts-api-client';\n\nexport function generatePfamDomainColorMap(\n pfamDomains: PfamDomainRange[]\n): { [pfamAccession: string]: string } {\n const colors: string[] = [\n '#2dcf00',\n '#ff5353',\n '#5b5bff',\n '#ebd61d',\n '#ba21e0',\n '#ff9c42',\n '#ff7dff',\n '#b9264f',\n '#baba21',\n '#c48484',\n '#1f88a7',\n '#cafeb8',\n '#4a9586',\n '#ceb86c',\n '#0e180f',\n ];\n\n const map: { [pfamAccession: string]: string } = {};\n\n let colorIdx = 0;\n\n // sort domains by start position,\n // then assign a different color for each unique domain id.\n pfamDomains\n .sort(\n (a: PfamDomainRange, b: PfamDomainRange): number =>\n a.pfamDomainStart - b.pfamDomainStart\n )\n .forEach((domain: PfamDomainRange) => {\n if (map[domain.pfamDomainId] === undefined) {\n map[domain.pfamDomainId] = colors[colorIdx % colors.length];\n colorIdx++;\n }\n });\n\n return map;\n}\n","import * as React from 'react';\nimport { action, computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { CheckedSelect, Option } from 'cbioportal-frontend-commons';\n\nexport type TrackVisibility = { [trackName: string]: 'visible' | 'hidden' };\nexport type TrackDataStatus = {\n [trackName: string]: 'pending' | 'error' | 'complete' | 'empty';\n};\n\nexport enum TrackName {\n PDB = 'PDB',\n CancerHotspots = 'CANCER_HOTSPOTS',\n OncoKB = 'ONCO_KB',\n dbPTM = 'DB_PTM',\n UniprotPTM = 'UNIPROT_PTM',\n Exon = 'EXON',\n UniprotTopology = 'UNIPROT_TOPOLOGY',\n}\n\ntype TrackSelectorProps = {\n tracks?: TrackName[];\n trackVisibility: TrackVisibility;\n trackDataStatus?: TrackDataStatus;\n onChange: (selectedTrackIds: string[]) => void;\n name?: string;\n placeholder?: string;\n};\n\n@observer\nexport default class TrackSelector extends React.Component<\n TrackSelectorProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<TrackSelectorProps> = {\n name: 'mutationMapperTrackSelector',\n placeholder: 'Add annotation tracks',\n tracks: [\n TrackName.CancerHotspots,\n TrackName.OncoKB,\n TrackName.dbPTM,\n TrackName.PDB,\n TrackName.Exon,\n TrackName.UniprotTopology,\n ],\n };\n\n @action.bound\n private onChange(values: { value: string }[]) {\n this.props.onChange(values.map(o => o.value));\n }\n\n @computed get selectedValues() {\n return Object.keys(this.props.trackVisibility)\n .filter(id => this.props.trackVisibility[id] === 'visible')\n .map(id => ({ value: id }));\n }\n\n @computed get availableOptions() {\n return {\n [TrackName.CancerHotspots]: {\n label: (\n <span data-test=\"CancerHotspots\">\n Cancer Hotspots\n {this.isPending(TrackName.CancerHotspots) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.CancerHotspots,\n },\n [TrackName.OncoKB]: {\n label: (\n <span>\n OncoKB™\n {this.isPending(TrackName.OncoKB) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.OncoKB,\n },\n [TrackName.dbPTM]: {\n label: (\n <span>\n Post Translational Modifications (dbPTM)\n {this.isPending(TrackName.dbPTM) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.dbPTM,\n },\n [TrackName.UniprotPTM]: {\n label: (\n <span>\n Post Translational Modifications (Uniprot)\n {this.isPending(TrackName.UniprotPTM) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.UniprotPTM,\n },\n [TrackName.PDB]: {\n label: (\n <span>\n 3D Structure\n {this.isPending(TrackName.PDB) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.PDB,\n disabled: this.isDisabled(TrackName.PDB),\n },\n [TrackName.Exon]: {\n label: (\n <span>\n Exon\n {this.isPending(TrackName.Exon) && this.loaderIcon()}\n </span>\n ),\n value: TrackName.Exon,\n },\n [TrackName.UniprotTopology]: {\n label: (\n <span>\n Uniprot Topology\n {this.isPending(TrackName.UniprotTopology) &&\n this.loaderIcon()}\n </span>\n ),\n value: TrackName.UniprotTopology,\n },\n };\n }\n\n @computed get options(): Option[] {\n return this.props\n .tracks!.filter(t => this.props.trackVisibility[t] !== undefined)\n .map(t => this.availableOptions[t]);\n }\n\n private isPending(trackName: string) {\n return (\n this.props.trackDataStatus &&\n this.props.trackDataStatus[trackName] === 'pending'\n );\n }\n\n private isDisabled(trackName: string) {\n return (\n this.props.trackDataStatus &&\n this.props.trackDataStatus[trackName] !== 'complete'\n );\n }\n\n private loaderIcon() {\n return (\n <span\n style={{\n display: 'inline-block',\n verticalAlign: 'bottom',\n marginLeft: 5,\n }}\n >\n <i className=\"fa fa-spinner fa-pulse\" />\n </span>\n );\n }\n\n public render() {\n return (\n <CheckedSelect\n name={this.props.name}\n placeholder={this.props.placeholder}\n onChange={this.onChange}\n options={this.options}\n value={this.selectedValues}\n />\n );\n }\n}\n","import { TrackName, TrackVisibility } from '../component/track/TrackSelector';\n\nexport function initDefaultTrackVisibility(): TrackVisibility {\n return {\n [TrackName.OncoKB]: 'hidden',\n [TrackName.CancerHotspots]: 'hidden',\n [TrackName.dbPTM]: 'hidden',\n [TrackName.UniprotPTM]: 'hidden',\n [TrackName.PDB]: 'hidden',\n [TrackName.Exon]: 'hidden',\n [TrackName.UniprotTopology]: 'hidden',\n };\n}\n","import * as React from 'react';\nimport {\n MUT_COLOR_MISSENSE,\n MUT_COLOR_TRUNC,\n MUT_COLOR_INFRAME,\n STRUCTURAL_VARIANT_COLOR,\n MUT_COLOR_SPLICE,\n MUT_COLOR_OTHER,\n} from 'cbioportal-frontend-commons';\n\ntype DefaultLollipopPlotLegendProps = {\n missenseColor?: string;\n truncatingColor?: string;\n inframeColor?: string;\n spliceColor?: string;\n fusionColor?: string;\n otherColor?: string;\n};\n\nexport default class DefaultLollipopPlotLegend extends React.Component<\n DefaultLollipopPlotLegendProps\n> {\n public static defaultProps: DefaultLollipopPlotLegendProps = {\n missenseColor: MUT_COLOR_MISSENSE,\n truncatingColor: MUT_COLOR_TRUNC,\n inframeColor: MUT_COLOR_INFRAME,\n spliceColor: MUT_COLOR_SPLICE,\n fusionColor: STRUCTURAL_VARIANT_COLOR,\n otherColor: MUT_COLOR_OTHER,\n };\n\n public render() {\n return (\n <div style={{ maxWidth: 700, marginTop: 5 }}>\n <strong style={{ color: '#2153AA' }}>Color Codes</strong>\n <p>\n Mutation diagram circles are colored with respect to the\n corresponding mutation types. In case of different mutation\n types at a single position, color of the circle is\n determined with respect to the most frequent mutation type.\n </p>\n <br />\n <div>\n Mutation types and corresponding color codes are as follows:\n <ul>\n <li>\n <strong style={{ color: this.props.missenseColor }}>\n Missense Mutations\n </strong>\n </li>\n <li>\n <strong\n style={{ color: this.props.truncatingColor }}\n >\n Truncating Mutations\n </strong>\n : Nonsense, Nonstop, Frameshift deletion, Frameshift\n insertion, Splice site\n </li>\n <li>\n <strong style={{ color: this.props.inframeColor }}>\n Inframe Mutations\n </strong>\n : Inframe deletion, Inframe insertion\n </li>\n <li>\n <strong style={{ color: this.props.spliceColor }}>\n Splice Mutations\n </strong>\n </li>\n <li>\n <strong style={{ color: this.props.fusionColor }}>\n Fusion Mutations\n </strong>\n </li>\n <li>\n <strong style={{ color: this.props.otherColor }}>\n Other Mutations\n </strong>\n : All other types of mutations\n </li>\n </ul>\n </div>\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, makeObservable } from 'mobx';\n\nimport { SequenceSpec } from '../../model/SequenceSpec';\n\ntype SequenceProps = {\n x: number;\n y: number;\n width: number;\n height: number;\n color?: string;\n hitzoneClassName?: string;\n spec?: SequenceSpec;\n};\n\n@observer\nexport default class Sequence extends React.Component<SequenceProps, {}> {\n @observable isMounted: boolean = false;\n\n constructor(props: SequenceProps) {\n super(props);\n makeObservable(this);\n }\n\n public get hitRect() {\n return {\n x: this.props.x,\n y: this.props.y,\n width: this.props.width,\n height: this.props.height,\n };\n }\n\n componentDidMount() {\n this.isMounted = true;\n }\n\n render() {\n return (\n <g>\n <rect\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n fill={this.props.color}\n />\n <rect\n className={this.props.hitzoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import * as React from 'react';\nimport { SyntheticEvent } from 'react';\nimport $ from 'jquery';\nimport autobind from 'autobind-decorator';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable } from 'mobx';\n\nimport {\n getComponentIndex,\n SVGAxis,\n Tick,\n unhoverAllComponents,\n} from 'cbioportal-frontend-commons';\n\nimport { LollipopPlacement, LollipopSpec } from '../../model/LollipopSpec';\nimport { DomainSpec } from '../../model/DomainSpec';\nimport {\n updatePositionHighlightFilters,\n updatePositionSelectionFilters,\n} from '../../util/FilterUtils';\nimport Sequence from './Sequence';\nimport Lollipop from './Lollipop';\nimport Domain from './Domain';\nimport { LollipopPlotProps } from './LollipopPlot';\n\nexport type LollipopPlotNoTooltipProps = LollipopPlotProps & {\n setHitZone?: (\n hitRect: { x: number; y: number; width: number; height: number },\n tooltipContent?: JSX.Element,\n mirrorHitRect?: { x: number; y: number; width: number; height: number },\n mirrorTooltipContent?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor?: string,\n tooltipPlacement?: string\n ) => void;\n onMouseLeave?: () => void;\n onBackgroundMouseMove?: () => void;\n};\n\nconst DELETE_FOR_DOWNLOAD_CLASS = 'delete-for-download';\nconst LOLLIPOP_ID_CLASS_PREFIX = 'lollipop-';\nconst DOMAIN_ID_CLASS_PREFIX = 'domain-';\nconst SEQUENCE_ID_CLASS_PREFIX = 'sequence-';\n\n@observer\nexport default class LollipopPlotNoTooltip extends React.Component<\n LollipopPlotNoTooltipProps,\n {}\n> {\n private lollipopComponents: { [lollipopIndex: string]: Lollipop } = {};\n private domainComponents: { [domainIndex: string]: Domain } = {};\n private sequenceComponents: Sequence[] = [];\n\n private svg: SVGElement | undefined;\n private shiftPressed: boolean = false;\n\n private lollipopLabelPadding = 20;\n private domainPadding = 5;\n private xAxisCandidateTickIntervals = [\n 50,\n 100,\n 200,\n 250,\n 500,\n 1000,\n 2500,\n 5000,\n 10000,\n 25000,\n ];\n private yAxisCandidateTickIntervals = [1, 2, 5, 10, 20, 50, 100, 200, 500];\n private xAxisHeight = 30;\n private yAxisWidth = 50;\n private yAxisPadding = 10;\n private geneHeight = 14;\n private domainHeight = 24;\n\n public static defaultProps: Partial<LollipopPlotNoTooltipProps> = {\n showYAxis: true,\n };\n\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @autobind\n protected ref(svg: SVGElement) {\n this.svg = svg;\n }\n\n @action.bound\n protected onBackgroundClick() {\n if (this.props.dataStore) {\n this.props.dataStore.clearSelectionFilters();\n }\n }\n\n @action.bound\n protected onBackgroundMouseMove() {\n this.props.onBackgroundMouseMove && this.props.onBackgroundMouseMove();\n // unhover all of the lollipops if mouse hits background\n this.unhoverAllLollipops();\n }\n\n @action.bound\n protected onLollipopClick(codon: number) {\n if (this.props.dataStore) {\n updatePositionSelectionFilters(\n this.props.dataStore,\n codon,\n this.shiftPressed\n );\n }\n }\n\n @action.bound\n protected onKeyDown(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = true;\n }\n }\n\n @action.bound\n protected onKeyUp(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = false;\n }\n }\n\n @action.bound\n protected onMouseOver(e: SyntheticEvent<any>) {\n // No matter what, unhover all lollipops - if we're hovering one, we'll set it later in this method\n this.unhoverAllLollipops();\n\n const target = e.target as SVGElement;\n const className = target.getAttribute('class') || '';\n const lollipopIndex: number | null = this.getLollipopIndex(className);\n let domainIndex: number | null = null;\n let sequenceIndex: number | null = null;\n\n if (lollipopIndex !== null) {\n const lollipopComponent = this.lollipopComponents[lollipopIndex];\n if (lollipopComponent) {\n // mirrorLollipopComponent refers to the lollipop component, if it exists, in the other group at the same lollipopIndex\n // this is needed to show tooltips of both lollipop components at same index\n const mirrorLollipopComponent = _.find(\n this.lollipopComponents,\n l =>\n l.props.spec.codon ===\n lollipopComponent.props.spec.codon &&\n l !== lollipopComponent\n );\n lollipopComponent.isHovered = true;\n if (this.props.setHitZone) {\n this.props.setHitZone(\n lollipopComponent.circleHitRect,\n lollipopComponent.props.spec.tooltip,\n mirrorLollipopComponent?.circleHitRect,\n mirrorLollipopComponent?.props.spec.tooltip,\n action(() => {\n if (this.props.dataStore) {\n updatePositionHighlightFilters(\n this.props.dataStore,\n [lollipopComponent.props.spec.codon]\n );\n }\n lollipopComponent.isHovered = true;\n }),\n action(() =>\n this.onLollipopClick(\n lollipopComponent.props.spec.codon\n )\n ),\n undefined,\n 'pointer',\n lollipopComponent.circleHitRect.y >\n lollipopComponent.props.stickBaseY\n ? 'bottom'\n : 'top'\n );\n }\n }\n } else {\n domainIndex = this.getDomainIndex(className);\n }\n\n if (domainIndex !== null) {\n const domainComponent = this.domainComponents[domainIndex];\n if (domainComponent) {\n if (this.props.setHitZone) {\n this.props.setHitZone(\n domainComponent.hitRect,\n domainComponent.props.spec.tooltip,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n 'auto'\n );\n }\n }\n } else {\n sequenceIndex = this.getSequenceIndex(className);\n }\n\n if (sequenceIndex !== null) {\n const sequenceComponent = this.sequenceComponents[sequenceIndex];\n if (sequenceComponent) {\n if (this.props.setHitZone) {\n this.props.setHitZone(\n sequenceComponent.hitRect,\n sequenceComponent.props.spec\n ? sequenceComponent.props.spec.tooltip\n : undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n 'auto'\n );\n }\n }\n }\n }\n\n @action.bound\n protected onSVGMouseLeave(e: SyntheticEvent<any>) {\n const target = e.target as Element;\n\n if (target.tagName.toLowerCase() === 'svg') {\n this.props.onMouseLeave && this.props.onMouseLeave();\n }\n }\n\n private unhoverAllLollipops() {\n unhoverAllComponents(this.lollipopComponents);\n\n if (this.props.dataStore) {\n this.props.dataStore.clearHighlightFilters();\n }\n }\n\n componentDidMount() {\n // Make it so that if you hold down shift, you can select more than one lollipop at once\n $(document).on('keydown', this.onKeyDown);\n $(document).on('keyup', this.onKeyUp);\n this.props.onXAxisOffset && this.props.onXAxisOffset(this.geneX);\n }\n\n componentWillUnmount() {\n $(document).off('keydown', this.onKeyDown as any);\n $(document).off('keyup', this.onKeyUp as any);\n }\n\n componentDidUpdate() {\n this.props.onXAxisOffset && this.props.onXAxisOffset(this.geneX);\n }\n\n private codonToX(codon: number) {\n return (codon / this.props.xMax) * this.props.vizWidth;\n }\n\n private countToHeight(count: number, yMax: number, zeroHeight: number = 0) {\n return zeroHeight + Math.min(1, count / yMax) * this.yAxisHeight;\n }\n\n private calculateTickInterval(\n candidates: number[],\n rangeSize: number,\n maxTickCount: number\n ) {\n let ret: number;\n const tickInterval = candidates.find(\n c => rangeSize / c < maxTickCount - 1\n );\n if (!tickInterval) {\n ret = 10;\n while (rangeSize / ret > maxTickCount - 1) {\n ret *= 10;\n }\n } else {\n ret = tickInterval;\n }\n return ret;\n }\n\n private calculateTicks(\n tickInterval: number,\n rangeSize: number,\n labelEvenTicks: boolean\n ) {\n const ret: { position: number; label: string | undefined }[] = [];\n let nextTick = tickInterval;\n while (nextTick < rangeSize) {\n let label: string | undefined = undefined;\n\n // add label only for the even ticks\n // but do not add label if it is too close to the end value\n if (\n labelEvenTicks &&\n rangeSize - nextTick > (2 * tickInterval) / 3 &&\n nextTick % (2 * tickInterval) === 0\n ) {\n label = nextTick + '';\n }\n ret.push({\n position: nextTick,\n label,\n });\n nextTick += tickInterval;\n }\n return ret;\n }\n\n @computed private get xAxisTickInterval() {\n return this.calculateTickInterval(\n this.xAxisCandidateTickIntervals,\n this.props.xMax,\n 16\n );\n }\n\n @computed private get yAxisTickInterval() {\n return this.calculateTickInterval(\n this.yAxisCandidateTickIntervals,\n this.yMax,\n 10\n );\n }\n\n @computed private get bottomYAxisTickInterval() {\n return this.calculateTickInterval(\n this.yAxisCandidateTickIntervals,\n this.bottomYMax,\n 10\n );\n }\n\n @computed private get xTicks() {\n let ret: Tick[] = [];\n // Start and end, always there\n ret.push({\n position: 0,\n label: '0',\n });\n ret.push({\n position: this.props.xMax,\n label: this.props.xMax + 'aa',\n });\n // Intermediate ticks, every other one labeled\n ret = ret.concat(\n this.calculateTicks(this.xAxisTickInterval, this.props.xMax, true)\n );\n return ret;\n }\n\n @computed private get yTicks() {\n return this.axisTicks(\n this.yMax,\n this.yMaxLabel,\n this.yAxisTickInterval\n );\n }\n\n @computed private get bottomYTicks() {\n return this.axisTicks(\n this.bottomYMax,\n this.bottomYMaxLabel,\n this.bottomYAxisTickInterval\n );\n }\n\n @computed private get yMax() {\n return (\n this.props.yMax ||\n this.props.lollipops\n .filter(l => l.placement !== LollipopPlacement.BOTTOM)\n .reduce(\n (max: number, next: LollipopSpec) =>\n Math.max(max, next.count),\n 1\n )\n );\n }\n\n @computed private get yMaxDisplay() {\n return this.props.yMaxFractionDigits\n ? Number(this.yMax.toFixed(this.props.yMaxFractionDigits))\n : this.yMax;\n }\n\n @computed private get yMaxPostfix() {\n return this.props.yMaxLabelPostfix ? this.props.yMaxLabelPostfix : '';\n }\n\n @computed private get bottomYMax() {\n return (\n this.props.bottomYMax ||\n this.props.lollipops\n .filter(l => l.placement === LollipopPlacement.BOTTOM)\n .reduce(\n (max: number, next: LollipopSpec) =>\n Math.max(max, next.count),\n 1\n )\n );\n }\n\n @computed private get bottomYMaxDisplay() {\n return this.props.yMaxFractionDigits\n ? Number(this.bottomYMax.toFixed(this.props.yMaxFractionDigits))\n : this.bottomYMax;\n }\n\n @computed private get yMaxLabel() {\n return (\n (this.props.lollipops\n .filter(l => l.placement !== LollipopPlacement.BOTTOM)\n .find(lollipop => lollipop.count > this.yMax)\n ? '>= '\n : '') +\n this.yMaxDisplay +\n this.yMaxPostfix\n );\n }\n\n @computed private get bottomYMaxLabel() {\n return (\n (this.props.lollipops\n .filter(l => l.placement === LollipopPlacement.BOTTOM)\n .find(lollipop => lollipop.count > this.bottomYMax)\n ? '>= '\n : '') +\n this.bottomYMaxDisplay +\n this.yMaxPostfix\n );\n }\n\n @computed private get needBottomPlacement() {\n return this.props.groups && this.props.groups.length > 1;\n }\n\n @computed private get xAxisOnTop() {\n return this.props.xAxisOnTop || this.needBottomPlacement;\n }\n\n @computed private get xAxisOnBottom() {\n return this.props.xAxisOnBottom || !this.needBottomPlacement;\n }\n\n @computed private get topGroupName() {\n return this.props.groups ? this.props.groups[0] : undefined;\n }\n\n @computed private get topGroupSymbol() {\n return this.props.topYAxisSymbol || '#';\n }\n\n @computed private get bottomGroupName() {\n return this.props.groups ? this.props.groups[1] : undefined;\n }\n\n @computed private get bottomGroupSymbol() {\n return this.props.bottomYAxisSymbol || '#';\n }\n\n @computed private get combinedXAxisHeight() {\n // number of visible x-axes depends on the props\n return (\n ((this.xAxisOnTop ? 1 : 0) + (this.xAxisOnBottom ? 1 : 0)) *\n this.xAxisHeight\n );\n }\n\n @computed private get yAxisHeight() {\n if (this.needBottomPlacement) {\n return (\n (2 * this.props.vizHeight -\n (2 * this.lollipopLabelPadding +\n this.combinedXAxisHeight +\n 2 * this.domainPadding +\n this.domainHeight)) /\n 2\n );\n } else {\n return (\n this.props.vizHeight -\n (this.lollipopLabelPadding +\n this.combinedXAxisHeight +\n 2 * this.domainPadding +\n this.domainHeight)\n );\n }\n }\n\n @computed private get xAxisY() {\n const base = this.domainY + this.domainHeight + this.domainPadding;\n\n if (this.needBottomPlacement) {\n return base + this.yAxisHeight + this.lollipopLabelPadding;\n } else {\n return base;\n }\n }\n\n @computed private get geneCenterY() {\n return this.geneY + this.geneHeight / 2;\n }\n\n @computed private get yAxisY() {\n return (\n this.geneCenterY -\n this.plotAreaDistanceToGeneCenter -\n this.yAxisHeight\n );\n }\n\n @computed private get bottomYAxisY() {\n return this.geneCenterY + this.plotAreaDistanceToGeneCenter;\n }\n\n @computed private get plotAreaDistanceToGeneCenter() {\n return this.domainPadding + this.domainHeight / 2;\n }\n\n @computed private get geneX() {\n // TODO make + 75 customizable\n return this.yAxisWidth + 75;\n }\n\n @computed private get geneY() {\n return (\n this.lollipopLabelPadding +\n this.yAxisHeight +\n this.domainPadding +\n (this.domainHeight - this.geneHeight) / 2 +\n (this.xAxisOnTop ? this.xAxisHeight : 0)\n );\n }\n\n @computed private get domainY() {\n return this.geneY - (this.domainHeight - this.geneHeight) / 2;\n }\n\n // we need to create segments for the sequence rectangle for better handling of the tooltip hit zone\n @computed get sequenceSegments() {\n const sequenceComponents: JSX.Element[] = [];\n\n let start = 0;\n\n let segments = _.map(this.props.domains, (domain: DomainSpec) => {\n const segment = {\n start,\n end: this.codonToX(domain.startCodon), // segment ends at the start of the current domain\n };\n\n // next segment starts at the end of the current domain\n start = this.codonToX(domain.endCodon);\n\n return segment;\n });\n\n // last segment after the last domain\n const end = this.props.vizWidth;\n segments.push({ start, end });\n\n // sort segments by start position\n segments.sort(\n (\n a: { start: number; end: number },\n b: { start: number; end: number }\n ) => {\n return a.start - b.start;\n }\n );\n\n segments.forEach(\n (segment: { start: number; end: number }, index: number) => {\n sequenceComponents.push(\n <Sequence\n ref={sequenceComponent => {\n if (sequenceComponent !== null) {\n this.sequenceComponents[\n index\n ] = sequenceComponent;\n }\n }}\n color=\"#BABDB6\"\n x={this.geneX + segment.start}\n y={this.geneY}\n height={this.geneHeight}\n width={segment.end - segment.start}\n spec={this.props.sequence}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeSequenceIndexClass(index),\n ].join(' ')}\n />\n );\n }\n );\n\n return sequenceComponents;\n }\n\n @computed private get zeroHeight() {\n // we need to add a non-zero value if the stick needs to start from the gene center\n return this.props.zeroStickBaseY\n ? 0\n : this.domainPadding + this.domainHeight / 2;\n }\n\n @computed private get lollipops() {\n this.lollipopComponents = {};\n const hoverHeadRadius = 5;\n return this.props.lollipops.map((lollipop: LollipopSpec, i: number) => {\n const stickHeight =\n lollipop.placement === LollipopPlacement.BOTTOM\n ? -this.countToHeight(\n lollipop.count,\n this.bottomYMax,\n this.zeroHeight\n )\n : this.countToHeight(\n lollipop.count,\n this.yMax,\n this.zeroHeight\n );\n\n const stickBaseY = this.calcStickBaseY(lollipop.placement);\n\n return (\n <Lollipop\n key={`${lollipop.codon}_${\n lollipop.placement === LollipopPlacement.BOTTOM\n ? 'bottom'\n : 'top'\n }`}\n ref={(lollipopComponent: Lollipop) => {\n if (lollipopComponent !== null) {\n this.lollipopComponents[i] = lollipopComponent;\n }\n }}\n x={this.geneX + this.codonToX(lollipop.codon)}\n stickBaseY={stickBaseY}\n stickHeight={stickHeight}\n headRadius={\n this.props.dataStore &&\n (this.props.dataStore.isPositionSelected(\n lollipop.codon\n ) ||\n this.props.dataStore.isPositionHighlighted(\n lollipop.codon\n ))\n ? 5\n : 2.8\n }\n hoverHeadRadius={hoverHeadRadius}\n label={lollipop.label}\n headColor={lollipop.color}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeLollipopIndexClass(i),\n ].join(' ')}\n spec={lollipop}\n />\n );\n });\n }\n\n @computed private get domains() {\n this.domainComponents = {};\n return this.props.domains.map((domain: DomainSpec, index: number) => {\n const x = this.codonToX(domain.startCodon);\n const width = this.codonToX(domain.endCodon) - x;\n return (\n <Domain\n key={index}\n ref={(domainComponent: Domain) => {\n if (domainComponent !== null) {\n this.domainComponents[index] = domainComponent;\n }\n }}\n x={this.geneX + x}\n y={this.domainY}\n width={width}\n height={this.domainHeight}\n color={domain.color}\n label={domain.label}\n labelColor={domain.labelColor}\n hitzoneClassName={[\n DELETE_FOR_DOWNLOAD_CLASS,\n this.makeDomainIndexClass(index),\n ].join(' ')}\n spec={domain}\n />\n );\n });\n }\n\n private yAxis(\n y: number,\n yMax: number,\n ticks: Tick[],\n placement?: LollipopPlacement,\n groupName?: string,\n symbol: string = '#'\n ) {\n let label;\n if (this.props.yAxisLabelFormatter) {\n label = this.props.yAxisLabelFormatter(symbol, groupName);\n } else {\n label = groupName\n ? `${symbol} ${this.props.hugoGeneSymbol ||\n ''} ${groupName} Mutations`\n : `${symbol} ${this.props.hugoGeneSymbol || ''} Mutations`;\n }\n const placeOnBottom = placement === LollipopPlacement.BOTTOM;\n\n return (\n <SVGAxis\n key={`lollipopPlotYAxis_${placeOnBottom ? 'bottom' : 'top'}`}\n x={this.geneX - this.yAxisPadding}\n y={y}\n length={this.yAxisHeight}\n tickLength={7}\n rangeLower={0}\n rangeUpper={yMax}\n ticks={ticks}\n vertical={true}\n verticalLabelPadding={this.props.yAxisLabelPadding}\n reverse={placeOnBottom}\n label={label}\n />\n );\n }\n\n private xAxis(y: number, placement?: LollipopPlacement) {\n const placeOnTop = placement === LollipopPlacement.TOP;\n\n return (\n <SVGAxis\n key={`lollipopPlotXAxis_${placeOnTop ? 'top' : 'bottom'}`}\n x={this.geneX}\n y={y + (placeOnTop ? this.xAxisHeight : 0)}\n length={this.props.vizWidth}\n tickLength={7}\n rangeLower={0}\n rangeUpper={this.props.xMax}\n ticks={this.xTicks}\n invertTicks={placeOnTop}\n />\n );\n }\n\n private axisTicks(max: number, maxLabel: string, tickInterval: number) {\n let ticks: Tick[] = [];\n\n // Start and end, always there\n ticks.push({\n position: 0,\n label: '0',\n });\n ticks.push({\n position: max,\n label: maxLabel,\n });\n // Intermediate ticks, unlabeled\n ticks = ticks.concat(this.calculateTicks(tickInterval, max, false));\n\n return ticks;\n }\n\n @computed public get svgWidth() {\n return this.props.vizWidth + this.geneX + 30;\n }\n\n @computed public get svgHeight() {\n return this.needBottomPlacement\n ? 2 * this.props.vizHeight\n : this.props.vizHeight;\n }\n\n private calcStickBaseY(placement?: LollipopPlacement) {\n // by default start from the center of the plot\n let stickBaseY = this.geneCenterY;\n\n // calculation needed when the stick starts from the axis zero (above domains)\n if (this.props.zeroStickBaseY) {\n stickBaseY =\n placement === LollipopPlacement.BOTTOM\n ? this.bottomYAxisY\n : this.yAxisY + this.yAxisHeight;\n }\n\n return stickBaseY;\n }\n\n private makeDomainIndexClass(index: number) {\n return `${DOMAIN_ID_CLASS_PREFIX}${index}`;\n }\n\n private makeLollipopIndexClass(index: number) {\n return `${LOLLIPOP_ID_CLASS_PREFIX}${index}`;\n }\n\n private makeSequenceIndexClass(index: number) {\n return `${SEQUENCE_ID_CLASS_PREFIX}${index}`;\n }\n\n private getDomainIndex(classes: string): number | null {\n return getComponentIndex(classes, DOMAIN_ID_CLASS_PREFIX);\n }\n\n private getLollipopIndex(classes: string): number | null {\n return getComponentIndex(classes, LOLLIPOP_ID_CLASS_PREFIX);\n }\n\n private getSequenceIndex(classes: string): number | null {\n return getComponentIndex(classes, SEQUENCE_ID_CLASS_PREFIX);\n }\n\n public toSVGDOMNode(): Element {\n if (this.svg) {\n // Clone node\n const svg = this.svg.cloneNode(true) as Element;\n $(svg)\n .find('.' + DELETE_FOR_DOWNLOAD_CLASS)\n .remove();\n return svg;\n } else {\n return document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'svg'\n );\n }\n }\n\n render() {\n return (\n <div onMouseOver={this.onMouseOver}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n ref={this.ref as any}\n width={this.svgWidth}\n height={this.svgHeight}\n className=\"lollipop-svgnode\"\n onMouseLeave={this.onSVGMouseLeave}\n >\n <rect\n fill=\"#FFFFFF\"\n x={0}\n y={0}\n width={this.svgWidth}\n height={this.svgHeight}\n onClick={this.onBackgroundClick}\n onMouseMove={this.onBackgroundMouseMove}\n />\n {\n // Originally this had tooltips by having separate segments\n // with hit zones. We disabled those separate segments with\n // tooltips (this.sequenceSegments) and instead just draw\n // one rectangle\n // this.sequenceSegments\n }\n <rect\n fill=\"#BABDB6\"\n x={this.geneX}\n y={this.geneY}\n height={this.geneHeight}\n width={\n // the x-axis start from 0, so the rectangle size should be (width + 1)\n this.props.vizWidth + 1\n }\n />\n {this.lollipops}\n {this.domains}\n {this.xAxisOnTop && this.xAxis(0, LollipopPlacement.TOP)}\n {this.xAxisOnBottom &&\n this.xAxis(this.xAxisY, LollipopPlacement.BOTTOM)}\n {this.props.showYAxis &&\n this.yAxis(\n this.yAxisY,\n this.yMax,\n this.yTicks,\n LollipopPlacement.TOP,\n this.topGroupName,\n this.topGroupSymbol\n )}\n {this.props.showYAxis &&\n this.needBottomPlacement &&\n this.yAxis(\n this.bottomYAxisY,\n this.bottomYMax,\n this.bottomYTicks,\n LollipopPlacement.BOTTOM,\n this.bottomGroupName,\n this.bottomGroupSymbol\n )}\n </svg>\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { observable, computed, makeObservable, action } from 'mobx';\nimport {\n HitZoneConfig,\n defaultHitzoneConfig,\n initHitZoneFromConfig,\n DefaultTooltip,\n} from 'cbioportal-frontend-commons';\n\nimport DataStore from '../../model/DataStore';\nimport { SequenceSpec } from '../../model/SequenceSpec';\nimport { LollipopSpec } from '../../model/LollipopSpec';\nimport { DomainSpec } from '../../model/DomainSpec';\nimport LollipopPlotNoTooltip from './LollipopPlotNoTooltip';\n\nexport type LollipopPlotProps = {\n sequence?: SequenceSpec;\n lollipops: LollipopSpec[];\n domains: DomainSpec[];\n vizWidth: number;\n vizHeight: number;\n xMax: number;\n yMax?: number;\n bottomYMax?: number;\n yMaxFractionDigits?: number;\n yMaxLabelPostfix?: string;\n yAxisLabelPadding?: number;\n showYAxis?: boolean;\n xAxisOnTop?: boolean;\n xAxisOnBottom?: boolean;\n groups?: string[];\n topYAxisSymbol?: string;\n bottomYAxisSymbol?: string;\n zeroStickBaseY?: boolean;\n hugoGeneSymbol?: string;\n dataStore?: DataStore;\n onXAxisOffset?: (offset: number) => void;\n yAxisLabelFormatter?: (symbol?: string, groupName?: string) => string;\n};\n\n@observer\nexport default class LollipopPlot extends React.Component<\n LollipopPlotProps,\n {}\n> {\n @observable private hitZoneConfig: HitZoneConfig = defaultHitzoneConfig();\n @observable private mirrorVisible: boolean = false; // lollipop and mirror lollipop share tooltip visibility\n\n private plot: LollipopPlotNoTooltip | undefined;\n private handlers: any;\n\n public static defaultProps: Partial<LollipopPlotProps> = {\n vizHeight: 200,\n };\n\n constructor(props: LollipopPlotProps) {\n super(props);\n\n makeObservable<\n LollipopPlot,\n 'hitZoneConfig' | 'tooltipVisible' | 'hitZone' | 'mirrorHitZone'\n >(this);\n\n this.handlers = {\n ref: (plot: LollipopPlotNoTooltip) => {\n this.plot = plot;\n },\n setHitZone: (\n hitRect: {\n x: number;\n y: number;\n width: number;\n height: number;\n },\n content?: JSX.Element,\n mirrorHitRect?: {\n x: number;\n y: number;\n width: number;\n height: number;\n },\n mirrorContent?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor: string = 'pointer',\n tooltipPlacement: string = 'top'\n ) => {\n this.hitZoneConfig = {\n hitRect,\n content,\n mirrorHitRect,\n mirrorContent,\n onMouseOver,\n onClick,\n onMouseOut,\n cursor,\n tooltipPlacement,\n };\n },\n getOverlay: () => this.hitZoneConfig.content,\n getOverlayPlacement: () => this.hitZoneConfig.tooltipPlacement,\n getMirrorOverlay: () => this.hitZoneConfig.mirrorContent,\n onMouseLeave: () => {\n this.hitZoneConfig.onMouseOut &&\n this.hitZoneConfig.onMouseOut();\n },\n onBackgroundMouseMove: () => {\n this.hitZoneConfig.onMouseOut &&\n this.hitZoneConfig.onMouseOut();\n },\n };\n }\n\n @computed private get tooltipVisible() {\n return !!this.hitZoneConfig.content;\n }\n\n @computed private get hitZone() {\n return initHitZoneFromConfig(this.hitZoneConfig);\n }\n\n // hit zone of mirror lollipop component initialized using config's mirrorHitRect (mirror lollipop location)\n // used to determine where to apply the mirror lollipop tooltip\n @computed private get mirrorHitZone() {\n return initHitZoneFromConfig({\n ...this.hitZoneConfig,\n hitRect: { ...this.hitZoneConfig.mirrorHitRect! },\n });\n }\n\n // handles lollipop and mirror lollipop component simultaneous tooltip visibility\n // if lollipop tooltip is visible, make mirror lollipop tooltip visible as well\n @action.bound\n private onTooltipVisibleChange(visible: boolean) {\n this.mirrorVisible = visible;\n }\n\n public toSVGDOMNode(): Element {\n if (this.plot) {\n // Clone node\n return this.plot.toSVGDOMNode();\n } else {\n return document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'svg'\n );\n }\n }\n\n render() {\n const tooltipVisibleProps: any = {};\n if (!this.tooltipVisible) {\n tooltipVisibleProps.visible = false;\n }\n return (\n <div\n style={{\n position: 'relative',\n display: 'inline-block',\n }}\n data-test=\"LollipopPlot\"\n >\n <DefaultTooltip\n placement={this.handlers.getOverlayPlacement()}\n overlay={this.handlers.getOverlay}\n visible={this.mirrorVisible}\n onVisibleChange={this.onTooltipVisibleChange}\n {...tooltipVisibleProps}\n >\n {this.hitZone}\n </DefaultTooltip>\n {this.hitZoneConfig.mirrorHitRect && (\n <DefaultTooltip\n placement={\n this.handlers.getOverlayPlacement() === 'top'\n ? 'bottom'\n : 'top'\n }\n overlay={this.handlers.getMirrorOverlay}\n visible={this.mirrorVisible}\n onVisibleChange={this.onTooltipVisibleChange}\n {...tooltipVisibleProps}\n >\n {this.mirrorHitZone}\n </DefaultTooltip>\n )}\n <LollipopPlotNoTooltip\n ref={this.handlers.ref}\n setHitZone={this.handlers.setHitZone}\n onMouseLeave={this.handlers.onMouseLeave}\n onBackgroundMouseMove={this.handlers.onBackgroundMouseMove}\n {...this.props}\n />\n </div>\n );\n }\n}\n","import classNames from 'classnames';\nimport { action, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { ButtonGroup } from 'react-bootstrap';\n\ninterface IAxisScaleSwitchProps {\n onChange: (selectedScale: AxisScale) => void;\n selectedScale: AxisScale;\n}\n\nexport enum AxisScale {\n PERCENT = '%',\n COUNT = '#',\n}\n\n@observer\nexport class AxisScaleSwitch extends React.Component<\n IAxisScaleSwitchProps,\n {}\n> {\n public static defaultProps: Partial<IAxisScaleSwitchProps> = {\n selectedScale: AxisScale.COUNT,\n };\n\n @observable\n private selectedScale: AxisScale;\n\n constructor(props: IAxisScaleSwitchProps) {\n super(props);\n this.selectedScale = props.selectedScale;\n makeObservable(this);\n }\n\n public toggleButton(scale: AxisScale, onClick: () => void) {\n return (\n <button\n className={classNames(\n {\n 'btn-secondary': this.props.selectedScale === scale,\n 'btn-outline-secondary':\n this.props.selectedScale !== scale,\n },\n 'btn',\n 'btn-sm',\n 'btn-axis-switch'\n )}\n data-test={`AxisScaleSwitch${scale}`}\n style={{\n lineHeight: 1,\n cursor:\n this.props.selectedScale === scale\n ? 'default'\n : 'pointer',\n fontWeight:\n this.props.selectedScale === scale\n ? 'bolder'\n : 'normal',\n color:\n this.props.selectedScale === scale ? '#fff' : '#6c757d',\n backgroundColor:\n this.props.selectedScale === scale ? '#6c757d' : '#fff',\n borderColor: '#6c757d',\n }}\n onClick={onClick}\n >\n {scale}\n </button>\n );\n }\n\n public render() {\n return (\n <ButtonGroup aria-label=\"\">\n {this.toggleButton(AxisScale.PERCENT, this.handlePercentClick)}\n {this.toggleButton(AxisScale.COUNT, this.handleCountClick)}\n </ButtonGroup>\n );\n }\n\n @action.bound\n private handlePercentClick() {\n this.selectedScale = AxisScale.PERCENT;\n this.props.onChange(this.selectedScale);\n }\n\n @action.bound\n private handleCountClick() {\n this.selectedScale = AxisScale.COUNT;\n this.props.onChange(this.selectedScale);\n }\n}\n","import { action, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { AxisScale, AxisScaleSwitch } from './AxisScaleSwitch';\n\ninterface IPercentToggleProps {\n axisMode?: AxisScale;\n onScaleToggle?: (selectedScale: AxisScale) => void;\n}\n\nexport class PercentToggle extends React.Component<IPercentToggleProps, {}> {\n constructor(props: IPercentToggleProps) {\n super(props);\n }\n\n public render() {\n return (\n <div\n className=\"small\"\n style={{\n display: 'flex',\n alignItems: 'center',\n marginLeft: 10,\n }}\n >\n <div\n style={{\n marginLeft: 10,\n }}\n >\n <div style={{ textAlign: 'center' }}>Y-Axis:</div>\n <AxisScaleSwitch\n selectedScale={this.props.axisMode}\n onChange={this.props.onScaleToggle}\n />\n </div>\n </div>\n );\n }\n}\n","import { DownloadControls, EditableSpan } from 'cbioportal-frontend-commons';\nimport { numberOfLeadingDecimalZeros } from 'cbioportal-utils';\nimport classnames from 'classnames';\nimport _ from 'lodash';\nimport * as React from 'react';\nimport Slider from 'react-rangeslider';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport { calcYMaxInput } from '../../util/LollipopPlotUtils';\nimport TrackSelector, {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\n\nimport 'react-rangeslider/lib/index.css';\nimport styles from './lollipopMutationPlot.module.scss';\nimport { AxisScale } from './AxisScaleSwitch';\nimport { PercentToggle } from './PercentToggle';\n\ntype LollipopMutationPlotControlsProps = {\n showControls: boolean;\n hugoGeneSymbol: string;\n countRange: [number, number];\n bottomCountRange?: [number, number];\n onYAxisMaxSliderChange: (event: any) => void;\n onYAxisMaxChange: (inputValue: string) => void;\n onBottomYAxisMaxSliderChange?: (event: any) => void;\n onBottomYAxisMaxChange?: (inputValue: string) => void;\n onYMaxInputFocused: () => void;\n onYMaxInputBlurred: () => void;\n onToggleLegend: () => void;\n yMaxSlider: number;\n yMaxSliderStep: number;\n yMaxSliderWidth: number;\n yMaxInput: number;\n yAxisSameScale?: boolean;\n bottomYMaxSlider?: number;\n bottomYMaxSliderStep: number;\n bottomYMaxInput?: number;\n customControls?: JSX.Element;\n filterResetPanel?: JSX.Element;\n tracks?: TrackName[];\n trackVisibility?: TrackVisibility;\n trackDataStatus?: TrackDataStatus;\n showTrackSelector?: boolean;\n showYMaxSlider?: boolean;\n showLegendToggle?: boolean;\n showDownloadControls?: boolean;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n getSVG: () => SVGElement;\n axisMode?: AxisScale;\n onScaleToggle?: (selectedScale: AxisScale) => void;\n showPercentToggle?: boolean;\n};\n\nfunction formatInputValue(value: number, step: number = 1) {\n const decimalZeros = numberOfLeadingDecimalZeros(step);\n const fixed = decimalZeros < 0 ? 0 : decimalZeros + 1;\n\n return value.toFixed(fixed);\n}\n\n@observer\nexport default class LollipopMutationPlotControls extends React.Component<\n LollipopMutationPlotControlsProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps: Partial<LollipopMutationPlotControlsProps> = {\n showTrackSelector: true,\n showYMaxSlider: true,\n showLegendToggle: true,\n showDownloadControls: true,\n yMaxSliderWidth: 110,\n };\n\n @computed\n get showBottomYAxisSlider() {\n return (\n this.props.bottomCountRange &&\n _.compact(this.props.bottomCountRange).length > 0 &&\n this.props.onBottomYAxisMaxSliderChange &&\n this.props.onBottomYAxisMaxChange &&\n this.props.bottomYMaxSlider &&\n this.props.bottomYMaxInput\n );\n }\n\n protected maxValueSlider(\n countRange: [number, number],\n oppositeCountRange: [number, number],\n onYAxisMaxSliderChange: (event: any) => void,\n onYAxisMaxChange: (inputValue: string) => void,\n yMaxSlider: number,\n yMaxInput: number,\n yAxisSameScale: boolean = false,\n label: string = 'Y-Axis Max',\n width: number = 100,\n yMaxSliderStep: number = 1\n ) {\n return (\n <div\n className=\"small\"\n style={{\n display: 'flex',\n alignItems: 'center',\n marginLeft: 10,\n }}\n >\n <div\n style={{\n width: width,\n marginLeft: 10,\n marginRight: 10,\n }}\n >\n <div style={{ textAlign: 'center' }}>{label}:</div>\n <Slider\n min={yMaxSliderStep}\n max={calcYMaxInput(\n undefined,\n yMaxSliderStep,\n countRange,\n oppositeCountRange,\n yAxisSameScale\n )}\n tooltip={false}\n step={yMaxSliderStep}\n onChange={onYAxisMaxSliderChange}\n value={yMaxSlider}\n />\n </div>\n <EditableSpan\n className={styles['ymax-number-input']}\n value={formatInputValue(yMaxInput, yMaxSliderStep)}\n setValue={onYAxisMaxChange}\n numericOnly={yMaxSliderStep >= 1}\n onFocus={this.props.onYMaxInputFocused}\n onBlur={this.props.onYMaxInputBlurred}\n />\n </div>\n );\n }\n\n protected get yMaxSlider() {\n return this.maxValueSlider(\n this.props.countRange,\n this.props.bottomCountRange!,\n this.props.onYAxisMaxSliderChange,\n this.props.onYAxisMaxChange,\n this.props.yMaxSlider,\n this.props.yMaxInput,\n this.props.yAxisSameScale,\n this.showBottomYAxisSlider ? 'Top Y-Axis Max' : 'Y-Axis Max',\n this.props.yMaxSliderWidth,\n this.props.yMaxSliderStep\n );\n }\n\n protected get bottomYMaxSlider() {\n if (this.showBottomYAxisSlider) {\n return this.maxValueSlider(\n this.props.bottomCountRange!,\n this.props.countRange,\n this.props.onBottomYAxisMaxSliderChange!,\n this.props.onBottomYAxisMaxChange!,\n this.props.bottomYMaxSlider!,\n this.props.bottomYMaxInput!,\n this.props.yAxisSameScale,\n 'Bottom Y-Axis Max',\n this.props.yMaxSliderWidth,\n this.props.bottomYMaxSliderStep\n );\n } else {\n return null;\n }\n }\n\n protected get trackSelector() {\n return (\n <div\n className={classnames('annotation-track-selector', 'small')}\n style={{ width: 180, marginRight: 7 }}\n >\n <TrackSelector\n tracks={this.props.tracks}\n trackVisibility={this.props.trackVisibility}\n trackDataStatus={this.props.trackDataStatus}\n onChange={this.props.onTrackVisibilityChange}\n />\n </div>\n );\n }\n\n protected get legendToggle() {\n return (\n <button\n className=\"btn btn-default btn-xs\"\n onClick={this.props.onToggleLegend}\n style={{ marginRight: 7 }}\n >\n Legend <i className=\"fa fa-eye\" aria-hidden=\"true\" />\n </button>\n );\n }\n\n protected get downloadControls() {\n return (\n <DownloadControls\n getSvg={this.props.getSVG}\n filename={`${this.props.hugoGeneSymbol}_lollipop`}\n dontFade={true}\n type=\"button\"\n />\n );\n }\n\n @computed\n protected get percentToggle() {\n return (\n <PercentToggle\n axisMode={this.props.axisMode}\n onScaleToggle={this.props.onScaleToggle}\n />\n );\n }\n\n public render() {\n return (\n <div\n className={classnames(\n 'lollipop_mutation_plot__controls',\n this.props.showControls\n ? styles['fade-in']\n : styles['fade-out']\n )}\n >\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {this.props.trackVisibility &&\n this.props.onTrackVisibilityChange &&\n this.props.showTrackSelector &&\n this.trackSelector}\n {this.props.showYMaxSlider && this.yMaxSlider}\n {this.props.showYMaxSlider && this.bottomYMaxSlider}\n {this.props.showPercentToggle && this.percentToggle}\n {this.props.filterResetPanel}\n {this.props.customControls}\n <div style={{ display: 'flex', marginLeft: 'auto' }}>\n {this.props.showLegendToggle && this.legendToggle}\n {this.props.showDownloadControls &&\n this.downloadControls}\n </div>\n </div>\n {' '}\n </div>\n );\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport enum HotspotFilterValue {\n DefaultHotspot = 'DEFAULT_HOTSPOT',\n}\n\nexport type HotspotFilter = DataFilter<HotspotFilterValue>;\n","import * as React from 'react';\nimport { computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\n\ntype TrackCircleProps = {\n x: number;\n y: number;\n radius?: number;\n isHovered: boolean;\n hoverRadius?: number;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackCircleSpec;\n};\n\nexport type TrackCircleSpec = {\n startCodon: number;\n label?: string;\n color?: string;\n tooltip?: JSX.Element;\n};\n\n@observer\nexport default class TrackCircle extends React.Component<TrackCircleProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n radius: 2.8,\n hoverRadius: 5,\n };\n\n @computed get circleRadius() {\n return this.props.isHovered\n ? this.props.hoverRadius\n : this.props.radius;\n }\n\n public render() {\n return (\n <g>\n <circle\n stroke=\"#BABDB6\"\n strokeWidth=\"0.5\"\n fill={this.props.spec.color}\n r={this.circleRadius}\n cx={this.props.x}\n cy={this.props.y}\n />\n <circle\n className={this.props.hitZoneClassName}\n r={this.props.hoverRadius}\n cx={this.props.x}\n cy={this.props.y}\n cursor=\"pointer\"\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import $ from 'jquery';\n\nexport function truncateDisplayText(\n label: string,\n textElt: SVGTextElement | null,\n width: number\n) {\n // Truncate text if necessary\n if (!textElt) {\n return label;\n }\n\n if (!$(textElt!).is(':visible')) {\n return label;\n }\n\n let substringLength = label.length;\n // Find the number of characters that will fit inside\n while (\n substringLength > 0 &&\n textElt!.getSubStringLength(0, substringLength) > width\n ) {\n substringLength -= 1;\n }\n let displayText = label;\n if (substringLength < label.length) {\n // If we have to do shortening\n substringLength -= 2; // make room for ellipsis \"..\"\n if (substringLength <= 0) {\n // too short to show any string\n displayText = '';\n } else {\n // if it's long enough to show anything at all\n displayText = label.substr(0, substringLength) + '..';\n }\n }\n return displayText;\n}\n","import * as React from 'react';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { truncateDisplayText } from '../../util/LabelUtils';\n\ntype TrackRectProps = {\n x: number;\n y: number;\n width?: number;\n height?: number;\n isHovered: boolean;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackRectSpec;\n};\n\nexport type TrackRectSpec = {\n startCodon: number;\n endCodon?: number;\n label?: string;\n labelColor?: string;\n color?: string;\n tooltip?: JSX.Element;\n};\n\n@observer\nexport default class TrackRect extends React.Component<TrackRectProps, {}> {\n @observable private textElt: SVGTextElement | null = null;\n private handlers: any;\n constructor(props: any) {\n super(props);\n makeObservable(this);\n this.handlers = {\n textRef: action((text: SVGTextElement | null) => {\n this.textElt = text;\n }),\n };\n }\n\n public static defaultProps = {\n width: 50,\n height: 15,\n };\n\n private get centerX() {\n return this.props.x + this.props.width! / 2;\n }\n\n private get centerY() {\n return this.props.y + this.props.height! / 2;\n }\n\n private makeTextElement(reference: boolean) {\n let props: any = {\n x: this.centerX,\n y: this.centerY,\n textAnchor: 'middle',\n dy: '0.3em',\n fill: this.props.spec.labelColor || '#FFFFFF',\n style: {\n fontSize: '12px',\n fontFamily: 'arial',\n },\n };\n const label = this.props.spec.label || '';\n const displayText = truncateDisplayText(\n label,\n this.textElt,\n this.props.width!\n );\n const text = reference ? this.props.spec.labelColor || '' : displayText;\n if (reference) {\n props.ref = this.handlers.textRef;\n props.visibility = 'hidden';\n props.style = { opacity: 0 };\n props.className = this.props.hitZoneClassName;\n }\n return <text {...props}>{text}</text>;\n }\n\n @computed get strokeWidth() {\n return this.props.isHovered ? 2 : 0.5;\n }\n\n @computed get strokeColor() {\n return this.props.isHovered ? '#666666' : '#BABDB6';\n }\n\n public render() {\n return (\n <g>\n <rect\n stroke={this.strokeColor}\n strokeWidth={this.strokeWidth}\n fill={this.props.spec.color}\n width={this.props.width}\n height={this.props.height}\n x={this.props.x}\n y={this.props.y}\n />\n {this.makeTextElement(true)};{this.makeTextElement(false)}\n <rect\n className={this.props.hitZoneClassName}\n x={this.props.x}\n y={this.props.y}\n width={this.props.width}\n height={this.props.height}\n style={{ opacity: 0 }}\n />\n </g>\n );\n }\n}\n","import * as React from 'react';\nimport { computed, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport TrackCircle from './TrackCircle';\nimport TrackRect from './TrackRect';\n\ntype TrackItemProps = {\n x: number;\n y: number;\n dim1: number; // radius or width\n dim2?: number; // height if necessary\n hoverdim1?: number;\n hitZoneClassName?: string;\n hitZoneXOffset?: number;\n spec: TrackItemSpec;\n};\n\nexport enum TrackItemType {\n CIRCLE,\n RECTANGLE,\n}\n\nexport type TrackItemSpec = {\n startCodon: number;\n endCodon?: number;\n itemType?: TrackItemType;\n label?: string;\n color?: string;\n tooltip?: JSX.Element;\n height?: number;\n};\n\n@observer\nexport default class TrackItem extends React.Component<TrackItemProps> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @observable public isHovered = false;\n\n @computed public get hitRectangle() {\n let hoverWidth;\n let hoverHeight;\n let xOffset;\n if (this.props.spec.itemType === TrackItemType.CIRCLE) {\n hoverHeight =\n this.props.hoverdim1 || TrackCircle.defaultProps.hoverRadius;\n\n hoverWidth =\n this.props.hoverdim1 || TrackCircle.defaultProps.hoverRadius;\n\n xOffset =\n this.props.x - hoverWidth + (this.props.hitZoneXOffset || 0);\n } else {\n hoverHeight = this.props.dim2! / 2;\n\n hoverWidth = this.props.dim1! / 2;\n\n xOffset = this.props.x + (this.props.hitZoneXOffset || 0);\n }\n\n return {\n x: xOffset,\n y: this.props.y,\n width: hoverWidth * 2,\n height: hoverHeight * 2,\n };\n }\n\n public render() {\n if (this.props.spec.itemType === TrackItemType.CIRCLE) {\n return (\n <TrackCircle\n isHovered={this.isHovered}\n radius={this.props.dim1}\n hoverRadius={this.props.hoverdim1}\n {...this.props}\n />\n );\n } else {\n return (\n <TrackRect\n isHovered={this.isHovered}\n width={this.props.dim1}\n height={this.props.dim2}\n {...this.props}\n />\n );\n }\n }\n}\n","import * as React from 'react';\nimport $ from 'jquery';\nimport { observer } from 'mobx-react';\nimport { SyntheticEvent } from 'react';\nimport { action, computed, observable, makeObservable } from 'mobx';\nimport autobind from 'autobind-decorator';\nimport classnames from 'classnames';\n\nimport {\n defaultHitzoneConfig,\n DefaultTooltip,\n getComponentIndex,\n HitZoneConfig,\n initHitZoneFromConfig,\n unhoverAllComponents,\n} from 'cbioportal-frontend-commons';\n\nimport { DataFilter } from '../../model/DataFilter';\nimport DataStore from '../../model/DataStore';\nimport {\n updatePositionSelectionFilters,\n updatePositionRangeHighlightFilters,\n} from '../../util/FilterUtils';\nimport TrackItem, { TrackItemSpec, TrackItemType } from './TrackItem';\nimport styles from './trackStyles.module.scss';\n\nconst DEFAULT_ID_CLASS_PREFIX = 'track-circle-';\nconst DEFAULT_HEIGHT = 15; // height of rectangle element\n\nexport type TrackProps = {\n dataStore: DataStore;\n width: number;\n proteinLength: number;\n trackItems?: TrackItemSpec[];\n trackTitle?: JSX.Element;\n hideBaseline?: boolean;\n xOffset?: number;\n defaultFilters?: DataFilter[];\n idClassPrefix?: string;\n isSubTrack?: boolean;\n};\n\n@observer\nexport default class Track extends React.Component<TrackProps, {}> {\n @observable private hitZoneConfig: HitZoneConfig = defaultHitzoneConfig();\n @observable private shiftPressed = false;\n private tooltipActive = false;\n\n private shapes: { [index: string]: TrackItem };\n\n constructor(props: TrackProps) {\n super(props);\n makeObservable<\n Track,\n | 'hitZoneConfig'\n | 'shiftPressed'\n | 'unhoverAllComponents'\n | 'tooltipVisible'\n | 'hitZone'\n >(this);\n }\n\n @autobind\n setHitZone(\n hitRect: { x: number; y: number; width: number; height: number },\n content?: JSX.Element,\n onMouseOver?: () => void,\n onClick?: () => void,\n onMouseOut?: () => void,\n cursor: string = 'pointer',\n tooltipPlacement: string = 'top'\n ) {\n this.hitZoneConfig = {\n hitRect,\n content,\n onMouseOver,\n onClick,\n onMouseOut,\n cursor,\n tooltipPlacement,\n };\n }\n\n @autobind\n getOverlay() {\n return this.hitZoneConfig.content;\n }\n\n @autobind\n getOverlayPlacement() {\n return this.hitZoneConfig.tooltipPlacement;\n }\n\n @action.bound\n onMouseLeave() {\n if (this.hitZoneConfig.onMouseOut) {\n this.hitZoneConfig.onMouseOut();\n }\n }\n\n @autobind\n onBackgroundMouseMove() {\n if (this.hitZoneConfig.onMouseOut) {\n this.hitZoneConfig.onMouseOut();\n }\n }\n\n @action.bound\n onBackgroundClick() {\n this.props.dataStore.clearSelectionFilters();\n }\n\n @action.bound\n onTrackItemClick(shapeComponent: TrackItem) {\n if (shapeComponent.props.spec.itemType === TrackItemType.CIRCLE) {\n updatePositionSelectionFilters(\n this.props.dataStore,\n shapeComponent.props.spec.startCodon,\n this.shiftPressed,\n this.props.defaultFilters\n );\n }\n }\n\n @action.bound\n onTrackItemHover(shapeComponent: TrackItem) {\n const endCodon: number = shapeComponent.props.spec.endCodon\n ? Math.trunc(shapeComponent.props.spec.endCodon)\n : Math.trunc(shapeComponent.props.spec.startCodon);\n\n updatePositionRangeHighlightFilters(\n this.props.dataStore,\n Math.trunc(shapeComponent.props.spec.startCodon),\n endCodon,\n this.props.defaultFilters\n );\n shapeComponent.isHovered = true;\n }\n\n @action.bound\n onKeyDown(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = true;\n }\n }\n\n @action.bound\n onKeyUp(e: JQueryKeyEventObject) {\n if (e.which === 16) {\n this.shiftPressed = false;\n }\n }\n\n @action.bound\n onMouseOver(e: SyntheticEvent<any>) {\n // No matter what, unhover all components - if we're hovering one, we'll set it later in this method\n this.unhoverAllComponents();\n\n const target = e.target as SVGElement;\n const className = target.getAttribute('class') || '';\n const componentIndex: number | null = this.getComponentIndex(className);\n\n if (componentIndex !== null) {\n const shapeComponent = this.shapes[componentIndex];\n if (shapeComponent) {\n this.setHitZone(\n shapeComponent.hitRectangle,\n shapeComponent.props.spec.tooltip,\n action(() => this.onTrackItemHover(shapeComponent)),\n action(() => this.onTrackItemClick(shapeComponent)),\n this.onHitzoneMouseOut,\n 'pointer',\n 'bottom'\n );\n }\n }\n }\n\n @action.bound\n onSVGMouseLeave(e: SyntheticEvent<any>) {\n const target = e.target as Element;\n if (target.tagName.toLowerCase() === 'svg') {\n this.onMouseLeave();\n }\n }\n\n @action.bound\n onTooltipVisibleChange(visible: boolean) {\n this.tooltipActive = visible;\n\n if (!visible) {\n this.unhoverAllComponents();\n }\n }\n\n @action.bound\n onHitzoneMouseOut() {\n if (!this.tooltipActive) {\n this.unhoverAllComponents();\n }\n }\n\n get svgHeight() {\n return 10; // height of baseline element\n }\n\n get items() {\n this.shapes = {};\n\n return (this.props.trackItems || []).map((spec, index) => {\n let dim1;\n let dim2;\n let hoverdim1;\n let specFeats;\n let y;\n if (spec.endCodon !== undefined) {\n dim1 =\n ((spec.endCodon! - spec.startCodon) /\n this.props.proteinLength) *\n this.props.width;\n dim2 = spec.height || DEFAULT_HEIGHT;\n hoverdim1 = dim1;\n y = (this.svgHeight - dim2) / 2; // y is the vertical start position of rectangle, half of baseline element height = half of element height + y\n specFeats = {\n ...spec,\n endCodon: spec.endCodon!,\n itemType: TrackItemType.RECTANGLE,\n };\n } else {\n dim1 =\n this.props.dataStore.isPositionSelected(spec.startCodon) ||\n this.props.dataStore.isPositionHighlighted(spec.startCodon)\n ? 5\n : 2.8;\n hoverdim1 = 5;\n y = this.svgHeight / 2;\n dim2 = dim1;\n specFeats = { ...spec, itemType: TrackItemType.CIRCLE };\n }\n return (\n <TrackItem\n ref={(item: TrackItem) => {\n if (item !== null) {\n this.shapes[index] = item;\n }\n }}\n key={spec.startCodon}\n hitZoneClassName={`${this.props.idClassPrefix}${index}`}\n hitZoneXOffset={this.props.xOffset}\n x={\n (spec.startCodon / this.props.proteinLength) *\n this.props.width\n }\n y={y}\n dim1={dim1}\n dim2={dim2}\n spec={specFeats}\n />\n );\n });\n }\n\n @action\n private unhoverAllComponents() {\n unhoverAllComponents(this.shapes);\n this.props.dataStore.clearHighlightFilters();\n }\n\n private getComponentIndex(classes: string): number | null {\n return getComponentIndex(\n classes,\n this.props.idClassPrefix || DEFAULT_ID_CLASS_PREFIX\n );\n }\n\n @computed private get tooltipVisible() {\n return !!this.hitZoneConfig.content;\n }\n\n @computed private get hitZone() {\n return initHitZoneFromConfig(this.hitZoneConfig);\n }\n\n get tooltipVisibleProps() {\n const tooltipVisibleProps: any = {};\n\n if (!this.tooltipVisible) {\n tooltipVisibleProps.visible = false;\n }\n\n return tooltipVisibleProps;\n }\n\n public componentDidMount() {\n // Make it so that if you hold down shift, you can select more than one item at once\n $(document).on('keydown', this.onKeyDown);\n $(document).on('keyup', this.onKeyUp);\n }\n\n componentWillUnmount() {\n $(document).off('keydown', this.onKeyDown as any);\n $(document).off('keyup', this.onKeyUp as any);\n }\n\n public render() {\n return (\n <div\n style={{\n position: 'relative',\n display: 'flex',\n }}\n >\n <span\n className={classnames(\n styles.trackTitle,\n 'small',\n `${this.props.isSubTrack ? 'subtrack-' : ''}trackTitle`\n )}\n >\n {this.props.trackTitle}\n </span>\n <span>\n <DefaultTooltip\n placement={this.getOverlayPlacement()}\n overlay={this.getOverlay}\n onVisibleChange={this.onTooltipVisibleChange}\n destroyTooltipOnHide={true}\n {...this.tooltipVisibleProps}\n >\n {this.hitZone}\n </DefaultTooltip>\n <span\n style={{ marginLeft: this.props.xOffset }}\n onMouseOver={this.onMouseOver}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={this.props.width}\n height={this.svgHeight}\n className=\"track-svgnode\"\n onMouseLeave={this.onSVGMouseLeave}\n style={{ overflow: 'visible' }}\n >\n <rect\n fill=\"#FFFFFF\"\n x={0}\n y={0}\n width={this.props.width}\n height={this.svgHeight}\n onClick={action(this.onBackgroundClick)}\n onMouseMove={this.onBackgroundMouseMove}\n />\n {!this.props.hideBaseline && (\n <line\n stroke=\"#666666\"\n strokeWidth=\"0.5\"\n x1={0}\n x2={this.props.width}\n y1={this.svgHeight / 2}\n y2={this.svgHeight / 2}\n />\n )}\n {this.items}\n </svg>\n </span>\n </span>\n </div>\n );\n }\n}\n","import {\n defaultHotspotFilter,\n filter3dHotspotsByMutations,\n filterLinearClusterHotspotsByMutations,\n IHotspotIndex,\n isHotspot,\n Mutation,\n} from 'cbioportal-utils';\nimport { Hotspot } from 'genome-nexus-ts-api-client';\nimport * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\n\nimport { HotspotFilterValue } from '../../filter/HotspotFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { HotspotInfo } from '../hotspot/HotspotInfo';\nimport Track, { TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\n\nimport hotspotImg from '../../images/cancer-hotspots.svg';\n\ntype HotspotTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n hotspotIndex: IHotspotIndex;\n};\n\nexport function hotspotTooltip(\n mutations: Mutation[],\n hotspotIndex: IHotspotIndex,\n hotspots: Hotspot[]\n) {\n const hotspotsLinearCluster = filterLinearClusterHotspotsByMutations(\n mutations,\n hotspotIndex\n );\n\n const hotspots3d = filter3dHotspotsByMutations(mutations, hotspotIndex);\n\n const hotspotCount = mutations.filter(mutation =>\n isHotspot(mutation, hotspotIndex, defaultHotspotFilter)\n ).length;\n\n // generate custom info\n const residues = _.uniq(hotspots.map(hotspot => hotspot.residue));\n const residuesText = <b>{`${residues.join(', ')}`}</b>;\n const pluralSuffix = residues.length > 1 ? 's' : undefined;\n const residueInfo = (\n <span>\n on residue{pluralSuffix} {residuesText}\n </span>\n );\n\n return (\n <HotspotInfo\n isHotspot={hotspotsLinearCluster.length > 0}\n is3dHotspot={hotspots3d.length > 0}\n count={hotspotCount}\n customInfo={residueInfo}\n />\n );\n}\n\nexport function getHotspotImage() {\n return <img src={hotspotImg} alt=\"Recurrent Hotspot Symbol\" />;\n}\n\n@observer\nexport default class HotspotTrack extends React.Component<\n HotspotTrackProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n @computed get hotspotSpecs(): TrackItemSpec[] {\n const filteredHotspotsByProteinPosStart = this.props.store\n .hotspotsByPosition;\n\n if (!_.isEmpty(filteredHotspotsByProteinPosStart)) {\n return _.keys(filteredHotspotsByProteinPosStart)\n .filter(position => Number(position) >= 0)\n .map(position => ({\n startCodon: Number(position),\n color: '#FF9900',\n tooltip: hotspotTooltip(\n this.props.store.mutationsByPosition[Number(position)],\n this.props.store.indexedHotspotData.result || {},\n filteredHotspotsByProteinPosStart[Number(position)]\n ),\n }));\n } else {\n return [];\n }\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginRight: 2 }}>{getHotspotImage()}</span>\n Cancer Hotspots\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n defaultFilters={[\n {\n type: DataFilterType.HOTSPOT,\n values: [HotspotFilterValue.DefaultHotspot],\n },\n ]}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.hotspotSpecs}\n idClassPrefix={'cancer-hotspot-'}\n />\n );\n }\n}\n","import { DataFilter } from '../model/DataFilter';\n\nexport enum OncoKbFilterValue {\n Oncogenic = 'ONCOGENIC',\n}\n\nexport type OncoKbFilter = DataFilter<OncoKbFilterValue>;\n","import * as React from 'react';\nimport _ from 'lodash';\n\nimport { Mutation } from 'cbioportal-utils';\nimport { IndicatorQueryResp } from 'oncokb-ts-api-client';\n\nimport { OncoKbSummaryTable, LEVELS } from 'oncokb-frontend-commons';\nimport { makeObservable } from 'mobx';\nimport {\n getTumorTypeName,\n getTumorTypeNameWithExclusionInfo,\n} from 'oncokb-frontend-commons';\n\ntype OncoKbTrackTooltipProps = {\n usingPublicOncoKbInstance: boolean;\n mutations: Mutation[];\n indicatorData?: IndicatorQueryResp[];\n hugoGeneSymbol?: string;\n};\n\nexport function oncoKbTooltip(\n usingPublicOncoKbInstance: boolean,\n indicatorData: IndicatorQueryResp[]\n) {\n const sampleCount = indicatorData.length;\n\n // generate info\n\n const pluralSuffix = sampleCount > 1 ? 's' : undefined;\n const groupedByImplication = _.groupBy(indicatorData, 'oncogenic');\n const oncogenicKeywords = _.keys(groupedByImplication).map(keyword => (\n <b>{keyword}</b>\n ));\n let oncogenicInfo: (JSX.Element | string)[] = [];\n\n if (oncogenicKeywords.length > 1) {\n // join all except the last one with ','\n const joined = oncogenicKeywords\n .slice(0, oncogenicKeywords.length - 1)\n .reduce((prev: JSX.Element, curr: JSX.Element): any => [\n prev,\n ', ',\n curr,\n ]);\n\n oncogenicInfo.push(joined);\n\n // add the last one after \"and\"\n oncogenicInfo.push(' and ');\n oncogenicInfo.push(oncogenicKeywords[oncogenicKeywords.length - 1]);\n } else {\n // use oncogenic keywords array as is\n oncogenicInfo = oncogenicKeywords;\n }\n\n const groupedByProteinChange = _.groupBy(\n indicatorData,\n d => d.query.alteration\n );\n const tableData = _.keys(groupedByProteinChange).map(proteinChange => ({\n count: groupedByProteinChange[proteinChange].length,\n proteinChange: proteinChange,\n clinicalImplication: _.uniq(\n groupedByProteinChange[proteinChange].map(indicator =>\n indicator.oncogenic ? indicator.oncogenic : 'Unknown'\n )\n ),\n biologicalEffect: _.uniq(\n groupedByProteinChange[proteinChange].map(indicator =>\n indicator.mutationEffect && indicator.mutationEffect.knownEffect\n ? indicator.mutationEffect.knownEffect\n : 'Unknown'\n )\n ),\n level: generateLevelData(groupedByProteinChange[proteinChange]),\n }));\n\n // generate the tooltip\n\n return (\n <span>\n <b>{sampleCount}</b> sample{pluralSuffix} with {oncogenicInfo}{' '}\n mutations.\n <OncoKbSummaryTable\n usingPublicOncoKbInstance={usingPublicOncoKbInstance}\n data={tableData}\n />\n </span>\n );\n}\n\nexport function generateLevelData(indicatorData: IndicatorQueryResp[]) {\n const levels: { [level: string]: string[] } = {};\n\n indicatorData.forEach(indicator => {\n indicator.treatments.forEach(treatment => {\n const parts = treatment.level.split('_');\n const level = parts.length === 2 ? parts[1] : treatment.level;\n\n levels[level] = levels[level] || [];\n levels[level].push(\n getTumorTypeNameWithExclusionInfo(\n treatment.levelAssociatedCancerType,\n treatment.levelExcludedCancerTypes\n )\n );\n });\n });\n\n return _.keys(levels)\n .sort((a, b) =>\n LEVELS.all.indexOf(a) > LEVELS.all.indexOf(b) ? -1 : 1\n )\n .map(level => ({ level: level, tumorTypes: _.uniq(levels[level]) }));\n}\n\nexport const OncoKbTrackTooltip: React.FunctionComponent<OncoKbTrackTooltipProps> = props => {\n return props.indicatorData\n ? oncoKbTooltip(props.usingPublicOncoKbInstance, props.indicatorData)\n : null;\n};\n","import * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\n\nimport { OncoKbFilterValue } from '../../filter/OncoKbFilter';\nimport { DataFilterType } from '../../model/DataFilter';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { OncoKbTrackTooltip } from './OncoKbTrackTooltip';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\nimport { Mutation } from 'cbioportal-utils';\n\nimport oncoKbImg from 'oncokb-styles/dist/images/oncogenic.svg';\n\ntype OncoKbTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n};\n\nexport function getOncoKbImage() {\n return <img src={oncoKbImg} alt=\"OncoKB Oncogenic Symbol\" />;\n}\n\n@observer\nexport default class OncoKbTrack extends React.Component<OncoKbTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @computed get oncoKbSpecs(): TrackItemSpec[] {\n const filteredOncoKbDataByProteinPosStart = this.props.store\n .oncoKbDataByPosition;\n\n if (!_.isEmpty(filteredOncoKbDataByProteinPosStart)) {\n return _.keys(filteredOncoKbDataByProteinPosStart)\n .filter(position => Number(position) >= 0)\n .map(position => ({\n startCodon: Number(position),\n color: '#007FFF',\n tooltip: (\n <OncoKbTrackTooltip\n usingPublicOncoKbInstance={\n this.props.store.usingPublicOncoKbInstance\n }\n mutations={\n this.props.store.mutationsByPosition[\n Number(position)\n ]\n }\n indicatorData={\n filteredOncoKbDataByProteinPosStart[\n Number(position)\n ]\n }\n hugoGeneSymbol={\n this.props.store.gene.hugoGeneSymbol\n }\n />\n ),\n }));\n } else {\n return [];\n }\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginRight: 2 }}>{getOncoKbImage()}</span>\n OncoKB™\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n defaultFilters={[\n {\n type: DataFilterType.ONCOKB,\n values: [OncoKbFilterValue.Oncogenic],\n },\n ]}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.oncoKbSpecs}\n idClassPrefix={'onco-kb-'}\n />\n );\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\nimport {\n Mutation,\n ExonDatum,\n extractExonInformation,\n formatExonLocation,\n formatExonLength,\n} from 'cbioportal-utils';\nimport { EnsemblTranscript } from 'genome-nexus-ts-api-client';\n\ntype ExonTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n};\n\n@observer\nexport default class ExonTrack extends React.Component<ExonTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @computed get transcriptId(): string | undefined {\n return this.props.store.activeTranscript?.result;\n }\n\n @computed get transcript(): EnsemblTranscript | undefined {\n return this.transcriptId\n ? this.props.store.transcriptsByTranscriptId[this.transcriptId]\n : undefined;\n }\n\n @computed get chromosome(): string {\n return this.props.store.ensemblTranscriptLookUp.result?.body\n ?.seq_region_name;\n }\n\n @computed get genomeBuild(): string {\n return this.props.store.genomeBuild;\n }\n\n @computed get exonSpecs(): TrackItemSpec[] {\n if (!this.transcriptId || !this.transcript) {\n return [];\n }\n\n const exons = this.transcript!.exons;\n const utrs = this.transcript!.utrs || [];\n\n const exonInfo = exons\n ? extractExonInformation(exons, utrs, this.props.proteinLength)\n : undefined;\n\n const altColors = ['#007FFF', '#35BAF6'];\n\n return exonInfo\n ? exonInfo.map((exon: ExonDatum, index: number) => {\n const startCodon = exon.start;\n const endCodon = exon.start + exon.length;\n const exonStartLocation = formatExonLocation(\n startCodon,\n index\n );\n const exonEndLocation = formatExonLocation(endCodon);\n const exonLength = formatExonLength(exon.length);\n const link = this.chromosome\n ? `https://igv.org/app/?locus=chr${this.chromosome}:${exon.genomicLocationStart}-${exon.genomicLocationEnd}&genome=${this.genomeBuild}`\n : 'https://igv.org';\n const linkText = this.chromosome\n ? `${this.genomeBuild}:chr${this.chromosome}:${exon.genomicLocationStart} - ${exon.genomicLocationEnd}`\n : `${exon.genomicLocationStart} - ${exon.genomicLocationEnd}`;\n return {\n color: altColors[index % 2],\n startCodon: startCodon,\n endCodon: endCodon,\n label: exon.rank.toString(),\n labelColor: '#FFFFFF',\n tooltip: (\n <span>\n <h5> Exon {exon.rank} </h5>\n Start: Nucleotide{' '}\n <strong>\n {exonStartLocation.nucleotideLocation}\n </strong>{' '}\n of amino acid{' '}\n <strong>\n {exonStartLocation.aminoAcidLocation}\n </strong>\n <br></br>\n End: Nucleotide{' '}\n <strong>\n {exonEndLocation.nucleotideLocation}\n </strong>{' '}\n of amino acid{' '}\n <strong>\n {exonEndLocation.aminoAcidLocation}\n </strong>\n <br></br>\n Length:{' '}\n <strong>{exonLength.aminoAcidLength}</strong>{' '}\n amino acids{' '}\n {exonLength.nucleotideLength && (\n <>\n {' '}\n and{' '}\n <strong>\n {exonLength.nucleotideLength}\n </strong>{' '}\n nucleotides\n </>\n )}\n <br></br>\n Genomic location:\n {` `}\n <a\n target=\"_blank\"\n href={link}\n rel=\"noopener noreferrer\"\n >\n <>\n {linkText}\n {` `}\n <i className=\"fa fa-external-link\" />\n </>\n </a>\n </span>\n ),\n };\n })\n : [];\n }\n\n @computed get trackTitle() {\n return (\n <span>\n <span style={{ marginLeft: 16 }}></span>\n Exon\n </span>\n );\n }\n\n public render() {\n return (\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.trackTitle}\n trackItems={this.exonSpecs}\n idClassPrefix={'exon-'}\n />\n );\n }\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { Cache } from 'cbioportal-utils';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { ReferenceList } from 'oncokb-frontend-commons';\nimport 'oncokb-frontend-commons/dist/styles.css';\n\ntype PtmReferenceListProps = {\n pubmedIds: string[];\n pmidData: Cache;\n};\n\nfunction extractNumericalPart(pmid: string) {\n const matched = pmid.match(/[0-9]+/);\n\n if (matched) {\n return Number(matched[0]);\n } else {\n return undefined;\n }\n}\n\n@observer\nexport default class PtmReferenceList extends React.Component<\n PtmReferenceListProps,\n {}\n> {\n public render() {\n return (\n <DefaultTooltip\n placement=\"right\"\n overlay={\n <div\n style={{\n maxWidth: 400,\n maxHeight: 400,\n overflowY: 'auto',\n }}\n >\n <ReferenceList\n pmids={\n this.props.pubmedIds\n .map(id => extractNumericalPart(id))\n .filter(id => id !== undefined) as number[]\n }\n abstracts={[]}\n />\n </div>\n }\n destroyTooltipOnHide={true}\n >\n <div style={{ textAlign: 'right' }}>\n <i className=\"fa fa-book\" style={{ color: 'black' }} />\n </div>\n </DefaultTooltip>\n );\n }\n}\n","import _ from 'lodash';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport ReactTable, { Column } from 'react-table';\nimport { computed, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\n\nimport {\n Cache,\n MobxCache,\n PostTranslationalModification,\n} from 'cbioportal-utils';\n\nimport PtmReferenceList from './PtmReferenceList';\n\nexport type PtmSummaryTableProps = {\n data: PostTranslationalModification[];\n pubMedCache?: MobxCache;\n initialSortColumn?: string;\n initialSortDirection?: 'asc' | 'desc';\n initialItemsPerPage?: number;\n columnOverrides?: { [id: string]: Partial<Column> };\n};\n\nexport enum PtmAnnotationTableColumnId {\n POSITION = 'position',\n TYPE = 'type',\n DESCRIPTION = 'description',\n PUBMED_IDS = 'pubmedIds',\n}\n\nexport const PTM_ANNOTATION_DEFAULT_COLUMNS: { [id: string]: Column } = {\n [PtmAnnotationTableColumnId.POSITION]: {\n id: PtmAnnotationTableColumnId.POSITION,\n accessor: (ptm: PostTranslationalModification) => ptm.residue.start,\n Header: 'Residue',\n Cell: (props: { original: PostTranslationalModification }) => (\n <div style={{ textAlign: 'right' }}>\n {getResidue(props.original)}\n </div>\n ),\n maxWidth: 64,\n },\n [PtmAnnotationTableColumnId.TYPE]: {\n id: PtmAnnotationTableColumnId.TYPE,\n accessor: (ptm: PostTranslationalModification) => ptm.type,\n Header: 'Type',\n minWidth: 100,\n },\n [PtmAnnotationTableColumnId.DESCRIPTION]: {\n id: PtmAnnotationTableColumnId.DESCRIPTION,\n accessor: (ptm: PostTranslationalModification) => ptm.description,\n Header: 'Description',\n minWidth: 180,\n },\n [PtmAnnotationTableColumnId.PUBMED_IDS]: {\n id: PtmAnnotationTableColumnId.PUBMED_IDS,\n Header: '',\n sortable: false,\n maxWidth: 32,\n },\n};\n\nfunction getResidue(ptm: PostTranslationalModification): string {\n if (ptm.residue.end && ptm.residue.end > ptm.residue.start) {\n return `${ptm.residue.start}-${ptm.residue.end}`;\n } else {\n return ptm.residue.start.toString();\n }\n}\n\n@observer\nexport default class PtmAnnotationTable extends React.Component<\n PtmSummaryTableProps\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n data: [],\n initialSortColumn: 'type',\n initialSortDirection: 'asc',\n initialItemsPerPage: 10,\n };\n\n @computed\n get pmidData(): Cache {\n if (this.props.pubMedCache) {\n this.props.data.forEach(ptm =>\n (ptm.pubmedIds || []).forEach(id =>\n this.props.pubMedCache!.get(Number(id))\n )\n );\n }\n\n return (this.props.pubMedCache && this.props.pubMedCache.cache) || {};\n }\n\n @computed\n get columns(): Column[] {\n const columnOverrides = this.props.columnOverrides\n ? this.props.columnOverrides\n : {};\n return [\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.POSITION\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.POSITION],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.TYPE\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.TYPE],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.DESCRIPTION\n ],\n ...columnOverrides[PtmAnnotationTableColumnId.DESCRIPTION],\n },\n {\n ...PTM_ANNOTATION_DEFAULT_COLUMNS[\n PtmAnnotationTableColumnId.PUBMED_IDS\n ],\n Cell: this.pubmedCellRender,\n ...columnOverrides[PtmAnnotationTableColumnId.PUBMED_IDS],\n },\n ];\n }\n\n @computed\n public get pubmedCellRender() {\n let cellRenderFn: (props: {\n original: PostTranslationalModification;\n }) => JSX.Element | null;\n\n // we need to observe the observable this.pmidData here to trigger a new render cycle,\n // observing it inside the cellRenderFn does not work because it is handled by the table library\n if (!this.props.pubMedCache) {\n cellRenderFn = () => null;\n } else if (!_.isEmpty(this.pmidData)) {\n cellRenderFn = (props: {\n original: PostTranslationalModification;\n }) =>\n !_.isEmpty(props.original.pubmedIds) ? (\n <PtmReferenceList\n pmidData={this.pmidData}\n pubmedIds={props.original.pubmedIds || []}\n />\n ) : null;\n } else {\n cellRenderFn = (props: {\n original: PostTranslationalModification;\n }) =>\n !_.isEmpty(props.original.pubmedIds) ? (\n <i className=\"fa fa-spinner fa-pulse\" />\n ) : null;\n }\n\n return cellRenderFn;\n }\n\n public render() {\n const {\n data,\n initialSortColumn,\n initialSortDirection,\n initialItemsPerPage,\n } = this.props;\n\n const showPagination =\n data.length >\n (this.props.initialItemsPerPage ||\n PtmAnnotationTable.defaultProps.initialItemsPerPage);\n\n return (\n <div\n className={classnames(\n 'cbioportal-frontend',\n 'default-track-tooltip-table'\n )}\n >\n <ReactTable\n data={data}\n columns={this.columns}\n defaultSorted={[\n {\n id:\n initialSortColumn ||\n PtmAnnotationTable.defaultProps\n .initialSortColumn,\n desc: initialSortDirection === 'desc',\n },\n ]}\n defaultPageSize={\n data.length > initialItemsPerPage!\n ? initialItemsPerPage\n : data.length\n }\n showPagination={showPagination}\n showPaginationTop={true}\n showPaginationBottom={false}\n className=\"-striped -highlight\"\n previousText=\"<\"\n nextText=\">\"\n />\n </div>\n );\n }\n}\n","import * as React from 'react';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable, observable } from 'mobx';\nimport { Collapse } from 'react-collapse';\nimport { Column } from 'react-table';\nimport {\n DefaultTooltip,\n EllipsisTextTooltip,\n} from 'cbioportal-frontend-commons';\nimport {\n compareByPtmTypePriority,\n ptmColor,\n MobxCache,\n Mutation,\n PostTranslationalModification,\n} from 'cbioportal-utils';\n\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport PtmAnnotationTable from '../ptm/PtmAnnotationTable';\nimport { default as Track, TrackProps } from './Track';\nimport { TrackItemSpec } from './TrackItem';\n\nimport styles from './ptmTrackStyles.module.scss';\n\ntype PtmTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n pubMedCache?: MobxCache;\n ensemblTranscriptId?: string;\n subTrackMargin?: number;\n dataSource?: string;\n dataSourceUrl?: string;\n ptmTooltipColumnOverrides?: { [id: string]: Partial<Column> };\n collapsed?: boolean;\n};\n\nexport const PtmTooltip: React.FunctionComponent<{\n ptms: PostTranslationalModification[];\n pubMedCache?: MobxCache;\n columnOverrides?: { [id: string]: Partial<Column> };\n}> = props => {\n return (\n <PtmAnnotationTable\n data={props.ptms}\n pubMedCache={props.pubMedCache}\n columnOverrides={props.columnOverrides}\n />\n );\n};\n\nexport function ptmInfoTooltip(\n transcriptId?: string,\n dataSource?: string,\n dataSourceUrl?: string\n) {\n let dataSourceDiv = null;\n\n if (dataSource) {\n dataSourceDiv = (\n <div>\n Data Source:{' '}\n {dataSourceUrl ? (\n <a href={dataSourceUrl} target=\"_blank\">\n {dataSource}\n </a>\n ) : (\n dataSource\n )}\n </div>\n );\n }\n\n return (\n <div style={{ maxWidth: 400 }}>\n <p>\n Displays all Post Translational Modifications (PTMs) available\n {transcriptId && (\n <span> for the Ensembl transcript {transcriptId}</span>\n )}\n .\n </p>\n <p className={styles.ptmLegend}>\n PTM types and corresponding color codes are as follows:\n <ul>\n <li className={styles.Phosphorylation}>\n <strong>Phosphorylation</strong>\n </li>\n <li className={styles.Acetylation}>\n <strong>Acetylation</strong>\n </li>\n <li className={styles.Ubiquitination}>\n <strong>Ubiquitination</strong>\n </li>\n <li className={styles.Methylation}>\n <strong>Methylation</strong>\n </li>\n <li className={styles.multiType}>\n <strong>Multiple Type</strong>: Sites with more than one\n PTM type\n </li>\n <li className={styles.default}>\n <strong>Other</strong>: All other PTM types\n </li>\n </ul>\n </p>\n {dataSourceDiv}\n </div>\n );\n}\n\nfunction filterPtmsBySource(\n ptms: PostTranslationalModification[],\n source?: string\n): PostTranslationalModification[] {\n return source ? ptms.filter(ptm => ptm.source === source) : ptms;\n}\n\n@observer\nexport default class PtmTrack extends React.Component<PtmTrackProps, {}> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n subTrackMargin: 25,\n };\n\n @observable\n private expanded = !this.props.collapsed;\n\n @computed get ptmSpecs(): TrackItemSpec[] {\n const ptmDataByProteinPosStart = this.props.store\n .ptmDataByProteinPosStart.result;\n\n if (ptmDataByProteinPosStart && !_.isEmpty(ptmDataByProteinPosStart)) {\n return _.reduce(\n ptmDataByProteinPosStart,\n this.ptmDataToTrackItemSpecsReducer,\n []\n );\n } else {\n return [];\n }\n }\n\n @computed get ptmSubSpecs(): { title: string; specs: TrackItemSpec[] }[] {\n const ptmDataByTypeAndProteinPosStart = this.props.store\n .ptmDataByTypeAndProteinPosStart.result;\n\n if (\n ptmDataByTypeAndProteinPosStart &&\n !_.isEmpty(ptmDataByTypeAndProteinPosStart)\n ) {\n return _.keys(ptmDataByTypeAndProteinPosStart)\n .sort(compareByPtmTypePriority)\n .map(type => ({\n title: type,\n specs: _.reduce(\n ptmDataByTypeAndProteinPosStart[type],\n this.ptmDataToTrackItemSpecsReducer,\n []\n ),\n }))\n .filter(s => !_.isEmpty(s.specs));\n } else {\n return [];\n }\n }\n\n @computed get mainTrackTitle() {\n return (\n <span style={{ cursor: 'pointer' }}>\n <span onClick={this.handleToggleExpand}>{this.expander}</span>\n <DefaultTooltip\n placement=\"left\"\n overlay={() =>\n ptmInfoTooltip(\n this.props.ensemblTranscriptId,\n this.props.dataSource,\n this.props.dataSourceUrl\n )\n }\n destroyTooltipOnHide={true}\n >\n <span\n style={{ marginLeft: 4 }}\n onClick={this.handleToggleExpand}\n >\n PTM{' '}\n {this.props.dataSource\n ? `(${this.props.dataSource})`\n : 'Sites'}{' '}\n <i className=\"fa fa-info-circle\" />\n </span>\n </DefaultTooltip>\n </span>\n );\n }\n\n @computed get expander(): JSX.Element | null {\n const className = this.hasSubTracks\n ? this.mainTrackHidden\n ? 'fa fa-caret-down'\n : 'fa fa-caret-right'\n : null;\n\n if (className) {\n return (\n <i className={className} style={{ width: 10, marginLeft: 2 }} />\n );\n }\n\n return null;\n }\n\n @computed get subTrackMargin() {\n return (\n this.props.subTrackMargin || PtmTrack.defaultProps.subTrackMargin\n );\n }\n\n @computed get subTrackTitleWidth() {\n return this.props.xOffset\n ? this.props.xOffset - this.subTrackMargin\n : 0;\n }\n\n @computed get subTracks() {\n return this.hasSubTracks\n ? this.ptmSubSpecs.map((item, index) => (\n <Track\n key={item.title}\n dataStore={this.props.dataStore}\n xOffset={this.props.xOffset}\n trackTitle={\n <span\n style={{\n marginLeft: this.subTrackMargin,\n width: this.subTrackTitleWidth,\n display: 'flex',\n }}\n >\n <EllipsisTextTooltip\n text={item.title}\n style={{\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n />\n </span>\n }\n width={this.props.width}\n proteinLength={this.props.proteinLength}\n trackItems={item.specs}\n idClassPrefix={`ptm-${index}-`}\n isSubTrack={true}\n />\n ))\n : null;\n }\n\n @computed get mainTrackHidden() {\n return this.expanded && this.hasSubTracks;\n }\n\n @computed get hasSubTracks() {\n return this.ptmSubSpecs.length > 0;\n }\n\n public render() {\n return (\n <span>\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.mainTrackTitle}\n trackItems={this.mainTrackHidden ? [] : this.ptmSpecs}\n hideBaseline={this.mainTrackHidden}\n idClassPrefix={'ptm-'}\n />\n <Collapse isOpened={this.mainTrackHidden}>\n <span>{this.subTracks}</span>\n </Collapse>\n </span>\n );\n }\n\n private ptmDataToTrackItemSpecsReducer = (\n acc: TrackItemSpec[],\n ptmData: PostTranslationalModification[],\n position: string\n ): TrackItemSpec[] => {\n const ptms =\n Number(position) >= 0\n ? filterPtmsBySource(ptmData, this.props.dataSource)\n : [];\n\n if (!_.isEmpty(ptms)) {\n acc.push({\n startCodon: Number(position),\n color: ptmColor(ptms),\n tooltip: (\n <PtmTooltip\n ptms={ptms}\n pubMedCache={this.props.pubMedCache}\n columnOverrides={this.props.ptmTooltipColumnOverrides}\n />\n ),\n });\n }\n\n return acc;\n };\n\n @action.bound\n private handleToggleExpand() {\n this.expanded = !this.expanded;\n }\n}\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport { action, computed, makeObservable, observable } from 'mobx';\n\nimport { default as Track, TrackProps } from './Track';\nimport { Collapse } from 'react-collapse';\nimport { TrackItemSpec } from './TrackItem';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport {\n Mutation,\n UniprotTopology,\n UniprotTopologyTypeToTitle,\n UniprotTopologyTrackToColor,\n} from 'cbioportal-utils';\n\nimport {\n DefaultTooltip,\n EllipsisTextTooltip,\n} from 'cbioportal-frontend-commons';\n\ntype UniprotTopologyTrackProps = TrackProps & {\n store: MutationMapperStore<Mutation>;\n subTrackMargin?: number;\n collapsed?: boolean;\n};\n\nfunction topologyRectangleBlockSpec(\n color: string,\n title: string,\n uniprotData: UniprotTopology\n) {\n return {\n color: color,\n startCodon: uniprotData.startPosition,\n endCodon: uniprotData.endPosition,\n tooltip: (\n <span>\n <h5>{title}</h5>\n Start: {uniprotData.startPosition}\n <br></br>\n End: {uniprotData.endPosition}\n <br></br>\n Length: {uniprotData.endPosition - uniprotData.startPosition}\n <br></br>\n Description: {uniprotData.description}\n </span>\n ),\n };\n}\n\nexport const UniprotTopologyTrackDescriptionTooltip: React.FunctionComponent<{\n displayList: string[];\n uniprotId?: string;\n}> = props => {\n const dataSourceDiv = props.uniprotId ? (\n <div>\n Data Source:{' '}\n <a\n href={`https://www.uniprot.org/uniprot/${props.uniprotId}`}\n target=\"_blank\"\n >\n UniProt\n </a>\n </div>\n ) : (\n <div>\n Data Source:{' '}\n <a href={'https://www.uniprot.org/'} target=\"_blank\">\n UniProt\n </a>\n </div>\n );\n return (\n <div style={{ maxWidth: 400 }}>\n <p>\n Information of the subcellular location of the mature protein.\n </p>\n {props.displayList.length > 0 && (\n <p>\n Domains and corresponding color codes are as follows:\n <ul>\n {_.map(props.displayList, type => (\n <li\n style={{\n color: UniprotTopologyTrackToColor[type],\n }}\n >\n <strong>\n {UniprotTopologyTypeToTitle[type]}\n </strong>\n </li>\n ))}\n </ul>\n </p>\n )}\n {dataSourceDiv}\n </div>\n );\n};\n\n@observer\nexport default class UniprotTopologyTrack extends React.Component<\n UniprotTopologyTrackProps,\n {}\n> {\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n public static defaultProps = {\n subTrackMargin: 25,\n };\n\n @observable\n private expanded = !this.props.collapsed;\n\n @computed get subTrackMargin() {\n return (\n this.props.subTrackMargin ||\n UniprotTopologyTrack.defaultProps.subTrackMargin\n );\n }\n\n @computed get subTrackTitleWidth() {\n return this.props.xOffset\n ? this.props.xOffset - this.subTrackMargin\n : 0;\n }\n\n @computed get uniprotTopologySpecs(): TrackItemSpec[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n if (uniprotData && !_.isEmpty(uniprotData)) {\n return _.reduce(\n uniprotData,\n this.uniprotDataToTrackItemSpecsReducer,\n []\n );\n } else {\n return [];\n }\n }\n\n @computed get expander(): JSX.Element | null {\n const className = this.hasSubTracks\n ? this.mainTrackHidden\n ? 'fa fa-caret-down'\n : 'fa fa-caret-right'\n : null;\n\n if (className) {\n return (\n <i className={className} style={{ width: 10, marginLeft: 2 }} />\n );\n }\n return null;\n }\n\n @computed get mainTrackTitle() {\n return (\n <span style={{ cursor: 'pointer' }}>\n <span onClick={this.handleToggleExpand}>{this.expander}</span>\n <DefaultTooltip\n placement=\"right\"\n overlay={\n <UniprotTopologyTrackDescriptionTooltip\n displayList={this.uniprotTopologyTypes}\n uniprotId={this.props.store.uniprotId.result}\n />\n }\n destroyTooltipOnHide={true}\n >\n <span\n style={{ marginLeft: 4 }}\n onClick={this.handleToggleExpand}\n >\n Topology <i className=\"fa fa-info-circle\" />\n </span>\n </DefaultTooltip>\n </span>\n );\n }\n\n @computed get uniprotTopologyTypes(): string[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n const uniprotDataByType = _.uniq(_.map(uniprotData, data => data.type));\n return uniprotDataByType || [];\n }\n\n @computed get uniprotTopologySubSpecs(): {\n title: string;\n specs: TrackItemSpec[];\n }[] {\n const uniprotData = this.props.store.uniprotTopologyData.result;\n const uniprotDataByType = _.groupBy(uniprotData, data => data.type);\n return _.keys(uniprotDataByType)\n .map(type => ({\n title: UniprotTopologyTypeToTitle[type],\n specs: _.reduce(\n uniprotDataByType[type],\n this.uniprotDataToTrackItemSpecsReducer,\n []\n ),\n }))\n .filter(s => !_.isEmpty(s.specs));\n }\n\n private uniprotDataToTrackItemSpecsReducer = (\n acc: TrackItemSpec[],\n uniprotData: UniprotTopology\n ): TrackItemSpec[] => {\n const trackColor = UniprotTopologyTrackToColor[uniprotData.type];\n const trackTitle = UniprotTopologyTypeToTitle[uniprotData.type];\n\n if (trackTitle && trackColor) {\n acc.push(\n topologyRectangleBlockSpec(trackColor, trackTitle, uniprotData)\n );\n }\n return acc;\n };\n\n @computed get mainTrackHidden() {\n return this.expanded && this.hasSubTracks;\n }\n\n @computed get hasSubTracks() {\n return this.uniprotTopologySubSpecs.length > 0;\n }\n\n @computed get subTracks() {\n return this.hasSubTracks\n ? this.uniprotTopologySubSpecs.map((item, index) => (\n <Track\n key={item.title}\n dataStore={this.props.dataStore}\n xOffset={this.props.xOffset}\n trackTitle={\n <span\n style={{\n marginLeft: this.subTrackMargin,\n width: this.subTrackTitleWidth,\n display: 'flex',\n }}\n >\n <EllipsisTextTooltip\n text={item.title}\n style={{\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n }}\n />\n </span>\n }\n width={this.props.width}\n proteinLength={this.props.proteinLength}\n trackItems={item.specs}\n idClassPrefix={`uniprot-topology-${index}-`}\n isSubTrack={true}\n />\n ))\n : null;\n }\n\n public render() {\n return (\n <span>\n <Track\n dataStore={this.props.dataStore}\n width={this.props.width}\n xOffset={this.props.xOffset}\n proteinLength={this.props.proteinLength}\n trackTitle={this.mainTrackTitle}\n trackItems={\n this.mainTrackHidden ? [] : this.uniprotTopologySpecs\n }\n hideBaseline={this.mainTrackHidden}\n idClassPrefix={'uniprot-topology-track-'}\n />\n <Collapse isOpened={this.mainTrackHidden}>\n <span>{this.subTracks}</span>\n </Collapse>\n </span>\n );\n }\n\n @action.bound\n private handleToggleExpand() {\n this.expanded = !this.expanded;\n }\n}\n","import * as React from 'react';\nimport { observer } from 'mobx-react';\nimport { computed, makeObservable } from 'mobx';\nimport {\n MobxCache,\n Mutation,\n PTM_SOURCE_URL,\n PtmSource,\n} from 'cbioportal-utils';\n\nimport MutationMapperStore from '../../model/MutationMapperStore';\nimport { TrackName, TrackVisibility } from './TrackSelector';\nimport HotspotTrack from './HotspotTrack';\nimport OncoKbTrack from './OncoKbTrack';\nimport ExonTrack from './ExonTrack';\nimport PtmTrack from './PtmTrack';\n\nimport './defaultTrackTooltipTable.scss';\nimport { PtmAnnotationTableColumnId } from '../ptm/PtmAnnotationTable';\nimport UniprotTopologyTrack from './UniprotTopologyTrack';\n\ntype TrackPanelProps = {\n store: MutationMapperStore<Mutation>;\n pubMedCache?: MobxCache;\n geneWidth: number;\n proteinLength?: number;\n geneXOffset?: number;\n maxHeight?: number;\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\n@observer\nexport default class TrackPanel extends React.Component<TrackPanelProps, {}> {\n public static defaultProps: Partial<TrackPanelProps> = {\n tracks: [\n TrackName.CancerHotspots,\n TrackName.OncoKB,\n TrackName.dbPTM,\n TrackName.Exon,\n TrackName.UniprotTopology,\n ],\n };\n\n constructor(props: TrackPanelProps) {\n super(props);\n makeObservable(this);\n }\n\n @computed get proteinLength() {\n const proteinLength = this.props.proteinLength || 0;\n return Math.max(proteinLength, 1);\n }\n\n get availableTracks(): { [trackName: string]: JSX.Element | null } {\n return {\n [TrackName.CancerHotspots]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.CancerHotspots] ===\n 'visible' ? (\n <HotspotTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n hotspotIndex={\n this.props.store.indexedHotspotData.result || {}\n }\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.OncoKB]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.OncoKB] === 'visible' ? (\n <OncoKbTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.dbPTM]: this.getPtmTrack(\n TrackName.dbPTM,\n PtmSource.dbPTM\n ),\n [TrackName.UniprotPTM]: this.getPtmTrack(\n TrackName.UniprotPTM,\n PtmSource.Uniprot\n ),\n [TrackName.Exon]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.Exon] === 'visible' ? (\n <ExonTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n />\n ) : null,\n [TrackName.UniprotTopology]:\n !this.props.trackVisibility ||\n this.props.trackVisibility[TrackName.UniprotTopology] ===\n 'visible' ? (\n <UniprotTopologyTrack\n store={this.props.store}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n collapsed={this.props.collapseUniprotTopologyTrack}\n />\n ) : null,\n };\n }\n\n public render() {\n return (\n <div\n style={{\n overflowY: 'hidden',\n maxHeight: this.props.maxHeight,\n position: 'relative',\n }}\n data-test=\"AnnotationTracks\"\n >\n {this.props\n .tracks!.map(t => this.availableTracks[t])\n .filter(e => e !== undefined && e !== null)}\n </div>\n );\n }\n\n private getPtmTrack(trackName: TrackName, ptmSource: PtmSource) {\n return !this.props.trackVisibility ||\n this.props.trackVisibility[trackName] === 'visible' ? (\n <PtmTrack\n store={this.props.store}\n pubMedCache={this.props.pubMedCache}\n ensemblTranscriptId={this.props.store.activeTranscript?.result}\n dataStore={this.props.store.dataStore}\n width={this.props.geneWidth}\n xOffset={this.props.geneXOffset}\n proteinLength={this.proteinLength}\n dataSource={ptmSource}\n dataSourceUrl={PTM_SOURCE_URL[ptmSource]}\n ptmTooltipColumnOverrides={this.getPtmTooltipColumnOverrides(\n ptmSource\n )}\n collapsed={this.props.collapsePtmTrack}\n />\n ) : null;\n }\n\n private getPtmTooltipColumnOverrides(ptmSource: PtmSource) {\n if (ptmSource === PtmSource.dbPTM) {\n // hide description column for dbPTM, we don't have description data.\n return {\n [PtmAnnotationTableColumnId.DESCRIPTION]: {\n show: false,\n },\n };\n } else {\n return undefined;\n }\n }\n}\n","import { PfamDomain, PfamDomainRange } from 'genome-nexus-ts-api-client';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\n\nimport { MobxCache } from 'cbioportal-utils';\n\nexport interface IDomainTooltipProps {\n mutationAlignerCache?: MobxCache<string>;\n range: PfamDomainRange;\n domain: PfamDomain | undefined;\n pfamDomainId: string;\n}\n\ninterface IMutationAlignerLinkProps {\n mutationAlignerCache?: MobxCache<string>;\n pfamAccession: string;\n}\n\nconst MutationAlignerLink = observer((props: IMutationAlignerLinkProps) => {\n function getMutationAlignerCacheData(pfamAccession: string) {\n return props.mutationAlignerCache && props.mutationAlignerCache.cache\n ? props.mutationAlignerCache.cache[pfamAccession]\n : null;\n }\n\n if (props.mutationAlignerCache) {\n props.mutationAlignerCache.get(props.pfamAccession);\n }\n\n const mutationAlignerCacheData = getMutationAlignerCacheData(\n props.pfamAccession\n );\n\n return mutationAlignerCacheData &&\n mutationAlignerCacheData.status === 'complete' &&\n mutationAlignerCacheData.data ? (\n <a href={mutationAlignerCacheData.data} target=\"_blank\">\n Mutation Aligner\n </a>\n ) : null;\n});\n\nconst DomainTooltip = (props: IDomainTooltipProps) => {\n const { range, domain, pfamDomainId } = props;\n\n const pfamAccession = domain ? domain.pfamAccession : pfamDomainId;\n\n // if no domain info, then just display the accession\n const domainInfo = domain\n ? `${domain.name}: ${domain.description}`\n : pfamAccession;\n\n return (\n <div style={{ maxWidth: 200 }}>\n <div>\n {domainInfo} ({range.pfamDomainStart} - {range.pfamDomainEnd})\n </div>\n <div>\n <a\n style={{ marginRight: '5px' }}\n href={`http://pfam.xfam.org/family/${pfamAccession}`}\n target=\"_blank\"\n >\n PFAM\n </a>\n <MutationAlignerLink\n mutationAlignerCache={props.mutationAlignerCache}\n pfamAccession={pfamAccession}\n />\n </div>\n </div>\n );\n};\n\nexport default DomainTooltip;\n","import autobind from 'autobind-decorator';\nimport { MobxCache, Mutation } from 'cbioportal-utils';\nimport { PfamDomain, PfamDomainRange } from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport { action, computed, observable, makeObservable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { Collapse } from 'react-collapse';\n\nimport $ from 'jquery';\n\nimport { DomainSpec } from '../../model/DomainSpec';\nimport { LollipopPlotControlsConfig } from '../../model/LollipopPlotControlsConfig';\nimport {\n LollipopLabel,\n LollipopPlacement,\n LollipopSpec,\n} from '../../model/LollipopSpec';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport { SequenceSpec } from '../../model/SequenceSpec';\nimport { DefaultLollipopPlotControlsConfig } from '../../store/DefaultLollipopPlotControlsConfig';\nimport {\n byMiddlemostPosition,\n byMutationCount,\n byWhetherExistsInADomain,\n calcCountRange,\n calcYMaxInput,\n getYAxisMaxInputValue,\n lollipopLabelText,\n lollipopLabelTextAnchor,\n} from '../../util/LollipopPlotUtils';\nimport {\n DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n getColorForProteinImpactType,\n} from '../../util/MutationTypeUtils';\nimport { generatePfamDomainColorMap } from '../../util/PfamUtils';\nimport { initDefaultTrackVisibility } from '../../util/TrackUtils';\nimport DefaultLollipopPlotLegend from './DefaultLollipopPlotLegend';\nimport LollipopPlot from '../lollipopPlot/LollipopPlot';\nimport LollipopMutationPlotControls from './LollipopMutationPlotControls';\nimport {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\nimport TrackPanel from '../track/TrackPanel';\n\nimport './lollipopMutationPlot.scss';\nimport DomainTooltip from '../lollipopPlot/DomainTooltip';\nimport { AxisScale } from './AxisScaleSwitch';\n\nconst DEFAULT_PROTEIN_LENGTH = 10;\n\nconst SVG_NS = 'http://www.w3.org/2000/svg';\nfunction createTextTag(\n textNode?: Text,\n style: string = '',\n x: number = 0,\n y: number = 0\n) {\n const text = (document.createElementNS(\n SVG_NS,\n 'text'\n ) as unknown) as SVGTextElement;\n $(text).attr({ style, x, y });\n if (textNode) {\n text.append(textNode);\n }\n return text;\n}\n\nfunction createGroupTag(transform?: string) {\n const group = (document.createElementNS(\n SVG_NS,\n 'g'\n ) as unknown) as SVGGElement;\n group.setAttribute('transform', transform || '');\n return group;\n}\n\nexport type LollipopMutationPlotProps<T extends Mutation> = {\n store: MutationMapperStore<T>;\n controlsConfig?: LollipopPlotControlsConfig;\n pubMedCache?: MobxCache;\n mutationAlignerCache?: MobxCache<string>;\n getLollipopColor?: (mutations: Partial<T>[]) => string;\n isPutativeDriver?: (mutation: Partial<T>) => boolean;\n getMutationCount?: (mutation: Partial<T>) => number;\n topYAxisSymbol?: string;\n bottomYAxisSymbol?: string;\n topYAxisDefaultMax?: number;\n topYAxisDefaultMin?: number;\n yMaxFractionDigits?: number;\n yMaxLabelPostfix?: string;\n showYAxis?: boolean;\n yAxisSameScale?: boolean;\n bottomYAxisDefaultMax?: number;\n bottomYAxisDefaultMin?: number;\n yAxisLabelPadding?: number;\n lollipopTooltipCountInfo?: (\n count: number,\n mutations?: Partial<T>[],\n axisMode?: AxisScale,\n group?: string\n ) => JSX.Element;\n yAxisLabelFormatter?: (symbol?: string, groupName?: string) => string;\n axisMode?: AxisScale;\n onScaleToggle?: (selectedScale: AxisScale) => void;\n customControls?: JSX.Element;\n onXAxisOffset?: (offset: number) => void;\n geneWidth: number;\n vizHeight?: number;\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n trackDataStatus?: TrackDataStatus;\n showTrackSelector?: boolean;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n autoHideControls?: boolean;\n showYMaxSlider?: boolean;\n showLegendToggle?: boolean;\n showDownloadControls?: boolean;\n showPercentToggle?: boolean;\n filterResetPanel?: JSX.Element;\n legend?: JSX.Element;\n loadingIndicator?: JSX.Element;\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\n@observer\nexport default class LollipopMutationPlot<\n T extends Mutation\n> extends React.Component<LollipopMutationPlotProps<T>, {}> {\n public static defaultProps: Partial<LollipopMutationPlotProps<any>> = {\n yMaxFractionDigits: 1,\n yAxisSameScale: true,\n };\n\n @observable private mouseInPlot: boolean = true;\n @observable private yMaxInputFocused: boolean = false;\n @observable private geneXOffset: number;\n @observable\n private _trackVisibility: TrackVisibility = initDefaultTrackVisibility();\n\n private _controlsConfig: LollipopPlotControlsConfig = new DefaultLollipopPlotControlsConfig();\n\n private handlers: any;\n private divContainer: HTMLDivElement;\n\n @computed private get showControls(): boolean {\n return this.props.autoHideControls\n ? this.yMaxInputFocused || this.mouseInPlot\n : true;\n }\n\n @computed private get trackVisibility(): TrackVisibility {\n return this.props.trackVisibility || this._trackVisibility;\n }\n\n @computed private get controlsConfig(): LollipopPlotControlsConfig {\n return this.props.controlsConfig || this._controlsConfig;\n }\n\n private lollipopTooltip(\n mutationsAtPosition: T[],\n countsByPosition: { [pos: number]: number },\n group?: string\n ): JSX.Element {\n const codon = mutationsAtPosition[0].proteinPosStart;\n const count = countsByPosition[codon];\n const countInfo = this.props.lollipopTooltipCountInfo ? (\n this.props.lollipopTooltipCountInfo(\n count,\n mutationsAtPosition,\n this.props.axisMode,\n group\n )\n ) : (\n <strong>\n {count} mutation{`${count !== 1 ? 's' : ''}`}\n </strong>\n );\n const label = lollipopLabelText(mutationsAtPosition);\n\n return (\n <div data-test={`tooltip-${codon}${group ? `-${group}` : ''}`}>\n {countInfo}\n <br />\n <span>AA Change: {label}</span>\n </div>\n );\n }\n\n @computed\n protected get groups(): string[] | undefined {\n if (this.props.store.groupedMutationsByPosition.length > 0) {\n return this.props.store.groupedMutationsByPosition.map(\n g => g.group\n );\n } else {\n return undefined;\n }\n }\n\n @computed\n protected get lollipops(): LollipopSpec[] {\n let lollipops: LollipopSpec[] = [];\n\n // ignore grouped mutations with less than 2 groups\n // also ignore other groups except first and second\n if (this.props.store.groupedMutationsByPosition.length > 1) {\n const groupTop = this.props.store.groupedMutationsByPosition[0]\n .group;\n const mutationsTop = this.props.store.groupedMutationsByPosition[0]\n .mutations;\n const countsTop = this.props.store\n .uniqueGroupedMutationCountsByPosition[0].counts;\n lollipops = this.getLollipopSpecs(\n mutationsTop,\n countsTop,\n groupTop,\n LollipopPlacement.TOP\n );\n\n const groupBottom = this.props.store.groupedMutationsByPosition[1]\n .group;\n const mutationsBottom = this.props.store\n .groupedMutationsByPosition[1].mutations;\n const countsBottom = this.props.store\n .uniqueGroupedMutationCountsByPosition[1].counts;\n lollipops = lollipops.concat(\n this.getLollipopSpecs(\n mutationsBottom,\n countsBottom,\n groupBottom,\n LollipopPlacement.BOTTOM\n )\n );\n } else if (\n Object.keys(this.props.store.mutationsByPosition).length > 0\n ) {\n return this.getLollipopSpecs(\n this.props.store.mutationsByPosition,\n this.props.store.uniqueMutationCountsByPosition\n );\n }\n\n return lollipops;\n }\n\n protected getLollipopSpecs(\n mutationsByPosition: { [pos: number]: T[] },\n countsByPosition: { [pos: number]: number },\n group?: string,\n placement?: LollipopPlacement\n ): LollipopSpec[] {\n // positionMutations: Mutation[][], in descending order of mutation count\n const positionMutations = Object.keys(mutationsByPosition)\n .map(position => mutationsByPosition[parseInt(position, 10)])\n .sort((x, y) =>\n countsByPosition[x[0].proteinPosStart] <\n countsByPosition[y[0].proteinPosStart]\n ? 1\n : -1\n );\n\n const specs: LollipopSpec[] = this.createInitialSpecs(\n positionMutations,\n countsByPosition,\n group,\n placement\n );\n const noLabelsAreShown =\n !_.isEmpty(specs) && specs.every(spec => !spec.label!.show);\n if (noLabelsAreShown) {\n this.labelOneLollipopByDefault(\n this.getRemainingDomains(positionMutations),\n specs\n );\n }\n\n return specs;\n }\n\n private createInitialSpecs(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number },\n group?: string,\n placement?: LollipopPlacement\n ): LollipopSpec[] {\n const specs: LollipopSpec[] = [];\n const numLabelsToShow = this.getNumLabelsToShow(\n positionMutations,\n countsByPosition\n );\n const minMutationsToShowLabel = 0;\n\n positionMutations.forEach((mutations, index) => {\n const codon = mutations[0].proteinPosStart;\n if (this.isInvalidPosition(codon)) {\n return;\n }\n\n const mutationCount = countsByPosition[codon];\n const showLabel =\n index < numLabelsToShow &&\n mutationCount > minMutationsToShowLabel;\n const label = this.createLabel(mutations, codon, showLabel);\n\n specs.push({\n codon,\n group,\n placement,\n count: mutationCount,\n tooltip: this.lollipopTooltip(\n mutations,\n countsByPosition,\n group\n ),\n color: this.props.getLollipopColor\n ? this.props.getLollipopColor(mutations)\n : getColorForProteinImpactType(\n mutations,\n DEFAULT_PROTEIN_IMPACT_TYPE_COLORS,\n this.props.getMutationCount,\n this.props.isPutativeDriver\n ),\n label,\n });\n });\n\n return specs;\n }\n\n private getNumLabelCandidates(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number }\n ): number {\n // maxCount: max number of mutations at a position\n const maxCount =\n positionMutations && positionMutations[0]\n ? countsByPosition[positionMutations[0][0].proteinPosStart]\n : 0;\n\n // numLabelCandidates: number of positions with maxCount mutations\n let numLabelCandidates = positionMutations\n ? positionMutations.findIndex(\n mutations =>\n countsByPosition[mutations[0].proteinPosStart] !==\n maxCount\n )\n : -1;\n\n if (numLabelCandidates === -1) {\n numLabelCandidates = positionMutations\n ? positionMutations.length\n : 0;\n }\n return numLabelCandidates;\n }\n\n private labelOneLollipopByDefault(\n remainingDomains: PfamDomainRange[],\n specs: LollipopSpec[]\n ): void {\n const codons = specs.map(spec => spec.codon);\n const averageCodon = (Math.max(...codons) + Math.min(...codons)) / 2;\n const candidateIndex = 0;\n specs = specs\n .sort(byMiddlemostPosition(averageCodon))\n .sort(byWhetherExistsInADomain(remainingDomains))\n .sort(byMutationCount);\n specs[candidateIndex].label!.show = true;\n }\n\n private getNumLabelsToShow(\n positionMutations: T[][],\n countsByPosition: { [pos: number]: number }\n ): number {\n let numLabelCandidates = this.getNumLabelCandidates(\n positionMutations,\n countsByPosition\n );\n\n const maxAllowedTies = 2;\n const maxLabels = 1;\n\n const areMoreCandidatesThanShowable = numLabelCandidates > maxLabels;\n const areMoreCandidatesThanAllowedForATie =\n numLabelCandidates > maxAllowedTies;\n const shouldNotShowLabels =\n areMoreCandidatesThanShowable &&\n areMoreCandidatesThanAllowedForATie;\n\n return shouldNotShowLabels\n ? 0\n : Math.min(numLabelCandidates, maxLabels);\n }\n\n private isInvalidPosition(codon: number): boolean | '' | undefined {\n const notInDomain = isNaN(codon) || codon < 0;\n const isBeyondStopCodon =\n this.props.store.allTranscripts.isComplete &&\n this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.isComplete &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n // we want to show the stop codon too (so we allow proteinLength +1 as well)\n codon >\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].proteinLength +\n 1;\n\n return notInDomain || isBeyondStopCodon;\n }\n\n private getRemainingDomains(positionMutations: T[][]): PfamDomainRange[] {\n if (\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length !== 0\n ) {\n const pfamDomains = this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript!.result!\n ].pfamDomains;\n\n const domainHasMutations = (domain: PfamDomainRange) =>\n positionMutations.some(mutation => {\n const codon = mutation[0].proteinPosStart;\n return (\n codon >= domain.pfamDomainStart &&\n codon <= domain.pfamDomainEnd\n );\n });\n\n return pfamDomains.filter(domainHasMutations);\n }\n\n return [];\n }\n\n private createLabel(\n mutations: T[],\n codon: number,\n show: boolean\n ): LollipopLabel {\n const fontSize = 10;\n const fontFamily = 'arial';\n // limit number of protein changes to 3\n const text = lollipopLabelText(mutations, 3);\n const textAnchor = lollipopLabelTextAnchor(\n text,\n codon,\n fontFamily,\n fontSize,\n this.props.geneWidth,\n this.proteinLength\n );\n\n return {\n text,\n textAnchor,\n fontSize,\n fontFamily,\n show,\n };\n }\n\n @computed private get domains(): DomainSpec[] {\n if (\n !this.props.store.pfamDomainData.isComplete ||\n !this.props.store.pfamDomainData.result ||\n this.props.store.pfamDomainData.result.length === 0 ||\n !this.props.store.allTranscripts.isComplete ||\n !this.props.store.allTranscripts.result ||\n !(\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.isComplete\n ) ||\n !this.props.store.activeTranscript.result ||\n !this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] ||\n !this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains ||\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length === 0\n ) {\n return [];\n } else {\n return this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.map((range: PfamDomainRange) => {\n const domain = this.domainMap[range.pfamDomainId];\n return {\n startCodon: range.pfamDomainStart,\n endCodon: range.pfamDomainEnd,\n label: domain ? domain.name : range.pfamDomainId,\n color: this.domainColorMap[range.pfamDomainId],\n tooltip: (\n <DomainTooltip\n range={range}\n domain={domain}\n pfamDomainId={range.pfamDomainId}\n mutationAlignerCache={\n this.props.mutationAlignerCache\n }\n />\n ),\n };\n });\n }\n }\n\n @computed private get domainColorMap(): {\n [pfamAccession: string]: string;\n } {\n if (\n !this.props.store.allTranscripts.isPending &&\n this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n !this.props.store.activeTranscript.isPending &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains.length > 0\n ) {\n return generatePfamDomainColorMap(\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].pfamDomains\n );\n } else {\n return {};\n }\n }\n\n @computed private get domainMap(): { [pfamAccession: string]: PfamDomain } {\n if (\n !this.props.store.pfamDomainData.isPending &&\n this.props.store.pfamDomainData.result &&\n this.props.store.pfamDomainData.result.length > 0\n ) {\n return _.keyBy(\n this.props.store.pfamDomainData.result,\n 'pfamAccession'\n );\n } else {\n return {};\n }\n }\n\n private get proteinLength(): number {\n return (\n (this.props.store.allTranscripts.result &&\n this.props.store.activeTranscript &&\n this.props.store.activeTranscript.result &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ] &&\n this.props.store.transcriptsByTranscriptId[\n this.props.store.activeTranscript.result\n ].proteinLength) ||\n // Math.round(this.props.store.gene.length / 3);\n DEFAULT_PROTEIN_LENGTH\n );\n }\n\n private sequenceTooltip(): JSX.Element {\n return (\n <div style={{ maxWidth: 200 }}>\n <a\n href={`https://www.uniprot.org/uniprot/${this.props.store.uniprotId.result}`}\n target=\"_blank\"\n >\n {this.props.store.uniprotId.result}\n </a>\n </div>\n );\n }\n\n @computed private get sequence(): SequenceSpec {\n return {\n tooltip: this.sequenceTooltip(),\n };\n }\n\n @autobind\n private getSVG(): SVGElement {\n let lollipopSvg: SVGElement = $(this.divContainer).find(\n '.lollipop-svgnode'\n )[0] as any;\n\n const TEXT_STYLE = 'font-size: 12px; font-family:Arial;';\n const TRACK_INDENT = 16;\n const SUBTRACK_INDENT = TRACK_INDENT + 12;\n const INVISIBLE_SVG_CLASS_NAMES = ['invisible', 'hide-svg'];\n\n var outerSvg = document.createElementNS(SVG_NS, 'svg') as SVGElement;\n\n // Make copy of chart to be used in download\n var chartClone = lollipopSvg.cloneNode(true);\n outerSvg.append(chartClone);\n\n // Make svg invisible so it does not affect UI\n outerSvg.classList.add(...INVISIBLE_SVG_CLASS_NAMES);\n\n //Add svg to the dom so getBBox can calculate dimensions\n document.body.appendChild(outerSvg);\n\n // Group the tracks and translate below the lollipop chart\n const allTracksG = createGroupTag(\n `translate(0, ${LollipopPlot.defaultProps.vizHeight})`\n );\n outerSvg.append(allTracksG);\n\n let trackSvgList = $(this.divContainer).find('.track-svgnode');\n let trackTitles = $(this.divContainer).find('span[class*=trackTitle]');\n var trackYShift = 0;\n\n trackSvgList.each((idx: number, track: HTMLElement) => {\n var trackSvgGroup = createGroupTag(\n `translate(${this.geneXOffset},${trackYShift})`\n );\n trackSvgGroup.appendChild(track.cloneNode(true));\n\n var trackNameGroup = createGroupTag(\n `translate(0,${trackYShift + 8})`\n );\n var isSubTrack = trackTitles[idx].className.includes('subtrack-');\n var trackName = createTextTag(\n document.createTextNode(trackTitles[idx].innerText),\n TEXT_STYLE,\n isSubTrack ? SUBTRACK_INDENT : TRACK_INDENT,\n 0\n );\n trackNameGroup.append(trackName);\n\n allTracksG.append(trackNameGroup, trackSvgGroup);\n trackYShift += 20;\n });\n\n // Get the dimensions of the outer SVG before removing from DOM\n const outerSvgDimensions = (outerSvg as SVGGraphicsElement).getBBox();\n $(outerSvg).attr({\n width: outerSvgDimensions.width,\n height: outerSvgDimensions.height,\n });\n\n // Remove unused classes\n outerSvg.classList.remove(...INVISIBLE_SVG_CLASS_NAMES);\n document.body.removeChild(outerSvg);\n\n return outerSvg;\n }\n\n @computed get hugoGeneSymbol() {\n return this.props.store.gene.hugoGeneSymbol;\n }\n\n @computed get countRange(): [number, number] {\n return calcCountRange(\n this.lollipops.filter(\n l => l.placement !== LollipopPlacement.BOTTOM\n ),\n this.props.topYAxisDefaultMax,\n this.props.topYAxisDefaultMin\n );\n }\n\n @computed get bottomCountRange(): [number, number] {\n return calcCountRange(\n this.lollipops.filter(\n l => l.placement === LollipopPlacement.BOTTOM\n ),\n this.props.bottomYAxisDefaultMax,\n this.props.bottomYAxisDefaultMin\n );\n }\n\n constructor(props: LollipopMutationPlotProps<T>) {\n super(props);\n\n makeObservable<\n LollipopMutationPlot<T>,\n | 'mouseInPlot'\n | 'yMaxInputFocused'\n | 'geneXOffset'\n | '_trackVisibility'\n | 'showControls'\n | 'trackVisibility'\n | 'controlsConfig'\n | 'groups'\n | 'lollipops'\n | 'domains'\n | 'domainColorMap'\n | 'domainMap'\n | 'sequence'\n | 'onXAxisOffset'\n | 'onTrackVisibilityChange'\n >(this);\n\n this.handlers = {\n handleYAxisMaxSliderChange: action(\n (value: number) =>\n (this.controlsConfig.yMaxInput = calcYMaxInput(\n value,\n this.yMaxStep,\n this.countRange,\n this.bottomCountRange,\n this.props.yAxisSameScale\n ))\n ),\n handleYAxisMaxChange: action(\n (input: string) =>\n (this.controlsConfig.yMaxInput = getYAxisMaxInputValue(\n this.yMaxStep,\n input\n ))\n ),\n handleBottomYAxisMaxSliderChange: action(\n (value: number) =>\n (this.controlsConfig.bottomYMaxInput = calcYMaxInput(\n value,\n this.yMaxStep,\n this.bottomCountRange,\n this.countRange,\n this.props.yAxisSameScale\n ))\n ),\n handleBottomYAxisMaxChange: action(\n (input: string) =>\n (this.controlsConfig.bottomYMaxInput = getYAxisMaxInputValue(\n this.yMaxStep,\n input\n ))\n ),\n onYMaxInputFocused: () => {\n this.yMaxInputFocused = true;\n },\n onYMaxInputBlurred: () => {\n this.yMaxInputFocused = false;\n },\n handleToggleLegend: action(() => {\n this.controlsConfig.legendShown = !this.controlsConfig\n .legendShown;\n }),\n onMouseEnterPlot: action(() => {\n this.mouseInPlot = true;\n }),\n onMouseLeavePlot: action(() => {\n this.mouseInPlot = false;\n }),\n };\n }\n\n @computed get yMaxSlider() {\n return this.yMaxInput;\n }\n\n @computed get yMaxStep() {\n return Math.pow(10, -(this.props.yMaxFractionDigits || 0));\n }\n\n @computed get yMaxSliderStep() {\n return this.countRange[0] < 1 ? this.yMaxStep : 1;\n }\n\n @computed get bottomYMaxSlider() {\n return this.bottomYMaxInput;\n }\n\n @computed get bottomYMaxSliderStep() {\n return this.bottomCountRange[0] < 1 ? this.yMaxStep : 1;\n }\n\n @computed get yMaxInput() {\n return calcYMaxInput(\n this.controlsConfig.yMaxInput,\n this.yMaxStep,\n this.countRange,\n this.bottomCountRange,\n this.props.yAxisSameScale\n );\n }\n\n @computed get bottomYMaxInput() {\n return calcYMaxInput(\n this.controlsConfig.bottomYMaxInput,\n this.yMaxStep,\n this.bottomCountRange,\n this.countRange,\n this.props.yAxisSameScale\n );\n }\n\n @action.bound\n private onXAxisOffset(offset: number) {\n this.geneXOffset = offset;\n\n if (this.props.onXAxisOffset) {\n this.props.onXAxisOffset(offset);\n }\n }\n\n @action.bound\n protected onTrackVisibilityChange(selectedTrackNames: string[]) {\n if (this.props.onTrackVisibilityChange) {\n this.props.onTrackVisibilityChange(selectedTrackNames);\n } else {\n // clear visibility\n Object.keys(this.trackVisibility).forEach(\n trackName => (this.trackVisibility[trackName] = 'hidden')\n );\n\n // reset visibility values for the visible ones\n selectedTrackNames.forEach(\n trackName => (this.trackVisibility[trackName] = 'visible')\n );\n }\n }\n\n render() {\n if (\n this.props.store.pfamDomainData.isComplete &&\n this.props.store.pfamDomainData.result\n ) {\n return (\n <div\n style={{ display: 'inline-block' }}\n ref={(div: HTMLDivElement) => (this.divContainer = div)}\n onMouseEnter={this.handlers.onMouseEnterPlot}\n onMouseLeave={this.handlers.onMouseLeavePlot}\n >\n <LollipopMutationPlotControls\n showControls={this.showControls}\n showYMaxSlider={this.props.showYMaxSlider}\n showLegendToggle={this.props.showLegendToggle}\n showDownloadControls={this.props.showDownloadControls}\n hugoGeneSymbol={this.hugoGeneSymbol}\n countRange={this.countRange}\n bottomCountRange={this.bottomCountRange}\n onYAxisMaxSliderChange={\n this.handlers.handleYAxisMaxSliderChange\n }\n onYAxisMaxChange={this.handlers.handleYAxisMaxChange}\n onBottomYAxisMaxSliderChange={\n this.handlers.handleBottomYAxisMaxSliderChange\n }\n onBottomYAxisMaxChange={\n this.handlers.handleBottomYAxisMaxChange\n }\n onYMaxInputFocused={this.handlers.onYMaxInputFocused}\n onYMaxInputBlurred={this.handlers.onYMaxInputBlurred}\n onToggleLegend={this.handlers.handleToggleLegend}\n yMaxSlider={this.yMaxSlider}\n yMaxSliderStep={this.yMaxSliderStep}\n yMaxInput={this.yMaxInput}\n yAxisSameScale={this.props.yAxisSameScale}\n bottomYMaxSlider={this.bottomYMaxSlider}\n bottomYMaxSliderStep={this.bottomYMaxSliderStep}\n bottomYMaxInput={this.bottomYMaxInput}\n customControls={this.props.customControls}\n filterResetPanel={this.props.filterResetPanel}\n trackVisibility={this.trackVisibility}\n tracks={this.props.tracks}\n trackDataStatus={this.props.trackDataStatus}\n showTrackSelector={this.props.showTrackSelector}\n onTrackVisibilityChange={this.onTrackVisibilityChange}\n getSVG={this.getSVG}\n axisMode={this.props.axisMode}\n onScaleToggle={this.props.onScaleToggle}\n showPercentToggle={this.props.showPercentToggle}\n />\n <Collapse isOpened={this.controlsConfig.legendShown}>\n {this.props.legend || <DefaultLollipopPlotLegend />}\n </Collapse>\n <LollipopPlot\n sequence={this.sequence}\n lollipops={this.lollipops}\n domains={this.domains}\n dataStore={this.props.store.dataStore}\n vizWidth={this.props.geneWidth}\n vizHeight={this.props.vizHeight}\n hugoGeneSymbol={this.hugoGeneSymbol}\n xMax={this.proteinLength}\n yMax={this.yMaxInput}\n yMaxFractionDigits={\n this.yMaxSliderStep < 1\n ? this.props.yMaxFractionDigits\n : undefined\n }\n yMaxLabelPostfix={this.props.yMaxLabelPostfix}\n yAxisLabelPadding={this.props.yAxisLabelPadding}\n showYAxis={this.props.showYAxis}\n bottomYMax={this.bottomYMaxInput}\n onXAxisOffset={this.onXAxisOffset}\n topYAxisSymbol={this.props.topYAxisSymbol}\n bottomYAxisSymbol={this.props.bottomYAxisSymbol}\n groups={this.groups}\n yAxisLabelFormatter={this.props.yAxisLabelFormatter}\n />\n <TrackPanel\n store={this.props.store}\n geneWidth={this.props.geneWidth}\n tracks={this.props.tracks}\n trackVisibility={this.trackVisibility}\n pubMedCache={this.props.pubMedCache}\n proteinLength={this.proteinLength}\n geneXOffset={this.geneXOffset}\n collapsePtmTrack={this.props.collapsePtmTrack}\n collapseUniprotTopologyTrack={\n this.props.collapseUniprotTopologyTrack\n }\n />\n </div>\n );\n } else if (\n this.props.store.canonicalTranscript.isComplete &&\n this.props.store.canonicalTranscript.result === undefined\n ) {\n return (\n <span>\n <i className=\"fa fa-exclamation-triangle text-danger\" /> No\n Transcript found for {this.hugoGeneSymbol}\n </span>\n );\n } else {\n return (\n this.props.loadingIndicator || (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n )\n );\n }\n }\n}\n","import { action, makeObservable, observable } from 'mobx';\nimport { observer } from 'mobx-react';\nimport { Mutation } from 'cbioportal-ts-api-client';\nimport * as React from 'react';\nimport {\n formatPercentValue,\n numberOfLeadingDecimalZeros,\n} from 'cbioportal-utils';\nimport { AxisScale } from './AxisScaleSwitch';\n\ninterface ILollipopTooltipCountInfoProps {\n count: number;\n mutations?: Mutation[];\n axisMode?: AxisScale;\n}\n\nexport const LollipopTooltipCountInfo: React.FC<ILollipopTooltipCountInfoProps> = ({\n count,\n mutations,\n axisMode,\n}: ILollipopTooltipCountInfoProps) => {\n const decimalZeros = numberOfLeadingDecimalZeros(count);\n const fractionDigits = decimalZeros < 0 ? 1 : decimalZeros + 2;\n\n return mutations &&\n mutations.length > 0 &&\n axisMode === AxisScale.PERCENT ? (\n <strong>\n {formatPercentValue(count, fractionDigits)}% mutation rate\n </strong>\n ) : (\n <strong>\n {count} mutation{`${count !== 1 ? 's' : ''}`}\n </strong>\n );\n};\n","import { action, observable, makeObservable } from 'mobx';\nimport { CacheData, MobxCache } from 'cbioportal-utils';\nimport _ from 'lodash';\n\nexport abstract class DefaultStringQueryCache<D>\n implements MobxCache<D, string> {\n protected _cache = observable.map<string, CacheData>({}, { deep: false });\n\n constructor() {\n makeObservable(this);\n }\n\n @action\n public get(query: string) {\n if (!this._cache.get(query)) {\n this._cache.set(query, { status: 'pending' });\n\n this.fetch(query)\n .then((d: D) =>\n this._cache.set(query, { status: 'complete', data: d })\n )\n .catch(() => this._cache.set(query, { status: 'error' }));\n }\n\n const data = this._cache.get(query);\n\n return data ? data : null;\n }\n\n public abstract fetch(query: string): Promise<D>;\n\n public get cache() {\n return _.fromPairs(this._cache.toJSON());\n }\n}\n","import request from 'superagent';\n\nimport { DefaultStringQueryCache } from './DefaultStringQueryCache';\n\nexport class DefaultPubMedCache extends DefaultStringQueryCache<any> {\n public async fetch(query: string) {\n const pubMedRecords = await new Promise<any>((resolve, reject) => {\n // TODO duplicate code from cbioportal-frontend\n request\n .post(\n 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi?db=pubmed&retmode=json'\n )\n .type('form')\n .send({ id: query })\n .end((err, res) => {\n if (!err && res.ok) {\n const response = JSON.parse(res.text);\n const result = response.result;\n const uids = result.uids;\n const ret: any = {};\n for (let uid of uids) {\n ret[uid] = result[uid];\n }\n resolve(ret);\n } else {\n reject(err);\n }\n });\n });\n\n return pubMedRecords[query];\n }\n}\n","import request from 'superagent';\n\nimport {\n DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE,\n getUrl,\n} from '../util/DataFetcherUtils';\nimport { DefaultStringQueryCache } from './DefaultStringQueryCache';\n\nexport function fetchMutationAlignerLink(\n pfamDomainId: string,\n mutationAlignerUrlTemplate: string = DEFAULT_MUTATION_ALIGNER_PROXY_URL_TEMPLATE\n): request.SuperAgentRequest {\n return request\n .get(getUrl(mutationAlignerUrlTemplate, { pfamDomainId }))\n .accept('application/json');\n}\n\nexport class MutationAlignerCache extends DefaultStringQueryCache<string> {\n constructor(private mutationAlignerUrlTemplate?: string) {\n super();\n }\n\n public fetch(pfamAccession: string): Promise<string> {\n return fetchMutationAlignerLink(\n pfamAccession,\n this.mutationAlignerUrlTemplate\n )\n .then(res =>\n Promise.resolve(\n `http://mutationaligner.org/domains/${res.body.pfamId}`\n )\n )\n .catch(e => Promise.reject(e));\n }\n}\n","import autobind from 'autobind-decorator';\nimport _ from 'lodash';\nimport { action, computed, observable, makeObservable } from 'mobx';\n\nimport { Mutation } from 'cbioportal-utils';\n\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport DataStore from '../model/DataStore';\nimport { FilterApplier } from '../model/FilterApplier';\nimport {\n applyDataFiltersOnDatum,\n groupDataByGroupFilters,\n indexPositions,\n} from '../util/FilterUtils';\n\ntype GroupedData = Array<{ group: string; data: Array<Mutation | Mutation[]> }>;\n\nexport class DefaultMutationMapperDataStore implements DataStore {\n @observable public dataFilters: DataFilter[];\n @observable public selectionFilters: DataFilter[];\n @observable public highlightFilters: DataFilter[];\n @observable public groupFilters: { group: string; filter: DataFilter }[];\n\n // TODO simplify data if possible\n private data: Array<Mutation | Mutation[]>;\n\n // this custom filter applier allows us to interpret selection and highlight filters in a customized way,\n // by default only position filters are taken into account\n protected customFilterApplier: FilterApplier | undefined;\n\n constructor(\n data: Array<Mutation | Mutation[]>,\n customFilterApplier?: FilterApplier,\n dataFilters: DataFilter[] = [],\n selectionFilters: DataFilter[] = [],\n highlightFilters: DataFilter[] = [],\n groupFilters: { group: string; filter: DataFilter }[] = []\n ) {\n makeObservable(this);\n this.data = data;\n this.customFilterApplier = customFilterApplier;\n\n this.dataFilters = dataFilters;\n this.selectionFilters = selectionFilters;\n this.highlightFilters = highlightFilters;\n this.groupFilters = groupFilters;\n }\n\n @computed get groupFiltersKeyedByGroup() {\n return _.keyBy(this.groupFilters, 'group');\n }\n\n @computed\n public get allData() {\n return this.data;\n }\n\n @computed\n public get filteredData() {\n return this.dataFilters.length > 0\n ? // TODO simplify array flatten if possible\n this.data.filter(m => this.dataMainFilter(_.flatten([m])[0]))\n : this.data;\n }\n\n @computed\n public get sortedFilteredData() {\n return this.filteredData;\n }\n\n @computed\n public get sortedFilteredGroupedData(): GroupedData {\n return groupDataByGroupFilters(\n this.groupFilters,\n this.sortedFilteredData,\n this.applyFilter\n );\n }\n\n @computed\n public get sortedFilteredSelectedData() {\n return this.selectionFilters.length > 0\n ? // TODO simplify array flatten if possible\n this.sortedFilteredData.filter(m =>\n this.dataSelectFilter(_.flatten([m])[0])\n )\n : [];\n }\n\n @computed\n public get selectedPositions() {\n return indexPositions(this.selectionFilters);\n }\n\n @computed\n public get highlightedPositions() {\n return indexPositions(this.highlightFilters);\n }\n\n @action\n public clearHighlightFilters() {\n if (this.highlightFilters.length > 0) {\n this.highlightFilters = [];\n }\n }\n\n @action\n public clearSelectionFilters() {\n if (this.selectionFilters.length > 0) {\n this.selectionFilters = [];\n }\n }\n\n @action\n public clearDataFilters() {\n if (this.dataFilters.length > 0) {\n this.dataFilters = [];\n }\n }\n\n @action\n public setDataFilters(filters: DataFilter[]) {\n this.dataFilters = filters;\n }\n\n @action\n public setHighlightFilters(filters: DataFilter[]) {\n this.highlightFilters = filters;\n }\n\n @action\n public setSelectionFilters(filters: DataFilter[]) {\n this.selectionFilters = filters;\n }\n\n @action\n public setGroupFilters(filters: { group: string; filter: DataFilter }[]) {\n this.groupFilters = filters;\n }\n\n public isPositionSelected(position: number) {\n return !!this.selectedPositions[position + ''];\n }\n\n public isPositionHighlighted(position: number) {\n return !!this.highlightedPositions[position + ''];\n }\n\n public dataMainFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.dataFilters,\n this.applyFilter\n );\n }\n\n public dataSelectFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.selectionFilters,\n this.applyFilter\n );\n }\n\n public dataHighlightFilter(mutation: Mutation): boolean {\n return applyDataFiltersOnDatum(\n mutation,\n this.highlightFilters,\n this.applyFilter\n );\n }\n\n @autobind\n public applyFilter(filter: DataFilter, mutation: Mutation): boolean {\n if (this.customFilterApplier) {\n // let the custom filter applier decide how to apply the given filter\n return this.customFilterApplier.applyFilter(filter, mutation);\n } else {\n // by default only filter by position\n return (\n filter.type !== DataFilterType.POSITION ||\n filter.values.includes(mutation.proteinPosStart)\n );\n }\n }\n}\n\nexport default DefaultMutationMapperDataStore;\n","import _ from 'lodash';\nimport request from 'superagent';\nimport Response = request.Response;\n\nimport {\n AggregatedHotspots,\n EvidenceType,\n getMyVariantInfoAnnotationsFromIndexedVariantAnnotations,\n IOncoKbData,\n Mutation,\n UniprotFeature,\n UniprotFeatureList,\n uniqueGenomicLocations,\n} from 'cbioportal-utils';\nimport {\n generateProteinChangeQuery,\n generateAnnotateStructuralVariantQuery,\n StructuralVariantType,\n} from 'oncokb-frontend-commons';\nimport {\n AnnotateMutationByProteinChangeQuery,\n AnnotateStructuralVariantQuery,\n CancerGene,\n OncoKbAPI,\n OncoKBInfo,\n} from 'oncokb-ts-api-client';\nimport {\n EnsemblFilter,\n EnsemblTranscript,\n GenomeNexusAPI,\n GenomeNexusAPIInternal,\n GenomicLocation,\n Hotspot,\n PfamDomain,\n PostTranslationalModification,\n VariantAnnotation,\n MyVariantInfo,\n} from 'genome-nexus-ts-api-client';\n\nimport { MutationMapperDataFetcher } from '../model/MutationMapperDataFetcher';\nimport {\n DEFAULT_MY_GENE_URL_TEMPLATE,\n DEFAULT_UNIPROT_ID_URL_TEMPLATE,\n fetchVariantAnnotationsIndexedByGenomicLocation,\n getUrl,\n initGenomeNexusClient,\n initGenomeNexusInternalClient,\n initOncoKbClient,\n ONCOKB_DEFAULT_DATA,\n} from '../util/DataFetcherUtils';\nimport { CanonicalMutationType } from 'cbioportal-frontend-commons';\n\nexport interface MutationMapperDataFetcherConfig {\n myGeneUrlTemplate?: string;\n uniprotIdUrlTemplate?: string;\n mutationAlignerUrlTemplate?: string;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n}\n\nexport class DefaultMutationMapperDataFetcher\n implements MutationMapperDataFetcher {\n public oncoKbClient: OncoKbAPI;\n public genomeNexusClient: GenomeNexusAPI;\n public genomeNexusInternalClient: GenomeNexusAPIInternal;\n\n constructor(\n private config: MutationMapperDataFetcherConfig,\n genomeNexusClient?: Partial<GenomeNexusAPI>,\n genomeNexusInternalClient?: Partial<GenomeNexusAPIInternal>,\n oncoKbClient?: Partial<OncoKbAPI>\n ) {\n this.genomeNexusClient =\n (genomeNexusClient as GenomeNexusAPI) ||\n initGenomeNexusClient(\n config.genomeNexusUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n this.genomeNexusInternalClient =\n (genomeNexusInternalClient as GenomeNexusAPIInternal) ||\n initGenomeNexusInternalClient(\n config.genomeNexusUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n this.oncoKbClient =\n (oncoKbClient as OncoKbAPI) ||\n initOncoKbClient(\n config.oncoKbUrl,\n config.cachePostMethodsOnClients,\n config.apiCacheLimit\n );\n }\n\n public async fetchSwissProtAccession(entrezGeneId: number): Promise<any> {\n const myGeneData: Response = await request.get(\n getUrl(\n this.config.myGeneUrlTemplate || DEFAULT_MY_GENE_URL_TEMPLATE,\n { entrezGeneId }\n )\n );\n return JSON.parse(myGeneData.text).uniprot['Swiss-Prot'];\n }\n\n public async fetchUniprotId(swissProtAccession: string): Promise<string> {\n const uniprotData: Response = await request.get(\n getUrl(\n this.config.uniprotIdUrlTemplate ||\n DEFAULT_UNIPROT_ID_URL_TEMPLATE,\n { swissProtAccession }\n )\n );\n return uniprotData.text.split('\\n')[1];\n }\n\n public async fetchPfamDomainData(\n pfamAccessions: string[],\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<PfamDomain[]> {\n return await client.fetchPfamDomainsByPfamAccessionPOST({\n pfamAccessions: pfamAccessions,\n });\n }\n\n public async fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n fields: string[] = ['annotation_summary'],\n isoformOverrideSource: string = 'mskcc',\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<{ [genomicLocation: string]: VariantAnnotation }> {\n return await fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations,\n fields,\n isoformOverrideSource,\n client\n );\n }\n\n public async fetchMyVariantInfoAnnotationsIndexedByGenomicLocation(\n mutations: Partial<Mutation>[],\n isoformOverrideSource: string = 'mskcc',\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<{ [genomicLocation: string]: MyVariantInfo }> {\n const indexedVariantAnnotations = await fetchVariantAnnotationsIndexedByGenomicLocation(\n mutations,\n ['my_variant_info'],\n isoformOverrideSource,\n client\n );\n return getMyVariantInfoAnnotationsFromIndexedVariantAnnotations(\n indexedVariantAnnotations\n );\n }\n\n /*\n * Gets the canonical transcript. If there is none pick the transcript with max length.\n */\n public async fetchCanonicalTranscriptWithFallback(\n hugoSymbol: string,\n isoformOverrideSource: string,\n allTranscripts: EnsemblTranscript[] | undefined,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript | undefined> {\n return this.fetchCanonicalTranscript(\n hugoSymbol,\n isoformOverrideSource,\n client\n ).catch(() => {\n // get transcript with max protein length in given list of all transcripts\n const transcript = _.maxBy(\n allTranscripts,\n (t: EnsemblTranscript) => t.proteinLength\n );\n return transcript ? transcript : undefined;\n });\n }\n\n public async fetchCanonicalTranscript(\n hugoSymbol: string,\n isoformOverrideSource: string,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript> {\n return await client.fetchCanonicalEnsemblTranscriptByHugoSymbolGET({\n hugoSymbol,\n isoformOverrideSource,\n });\n }\n\n public async fetchEnsemblTranscriptsByEnsemblFilter(\n ensemblFilter: Partial<EnsemblFilter>,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<EnsemblTranscript[] | undefined> {\n return await client.fetchEnsemblTranscriptsByEnsemblFilterPOST({\n ensemblFilter: Object.assign(\n // set default to empty array\n {\n geneIds: [],\n hugoSymbols: [],\n proteinIds: [],\n transcriptIds: [],\n },\n ensemblFilter\n ),\n });\n }\n\n public fetchPtmData(\n ensemblId: string,\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<PostTranslationalModification[]> {\n if (ensemblId) {\n return client.fetchPostTranslationalModificationsGET({\n ensemblTranscriptId: ensemblId,\n });\n } else {\n return Promise.resolve([]);\n }\n }\n\n public async fetchUniprotFeatures(\n swissProtId: string,\n category: string[],\n client: GenomeNexusAPI = this.genomeNexusClient\n ): Promise<UniprotFeature[]> {\n if (swissProtId) {\n // TODO for now fetching only PTM and TOPOLOGY features\n const uniprotData: Response = await request.get(\n getUrl(\n `https://www.ebi.ac.uk/proteins/api/features/<%= uniprotAccession %>?categories=${category.join(\n ','\n )}`,\n { uniprotAccession: swissProtId }\n )\n );\n\n const featureList: UniprotFeatureList = JSON.parse(\n uniprotData.text\n );\n return featureList.features;\n } else {\n return Promise.resolve([]);\n }\n }\n\n public fetchCancerHotspotData(\n ensemblId: string,\n client: GenomeNexusAPIInternal = this.genomeNexusInternalClient\n ): Promise<Hotspot[]> {\n if (ensemblId) {\n return client.fetchHotspotAnnotationByTranscriptIdGET({\n transcriptId: ensemblId,\n });\n } else {\n return Promise.resolve([]);\n }\n }\n\n public fetchAggregatedHotspotsData(\n mutations: Mutation[],\n client: GenomeNexusAPIInternal = this.genomeNexusInternalClient\n ): Promise<AggregatedHotspots[]> {\n // TODO filter out non-hotspot genes\n\n if (mutations.length === 0) {\n return Promise.resolve([]);\n }\n\n const genomicLocations: GenomicLocation[] = uniqueGenomicLocations(\n mutations\n );\n return client.fetchHotspotAnnotationByGenomicLocationPOST({\n genomicLocations: genomicLocations,\n });\n }\n\n public fetchOncoKbCancerGenes(\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<CancerGene[]> {\n return client.utilsCancerGeneListGetUsingGET_1({});\n }\n\n public fetchOncoKbInfo(\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<OncoKBInfo> {\n return client.infoGetUsingGET_1({});\n }\n\n public async fetchOncoKbData(\n mutations: Mutation[],\n annotatedGenes: { [entrezGeneId: number]: boolean } | Error,\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number,\n evidenceTypes?: EvidenceType[],\n client: OncoKbAPI = this.oncoKbClient\n ): Promise<IOncoKbData | Error> {\n if (annotatedGenes instanceof Error) {\n return new Error();\n } else if (mutations.length === 0) {\n return ONCOKB_DEFAULT_DATA;\n }\n\n const mutationsToQuery = _.filter(\n mutations,\n m =>\n (m.mutationType &&\n m.mutationType.toLowerCase() ===\n CanonicalMutationType.FUSION) ||\n !!annotatedGenes[getEntrezGeneId(m)]\n );\n\n return this.queryOncoKbData(\n mutationsToQuery,\n getTumorType,\n getEntrezGeneId,\n client,\n evidenceTypes\n );\n }\n\n public async queryOncoKbData(\n queryVariants: Mutation[],\n getTumorType: (mutation: Mutation) => string,\n getEntrezGeneId: (mutation: Mutation) => number,\n client: OncoKbAPI = this.oncoKbClient,\n evidenceTypes?: EvidenceType[]\n ) {\n const mutationQueryVariants: AnnotateMutationByProteinChangeQuery[] = _.uniqBy(\n _.map(\n queryVariants.filter(\n mutation => mutation.mutationType !== 'Fusion'\n ),\n (mutation: Mutation) => {\n return generateProteinChangeQuery(\n getEntrezGeneId(mutation),\n getTumorType(mutation),\n mutation.proteinChange,\n mutation.mutationType,\n mutation.proteinPosStart,\n mutation.proteinPosEnd,\n evidenceTypes\n );\n }\n ),\n 'id'\n );\n\n const structuralQueryVariants: AnnotateStructuralVariantQuery[] = _.uniqBy(\n _.map(\n queryVariants.filter(\n mutation =>\n mutation.mutationType?.toUpperCase() ===\n StructuralVariantType.FUSION\n ),\n (mutation: Mutation) => {\n return generateAnnotateStructuralVariantQuery(\n /* @ts-ignore */\n mutation.structuralVariant,\n getTumorType(mutation),\n evidenceTypes\n );\n }\n ),\n 'id'\n );\n\n const mutationQueryResult =\n mutationQueryVariants.length === 0\n ? []\n : await client.annotateMutationsByProteinChangePostUsingPOST_1({\n body: mutationQueryVariants,\n });\n\n const structuralVariantQueryResult =\n structuralQueryVariants.length === 0\n ? []\n : await client.annotateStructuralVariantsPostUsingPOST_1({\n body: structuralQueryVariants,\n });\n\n return {\n // generateIdToIndicatorMap(oncokbSearch)\n indicatorMap: _.keyBy(\n mutationQueryResult.concat(structuralVariantQueryResult),\n indicator => indicator.query.id\n ),\n };\n }\n}\n\nexport default DefaultMutationMapperDataFetcher;\n","import autobind from 'autobind-decorator';\nimport { MobxPromise } from 'cbioportal-frontend-commons';\nimport {\n defaultHotspotFilter,\n IHotspotIndex,\n IOncoKbData,\n isHotspot,\n Mutation,\n} from 'cbioportal-utils';\n\nimport { HotspotFilter } from '../filter/HotspotFilter';\nimport { MutationFilter } from '../filter/MutationFilter';\nimport { MutationStatusFilter } from '../filter/MutationStatusFilter';\nimport { OncoKbFilter } from '../filter/OncoKbFilter';\nimport { PositionFilter } from '../filter/PositionFilter';\nimport { ProteinImpactTypeFilter } from '../filter/ProteinImpactTypeFilter';\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport { ApplyFilterFn, FilterApplier } from '../model/FilterApplier';\nimport {\n applyDefaultMutationFilter,\n applyDefaultMutationStatusFilter,\n applyDefaultPositionFilter,\n applyDefaultProteinChangeFilter,\n applyDefaultProteinImpactTypeFilter,\n} from '../util/FilterUtils';\nimport { defaultOncoKbFilter } from 'oncokb-frontend-commons';\nimport { ProteinChangeFilter } from '../filter/ProteinChangeFilter';\n\nexport class DefaultMutationMapperFilterApplier implements FilterApplier {\n protected get customFilterAppliers(): {\n [filterType: string]: ApplyFilterFn;\n } {\n return {\n [DataFilterType.POSITION]: this.applyPositionFilter,\n [DataFilterType.ONCOKB]: this.applyOncoKbFilter,\n [DataFilterType.HOTSPOT]: this.applyHostpotFilter,\n [DataFilterType.MUTATION]: this.applyMutationFilter,\n [DataFilterType.PROTEIN_IMPACT_TYPE]: this\n .applyProteinImpactTypeFilter,\n [DataFilterType.MUTATION_STATUS]: this.applyMutationStatusFilter,\n [DataFilterType.PROTEIN_CHANGE]: this.applyProteinChangeFilter,\n ...this.filterAppliersOverride,\n };\n }\n\n constructor(\n protected indexedHotspotData: MobxPromise<IHotspotIndex | undefined>,\n protected oncoKbData: MobxPromise<IOncoKbData | Error>,\n protected getDefaultTumorType: (mutation: Mutation) => string,\n protected getDefaultEntrezGeneId: (mutation: Mutation) => number,\n protected filterAppliersOverride?: {\n [filterType: string]: ApplyFilterFn;\n }\n ) {}\n\n @autobind\n public applyFilter(filter: DataFilter, mutation: Mutation) {\n const applyFilter = this.customFilterAppliers[filter.type];\n\n return !applyFilter || applyFilter(filter, mutation);\n }\n\n @autobind\n protected applyMutationFilter(filter: MutationFilter, mutation: Mutation) {\n return applyDefaultMutationFilter(filter, mutation);\n }\n\n @autobind\n protected applyOncoKbFilter(filter: OncoKbFilter, mutation: Mutation) {\n // TODO for now ignoring the actual filter value and treating as a boolean\n return (\n !filter.values ||\n !this.oncoKbData.result ||\n this.oncoKbData.result instanceof Error ||\n defaultOncoKbFilter(\n mutation,\n this.oncoKbData.result,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId\n )\n );\n }\n\n @autobind\n protected applyHostpotFilter(filter: HotspotFilter, mutation: Mutation) {\n // TODO for now ignoring the actual filter value and treating as a boolean\n return (\n !filter.values ||\n !this.indexedHotspotData.result ||\n isHotspot(\n mutation,\n this.indexedHotspotData.result,\n defaultHotspotFilter\n )\n );\n }\n\n @autobind\n protected applyPositionFilter(filter: PositionFilter, mutation: Mutation) {\n return applyDefaultPositionFilter(filter, mutation);\n }\n\n @autobind\n protected applyProteinImpactTypeFilter(\n filter: ProteinImpactTypeFilter,\n mutation: Mutation\n ) {\n return applyDefaultProteinImpactTypeFilter(filter, mutation);\n }\n\n @autobind\n protected applyMutationStatusFilter(\n filter: MutationStatusFilter,\n mutation: Mutation\n ) {\n return applyDefaultMutationStatusFilter(filter, mutation);\n }\n\n @autobind\n protected applyProteinChangeFilter(\n filter: ProteinChangeFilter,\n mutation: Mutation\n ) {\n return applyDefaultProteinChangeFilter(filter, mutation);\n }\n}\n\nexport default DefaultMutationMapperFilterApplier;\n","import autobind from 'autobind-decorator';\nimport { cached, MobxPromise, remoteData } from 'cbioportal-frontend-commons';\nimport {\n AggregatedHotspots,\n convertDbPtmToPtm,\n convertUniprotFeatureToPtm,\n defaultHotspotFilter,\n genomicLocationString,\n getMyCancerGenomeData,\n groupCancerHotspotDataByPosition,\n groupHotspotsByMutations,\n getMutationsByTranscriptId,\n groupMutationsByProteinStartPos,\n groupPtmDataByPosition,\n groupPtmDataByTypeAndPosition,\n indexHotspotsData,\n ICivicGeneIndex,\n ICivicVariantIndex,\n IHotspotIndex,\n IMyCancerGenomeData,\n IOncoKbData,\n fetchCivicGenes,\n fetchCivicVariants,\n PostTranslationalModification,\n PtmSource,\n UniprotFeature,\n uniqueGenomicLocations,\n UniprotCategory,\n convertUniprotFeatureToUniprotTopology,\n UniprotTopology,\n} from 'cbioportal-utils';\nimport { Gene, Mutation, IMyVariantInfoIndex } from 'cbioportal-utils';\nimport memoize from 'memoize-weak-decorator';\n\nimport {\n CancerGene,\n IndicatorQueryResp,\n OncoKBInfo,\n} from 'oncokb-ts-api-client';\nimport {\n EnsemblTranscript,\n GenomicLocation,\n Hotspot,\n PfamDomain,\n PfamDomainRange,\n PostTranslationalModification as DbPtm,\n // TODO UniprotFeature, UniprotFeatureList\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\nimport _ from 'lodash';\nimport { computed, observable, makeObservable } from 'mobx';\n\nimport { DataFilter, DataFilterType } from '../model/DataFilter';\nimport DataStore from '../model/DataStore';\nimport { ApplyFilterFn, FilterApplier } from '../model/FilterApplier';\nimport { MutationMapperDataFetcher } from '../model/MutationMapperDataFetcher';\nimport { MutationMapperStore } from '../model/MutationMapperStore';\nimport {\n ONCOKB_DEFAULT_DATA,\n ONCOKB_DEFAULT_INFO,\n USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB,\n} from '../util/DataFetcherUtils';\nimport {\n applyDataFilters,\n groupDataByProteinImpactType,\n} from '../util/FilterUtils';\nimport {\n defaultOncoKbIndicatorFilter,\n groupOncoKbIndicatorDataByMutations,\n} from 'oncokb-frontend-commons';\nimport { DefaultMutationMapperDataStore } from './DefaultMutationMapperDataStore';\nimport { DefaultMutationMapperDataFetcher } from './DefaultMutationMapperDataFetcher';\nimport { DefaultMutationMapperFilterApplier } from './DefaultMutationMapperFilterApplier';\nimport { get } from 'superagent';\n\ninterface DefaultMutationMapperStoreConfig {\n annotationFields?: string[];\n isoformOverrideSource?: string;\n ptmSources?: string[];\n filterMutationsBySelectedTranscript?: boolean;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n enableCivic?: boolean;\n enableOncoKb?: boolean;\n enableRevue?: boolean;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n getMutationCount?: (mutation: Partial<Mutation>) => number;\n getTumorType?: (mutation: Partial<Mutation>) => string;\n filterApplier?: FilterApplier;\n filterAppliersOverride?: {\n [filterType: string]: ApplyFilterFn;\n };\n dataFetcher?: MutationMapperDataFetcher;\n dataFilters?: DataFilter[];\n selectionFilters?: DataFilter[];\n highlightFilters?: DataFilter[];\n groupFilters?: { group: string; filter: DataFilter }[];\n genomeBuild?: string;\n}\n\nclass DefaultMutationMapperStore<T extends Mutation>\n implements MutationMapperStore<T> {\n protected getDataFetcher?: () => MutationMapperDataFetcher;\n\n @observable\n private _selectedTranscript: string | undefined = undefined;\n\n // this allows us to keep selected transcript state in one of two places\n // external (e.g. url)\n // internal (_selectedTranscript)\n // we default to external\n @computed get selectedTranscript(): string | undefined {\n if (this.getTranscriptId) {\n return this.getTranscriptId();\n } else {\n return this._selectedTranscript;\n }\n }\n\n constructor(\n public gene: Gene,\n protected config: DefaultMutationMapperStoreConfig,\n protected getMutations: () => T[],\n public getTranscriptId?: () => string | undefined\n ) {\n makeObservable<\n DefaultMutationMapperStore<T>,\n '_selectedTranscript' | 'mutationsGroupedByProteinImpactType'\n >(this);\n }\n\n readonly activeTranscript: MobxPromise<string | undefined> = remoteData(\n {\n await: () => [\n this.allTranscripts,\n this.canonicalTranscript,\n this.transcriptsWithAnnotations,\n ],\n invoke: async () => {\n let activeTranscript;\n const canonicalTranscriptId = this.canonicalTranscript.result\n ? this.canonicalTranscript.result.transcriptId\n : undefined;\n const selectedTranscript =\n this.selectedTranscript &&\n this.allTranscripts.result &&\n this.allTranscripts.result.find(\n transcript =>\n transcript.transcriptId === this.selectedTranscript\n )\n ? this.selectedTranscript\n : undefined;\n\n if (selectedTranscript) {\n activeTranscript = selectedTranscript;\n } else if (this.config.filterMutationsBySelectedTranscript) {\n if (\n this.transcriptsWithAnnotations.result &&\n this.transcriptsWithAnnotations.result.length > 0 &&\n canonicalTranscriptId &&\n !this.transcriptsWithAnnotations.result.includes(\n canonicalTranscriptId\n )\n ) {\n activeTranscript = this.transcriptsWithAnnotations\n .result[0];\n } else {\n activeTranscript = canonicalTranscriptId;\n }\n } else {\n activeTranscript = canonicalTranscriptId;\n }\n\n return activeTranscript;\n },\n },\n undefined\n );\n\n public setSelectedTranscript(transcript: string | undefined) {\n this._selectedTranscript = transcript;\n }\n\n @computed\n public get isoformOverrideSource(): string {\n return this.config.isoformOverrideSource || 'mskcc';\n }\n\n @computed\n public get ptmSources(): string[] {\n return this.config.ptmSources || [PtmSource.dbPTM];\n }\n\n @computed\n public get annotationFields(): string[] {\n return _.uniq(\n ['annotation_summary', 'hotspots'].concat(\n this.config.annotationFields || []\n )\n );\n }\n\n protected getDataStore?: () => DataStore;\n\n @cached\n @computed\n public get dataStore(): DataStore {\n if (this.getDataStore) {\n return this.getDataStore();\n }\n return new DefaultMutationMapperDataStore(\n this.mutations,\n this.filterApplier,\n this.config.dataFilters,\n this.config.selectionFilters,\n this.config.highlightFilters,\n this.config.groupFilters\n );\n }\n\n public readonly myCancerGenomeData: IMyCancerGenomeData = getMyCancerGenomeData();\n\n @computed\n public get mutations(): T[] {\n if (\n this.canonicalTranscript.isPending ||\n (this.config.filterMutationsBySelectedTranscript &&\n (this.transcriptsWithAnnotations.isPending ||\n this.indexedVariantAnnotations.isPending) &&\n this.canonicalTranscript.isPending)\n ) {\n return [];\n } else if (\n this.config.filterMutationsBySelectedTranscript &&\n this.activeTranscript.result &&\n this.indexedVariantAnnotations.result &&\n !_.isEmpty(this.indexedVariantAnnotations.result)\n ) {\n return this.getAnnotatedMutations(this.activeTranscript.result);\n } else {\n return this.getMutations();\n }\n }\n\n @memoize\n protected getAnnotatedMutationsByTranscriptId(\n mutations: T[],\n transcriptId: string,\n indexedVariantAnnotations: {\n [genomicLocation: string]: VariantAnnotation;\n }\n ): T[] {\n // by default annotate every mutation, no check for canonical transcript\n return getMutationsByTranscriptId(\n mutations,\n transcriptId,\n indexedVariantAnnotations\n );\n }\n\n public getAnnotatedMutations(transcriptId: string): T[] {\n // in case we don't have any annotation for the given set of mutations or the annotation fails due to an error\n // (external service error, etc.) we just return the input set of mutations as is. Ideally this function\n // should not be invoked when this.indexedVariantAnnotations.result is undefined\n if (this.indexedVariantAnnotations.result) {\n return this.getAnnotatedMutationsByTranscriptId(\n this.getMutations(),\n transcriptId,\n this.indexedVariantAnnotations.result\n );\n } else {\n return this.getMutations();\n }\n }\n\n @computed\n public get filterApplier() {\n return (\n this.config.filterApplier ||\n new DefaultMutationMapperFilterApplier(\n this.indexedHotspotData,\n this.oncoKbData,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId,\n this.config.filterAppliersOverride\n )\n );\n }\n\n @computed\n public get dataFetcher(): MutationMapperDataFetcher {\n return (\n this.config.dataFetcher ||\n (this.getDataFetcher && this.getDataFetcher()) ||\n new DefaultMutationMapperDataFetcher({\n genomeNexusUrl: this.config.genomeNexusUrl,\n oncoKbUrl: this.config.oncoKbUrl,\n cachePostMethodsOnClients: this.config\n .cachePostMethodsOnClients,\n apiCacheLimit: this.config.apiCacheLimit,\n })\n );\n }\n\n @computed\n public get mutationsByPosition(): { [pos: number]: T[] } {\n return groupMutationsByProteinStartPos(\n _.flatten(this.dataStore.sortedFilteredData)\n );\n }\n\n @computed\n public get groupedMutationsByPosition(): {\n group: string;\n mutations: { [pos: number]: T[] };\n }[] {\n return this.dataStore.sortedFilteredGroupedData.map(groupedData => ({\n group: groupedData.group,\n mutations: groupMutationsByProteinStartPos(\n _.flatten(groupedData.data)\n ),\n }));\n }\n\n protected getMutationsGroupedByProteinImpactType?: () => {\n [type: string]: { group: string; data: any[] };\n };\n\n @computed\n protected get mutationsGroupedByProteinImpactType() {\n if (this.getMutationsGroupedByProteinImpactType) {\n return this.getMutationsGroupedByProteinImpactType();\n }\n const filtersWithoutProteinImpactTypeFilter = this.dataStore.dataFilters.filter(\n f => f.type !== DataFilterType.PROTEIN_IMPACT_TYPE\n );\n\n // apply filters excluding the protein impact type filters\n // this prevents number of unchecked protein impact types from being counted as zero\n const sortedFilteredData = applyDataFilters(\n this.dataStore.allData,\n filtersWithoutProteinImpactTypeFilter,\n this.dataStore.applyFilter\n );\n\n return groupDataByProteinImpactType(sortedFilteredData);\n }\n\n @computed\n public get mutationCountsByProteinImpactType(): {\n [proteinImpactType: string]: number;\n } {\n const map: { [proteinImpactType: string]: number } = {};\n\n Object.keys(this.mutationsGroupedByProteinImpactType).forEach(\n proteinImpactType => {\n const g = this.mutationsGroupedByProteinImpactType[\n proteinImpactType\n ];\n map[g.group] = g.data.length;\n }\n );\n\n return map;\n }\n\n @computed\n public get uniqueMutationCountsByPosition(): { [pos: number]: number } {\n return this.countUniqueMutationsByPosition(this.mutationsByPosition);\n }\n\n @computed\n public get uniqueGroupedMutationCountsByPosition(): {\n group: string;\n counts: { [pos: number]: number };\n }[] {\n return this.groupedMutationsByPosition.map(groupedMutations => ({\n group: groupedMutations.group,\n counts: this.countUniqueMutationsByPosition(\n groupedMutations.mutations,\n groupedMutations.group\n ),\n }));\n }\n\n @computed\n public get transcriptsByTranscriptId(): {\n [transcriptId: string]: EnsemblTranscript;\n } {\n return _.keyBy(\n this.allTranscripts.result,\n (transcript: EnsemblTranscript) => transcript.transcriptId\n );\n }\n\n public countUniqueMutationsByPosition(\n mutationsByPosition: {\n [pos: number]: T[];\n },\n group?: string\n ): { [pos: number]: number } {\n const map: { [pos: number]: number } = {};\n\n Object.keys(mutationsByPosition).forEach(pos => {\n const position = parseInt(pos, 10);\n // for each position multiple mutations for the same patient is counted only once\n const mutations = mutationsByPosition[position];\n if (mutations) {\n map[position] = this.countUniqueMutations(mutations, group);\n }\n });\n\n return map;\n }\n\n public countUniqueMutations(mutations: T[], group?: string): number {\n // assume by default all mutations are unique\n // child classes need to override this method to have a custom way of counting unique mutations\n return this.config.getMutationCount\n ? this.getMutationCount(mutations, this.config.getMutationCount)\n : mutations.length;\n }\n\n protected getMutationCount(\n mutations: T[],\n getMutationCount: (mutation: Partial<T>) => number\n ) {\n return mutations\n .map(m => getMutationCount(m))\n .reduce((sum, count) => sum + count);\n }\n\n readonly mutationData: MobxPromise<Partial<T>[] | undefined> = remoteData(\n {\n await: () => {\n if (this.config.filterMutationsBySelectedTranscript) {\n return [\n this.canonicalTranscript,\n this.indexedVariantAnnotations,\n ];\n } else {\n return [this.canonicalTranscript];\n }\n },\n invoke: async () => {\n return this.mutations;\n },\n },\n []\n );\n\n readonly swissProtId: MobxPromise<string> = remoteData(\n {\n invoke: async () => {\n // do not try fetching swissprot data for invalid entrez gene ids,\n // just return the default value\n if (!this.gene.entrezGeneId || this.gene.entrezGeneId < 1) {\n return '';\n }\n\n const accession:\n | string\n | string[] = await this.dataFetcher.fetchSwissProtAccession(\n this.gene.entrezGeneId\n );\n\n if (_.isArray(accession)) {\n return accession[0];\n } else {\n return accession;\n }\n },\n onError: () => {\n // fail silently\n },\n },\n ''\n );\n\n readonly uniprotId: MobxPromise<string | undefined> = remoteData(\n {\n await: () => [this.swissProtId],\n invoke: async () => {\n if (this.swissProtId.result) {\n return this.dataFetcher.fetchUniprotId(\n this.swissProtId.result\n );\n } else {\n return '';\n }\n },\n onError: () => {\n // fail silently\n },\n },\n ''\n );\n\n readonly pfamDomainData: MobxPromise<PfamDomain[] | undefined> = remoteData(\n {\n await: () => [\n this.canonicalTranscript,\n this.transcriptsWithProteinLength,\n ],\n invoke: async () => {\n if (\n this.canonicalTranscript.result &&\n this.canonicalTranscript.result.pfamDomains &&\n this.canonicalTranscript.result.pfamDomains.length > 0\n ) {\n let domainRanges = this.canonicalTranscript.result\n .pfamDomains;\n if (\n this.config.filterMutationsBySelectedTranscript &&\n this.transcriptsWithProteinLength.result &&\n this.transcriptsWithProteinLength.result.length > 0\n ) {\n // add domain ranges for all transcripts to this call\n domainRanges = [].concat.apply(\n [domainRanges],\n _.compact(\n this.transcriptsWithProteinLength.result.map(\n (transcriptId: string) =>\n this.transcriptsByTranscriptId[\n transcriptId\n ].pfamDomains\n )\n )\n );\n }\n return this.dataFetcher.fetchPfamDomainData(\n domainRanges.map((x: PfamDomainRange) => x.pfamDomainId)\n );\n } else {\n return undefined;\n }\n },\n onError: () => {\n // allow client level handler to work\n },\n },\n undefined\n );\n\n readonly canonicalTranscript: MobxPromise<\n EnsemblTranscript | undefined\n > = remoteData(\n {\n await: () => [this.transcriptsByHugoSymbol],\n invoke: async () => {\n if (this.gene) {\n return this.dataFetcher.fetchCanonicalTranscriptWithFallback(\n this.gene.hugoGeneSymbol,\n this.isoformOverrideSource,\n this.transcriptsByHugoSymbol.result\n );\n } else {\n return undefined;\n }\n },\n onError: () => {\n throw new Error('Failed to get canonical transcript');\n },\n },\n undefined\n );\n\n readonly allTranscripts: MobxPromise<\n EnsemblTranscript[] | undefined\n > = remoteData(\n {\n await: () => [\n this.transcriptsByHugoSymbol,\n this.canonicalTranscript,\n ],\n invoke: async () => {\n return _.compact(\n _.unionBy(\n this.transcriptsByHugoSymbol.result,\n [this.canonicalTranscript.result],\n t => t && t.transcriptId\n )\n );\n },\n onError: () => {\n throw new Error('Failed to get all transcripts');\n },\n },\n undefined\n );\n\n readonly transcriptsByHugoSymbol: MobxPromise<\n EnsemblTranscript[] | undefined\n > = remoteData(\n {\n invoke: async () => {\n if (this.gene) {\n return this.dataFetcher.fetchEnsemblTranscriptsByEnsemblFilter(\n { hugoSymbols: [this.gene.hugoGeneSymbol] }\n );\n } else {\n return undefined;\n }\n },\n onError: () => {\n throw new Error('Failed to fetch all transcripts');\n },\n },\n undefined\n );\n\n readonly transcriptsWithProteinLength: MobxPromise<\n string[] | undefined\n > = remoteData(\n {\n await: () => [this.allTranscripts, this.canonicalTranscript],\n invoke: async () => {\n if (\n this.allTranscripts.result &&\n this.canonicalTranscript.result\n ) {\n // ignore transcripts without protein length\n // TODO: better solution is to hide lollipop plot for those transcripts\n return _.compact(\n this.allTranscripts.result.map(\n (et: EnsemblTranscript) =>\n et.proteinLength && et.transcriptId\n )\n );\n } else {\n return [];\n }\n },\n onError: () => {\n throw new Error('Failed to get transcriptsWithProteinLength');\n },\n },\n undefined\n );\n\n readonly transcriptsWithAnnotations: MobxPromise<\n string[] | undefined\n > = remoteData(\n {\n await: () => [\n this.indexedVariantAnnotations,\n this.allTranscripts,\n this.transcriptsWithProteinLength,\n this.canonicalTranscript,\n ],\n invoke: async () => {\n if (\n this.indexedVariantAnnotations.result &&\n this.allTranscripts.result &&\n this.transcriptsWithProteinLength.result &&\n this.transcriptsWithProteinLength.result.length > 0\n ) {\n // ignore transcripts without protein length\n // TODO: better solution is to show only mutations table, not lollipop plot for those transcripts\n const transcripts: string[] = _.uniq(\n [].concat.apply(\n [],\n uniqueGenomicLocations(this.getMutations()).map(\n (gl: GenomicLocation) => {\n const variantAnnotation = this\n .indexedVariantAnnotations.result\n ? this.indexedVariantAnnotations.result[\n genomicLocationString(gl)\n ]\n : undefined;\n\n if (\n variantAnnotation &&\n !_.isEmpty(\n variantAnnotation.transcript_consequences\n )\n ) {\n return variantAnnotation.transcript_consequences\n .map(tc => tc.transcript_id)\n .filter((transcriptId: string) =>\n this.transcriptsWithProteinLength.result!.includes(\n transcriptId\n )\n );\n } else {\n return [];\n }\n }\n )\n )\n );\n // makes sure the annotations are actually of the form we are displaying (e.g. nonsynonymous)\n return transcripts.filter(\n t => this.getAnnotatedMutations(t).length > 0\n );\n } else {\n return [];\n }\n },\n onError: () => {\n throw new Error('Failed to get transcriptsWithAnnotations');\n },\n },\n undefined\n );\n\n readonly ptmData: MobxPromise<PostTranslationalModification[]> = remoteData(\n {\n await: () => {\n const waitList = [];\n\n if (this.ptmSources.includes(PtmSource.Uniprot)) {\n waitList.push(this.uniprotPtmData);\n }\n if (this.ptmSources.includes(PtmSource.dbPTM)) {\n waitList.push(this.dbPtmData);\n }\n\n return waitList;\n },\n invoke: () => {\n const data: PostTranslationalModification[] = [];\n\n if (\n this.ptmSources.includes(PtmSource.Uniprot) &&\n this.uniprotPtmData.result\n ) {\n data.push(\n ...this.uniprotPtmData.result.map(\n convertUniprotFeatureToPtm\n )\n );\n }\n\n if (\n this.ptmSources.includes(PtmSource.dbPTM) &&\n this.dbPtmData.result\n ) {\n data.push(...this.dbPtmData.result.map(convertDbPtmToPtm));\n }\n\n return Promise.resolve(data);\n },\n onError: () => {\n // fail silently\n },\n }\n );\n\n readonly uniprotPtmData: MobxPromise<UniprotFeature[]> = remoteData(\n {\n await: () => [\n this.mutationData,\n this.activeTranscript,\n this.allTranscripts,\n ],\n invoke: async () => {\n let uniprotId: string | undefined;\n\n if (this.activeTranscript.result) {\n const transcript = this.transcriptsByTranscriptId[\n this.activeTranscript.result\n ];\n uniprotId = transcript?.uniprotId;\n }\n\n if (uniprotId) {\n // TODO we need to update genome nexus for this one to work,\n // for now we are getting the data directly from uniprot API\n // return this.dataFetcher.fetchPtmData(\n // this.activeTranscript.result\n // );\n return this.dataFetcher.fetchUniprotFeatures(uniprotId, [\n UniprotCategory.PTM,\n ]);\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly uniprotTopologyData: MobxPromise<UniprotTopology[]> = remoteData(\n {\n await: () => [\n this.mutationData,\n this.activeTranscript,\n this.allTranscripts,\n ],\n invoke: async () => {\n let uniprotId: string | undefined;\n const data: UniprotTopology[] = [];\n\n if (this.activeTranscript.result) {\n const transcript = this.transcriptsByTranscriptId[\n this.activeTranscript.result\n ];\n uniprotId = transcript?.uniprotId;\n }\n\n if (uniprotId) {\n // TODO we need to update genome nexus for this one to work,\n // for now we are getting the data directly from uniprot API\n const uniprotFeatures = await this.dataFetcher.fetchUniprotFeatures(\n uniprotId,\n [UniprotCategory.TOPOLOGY]\n );\n uniprotFeatures.forEach(uniprotFeature => {\n let uniprotTopology = convertUniprotFeatureToUniprotTopology(\n uniprotFeature\n );\n if (uniprotTopology) {\n data.push(uniprotTopology);\n }\n });\n return data;\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly dbPtmData: MobxPromise<DbPtm[]> = remoteData(\n {\n await: () => [this.mutationData, this.activeTranscript],\n invoke: async () => {\n if (this.activeTranscript.result) {\n return this.dataFetcher.fetchPtmData(\n this.activeTranscript.result\n );\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly ptmDataByProteinPosStart: MobxPromise<\n { [pos: number]: PostTranslationalModification[] } | undefined\n > = remoteData(\n {\n await: () => [this.ptmData],\n invoke: async () =>\n this.ptmData.result\n ? groupPtmDataByPosition(this.ptmData.result)\n : {},\n },\n {}\n );\n\n readonly ptmDataByTypeAndProteinPosStart: MobxPromise<\n | {\n [type: string]: {\n [position: number]: PostTranslationalModification[];\n };\n }\n | undefined\n > = remoteData(\n {\n await: () => [this.ptmData],\n invoke: async () =>\n this.ptmData.result\n ? groupPtmDataByTypeAndPosition(this.ptmData.result)\n : {},\n },\n {}\n );\n\n readonly cancerHotspotsData: MobxPromise<Hotspot[]> = remoteData(\n {\n await: () => [this.mutationData, this.activeTranscript],\n invoke: async () => {\n if (this.activeTranscript.result) {\n // TODO resolve protein start pos if missing\n return this.dataFetcher.fetchCancerHotspotData(\n this.activeTranscript.result\n );\n } else {\n return [];\n }\n },\n onError: () => {\n // fail silently\n },\n },\n []\n );\n\n readonly cancerHotspotsDataByProteinPosStart: MobxPromise<{\n [pos: number]: Hotspot[];\n }> = remoteData(\n {\n await: () => [this.cancerHotspotsData],\n invoke: async () =>\n this.cancerHotspotsData.result\n ? groupCancerHotspotDataByPosition(\n this.cancerHotspotsData.result\n )\n : {},\n },\n {}\n );\n\n // Hotspots\n readonly hotspotData: MobxPromise<AggregatedHotspots[]> = remoteData({\n await: () => [this.mutationData],\n invoke: () => {\n return this.dataFetcher.fetchAggregatedHotspotsData(this.mutations);\n },\n });\n\n readonly indexedHotspotData: MobxPromise<\n IHotspotIndex | undefined\n > = remoteData({\n await: () => [this.hotspotData],\n invoke: () => Promise.resolve(indexHotspotsData(this.hotspotData)),\n });\n\n @computed\n get hotspotsByPosition(): { [pos: number]: Hotspot[] } {\n if (this.indexedHotspotData.result) {\n return groupHotspotsByMutations(\n this.mutationsByPosition,\n this.indexedHotspotData.result,\n defaultHotspotFilter\n );\n } else {\n return {};\n }\n }\n\n readonly oncoKbCancerGenes: MobxPromise<CancerGene[] | Error> = remoteData(\n {\n invoke: () => this.dataFetcher.fetchOncoKbCancerGenes(),\n },\n []\n );\n\n readonly oncoKbInfo: MobxPromise<OncoKBInfo> = remoteData(\n {\n invoke: () => this.dataFetcher.fetchOncoKbInfo(),\n onError: () => ONCOKB_DEFAULT_INFO,\n },\n ONCOKB_DEFAULT_INFO\n );\n\n @computed\n get usingPublicOncoKbInstance() {\n return this.oncoKbInfo.result\n ? this.oncoKbInfo.result.publicInstance\n : USE_DEFAULT_PUBLIC_INSTANCE_FOR_ONCOKB;\n }\n\n readonly oncoKbAnnotatedGenes: MobxPromise<{\n [entrezGeneId: number]: boolean;\n }> = remoteData(\n {\n await: () => [this.oncoKbCancerGenes],\n invoke: () =>\n Promise.resolve(\n _.reduce(\n this.oncoKbCancerGenes.result,\n (\n map: { [entrezGeneId: number]: boolean },\n next: CancerGene\n ) => {\n if (next && next.oncokbAnnotated) {\n map[next.entrezGeneId] = true;\n }\n return map;\n },\n {}\n )\n ),\n },\n {}\n );\n\n readonly oncoKbData: MobxPromise<IOncoKbData | Error> = remoteData(\n {\n await: () => [this.mutationData, this.oncoKbAnnotatedGenes],\n invoke: () =>\n this.config.enableOncoKb\n ? this.dataFetcher.fetchOncoKbData(\n this.mutations,\n this.oncoKbAnnotatedGenes.result!,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId\n )\n : Promise.resolve(ONCOKB_DEFAULT_DATA),\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n },\n ONCOKB_DEFAULT_DATA\n );\n\n @computed\n get oncoKbDataByPosition(): { [pos: number]: IndicatorQueryResp[] } {\n if (\n this.oncoKbData.result &&\n !(this.oncoKbData.result instanceof Error)\n ) {\n return groupOncoKbIndicatorDataByMutations(\n this.mutationsByPosition,\n this.oncoKbData.result,\n this.getDefaultTumorType,\n this.getDefaultEntrezGeneId,\n defaultOncoKbIndicatorFilter\n );\n } else {\n return {};\n }\n }\n\n readonly civicGenes: MobxPromise<ICivicGeneIndex | undefined> = remoteData({\n await: () => [this.mutationData],\n invoke: async () =>\n this.config.enableCivic\n ? fetchCivicGenes(this.mutationData.result || [])\n : {},\n onError: () => {\n // fail silently\n },\n });\n\n readonly civicVariants = remoteData<ICivicVariantIndex | undefined>({\n await: () => [this.civicGenes, this.mutationData],\n invoke: async () => {\n if (this.config.enableCivic && this.civicGenes.result) {\n return fetchCivicVariants(\n this.civicGenes.result as ICivicGeneIndex,\n this.mutationData.result || []\n );\n } else {\n return {};\n }\n },\n onError: () => {\n // fail silently\n },\n });\n\n readonly indexedVariantAnnotations: MobxPromise<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n > = remoteData({\n invoke: async () =>\n !_.isEmpty(this.getMutations())\n ? await this.dataFetcher.fetchVariantAnnotationsIndexedByGenomicLocation(\n this.getMutations(),\n this.annotationFields,\n this.isoformOverrideSource\n )\n : undefined,\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n });\n\n readonly indexedMyVariantInfoAnnotations: MobxPromise<\n IMyVariantInfoIndex | undefined\n > = remoteData({\n await: () => [this.mutationData],\n invoke: async () =>\n !_.isEmpty(this.getMutations())\n ? await this.dataFetcher.fetchMyVariantInfoAnnotationsIndexedByGenomicLocation(\n this.getMutations(),\n this.isoformOverrideSource\n )\n : undefined,\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n });\n\n @computed\n get mutationsByTranscriptId(): { [transcriptId: string]: T[] } {\n if (\n this.indexedVariantAnnotations.result &&\n this.transcriptsWithAnnotations.result &&\n this.canonicalTranscript.isComplete\n ) {\n return _.fromPairs(\n this.transcriptsWithAnnotations.result.map((t: string) => [\n t,\n this.getAnnotatedMutations(t),\n ])\n );\n } else {\n return {};\n }\n }\n\n @autobind\n protected getDefaultTumorType(mutation: T): string {\n return this.config.getTumorType\n ? this.config.getTumorType(mutation)\n : '';\n }\n\n @autobind\n protected getDefaultEntrezGeneId(mutation: T): number {\n // assuming all mutations in this store is for the same gene\n return (\n this.gene.entrezGeneId ||\n (mutation.gene && mutation.gene.entrezGeneId) ||\n 0\n );\n }\n\n readonly ensemblTranscriptLookUp: MobxPromise<any | undefined> = remoteData(\n {\n await: () => [this.activeTranscript],\n invoke: async () => {\n const ensemblTranscriptLookUpLink =\n this.genomeBuild === 'hg19'\n ? `https://grch37.rest.ensembl.org/lookup/id/${this.activeTranscript.result}?content-type=application/json`\n : `https://rest.ensembl.org/lookup/id/${this.activeTranscript.result}?content-type=application/json`;\n return this.activeTranscript.result\n ? get(ensemblTranscriptLookUpLink)\n : undefined;\n },\n onError: () => {\n // fail silently, leave the error handling responsibility to the data consumer\n },\n }\n );\n\n @computed\n // Get genome build for exon track\n public get genomeBuild(): string {\n return this.config.genomeBuild || 'hg19';\n }\n}\n\nexport default DefaultMutationMapperStore;\n","import { WindowWrapper } from 'cbioportal-frontend-commons';\n\nlet windowInstance: WindowWrapper | undefined;\n\nexport function getDefaultWindowInstance() {\n if (!windowInstance) {\n windowInstance = new WindowWrapper();\n }\n\n return windowInstance;\n}\n","import { DefaultTooltip } from 'cbioportal-frontend-commons';\nimport { formatPercentValue } from 'cbioportal-utils';\nimport * as React from 'react';\n\nimport styles from './defaultMutationRateSummary.module.scss';\n\nexport type MutationRate = {\n rate: number;\n title: string;\n description?: string;\n};\n\nexport type DefaultMutationRateSummaryProps = {\n rates: MutationRate[];\n fractionDigits?: number;\n};\n\nexport default class DefaultMutationRateSummary extends React.Component<\n DefaultMutationRateSummaryProps\n> {\n public render() {\n return (\n <React.Fragment>\n {this.props.rates.map(r => (\n <div key={r.title} className={styles.mutationRateSummary}>\n <span>{r.title}: </span>\n <span>\n {formatPercentValue(\n r.rate,\n this.props.fractionDigits\n )}\n %\n </span>\n {r.description && (\n <DefaultTooltip\n placement=\"right\"\n overlay={<span>{r.description}</span>}\n >\n <i\n className=\"fa fa-info-circle\"\n style={{ marginLeft: '0.2rem' }}\n />\n </DefaultTooltip>\n )}\n </div>\n ))}\n </React.Fragment>\n );\n }\n}\n","import classNames from 'classnames';\nimport _ from 'lodash';\nimport { observer } from 'mobx-react';\nimport * as React from 'react';\nimport Select from 'react-select';\n\nimport { Mutation, RemoteData } from 'cbioportal-utils';\nimport {\n EnsemblTranscript,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\n\nimport styles from './transcriptDropdown.module.scss';\n\nexport type TranscriptDropdownProps = {\n showDropDown: boolean;\n showOnlyAnnotatedTranscriptsInDropdown: boolean;\n activeTranscript?: string;\n transcriptsByTranscriptId: { [transcriptId: string]: EnsemblTranscript };\n canonicalTranscript: RemoteData<EnsemblTranscript | undefined>;\n transcriptsWithProteinLength: RemoteData<string[] | undefined>;\n transcriptsWithAnnotations: RemoteData<string[] | undefined>;\n indexedVariantAnnotations: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] };\n onChange: (value: string) => void;\n loadingIndicator?: JSX.Element;\n};\n\n@observer\nexport default class TranscriptDropdown extends React.Component<\n TranscriptDropdownProps,\n {}\n> {\n public render() {\n const {\n showDropDown,\n canonicalTranscript,\n showOnlyAnnotatedTranscriptsInDropdown,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptsWithProteinLength,\n transcriptsWithAnnotations,\n indexedVariantAnnotations,\n mutationsByTranscriptId,\n } = this.props;\n\n const canonicalTranscriptId =\n canonicalTranscript.result &&\n canonicalTranscript.result.transcriptId;\n\n if (!showDropDown) {\n return <span />;\n } else if (showOnlyAnnotatedTranscriptsInDropdown) {\n const isLoading =\n transcriptsWithProteinLength.isPending ||\n transcriptsWithAnnotations.isPending ||\n canonicalTranscript.isPending;\n const requiredData =\n indexedVariantAnnotations.result &&\n Object.keys(indexedVariantAnnotations.result).length > 0 &&\n canonicalTranscriptId &&\n transcriptsWithAnnotations.result &&\n transcriptsWithAnnotations.result.length > 0;\n\n return (\n <div className={classNames('small', styles.dropDown)}>\n {this.loadingIndicator(isLoading)}\n {!isLoading &&\n requiredData &&\n this.getDropdownTranscripts(\n activeTranscript || canonicalTranscriptId!,\n transcriptsWithAnnotations.result!,\n canonicalTranscriptId!,\n transcriptsByTranscriptId,\n mutationsByTranscriptId\n )}\n </div>\n );\n } else {\n // using existing annotations, show all transcripts with protein length\n const isLoading =\n transcriptsWithProteinLength.isPending ||\n canonicalTranscript.isPending;\n const requiredData =\n transcriptsWithProteinLength.result &&\n transcriptsWithProteinLength.result.length > 0 &&\n canonicalTranscriptId;\n return (\n <div className={classNames('small', styles.dropDown)}>\n {this.loadingIndicator(isLoading)}\n {!isLoading &&\n requiredData &&\n this.getDropdownTranscripts(\n activeTranscript || canonicalTranscriptId!!,\n transcriptsWithProteinLength.result!!,\n canonicalTranscriptId!!,\n transcriptsByTranscriptId\n )}\n </div>\n );\n }\n }\n\n private getDropdownTranscripts(\n activeTranscript: string,\n allTranscripts: string[],\n canonicalTranscript: string,\n transcriptsByTranscriptId: {\n [transcriptId: string]: EnsemblTranscript;\n },\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] }\n ) {\n const activeRefseqMrnaId =\n transcriptsByTranscriptId[activeTranscript].refseqMrnaId;\n return (\n <div>\n <Select\n value={{\n label: activeRefseqMrnaId\n ? activeRefseqMrnaId\n : activeTranscript,\n value: activeTranscript,\n }}\n clearable={false}\n // need to explicitly set delteRemoves for cleable\n // https://github.com/JedWatson/react-select/issues/1560\n deleteRemoves={false}\n options={this.sortTranscripts(allTranscripts).map(\n (t: string) => {\n const length =\n transcriptsByTranscriptId[t].proteinLength;\n const refseqMrnaId =\n transcriptsByTranscriptId[t].refseqMrnaId;\n const ccdsId = transcriptsByTranscriptId[t].ccdsId;\n const nrOfMutations =\n mutationsByTranscriptId &&\n mutationsByTranscriptId[t] &&\n mutationsByTranscriptId[t].length;\n const label = `${\n refseqMrnaId ? `${refseqMrnaId} / ` : ''\n }${t} ${ccdsId ? `(${ccdsId})` : ''} ${\n length ? `(${length} amino acids)` : ''\n } ${\n nrOfMutations\n ? `(${nrOfMutations} mutations)`\n : ''\n } ${t === canonicalTranscript ? ' (default)' : ''}`;\n return { label: label, value: t };\n }\n )}\n onChange={(option: any) => {\n if (option.value) {\n this.props.onChange(option.value);\n }\n }}\n />\n </div>\n );\n }\n\n private sortTranscripts(transcripts: string[]) {\n const { canonicalTranscript, transcriptsByTranscriptId } = this.props;\n\n // sort transcripts for dropdown\n // canonical id first\n // then ones with refseq id\n // then protein length\n // lastly the ensembl id\n transcripts = _.orderBy(\n transcripts,\n [\n t =>\n canonicalTranscript.result &&\n t === canonicalTranscript.result.transcriptId,\n t =>\n transcriptsByTranscriptId[t].hasOwnProperty('refseqMrnaId'),\n t => transcriptsByTranscriptId[t].proteinLength,\n t => t,\n ],\n ['desc', 'desc', 'desc', 'asc']\n );\n return transcripts;\n }\n\n private loadingIndicator(isLoading: boolean) {\n return isLoading\n ? this.props.loadingIndicator || (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n )\n : null;\n }\n}\n","import { observer } from 'mobx-react';\nimport * as React from 'react';\nimport { getNCBIlink } from 'cbioportal-frontend-commons';\nimport { Mutation, RemoteData } from 'cbioportal-utils';\nimport {\n EnsemblTranscript,\n VariantAnnotation,\n} from 'genome-nexus-ts-api-client';\n\nimport { getUrl } from '../../util/DataFetcherUtils';\nimport TranscriptDropdown from './TranscriptDropdown';\nimport styles from './geneSummary.module.scss';\n\nexport type GeneSummaryProps = {\n hugoGeneSymbol: string;\n uniprotId?: string;\n transcriptSummaryUrlTemplate?: string;\n showDropDown: boolean;\n showOnlyAnnotatedTranscriptsInDropdown: boolean;\n compactStyle?: boolean; // compactStyle = false: \"RefSeq: NM_000546 Ensembl: ENST00000269305...\", compactStyle = true: \"NM_000546 | ENST00000269305...\"\n transcriptsByTranscriptId: { [transcriptId: string]: EnsemblTranscript };\n activeTranscript?: string;\n canonicalTranscript: RemoteData<EnsemblTranscript | undefined>;\n transcriptsWithProteinLength: RemoteData<string[] | undefined>;\n transcriptsWithAnnotations: RemoteData<string[] | undefined>;\n indexedVariantAnnotations: RemoteData<\n { [genomicLocation: string]: VariantAnnotation } | undefined\n >;\n mutationsByTranscriptId?: { [transcriptId: string]: Mutation[] };\n onTranscriptChange: (transcriptId: string) => void;\n loadingIndicator?: JSX.Element;\n};\n\nconst GeneSummaryInfo: React.FunctionComponent<GeneSummaryProps> = ({\n uniprotId,\n showDropDown,\n canonicalTranscript,\n compactStyle,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptSummaryUrlTemplate,\n}) => {\n const canonicalTranscriptId =\n canonicalTranscript.result && canonicalTranscript.result.transcriptId;\n const transcript =\n activeTranscript && activeTranscript === canonicalTranscriptId\n ? (canonicalTranscript.result as EnsemblTranscript)\n : transcriptsByTranscriptId[activeTranscript!];\n const refseqMrnaId = transcript && transcript.refseqMrnaId;\n const ccdsId = transcript && transcript.ccdsId;\n\n const refSeq = refseqMrnaId ? (\n <a href={getNCBIlink(`/nuccore/${refseqMrnaId}`)} target=\"_blank\">\n {refseqMrnaId}\n </a>\n ) : (\n '-'\n );\n const ensembl = showDropDown\n ? activeTranscript && (\n <a\n href={getUrl(transcriptSummaryUrlTemplate!, {\n transcriptId: activeTranscript,\n })}\n target=\"_blank\"\n >\n {activeTranscript}\n </a>\n )\n : canonicalTranscriptId && (\n // down't show drop down, only the canonical transcript\n <a\n href={getUrl(transcriptSummaryUrlTemplate!, {\n transcriptId: canonicalTranscriptId,\n })}\n target=\"_blank\"\n >\n {canonicalTranscriptId}\n </a>\n );\n const ccds = ccdsId ? (\n <a\n href={getNCBIlink({\n pathname: '/CCDS/CcdsBrowse.cgi',\n query: {\n REQUEST: 'CCDS',\n DATA: ccdsId,\n },\n })}\n target=\"_blank\"\n >\n {ccdsId}\n </a>\n ) : (\n '-'\n );\n\n const uniprot = uniprotId ? (\n <a\n href={`https://www.uniprot.org/uniprot/${uniprotId}`}\n target=\"_blank\"\n >\n {uniprotId}\n </a>\n ) : (\n '-'\n );\n\n const compactGeneSummaryInfo = (\n <div>\n <span data-test=\"compactGeneSummaryRefSeq\">{refSeq}</span>\n {` | `}\n {ensembl}\n <br />\n <span data-test=\"compactGeneSummaryCCDS\">{ccds}</span>\n {` | `}\n <span data-test=\"compactGeneSummaryUniProt\">{uniprot}</span>\n </div>\n );\n\n const geneSummaryInfo = (\n <div>\n <div>\n <span data-test=\"GeneSummaryRefSeq\">\n {'RefSeq: '}\n {refSeq}\n </span>\n </div>\n <div>\n <span>Ensembl: </span>\n {ensembl}\n </div>\n <div>\n <span data-test=\"GeneSummaryCCDS\">\n {'CCDS: '}\n {ccds}\n </span>\n </div>\n <div>\n <span data-test=\"GeneSummaryUniProt\">\n {'UniProt: '}\n {uniprot}\n </span>\n </div>\n </div>\n );\n return compactStyle ? compactGeneSummaryInfo : geneSummaryInfo;\n};\n\n@observer\nexport default class GeneSummary extends React.Component<GeneSummaryProps, {}> {\n public static defaultProps: Partial<GeneSummaryProps> = {\n transcriptSummaryUrlTemplate:\n 'http://grch37.ensembl.org/homo_sapiens/Transcript/Summary?t=<%= transcriptId %>',\n compactStyle: false,\n };\n\n public render() {\n const {\n hugoGeneSymbol,\n showDropDown,\n showOnlyAnnotatedTranscriptsInDropdown,\n canonicalTranscript,\n activeTranscript,\n transcriptsByTranscriptId,\n transcriptsWithAnnotations,\n transcriptsWithProteinLength,\n indexedVariantAnnotations,\n mutationsByTranscriptId,\n onTranscriptChange,\n loadingIndicator,\n } = this.props;\n\n return (\n <div\n className={\n this.props.compactStyle\n ? styles.geneSummaryCompact\n : styles.geneSummary\n }\n >\n {!this.props.compactStyle && (\n <h4 className={styles.hugoSymbol}>{hugoGeneSymbol}</h4>\n )}\n <TranscriptDropdown\n showDropDown={showDropDown}\n showOnlyAnnotatedTranscriptsInDropdown={\n showOnlyAnnotatedTranscriptsInDropdown\n }\n activeTranscript={activeTranscript}\n transcriptsByTranscriptId={transcriptsByTranscriptId}\n canonicalTranscript={canonicalTranscript}\n transcriptsWithProteinLength={transcriptsWithProteinLength}\n transcriptsWithAnnotations={transcriptsWithAnnotations}\n indexedVariantAnnotations={indexedVariantAnnotations}\n mutationsByTranscriptId={mutationsByTranscriptId}\n onChange={onTranscriptChange}\n loadingIndicator={loadingIndicator}\n />\n <GeneSummaryInfo {...this.props} />\n </div>\n );\n }\n}\n","import { action, computed, makeObservable, observable } from 'mobx';\nimport * as React from 'react';\nimport { ReactNode } from 'react';\nimport { TableProps } from 'react-table';\n\nimport { MobxCache, Mutation, RemoteData } from 'cbioportal-utils';\n\nimport { DefaultPubMedCache } from '../../cache/DefaultPubMedCache';\nimport { MutationAlignerCache } from '../../cache/MutationAlignerCache';\nimport { FilterResetPanel } from './FilterResetPanel';\nimport { DataFilter } from '../../model/DataFilter';\nimport { ApplyFilterFn, FilterApplier } from '../../model/FilterApplier';\nimport { LollipopPlotControlsConfig } from '../../model/LollipopPlotControlsConfig';\nimport { MutationMapperDataFetcher } from '../../model/MutationMapperDataFetcher';\nimport { MutationMapperStore } from '../../model/MutationMapperStore';\nimport { DefaultLollipopPlotControlsConfig } from '../../store/DefaultLollipopPlotControlsConfig';\nimport DefaultMutationMapperStore from '../../store/DefaultMutationMapperStore';\nimport { initDefaultTrackVisibility } from '../../util/TrackUtils';\nimport { getDefaultWindowInstance } from '../../util/DefaultWindowInstance';\nimport { ColumnSort, DataTableColumn } from '../dataTable/DataTable';\nimport DefaultMutationRateSummary, {\n MutationRate,\n} from './DefaultMutationRateSummary';\nimport DefaultMutationTable from '../mutationTable/DefaultMutationTable';\nimport GeneSummary from './GeneSummary';\nimport LollipopMutationPlot from '../lollipopMutationPlot/LollipopMutationPlot';\nimport { DEFAULT_MUTATION_COLUMNS } from '../mutationTable/MutationColumnHelper';\nimport {\n TrackDataStatus,\n TrackName,\n TrackVisibility,\n} from '../track/TrackSelector';\n\nexport type MutationMapperProps = {\n hugoSymbol?: string;\n entrezGeneId?: number;\n data?: Partial<Mutation>[];\n store?: MutationMapperStore<Mutation>;\n lollipopPlotControlsConfig?: LollipopPlotControlsConfig;\n windowWrapper?: { size: { width: number; height: number } };\n trackVisibility?: TrackVisibility;\n tracks?: TrackName[];\n showTrackSelector?: boolean;\n mutationTableColumns?: DataTableColumn<Partial<Mutation>>[];\n customMutationTableProps?: Partial<TableProps<Partial<Mutation>>>;\n showFilterResetPanel?: boolean;\n showPlotYAxis?: boolean;\n showPlotYMaxSlider?: boolean;\n showPlotLegendToggle?: boolean;\n showPlotDownloadControls?: boolean;\n plotYMaxFractionDigits?: number;\n plotYMaxLabelPostfix?: string;\n plotTopYAxisSymbol?: string;\n plotBottomYAxisSymbol?: string;\n plotTopYAxisDefaultMax?: number;\n plotTopYAxisDefaultMin?: number;\n plotBottomYAxisDefaultMax?: number;\n plotBottomYAxisDefaultMin?: number;\n plotYAxisLabelPadding?: number;\n plotLollipopTooltipCountInfo?: (\n count: number,\n mutations?: Partial<Mutation>[]\n ) => JSX.Element;\n plotVizHeight?: number;\n customControls?: JSX.Element;\n mutationTable?: JSX.Element;\n mutationTableInitialSort?: ColumnSort[];\n mutationTableInitialSortRemoteData?: (RemoteData<any> | undefined)[];\n mutationRates?: MutationRate[];\n pubMedCache?: MobxCache;\n mutationAlignerCache?: MobxCache;\n // TODO annotateMutations?: boolean;\n dataFetcher?: MutationMapperDataFetcher;\n mutationAlignerUrlTemplate?: string;\n genomeNexusUrl?: string;\n oncoKbUrl?: string;\n enableOncoKb?: boolean;\n enableCivic?: boolean;\n enableRevue?: boolean;\n cachePostMethodsOnClients?: boolean;\n apiCacheLimit?: number;\n showTranscriptDropDown?: boolean;\n showOnlyAnnotatedTranscriptsInDropdown?: boolean;\n filterMutationsBySelectedTranscript?: boolean;\n transcriptSummaryUrlTemplate?: string;\n isoformOverrideSource?: string;\n ptmSources?: string[];\n annotationFields?: string[];\n mainLoadingIndicator?: JSX.Element;\n geneSummaryLoadingIndicator?: JSX.Element;\n getLollipopColor?: (mutations: Partial<Mutation>[]) => string;\n getMutationCount?: (mutation: Partial<Mutation>) => number;\n getTumorType?: (mutation: Partial<Mutation>) => string;\n onXAxisOffset?: (offset: number) => void;\n onTrackVisibilityChange?: (selectedTrackIds: string[]) => void;\n\n dataFilters?: DataFilter[];\n selectionFilters?: DataFilter[];\n highlightFilters?: DataFilter[];\n groupFilters?: { group: string; filter: DataFilter }[];\n filterAppliersOverride?: { [filterType: string]: ApplyFilterFn };\n filterApplier?: FilterApplier;\n onTranscriptChange?: (transcript: string) => void;\n compactStyle?: boolean;\n collapsePtmTrack?: boolean;\n collapseUniprotTopologyTrack?: boolean;\n};\n\nexport function initDefaultMutationMapperStore(props: MutationMapperProps) {\n return new DefaultMutationMapperStore(\n {\n entrezGeneId: props.entrezGeneId, // entrezGeneId is required to display uniprot id\n hugoGeneSymbol: props.hugoSymbol ? props.hugoSymbol! : '',\n },\n {\n annotationFields: props.annotationFields,\n isoformOverrideSource: props.isoformOverrideSource,\n ptmSources: props.ptmSources,\n filterMutationsBySelectedTranscript:\n props.filterMutationsBySelectedTranscript,\n genomeNexusUrl: props.genomeNexusUrl,\n oncoKbUrl: props.oncoKbUrl,\n enableCivic: props.enableCivic,\n enableOncoKb: props.enableOncoKb,\n enableRevue: props.enableRevue,\n cachePostMethodsOnClients: props.cachePostMethodsOnClients,\n apiCacheLimit: props.apiCacheLimit,\n getMutationCount: props.getMutationCount,\n getTumorType: props.getTumorType,\n dataFetcher: props.dataFetcher,\n filterApplier: props.filterApplier,\n filterAppliersOverride: props.filterAppliersOverride,\n dataFilters: props.dataFilters,\n selectionFilters: props.selectionFilters,\n highlightFilters: props.highlightFilters,\n groupFilters: props.groupFilters,\n },\n () => (props.data || []) as Mutation[]\n );\n}\n\nexport default class MutationMapper<\n P extends MutationMapperProps = MutationMapperProps\n> extends React.Component<P, {}> {\n public static defaultProps: Partial<MutationMapperProps> = {\n showFilterResetPanel: true,\n showOnlyAnnotatedTranscriptsInDropdown: false,\n showTranscriptDropDown: false,\n enableCivic: true,\n enableOncoKb: true,\n enableRevue: true,\n filterMutationsBySelectedTranscript: false,\n cachePostMethodsOnClients: true,\n };\n\n constructor(props: any) {\n super(props);\n makeObservable(this);\n }\n\n @observable\n private _trackVisibility: TrackVisibility | undefined;\n\n @observable\n protected lollipopPlotGeneX: number | undefined;\n\n @computed\n protected get geneWidth(): number {\n if (this.lollipopPlotGeneX) {\n return this.windowWrapper.size.width * 0.7 - this.lollipopPlotGeneX;\n } else {\n return 666;\n }\n }\n\n @computed\n protected get trackVisibility(): TrackVisibility {\n if (this.props.trackVisibility) {\n return this.props.trackVisibility!;\n } else {\n if (!this._trackVisibility) {\n this._trackVisibility = initDefaultTrackVisibility();\n }\n\n return this._trackVisibility;\n }\n }\n\n protected getTrackDataStatus(): TrackDataStatus {\n // TODO dummy method for now: move the implementation from cbioportal-frontend\n return {};\n }\n\n @computed get trackDataStatus() {\n return this.getTrackDataStatus();\n }\n\n protected get plotTopYAxisSymbol(): string | undefined {\n return this.props.plotTopYAxisSymbol;\n }\n\n protected get plotYMaxLabelPostfix(): string | undefined {\n return this.props.plotYMaxLabelPostfix;\n }\n\n protected get plotBottomYAxisSymbol(): string | undefined {\n return this.props.plotBottomYAxisSymbol;\n }\n\n protected get plotTopYAxisDefaultMax(): number | undefined {\n return this.props.plotTopYAxisDefaultMax;\n }\n\n protected get plotTopYAxisDefaultMin(): number | undefined {\n return this.props.plotTopYAxisDefaultMin;\n }\n\n protected get plotBottomYAxisDefaultMax(): number | undefined {\n return this.props.plotBottomYAxisDefaultMax;\n }\n\n protected get plotBottomYAxisDefaultMin(): number | undefined {\n return this.props.plotBottomYAxisDefaultMin;\n }\n\n @computed\n protected get store(): MutationMapperStore<Mutation> {\n return this.props.store\n ? this.props.store!\n : initDefaultMutationMapperStore(this.props);\n }\n\n protected get lollipopPlotControlsConfig(): LollipopPlotControlsConfig {\n return this.props.lollipopPlotControlsConfig\n ? this.props.lollipopPlotControlsConfig!\n : new DefaultLollipopPlotControlsConfig();\n }\n\n protected get pubMedCache(): MobxCache {\n return this.props.pubMedCache\n ? this.props.pubMedCache!\n : new DefaultPubMedCache();\n }\n\n protected get mutationAlignerCache(): MobxCache {\n // mutationAlignerUrlTemplate property is ignored if a custom cache implementation is provided\n return this.props.mutationAlignerCache\n ? this.props.mutationAlignerCache!\n : new MutationAlignerCache(this.props.mutationAlignerUrlTemplate);\n }\n\n protected getWindowWrapper() {\n return this.props.windowWrapper\n ? this.props.windowWrapper!\n : getDefaultWindowInstance();\n }\n\n @computed\n protected get windowWrapper(): { size: { width: number; height: number } } {\n return this.getWindowWrapper();\n }\n\n protected get mutationTableInfo(): JSX.Element | undefined {\n // TODO implement default\n // @computed\n // get multipleMutationInfo(): string {\n // const count = this.store.dataStore.duplicateMutationCountInMultipleSamples;\n // const mutationsLabel = count === 1 ? \"mutation\" : \"mutations\";\n //\n // return count > 0 ? `: includes ${count} duplicate ${mutationsLabel} in patients with multiple samples` : \"\";\n // }\n //\n // @computed get itemsLabelPlural(): string {\n // return `Mutations${this.multipleMutationInfo}`;\n // }\n\n return undefined;\n }\n\n protected get mutationTableComponent(): JSX.Element | null {\n if (this.props.mutationTable) {\n return this.props.mutationTable!;\n } else {\n let columns: DataTableColumn<\n Partial<Mutation>\n >[] = DEFAULT_MUTATION_COLUMNS;\n if (this.props.mutationTableColumns) {\n columns = this.props.mutationTableColumns!;\n }\n\n return (\n <DefaultMutationTable\n dataStore={this.store.dataStore}\n columns={columns}\n initialSort={this.props.mutationTableInitialSort}\n initialSortRemoteData={\n this.props.mutationTableInitialSortRemoteData\n }\n reactTableProps={this.props.customMutationTableProps}\n hotspotData={this.store.indexedHotspotData}\n oncoKbData={this.store.oncoKbData}\n usingPublicOncoKbInstance={\n this.store.usingPublicOncoKbInstance\n }\n oncoKbCancerGenes={this.store.oncoKbCancerGenes}\n myCancerGenomeData={this.store.myCancerGenomeData}\n enableCivic={this.props.enableCivic}\n enableRevue={this.props.enableRevue}\n civicGenes={this.store.civicGenes}\n civicVariants={this.store.civicVariants}\n indexedMyVariantInfoAnnotations={\n this.store.indexedMyVariantInfoAnnotations\n }\n indexedVariantAnnotations={\n this.store.indexedVariantAnnotations\n }\n selectedTranscriptId={this.store.selectedTranscript}\n pubMedCache={this.pubMedCache}\n info={this.mutationTableInfo}\n />\n );\n }\n }\n\n protected get mutationPlot(): JSX.Element | null {\n return (\n <LollipopMutationPlot\n store={this.store}\n controlsConfig={this.lollipopPlotControlsConfig}\n pubMedCache={this.pubMedCache}\n mutationAlignerCache={this.mutationAlignerCache}\n geneWidth={this.geneWidth}\n vizHeight={this.props.plotVizHeight}\n trackVisibility={this.trackVisibility}\n customControls={this.customControls}\n tracks={this.props.tracks}\n showYMaxSlider={this.props.showPlotYMaxSlider}\n showLegendToggle={this.props.showPlotLegendToggle}\n showDownloadControls={this.props.showPlotDownloadControls}\n filterResetPanel={\n this.props.showFilterResetPanel &&\n this.isFiltered &&\n this.filterResetPanel\n ? this.filterResetPanel\n : undefined\n }\n trackDataStatus={this.trackDataStatus}\n showTrackSelector={this.props.showTrackSelector}\n onXAxisOffset={this.onXAxisOffset}\n onTrackVisibilityChange={this.props.onTrackVisibilityChange}\n getMutationCount={this.props.getMutationCount}\n getLollipopColor={this.props.getLollipopColor}\n yMaxLabelPostfix={this.plotYMaxLabelPostfix}\n yMaxFractionDigits={this.props.plotYMaxFractionDigits}\n yAxisLabelPadding={this.props.plotYAxisLabelPadding}\n showYAxis={this.props.showPlotYAxis}\n topYAxisSymbol={this.plotTopYAxisSymbol}\n bottomYAxisSymbol={this.plotBottomYAxisSymbol}\n topYAxisDefaultMax={this.plotTopYAxisDefaultMax}\n topYAxisDefaultMin={this.plotBottomYAxisDefaultMin}\n bottomYAxisDefaultMax={this.plotBottomYAxisDefaultMax}\n bottomYAxisDefaultMin={this.plotBottomYAxisDefaultMin}\n lollipopTooltipCountInfo={\n this.props.plotLollipopTooltipCountInfo\n }\n collapsePtmTrack={this.props.collapsePtmTrack}\n collapseUniprotTopologyTrack={\n this.props.collapseUniprotTopologyTrack\n }\n />\n );\n }\n\n protected get customControls(): JSX.Element | undefined {\n return this.props.customControls;\n }\n\n protected get geneSummary(): JSX.Element | null {\n return (\n <GeneSummary\n hugoGeneSymbol={this.store.gene.hugoGeneSymbol}\n uniprotId={this.store.uniprotId.result}\n showDropDown={!!this.props.showTranscriptDropDown}\n showOnlyAnnotatedTranscriptsInDropdown={\n !!this.props.showOnlyAnnotatedTranscriptsInDropdown\n }\n transcriptsByTranscriptId={this.store.transcriptsByTranscriptId}\n canonicalTranscript={this.store.canonicalTranscript}\n loadingIndicator={this.props.geneSummaryLoadingIndicator}\n activeTranscript={this.store.activeTranscript!.result}\n indexedVariantAnnotations={this.store.indexedVariantAnnotations}\n transcriptsWithAnnotations={\n this.store.transcriptsWithAnnotations\n }\n transcriptsWithProteinLength={\n this.store.transcriptsWithProteinLength\n }\n mutationsByTranscriptId={this.store.mutationsByTranscriptId}\n transcriptSummaryUrlTemplate={\n this.props.transcriptSummaryUrlTemplate\n }\n onTranscriptChange={this.handleTranscriptChange}\n compactStyle={this.props.compactStyle}\n />\n );\n }\n\n protected get mutationRates(): MutationRate[] | undefined {\n return this.props.mutationRates;\n }\n\n protected getMutationRateSummary() {\n return this.mutationRates ? (\n <DefaultMutationRateSummary rates={this.mutationRates!} />\n ) : null;\n }\n\n protected get mutationRateSummary(): JSX.Element | null {\n return this.getMutationRateSummary();\n }\n\n protected get isFiltered(): boolean {\n return (\n this.store.dataStore.selectionFilters.length > 0 ||\n this.store.dataStore.dataFilters.length > 0\n );\n }\n\n protected get isMutationTableDataLoading(): boolean {\n // Child classes should override this method\n return false;\n }\n\n protected get filterResetPanel(): JSX.Element | null {\n const dataStore = this.store.dataStore;\n const tableData =\n dataStore.sortedFilteredSelectedData.length > 0\n ? dataStore.sortedFilteredSelectedData\n : dataStore.sortedFilteredData;\n const allData = dataStore.allData;\n\n return (\n <FilterResetPanel\n filterInfo={`Showing ${tableData.length} of ${allData.length} mutations.`}\n resetFilters={this.resetFilters}\n />\n );\n }\n\n protected get mutationTable(): JSX.Element | null {\n return <span>{this.mutationTableComponent}</span>;\n }\n\n protected get proteinChainPanel(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get mutationFilterPanel(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get view3dButton(): JSX.Element | null {\n // TODO move the implementation from cbioportal-frontend\n return null;\n }\n\n protected get isMutationPlotDataLoading(): boolean {\n return this.store.pfamDomainData.isPending;\n }\n\n protected get isLoading(): boolean {\n return (\n this.store.mutationData.isPending ||\n this.isMutationPlotDataLoading ||\n this.isMutationTableDataLoading ||\n (!!this.store.activeTranscript &&\n this.store.activeTranscript.isPending)\n );\n }\n\n protected get loadingIndicator(): JSX.Element {\n return this.props.mainLoadingIndicator ? (\n this.props.mainLoadingIndicator!\n ) : (\n <i className=\"fa fa-spinner fa-pulse fa-2x\" />\n );\n }\n\n public render(): ReactNode {\n return this.isLoading ? (\n this.loadingIndicator\n ) : (\n <div>\n <div style={{ display: 'flex' }}>\n <div\n className=\"borderedChart\"\n style={{ marginRight: '1rem' }}\n >\n {this.mutationPlot}\n {this.proteinChainPanel}\n </div>\n <div className=\"mutationMapperMetaColumn\">\n {this.geneSummary}\n {this.mutationRateSummary}\n {this.mutationFilterPanel}\n {this.view3dButton}\n </div>\n </div>\n {this.mutationTable}\n </div>\n );\n }\n\n @action.bound\n protected handleTranscriptChange(transcriptId: string) {\n if (this.store.setSelectedTranscript) {\n this.store.setSelectedTranscript(transcriptId);\n }\n // TODO this.close3dPanel();\n if (this.props.onTranscriptChange) {\n this.props.onTranscriptChange(transcriptId);\n }\n }\n\n @action.bound\n protected onXAxisOffset(offset: number) {\n if (this.props.onXAxisOffset) {\n this.props.onXAxisOffset(offset);\n } else {\n this.lollipopPlotGeneX = offset;\n }\n }\n\n @action.bound\n protected resetFilters() {\n this.store.dataStore.clearDataFilters();\n this.store.dataStore.clearSelectionFilters();\n this.store.dataStore.clearHighlightFilters();\n }\n}\n"],"names":["img","_","civicTextLogo","sortValue","download","civicLogoNoVariantsSrc","civicLogoSrc","placeArrow","mcgLogo","hotspotImg","hotspot3dImg","React","revueLogo","oncoKbSortValue","civicSortValue","myCancerGenomeSortValue","hotspotSortValue","revueSortValue","_a","styles","classnames"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMM,SAAU,UAAU,CAAC,SAAkB,EAAA;AACzC,IAAA,QACI,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CACjB,KAAG,gBAAgB,CAAC,iBAAiB,CAAG,EACxC,KAAG,gBAAgB,CAAC,sBAAsB,CAAG,EAC7C,SAAS,CACZ,EAAA;AAED,QAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,wBAAwB,EAAG,CAAA,CACrC,EACT;AACN,CAAC;AAEK,SAAU,SAAS,CAAC,YAAoB,EAAA;IAC1C,QACI,KAAC,CAAA,aAAA,CAAA,cAAc,EACX,EAAA,OAAO,EAAE,KAAO,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,YAAY,CAAQ,EACpC,SAAS,EAAC,OAAO,EACjB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAC3B,oBAAoB,EAAE,IAAI,EAAA;AAE1B,QAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,EAAA,GAAG,gBAAgB,CAAC,uBAAuB,CAAG,EAAA;AAC3D,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,wCAAwC,GAAG,CACrD,CACM,EACnB;AACN;;ACjCA,IAAIA,KAAG,GAAG,g8fAAg8f;;ACe18f,IAAA,SAAA,kBAAA,UAAA,MAAA,EAAA;IAAuC,SAAoC,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA;AAA3E,IAAA,SAAA,SAAA,GAAA;;KAwIC;AAvIG;;;;AAIG;;;;;AACH,QAAA,KAAA,EAAA,UAAwB,UAEvB,EAAA;YACG,IAAM,IAAI,GAAkB,EAAE,CAAC;AAE/B,YAAA,IAAIC,UAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9C,aAAA;AAAM,iBAAA;AACH,gBAAA,KAAK,IAAI,MAAI,IAAI,UAAU,EAAE;AACzB,oBAAA,IAAI,OAAO,GAAG,UAAU,CAAC,MAAI,CAAC,CAAC;oBAC/B,IAAI,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC;yBAClD,MAAM,CAAC,UAAC,EAAY,EAAA;wBAAR,EAAA,CAAA,CAAA,CAAA,CAAE,KAAA,KAAK,GAAA,EAAA,CAAA,CAAA,EAAA;wBAAM,OAAA,KAAK,KAAK,CAAC,CAAA;AAAX,qBAAW,CAAC;yBACrC,GAAG,CAAC,UAAC,EAAY,EAAA;4BAAX,GAAG,GAAA,EAAA,CAAA,CAAA,CAAA,EAAE,KAAK,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;wBAAM,OAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAA,IAAA,GAAK,KAAO,CAAA;qBAAA,CAAC;yBACtD,IAAI,CAAC,IAAI,CAAC,CAAC;oBAChB,IAAI,CAAC,IAAI,CACL,IAAI,CAAC,WAAW,CACZ,MAAI,EACJ,OAAO,CAAC,GAAG,EACX,OAAO,CAAC,IAAI,EACZ,UAAU,EACV,OAAO,CAAC,WAAW,CACtB,CACJ,CAAC;AACL,iBAAA;AACJ,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;SACf;;AAED;;;;;;;AAOG;;;;;eACH,UACI,GAAW,EACX,GAAY,EACZ,IAAa,EACb,UAAmB,EACnB,WAAoB,EAAA;AAEpB,YAAA,IAAI,MAAM,CAAC;AAEX,YAAA,IAAI,GAAG,IAAI,IAAI,IAAI,UAAU,IAAI,WAAW,EAAE;gBAC1C,MAAM,IACF,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,oBAAoB,EAAA;oBACzC,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,2BAA2B,EAAA;wBACtC,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,yBAAyB,EAAA;4BACrC,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,GAAG,EAAE,MAAM,EAAC,QAAQ,EAAA,EACxB,IAAI,CACL,CACD;wBACP,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,gCAAgC,EAAA;4BAC3C,GAAG;;AACM,4BAAA,UAAU,CACjB,CACL;oBACN,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wCAAwC,EAAA,EAClD,WAAW,CACV,CACJ,CACT,CAAC;AACL,aAAA;AAAM,iBAAA;gBACH,MAAM,IACF,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,oBAAoB,EAAA;AACzC,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wCAAwC,EAGjD,EAAA,4FAAA,CAAA,CACJ,CACT,CAAC;AACL,aAAA;AAED,YAAA,OAAO,MAAM,CAAC;SACjB;;AAED;;;AAGG;;;;;AACH,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,YAAY,EAAA;AACvB,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;oBACI,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,oBAAoB,EAAA,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAO;oBAC5D,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,4BAA4B,EAAA;wBACvC,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,yBAAyB,EAAA;AACpC,4BAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;gCACI,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,sBAAsB,EAAA;oCAClC,KACI,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EACxB,MAAM,EAAC,QAAQ,EAAA;AAEf,wCAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAK,CAC5B,CACD;gCAAC,GAAG;;AACR,gCAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAC7B,CACF;wBACN,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,SAAS,EAAA;4BACpB,KACK,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC1C,CACH;wBAEN,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,iBAAiB,EAAA;4BAC5B,KAIO,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,8IAAA,CAAA,CACL,CACJ,CACH;gBAEP,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,aAAa,EAAA;oBACxB,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAC,QAAQ,EAAA;AACxC,wBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,GAAG,EAAEC,KAAa,EAClB,SAAS,EAAC,YAAY,EACtB,GAAG,EAAC,OAAO,EACb,CAAA,CACF,CACF,CACJ,EACR;SACL;;IACL,OAAC,SAAA,CAAA;AAAD,CAAC,CAxIsC,KAAK,CAAC,SAAS,CAwIrD,CAAA;;ACvJD,IAAIF,KAAG,GAAG,w/OAAw/O;;ACAlgP,IAAIA,KAAG,GAAG,gsHAAgsH;;ACwBpsH,SAAU,SAAS,CAAC,SAAc,EAAA;IACpC,IAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;AAC7D,IAAA,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACnC,CAAC;AAEK,SAAUG,WAAS,CAAC,UAA0C,EAAA;IAChE,IAAI,KAAK,GAAG,CAAC,CAAC;AAEd,IAAA,IAAI,UAAU,EAAE;QACZ,KAAK,GAAG,CAAC,CAAC;AACb,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAEK,SAAUC,UAAQ,CAAC,UAA0C,EAAA;IAC/D,IAAI,CAAC,UAAU,EAAE;AACb,QAAA,OAAO,cAAc,CAAC;AACzB,KAAA;IAED,IAAM,QAAQ,GAA2BH,UAAC,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvE,IAAM,MAAM,GAAa,EAAE,CAAC;AAE5B,IAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE;AAC/D,QAAAA,UAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,UAAC,KAAK,EAAE,GAAG,EAAA;AAC7C,YAAA,MAAM,CAAC,IAAI,CAAI,GAAG,GAAK,IAAA,GAAA,KAAO,CAAC,CAAC;AACpC,SAAC,CAAC,CAAC;AACN,KAAA;;AAGD,IAAA,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;AACrB,QAAA,OAAO,cAAc,CAAC;AACzB,KAAA;AAED,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAGD,IAAA,KAAA,kBAAA,UAAA,MAAA,EAAA;IAAmC,SAAgC,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;AAG/D,IAAA,SAAA,KAAA,CAAY,KAAkB,EAAA;QAA9B,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAKf,IAAA,CAAA;AARW,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,yBAAA,EAAA;;;;mBAAmC,KAAK;AAAC,SAAA,CAAA,CAAA;QAKjD,cAAc,CAAC,KAAI,CAAC,CAAC;QAErB,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;;KAClD;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,YAAY,IACZ,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,EAAG,GAAA,gBAAgB,CAAC,iBAAiB,CAAG,EAAA,CAAI,CAChE,CAAC;YAEF,IAAM,aAAa,GAAW,EAAE,CAAC;YACjC,IAAI,cAAc,GAAW,EAAE,CAAC;AAChC,YAAA,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;AAC1C,kBAAEI,KAAsB;kBACtBC,KAAY,CAAC;AAEnB,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,OAAO,EAAE;AACnC,gBAAA,YAAY,GAAG,SAAS,CAAC,2BAA2B,CAAC,CAAC;AACzD,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;AAC5C,gBAAA,IACI,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI;AAC9B,oBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,UAAU,EACtC;oBACE,YAAY,IACR,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,EAAG,GAAA,gBAAgB,CAAC,iBAAiB,CAAG,EAAA;AACrD,wBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,WAAW,EAChB,GAAG,EAAC,qBAAqB,EAC3B,CAAA,CACC,CACV,CAAC;oBAEF,YAAY,IACR,KAAC,CAAA,aAAA,CAAA,cAAc,IACX,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1B,IAAI,EACJ,IAAI,CAAC,KAAK,CAAC,UAAU,CACxB,EACD,SAAS,EAAC,OAAO,EACjB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAC3B,YAAY,EAAE,SAAS,EACvB,oBAAoB,EAAE,KAAK,EAE1B,EAAA,YAAY,CACA,CACpB,CAAC;AACL,iBAAA;AACJ,aAAA;AAAM,iBAAA;;AAEH,gBAAA,YAAY,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAC1C,aAAA;AAED,YAAA,OAAO,YAAY,CAAC;SACvB;;;;;;AAED,QAAA,KAAA,EAAA,UAAoB,UAAuB,EAAA;AACvC,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EACN,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,UAAU,CAAC,IAAI,EACzB,eAAe,EAAE,UAAU,CAAC,WAAW,EACvC,OAAO,EAAE,UAAU,CAAC,GAAG,EACvB,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAA,CAC/B,EACJ;SACL;;AAxEW,IAAA,UAAA,CAAA;QAAX,UAAU;AAA0C,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IADpC,KAAK,GAAA,UAAA,CAAA;QADzB,QAAQ;AACY,KAAA,EAAA,KAAK,CA0EzB,CAAA;IAAD,OAAC,KAAA,CAAA;AAAA,CA1ED,CAAmC,KAAK,CAAC,SAAS,CA0EjD;;AC/HD,IAAM,aAAa,GAAG,YAAA;IAClB,QACI,KAAC,CAAA,aAAA,CAAA,cAAc,EACX,EAAA,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,KAAyC,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,8BAAA,CAAA,EAAA;AAElD,QAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,KAAK,EAAE;AACH,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,QAAQ,EAAE,QAAQ;aACrB,EAGE,EAAA,QAAA,CAAA,CACM,EACnB;AACN,CAAC,CAAC;AAEI,IAAA,cAAc,GAAG,UAAC,KAA0B,EAAA;AAC9C,IAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;QAChB,OAAO,KAAA,CAAA,aAAA,CAAC,aAAa,EAAA,IAAA,CAAG,CAAC;AAC5B,KAAA;AAAM,SAAA;AACH,QAAA,IAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;AAC1C,QAAA,IAAM,WAAW,GAAG,iDAAkD,GAAA,SAAS,MAAG,CAAC;AACnF,QAAA,IAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;AAChE,QAAA,IAAM,+BAA+B,GACjC,KAAK,CAAC,OAAO,CAAC,+BAA+B,CAAC;QAClD,QACI,KAAC,CAAA,aAAA,CAAA,aAAa,EACV,EAAA,SAAS,EAAE,EAAE,EACb,IAAI,EAAE,oBAAoB,EAC1B,UAAU,EAAC,QAAQ,EACnB,OAAO,EACH,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAA;AACzB,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA,EAAM,oBAAoB,CAAO;AAChC,gBAAA,+BAA+B,KAC5B,KAAM,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA,EAAA,+BAA+B,CAAO,CAC/C;AACD,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;;oBACiB,GAAG;oBAChB,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,WAAW,EAAE,MAAM,EAAC,QAAQ,EAChC,EAAA,SAAS,CACV;wBAEF,CACJ,EAAA,CAEZ,EACJ;AACL,KAAA;AACL;;AC7DA,IAAIN,KAAG,GAAG,wnRAAwnR;;;;ACa5nR,SAAUO,YAAU,CAAC,SAAc,EAAA;IACrC,IAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;AAC7D,IAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AAChC,CAAC;AAEK,SAAUJ,WAAS,CAAC,KAAe,EAAA;AACrC,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAEK,SAAUC,UAAQ,CAAC,KAAe,EAAA;AACpC,IAAA,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,SAAS,GAAG,aAAa,CAAC;AACxD,CAAC;AAEK,SAAU,mBAAmB,CAAC,SAAmB,EAAA;IACnD,IAAM,KAAK,GAAU,EAAE,CAAC;IAExBH,UAAC,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,IAAY,EAAE,KAAa,EAAA;;;AAG1C,QAAA,IAAM,kBAAkB,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;AAEzD,QAAA,IAAI,kBAAkB,EAAE;AACpB,YAAA,KAAK,CAAC,IAAI,CACN,KAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,GAAG,EAAE,KAAK,EAAA;AACV,gBAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAC,QAAQ,EAAA,EAC3C,kBAAkB,CAAC,IAAI,CACxB,CACH,CACR,CAAC;AACL,SAAA;AACL,KAAC,CAAC,CAAC;AAEH,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;QACI,KAA8B,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAA,yBAAA,CAAA;QAC9B,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;QACN,KAAI,CAAA,aAAA,CAAA,IAAA,EAAA,EAAA,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,EAAA,EAAG,KAAK,CAAM,CAChD,EACT;AACN,CAAC;AAED,IAAA,cAAA,kBAAA,UAAA,MAAA,EAAA;IAA4C,SAE3C,CAAA,cAAA,EAAA,MAAA,CAAA,CAAA;AAFD,IAAA,SAAA,cAAA,GAAA;;KAoCC;;;;;AAjCG,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,qBAAqB,IACrB,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,EAAG,GAAA,gBAAgB,CAAC,iBAAiB,CAAG,EAAA,CAAI,CAChE,CAAC;YAEF,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,gBAAA,IAAM,YAAY,GAAG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,GAAG,CAAC;gBAChE,IAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAEjE,qBAAqB,IACjB,KAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EACX,OAAO,EAAE,cAAc,EACvB,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAC3B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAEM,YAAU,EAAA;AAExB,oBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,SAAS,EAAK,gBAAgB,CAAC,iBAAiB,CAAC,GAAM,MAAA,EAAA;AAEvD,wBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,GAAG,EAAEC,KAAO,EACZ,GAAG,EAAC,yBAAyB,GAC/B,CACC,CACM,CACpB,CAAC;AACL,aAAA;AAED,YAAA,OAAO,qBAAqB,CAAC;SAChC;;IACL,OAAC,cAAA,CAAA;AAAD,CAAC,CApC2C,KAAK,CAAC,SAAS,CAoC1D;;;;AC9EK,SAAU,KAAK,CACjB,SAAkB,EAClB,WAAoB,EACpB,KAAc,EACd,UAAwB,EAAA;IAExB,IAAM,gBAAgB,GAAG,SAAS,GAAG,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAA,mBAAA,CAAwB,GAAG,IAAI,CAAC;AACrE,IAAA,IAAM,QAAQ,GAAG,SAAS,IAAI,WAAW,GAAG,KAAgB,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,KAAA,CAAA,GAAG,IAAI,CAAC;IACpE,IAAM,gBAAgB,GAAG,WAAW,GAAG,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAA,sBAAA,CAA2B,GAAG,IAAI,CAAC;IAE1E,IAAI,SAAS,GAAuB,IAAI,CAAC;AAEzC,IAAA,IAAI,KAAK,EAAE;AACP,QAAA,IAAM,MAAM,GAAG,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,QAAQ,CAAC;AAChD,QAAA,SAAS,IACL,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AACI,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAI,KAAK,CAAK;;YAAE,MAAM;AACnB,YAAA,OAAA,CAAA,CACV,CAAC;AACL,KAAA;AAED,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;QACK,SAAS;;QAAG,gBAAgB;;QAAG,QAAQ;;QAAG,gBAAgB;QAAE,GAAG;QAC/D,UAAU,CACR,EACT;AACN,CAAC;AAEe,SAAA,WAAW,CAAC,SAAkB,EAAE,WAAoB,EAAA;IAChE,IAAM,gBAAgB,GAAG,SAAS;AAC9B,UAAE,iDAAiD;UACjD,EAAE,CAAC;AACT,IAAA,IAAM,QAAQ,GAAG,SAAS,IAAI,WAAW,GAAG,KAAK,GAAG,EAAE,CAAC;IACvD,IAAM,gBAAgB,GAAG,WAAW,GAAG,wBAAwB,GAAG,EAAE,CAAC;IAErE,IAAM,oBAAoB,GAAG,SAAS,IAClC,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,WAAW,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAC,QAAQ,EAErD,EAAA,oCAAA,CAAA,KAEJ,EAAE,CACL,CAAC;IAEF,IAAM,oBAAoB,GAAG,WAAW,IACpC,KACI,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAC,4EAA4E,EACjF,MAAM,EAAC,QAAQ,EAAA,EAAA,mCAAA,CAGf,KAEJ,EAAE,CACL,CAAC;AAEF,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;QAC+C,gBAAgB;QAAE,GAAG;QAC/D,QAAQ;;QAAG,gBAAgB;;QACuC,GAAG;QACrE,oBAAoB;;QAAG,QAAQ;;QAAG,oBAAoB;AACpD,QAAA,GAAA,CAAA,EACT;AACN,CAAC;AAEe,SAAA,IAAI,CAAC,SAAkB,EAAE,WAAoB,EAAA;IACzD,IAAM,aAAa,GAAG,SAAS,IAC3B,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAC,iCAAiC,EAAC,MAAM,EAAC,QAAQ,EAAA,EAAA,6BAAA,CAErD,KAEJ,EAAE,CACL,CAAC;AAEF,IAAA,IAAM,QAAQ,GAAG,SAAS,IAAI,WAAW,GAAG,KAAK,GAAG,EAAE,CAAC;IAEvD,IAAM,aAAa,GAAG,WAAW,IAC7B,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAC,6BAA6B,EAAC,MAAM,EAAC,QAAQ,EAAA,EAAA,yBAAA,CAEjD,KAEJ,EAAE,CACL,CAAC;AAEF,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;QAC8B,aAAa;;QAAG,QAAQ;;QAAG,aAAa;AAC/D,QAAA,GAAA,CAAA,EACT;AACN,CAAC;AAEM,IAAM,WAAW,GAA8C,UAAA,KAAK,EAAA;AAC/D,IAAA,IAAA,SAAS,GAAqC,KAAK,UAA1C,EAAE,WAAW,GAAwB,KAAK,CAAA,WAA7B,EAAE,KAAK,GAAiB,KAAK,CAAtB,KAAA,EAAE,UAAU,GAAK,KAAK,WAAV,CAAW;AAE5D,IAAA,QACI,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,EAAA;QACzC,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC;QACjD,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AACL,QAAA,WAAW,CAAC,SAAS,EAAE,WAAW,CAAC;QACpC,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;QACN,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AACL,QAAA,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAC1B,EACT;AACN;;ACpHA,IAAIR,KAAG,GAAG,q9BAAq9B;;ACA/9B,IAAIA,KAAG,GAAG,wuCAAwuC;;ACgBluC,SAAAG,WAAS,CAAC,SAAkB,EAAE,WAAoB,EAAA;IAC9D,IAAI,KAAK,GAAW,CAAC,CAAC;AAEtB,IAAA,IAAI,SAAS,EAAE;QACX,KAAK,IAAI,CAAC,CAAC;AACd,KAAA;AAED,IAAA,IAAI,WAAW,EAAE;QACb,KAAK,IAAI,GAAG,CAAC;AAChB,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAEK,SAAU,UAAU,CAAC,SAAc,EAAA;IACrC,IAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;AAC7D,IAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;AAChC,CAAC;AAED,IAAA,iBAAA,kBAAA,UAAA,MAAA,EAAA;IAA+C,SAG9C,CAAA,iBAAA,EAAA,MAAA,CAAA,CAAA;AACG,IAAA,SAAA,iBAAA,CAAY,KAA2B,EAAA;QAAvC,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;AADG,QAAA,KAAI,CAAC,KAAK,GAAG,EAAE,CAAC;;KACnB;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACU,IAAA,EAAA,GAA6B,IAAI,CAAC,KAAK,EAArC,SAAS,GAAA,EAAA,CAAA,SAAA,EAAE,WAAW,GAAA,EAAA,CAAA,WAAe,CAAC;AAE9C,YAAA,IAAI,cAAc,IACd,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,EAAG,GAAA,gBAAgB,CAAC,iBAAiB,CAAG,EAAA,CAAI,CAChE,CAAC;AAEF,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;AACjC,gBAAA,cAAc,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAC5C,aAAA;iBAAM,IAAI,SAAS,IAAI,WAAW,EAAE;gBACjC,IAAM,gBAAgB,GAAW,EAAE,CAAC;gBACpC,IAAI,iBAAiB,GAAW,EAAE,CAAC;gBACnC,IAAI,cAAc,GAAGM,KAAU,CAAC;;gBAGhC,IAAI,CAAC,SAAS,EAAE;oBACZ,cAAc,GAAGC,KAAY,CAAC;oBAC9B,iBAAiB,GAAG,EAAE,CAAC;AAC1B,iBAAA;AAED,gBAAA,IAAM,YAAY,GAAG,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,GAAG,CAAC;AAChE,gBAAA,IAAM,cAAc,IAChB,KAAA,CAAA,aAAA,CAAC,WAAW,EAAC,EAAA,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAA,CAAI,CAClE,CAAC;gBAEF,cAAc,IACV,KAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EACX,OAAO,EAAE,cAAc,EACvB,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAC3B,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,UAAU,EAAA;AAExB,oBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,SAAS,EAAK,gBAAgB,CAAC,iBAAiB,CAAC,GAAgB,gBAAA,EAAA;AAEjE,wBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,KAAK,EAAE,gBAAgB,EACvB,MAAM,EAAE,iBAAiB,EACzB,GAAG,EAAE,cAAc,EACnB,GAAG,EAAC,0BAA0B,GAChC,CACC,CACM,CACpB,CAAC;AACL,aAAA;AAED,YAAA,OAAO,cAAc,CAAC;SACzB;;IACL,OAAC,iBAAA,CAAA;AAAD,CAAC,CA1D8C,KAAK,CAAC,SAAS,CA0D7D;;AC/EM,IAAM,qCAAqC,GAC9C,2EAA2E;AACxE,IAAM,2CAA2C,GACpD,qGAAqG;AAClG,IAAM,4BAA4B,GACrC,iEAAiE;AAC9D,IAAM,+BAA+B,GACxC,2GAA2G;AACxG,IAAM,wBAAwB,GAAG,+BAA+B;AAEvE;AACO,IAAM,mBAAmB,GAAG,6BAA6B;AACnD,IAAA,mBAAmB,GAAgB;AAC5C,IAAA,YAAY,EAAE,EAAE;EAClB;AAEF;AACA;AACO,IAAM,sCAAsC,GAAG,MAAM;AAE/C,IAAA,mBAAmB,GAAe;AAC3C,IAAA,UAAU,EAAE;AACR,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,YAAY,EAAE,EAAE;AACnB,KAAA;AACD,IAAA,UAAU,EAAE;AACR,QAAA,OAAO,EAAE,QAAQ;AACjB,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,YAAY,EAAE,EAAE;AACnB,KAAA;AACD,IAAA,WAAW,EAAE;AACT,QAAA,OAAO,EAAE,MAAM;AACf,QAAA,IAAI,EAAE,YAAY;AACrB,KAAA;AACD,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,WAAW,EAAE,QAAQ;AACrB,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,cAAc,EAAE,sCAAsC;EACxD;AAEF,IAAM,2BAA2B,GAAG,qBAAqB,EAAE,CAAC;AAE5C,SAAA,MAAM,CAAC,WAAmB,EAAE,iBAAsB,EAAA;IAC9D,OAAOT,UAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,iBAAiB,CAAC,CAAC;AACtD,CAAC;AAEK,SAAgB,iCAAiC,CACnD,SAA8B,EAC9B,MAAyC,EACzC,qBAAuC,EACvC,MAA6D,EAAA;IAF7D,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAoB,GAAA,CAAA,oBAAoB,CAAC,CAAA,EAAA;AACzC,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,qBAAuC,GAAA,OAAA,CAAA,EAAA;AACvC,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA6D,GAAA,2BAAA,CAAA,EAAA;;;;;;AAEvD,oBAAA,gBAAgB,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAEpD,oBAAA,IAAA,EAAA,gBAAgB,CAAC,MAAM,GAAG,CAAC;AAC9B,wBAAA,MAAM,CAAC,2CAA2C,CAAA,EAD/C,OAC+C,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;oBAChD,OAAM,CAAA,CAAA,YAAA,MAAM,CAAC,2CAA2C,CAAC;AACrD,4BAAA,gBAAgB,EAAA,gBAAA;;;AAGhB,4BAAA,MAAM,EAAE,MAAa;AACrB,4BAAA,qBAAqB,EAAA,qBAAA;AACxB,yBAAA,CAAC,CAAA,CAAA;;AANF,oBAAA,EAAA,GAAA,SAME,CAAA;;;AACF,oBAAA,EAAA,GAAA,EAAE,CAAA;;wBATR,OASS,CAAA,CAAA,aAAA,EAAA,CAAA,CAAA;;;;AACZ,CAAA;AAEK,SAAgB,+CAA+C,CACjE,SAA8B,EAC9B,MAAyC,EACzC,qBAAuC,EACvC,MAA6D,EAAA;IAF7D,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAoB,GAAA,CAAA,oBAAoB,CAAC,CAAA,EAAA;AACzC,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,qBAAuC,GAAA,OAAA,CAAA,EAAA;AACvC,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA6D,GAAA,2BAAA,CAAA,EAAA;;;;;wBAElC,OAAM,CAAA,CAAA,YAAA,iCAAiC,CAC9D,SAAS,EACT,MAAM,EACN,qBAAqB,EACrB,MAAM,CACT,CAAA,CAAA;;AALK,oBAAA,kBAAkB,GAAG,EAK1B,CAAA,IAAA,EAAA,CAAA;AACD,oBAAA,OAAA,CAAA,CAAA,aAAO,iCAAiC,CAAC,kBAAkB,CAAC,CAAC,CAAA;;;;AAChE,CAAA;SAEe,qBAAqB,CACjC,cAAuB,EACvB,gBAA0B,EAC1B,aAAsB,EAAA;IAEtB,IAAM,MAAM,GAAG,IAAI,cAAc,CAC7B,cAAc,IAAI,wBAAwB,CAC7C,CAAC;AAEF,IAAA,IAAI,gBAAgB,EAAE;QAClB,wBAAwB,CAAC,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;AACxE,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAClB,CAAC;SAEe,6BAA6B,CACzC,cAAuB,EACvB,gBAA0B,EAC1B,aAAsB,EAAA;IAEtB,IAAM,MAAM,GAAG,IAAI,sBAAsB,CACrC,cAAc,IAAI,wBAAwB,CAC7C,CAAC;AAEF,IAAA,IAAI,gBAAgB,EAAE;QAClB,wBAAwB,CACpB,sBAAsB,EACtB,EAAE,EACF,OAAO,EACP,aAAa,CAChB,CAAC;AACL,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAClB,CAAC;SAEe,gBAAgB,CAC5B,SAAkB,EAClB,gBAA0B,EAC1B,aAAsB,EAAA;IAEtB,IAAM,MAAM,GAAG,IAAI,SAAS,CAAC,SAAS,IAAI,mBAAmB,CAAC,CAAC;AAE/D,IAAA,IAAI,gBAAgB,EAAE;QAClB,wBAAwB,CAAC,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AACrE,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAClB;;ACvJA,IAAI,GAAG,GAAG,w7DAAw7D;;ACM37D,IAAM,mBAAmB,GAE3B,UAAA,KAAK,EAAA;AACN,IAAA,QACIU,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;AACI,QAAAA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;mCACwB,GAAG;YAEnBA,cACI,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAC,2DAA2D,EAChE,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EAGzB,EAAA,KAAA,CAAA;;AAEN,YAAAA,cAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAS,KAAK,CAAC,GAAG,CAAC,aAAa,CAAU,CAC3C;AACL,QAAAA,cAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;yCAC8B,GAAG;AAEzB,YAAAA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACI,IAAI,EAAC,yBAAyB,EAC9B,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EAAA,EAAA,OAAA,CAGzB,EAEP,IAAI;AACJ,YAAA,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,UAAC,SAAS,EAAE,KAAK,EAAK,EAAA,QAC5CA,cAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,GAAG,EAAE,KAAK,EAAA;AACZ,gBAAAA,cAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACI,IAAI,EAAE,kCAAA,GAAmC,SAAS,CAAC,QAAQ,MAAG,EAC9D,GAAG,EAAC,qBAAqB,EACzB,MAAM,EAAC,QAAQ,IAEd,SAAS,CAAC,aAAa,CACxB;AACH,gBAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAC5C,IACV,CAAC,EACD,KAAK;YACNA,cAAS,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,KAAK,CAAC,GAAG,CAAC,oBAAoB,CAAU,CAChD,CACJ,EACP;AACN,EAAE;AAEI,SAAUR,WAAS,CAAC,GAAoB,EAAA;AAC1C,IAAA,OAAO,CAAC,CAAC;AACb,CAAC;AAEM,IAAM,SAAS,GAEjB,UAAA,KAAK,EAAA;AACN,IAAA,QACIQ,cAAC,CAAA,aAAA,CAAA,cAAc,IACX,SAAS,EAAC,QAAQ,EAClB,OAAO,EAAEA,cAAA,CAAA,aAAA,CAAC,mBAAmB,EAAC,EAAA,GAAG,EAAE,KAAK,CAAC,GAAG,EAAI,CAAA,EAAA;AAEhD,QAAAA,cAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,SAAS,EAAE,EAAG,GAAA,gBAAgB,CAAC,iBAAiB,CAAG,EACnD,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAA;AAEjC,YAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAEC,GAAS,EAAE,GAAG,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,GAAI,CAC5D,CACM,EACnB;AACN;;AC4Ba,IAAA,uBAAuB,GAAgB;AAChD,IAAA,YAAY,EAAE,UAAU;AACxB,IAAA,eAAe,EAAE,KAAK;AACtB,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,wBAAwB,EAAE,EAAE;AAC5B,IAAA,yBAAyB,EAAE,KAAK;AAChC,IAAA,SAAS,EAAE,KAAK;AAChB,IAAA,WAAW,EAAE,KAAK;AAClB,IAAA,aAAa,EAAE,UAAU;AACzB,IAAA,cAAc,EAAE,EAAE;AAClB,IAAA,gBAAgB,EAAE,IAAI;AACtB,IAAA,mBAAmB,EAAE,EAAE;AACvB,IAAA,WAAW,EAAE,UAAU;EACzB;AAEF,SAAS,sBAAsB,CAAC,QAAkB,EAAA;AAC9C,IAAA,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,mBAAmB,GAAA;AACxB,IAAA,OAAO,EAAE,CAAC;AACd,CAAC;AAED,IAAM,QAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;AAC/C,SAAU,iBAAiB,CAC7B,QAAmB,EACnB,iBAAgE,EAChE,WAAmD,EACnD,kBAAwC,EACxC,UAAwD,EACxD,yBAAmC,EACnC,UAAoD,EACpD,aAA0D,EAC1D,yBAEC,EACD,gBAAsE,EACtE,mBAA4E,EAAA;;AAD5E,IAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAsE,GAAA,mBAAA,CAAA,EAAA;AACtE,IAAA,IAAA,mBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,mBAA4E,GAAA,sBAAA,CAAA,EAAA;AAE5E,IAAA,IAAI,KAA2B,CAAC;AAEhC,IAAA,IAAI,QAAQ,EAAE;QACV,IAAI,GAAG,GAAG,EAAE,CAAC;AACb,QAAA,IAAM,OAAO,GACT,CAAA,iBAAiB,KAAjB,IAAA,IAAA,iBAAiB,uBAAjB,iBAAiB,CAAE,UAAU,MAC7B,WAAW,KAAX,IAAA,IAAA,WAAW,uBAAX,WAAW,CAAE,UAAU,CAAA;AACvB,YAAA,CAAC,CAAC,kBAAkB,KACpB,UAAU,KAAA,IAAA,IAAV,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,UAAU,CAAA,KACtB,UAAU,aAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,UAAU,CAAA,KACtB,aAAa,KAAb,IAAA,IAAA,aAAa,KAAb,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,aAAa,CAAE,UAAU,CAAA,KACzB,yBAAyB,aAAzB,yBAAyB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAzB,yBAAyB,CAAE,UAAU,CAAA,CAAC;AAE1C,QAAA,IAAI,OAAO,EAAE;YACT,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,yBAAyB,CAAC;YAC7D,IAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9B,YAAA,IAAI,GAAG,EAAE;AACL,gBAAA,OAAO,GAAG,CAAC;AACd,aAAA;AACJ,SAAA;AAED,QAAA,IAAM,cAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAEnD,IAAI,eAAe,SAAgC,CAAC;AACpD,QAAA,IAAM,cAAc,GAAG,QAAQ,CAAC,IAAI;AAChC,cAAE,QAAQ,CAAC,IAAI,CAAC,cAAc;cAC5B,SAAS,CAAC;QAEhB,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAC/B,IAAI,iBAAiB,IAAI,EAAE,iBAAiB,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE;YACnE,eAAe;gBACXX,UAAC,CAAC,IAAI,CACF,iBAAiB,CAAC,MAAM,EACxB,UAAC,IAAgB,EAAA;oBACb,OAAA,CAAC,QAAQ,CAAC,YAAY;AAClB,wBAAA,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE;4BAC/B,qBAAqB,CAAC,MAAM;yBACnC,IAAI,CAAC,eAAe;AACjB,4BAAA,IAAI,CAAC,YAAY,KAAK,cAAY,CAAC,CAAA;iBAAA,CAC9C,KAAK,SAAS,CAAC;YACpB,kBAAkB;gBACdA,UAAC,CAAC,IAAI,CACF,iBAAiB,CAAC,MAAM,EACxB,UAAC,IAAgB,EAAA,EAAK,OAAA,IAAI,CAAC,YAAY,KAAK,cAAY,GAAA,CAC3D,KAAK,SAAS,CAAC;AACvB,SAAA;AAED,QAAA,KAAK,GAAG;AACJ,YAAA,cAAc,EAAA,cAAA;AACd,YAAA,eAAe,EAAA,eAAA;AACf,YAAA,kBAAkB,EAAA,kBAAA;AAClB,YAAA,yBAAyB,EAAE,yBAAyB;AAChD,kBAAE,yBAAyB;AAC3B,kBAAE,sCAAsC;AAC5C,YAAA,UAAU,EACN,UAAU;AACV,gBAAA,UAAU,CAAC,MAAM;gBACjB,aAAa;AACb,gBAAA,aAAa,CAAC,MAAM;AAChB,kBAAE,aAAa,CACT,QAAQ,EACR,UAAU,CAAC,MAAM,EACjB,aAAa,CAAC,MAAM,CACvB;AACH,kBAAE,SAAS;AACnB,YAAA,WAAW,EACP,UAAU;AACV,gBAAA,UAAU,CAAC,MAAM;gBACjB,aAAa;AACb,gBAAA,aAAa,CAAC,MAAM;AAChB,kBAAE,wBAAwB,CAAC,UAAU,EAAE,aAAa,CAAC;AACrD,kBAAE,SAAS;AACnB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,mBAAmB,EAAE,kBAAkB;AACnC,kBAAE,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,CAAC;AACtD,kBAAE,EAAE;AACR,YAAA,SAAS,EACL,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,UAAU,KAAI,WAAW,CAAC,MAAM;kBACvC,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;AACtD,kBAAE,KAAK;AACf,YAAA,WAAW,EACP,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,UAAU,KAAI,WAAW,CAAC,MAAM;kBACvC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;AAC3C,kBAAE,KAAK;YACf,aAAa,EAAE,WAAW,GAAG,WAAW,CAAC,MAAM,GAAG,SAAS;YAC3D,GAAG,EACC,CAAA,yBAAyB,KAAA,IAAA,IAAzB,yBAAyB,KAAzB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,yBAAyB,CAAE,UAAU;AACrC,gBAAA,yBAAyB,CAAC,MAAM;AAC5B,8BAAE,oBAAoB,CAChB,QAAQ,EACR,yBAAyB,CAAC,MAAM,CACnC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,GAC3B,SAAS;SACtB,CAAC;;AAGF,QAAA,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,YAAY,KAAK,EAAE;YAClD,KAAK,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACE,KAAK,CAAA,EAAA,EACR,YAAY,EAAE,OAAO,EACrB,eAAe,EAAE,SAAS,EAAA,CAC7B,CAAC;AACL,SAAA;AAAM,aAAA,IAAI,eAAe,EAAE;;;;;AAMxB,YAAA,IAAI,wBAAwB,GAAyB;AACjD,gBAAA,kBAAkB,CAAC,UAAU;aAChC,CAAC;AACF,YAAA,IACI,UAAU;AACV,gBAAA,UAAU,CAAC,MAAM;AACjB,gBAAA,EAAE,UAAU,CAAC,MAAM,YAAY,KAAK,CAAC;AACrC,gBAAA,UAAU,CAAC,MAAM,KAAK,UAAU,EAClC;AACE,gBAAA,eAAe,GAAG,gBAAgB,CAC9B,QAAQ,EACR,UAAU,CAAC,MAAM,EACjB,gBAAgB,EAChB,mBAAmB,CACtB,CAAC;gBACF,wBAAwB,GAAGA,UAAC,CAAC,IAAI,gBAC1B,wBAAwB,EACxB,gCAAgC,CAC/BA,UAAC,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAC3C,CAAA,CACH,CAAC;AACN,aAAA;AAED,YAAA,KAAK,yBACE,KAAK,CAAA,EAAA,EACR,YAAY,EAAE,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,SAAS,EACxD,eAAe,EAAA,eAAA;gBACf,wBAAwB,EAAA,wBAAA,GAC3B,CAAC;AACL,SAAA;AAAM,aAAA,IAAI,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE;YAC3C,KAAK,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACE,KAAK,CAAA,EAAA,EACR,YAAY,EAAE,SAAS,EACvB,eAAe,EAAE,SAAS,EAAA,CAC7B,CAAC;AACL,SAAA;AAAM,aAAA;YACH,KAAK,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACE,KAAK,CAAA,EAAA,EACR,YAAY,EAAE,UAAU,EACxB,eAAe,EAAE,SAAS,EAAA,CAC7B,CAAC;AACL,SAAA;AACD,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAY,CAAC,CAAC;AACnC,SAAA;AACJ,KAAA;AAAM,SAAA;QACH,KAAK,GAAG,uBAAuB,CAAC;AACnC,KAAA;AAED,IAAA,OAAO,KAAoB,CAAC;AAChC,CAAC;AAEe,SAAA,oBAAoB,CAAC,CAAc,EAAE,CAAc,EAAA;AAC/D,IAAA,OAAO,sBAAsB,CAACE,WAAS,CAAC,CAAC,CAAC,EAAEA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAEK,SAAUA,WAAS,CAAC,UAAuB,EAAA;IAC7C,OAAOF,UAAC,CAAC,OAAO,CAAC;AACb,QAAAY,yBAAe,CAAC,UAAU,CAAC,eAAe,CAAC;AAC3C,QAAAC,WAAc,CAAC,UAAU,CAAC,UAAU,CAAC;AACrC,QAAAC,WAAuB,CAAC,UAAU,CAAC,mBAAmB,CAAC;QACvDC,WAAgB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC;AAC9D,QAAAC,WAAc,CAAC,UAAU,CAAC,GAAG,CAAC;QAC9B,UAAU,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC;AACxC,KAAA,CAAC,CAAC;AACP,CAAC;AAEK,SAAU,iBAAiB,CAAC,KAA6B,EAAA;IAEvD,IAAA,UAAU,GAWV,KAAK,CAXK,UAAA,CAAA,CACV,WAAW,GAUX,KAAK,CAVM,WAAA,CAAA,CACX,aAAa,GASb,KAAK,CATQ,aAAA,CAAA,CACb,oBAAoB,GAQpB,KAAK,CAAA,oBARe,CACpB,CAAA,YAAY,GAOZ,KAAK,CAPO,YAAA,CAAA,CACZ,WAAW,GAMX,KAAK,CANM,WAAA,CAAA,CAMX,KAAK,CAAA,WALM,MACX,eAAe,GAIf,KAAK,CAAA,eAJU,CACf,CAAA,gBAAgB,GAGhB,KAAK,CAAA,gBAHW,CAChB,CAAA,oBAAoB,GAEpB,KAAK,CAFe,oBAAA,CAAA,CACpB,sBAAsB,GACtB,KAAK,CAAA,uBAAC;AAEV,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAA;AAC1C,QAAA,YAAY,KACT,KAAC,CAAA,aAAA,CAAA,MAAM,EACH,EAAA,yBAAyB,EACrB,UAAU,CAAC,yBAAyB,EAExC,cAAc,EAAE,UAAU,CAAC,cAAc,EACzC,YAAY,EAAE,CAAC,UAAU,CAAC,eAAe,EACzC,YAAY,EAAE,UAAU,CAAC,kBAAkB,EAC3C,MAAM,EAAE,UAAU,CAAC,YAAY,EAC/B,SAAS,EAAE,UAAU,CAAC,eAAe,EACrC,kBAAkB,EAAE,UAAU,CAAC,wBAAwB,EACvD,oBAAoB,EAAE,gBAAgB,EACtC,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,oBAAoB,EACpC,sBAAsB,EAAE,sBAAsB,GAChD,CACL;AAEA,QAAA,WAAW,IACR,UAAU,CAAC,GAAG,IACV,oBAAC,SAAS,EAAA,EAAC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAA,CAAI,KAElC,8BACI,SAAS,EAAE,KAAG,gBAAgB,CAAC,iBAAiB,CAAG,EAAA,CACrD,CACL,KAED,yCAAK,CACR;QACA,WAAW,KACR,KAAC,CAAA,aAAA,CAAA,KAAK,IACF,UAAU,EAAE,UAAU,CAAC,UAAU,EACjC,WAAW,EAAE,UAAU,CAAC,WAAW,EACnC,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,EAAA,CAC/C,CACL;QACA,oBAAoB,KACjB,KAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EAAC,SAAS,EAAE,UAAU,CAAC,mBAAmB,EAAA,CAAI,CAChE;QACA,aAAa,KACV,KAAA,CAAA,aAAA,CAAC,iBAAiB,EAAA,EACd,SAAS,EAAE,UAAU,CAAC,SAAS,EAC/B,WAAW,EAAE,UAAU,CAAC,WAAW,EACnC,MAAM,EAAE,UAAU,CAAC,aAAa,EAClC,CAAA,CACL,CACE,EACT;AACN,CAAC;AAGD,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAwC,SAAoC,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AAA5E,IAAA,SAAA,UAAA,GAAA;;KAmCC;;;;;AAlCG,QAAA,KAAA,EAAA,YAAA;YACI,IAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,OAAO,KAAA,CAAA,aAAA,CAAC,iBAAiB,EAAA,QAAA,CAAA,EAAA,EAAK,IAAI,CAAC,KAAK,EAAA,EAAE,UAAU,EAAE,UAAU,EAAA,CAAA,CAAI,CAAC;SACxE;;;;;;AAED,QAAA,KAAA,EAAA,UAA0B,KAAsB,EAAA;YAExC,IAAA,QAAQ,GAWR,KAAK,CAXG,QAAA,EACR,iBAAiB,GAUjB,KAAK,CAVY,iBAAA,EACjB,WAAW,GASX,KAAK,CATM,WAAA,EACX,kBAAkB,GAQlB,KAAK,CAAA,kBARa,EAClB,UAAU,GAOV,KAAK,CAPK,UAAA,EACV,yBAAyB,GAMzB,KAAK,CANoB,yBAAA,EACzB,mBAAmB,GAKnB,KAAK,CAAA,mBALc,EACnB,gBAAgB,GAIhB,KAAK,CAAA,gBAJW,EAChB,UAAU,GAGV,KAAK,CAAA,UAHK,EACV,aAAa,GAEb,KAAK,CAFQ,aAAA,EACb,yBAAyB,GACzB,KAAK,CAAA,yBADoB,CACnB;YAEV,OAAO,iBAAiB,CACpB,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,yBAAyB,EACzB,UAAU,EACV,aAAa,EACb,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,CACtB,CAAC;SACL;;IAlCgB,UAAU,GAAA,UAAA,CAAA;QAD9B,QAAQ;AACY,KAAA,EAAA,UAAU,CAmC9B,CAAA;IAAD,OAAC,UAAA,CAAA;AAAA,CAnCD,CAAwC,KAAK,CAAC,SAAS,CAmCtD;;AClae,SAAA,cAAc,CAC1B,QAAkB,EAClB,yBAEC,EAAA;;IAED,IAAM,iBAAiB,GAAG,oBAAoB,CAC1C,QAAQ,EACR,yBAA0B,CAAC,MAAM,CACpC,CAAC;IACF,OAAO,CAAA,EAAA,GAAA,iBAAiB,aAAjB,iBAAiB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAjB,iBAAiB,CAAE,OAAO,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,UAAU,CAAC;AAClD;;ACEM,SAAUb,UAAQ,CAAC,OAAiB,EAAA;IACtC,IAAM,oBAAoB,GAAG,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,oBAAoB,CAAC;IAC3D,IAAM,+BAA+B,GACjC,OAAO,KAAA,IAAA,IAAP,OAAO,KAAP,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,OAAO,CAAE,+BAA+B,CAAC;IAC7C,IAAI,oBAAoB,IAAI,+BAA+B,EAAE;QACzD,QACI,oBAAoB,GAAG,GAAG,GAAG,+BAA+B,GAAG,GAAG,EACpE;AACL,KAAA;AAAM,SAAA,IAAI,oBAAoB,EAAE;AAC7B,QAAA,OAAO,oBAAoB,CAAC;AAC/B,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,EAAE,CAAC;AACb,KAAA;AACL,CAAC;AAEK,SAAUD,WAAS,CAAC,OAAiB,EAAA;AACvC,IAAA,IAAI,OAAO,IAAI,OAAO,CAAC,oBAAoB,EAAE;QACzC,OAAO,OAAO,CAAC,oBAAoB,CAAC;AACvC,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;AACL,CAAC;AAEe,SAAA,iBAAiB,CAAC,CAAU,EAAE,CAAU,EAAA;AACpD,IAAA,OAAO,iBAAiB,CAACA,WAAS,CAAC,CAAC,CAAC,EAAEA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAGD,IAAA,qBAAA,kBAAA,UAAA,MAAA,EAAA;IAAmD,SAGlD,CAAA,qBAAA,EAAA,MAAA,CAAA,CAAA;AAHD,IAAA,SAAA,qBAAA,GAAA;;KAwBC;;;;;AApBG,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE;gBACtC,IAAI,OAAO,SAAA,CAAC;gBACZ,IAAM,QAAM,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC;gBAC3D,IAAI,QAAM,KAAK,SAAS,EAAE;oBACtB,OAAO,GAAG,UAAU,EAAE,CAAC;AAC1B,iBAAA;qBAAM,IAAI,QAAM,KAAK,OAAO,EAAE;AAC3B,oBAAA,OAAO,GAAG,SAAS,CAAC,wCAAwC,CAAC,CAAC;AACjE,iBAAA;AAAM,qBAAA;AACH,oBAAA,IAAM,WAAW,GAAG,cAAc,CAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,IAAI,CAAC,KAAK,CAAC,yBAAyB,CACvC,CAAC;oBACF,OAAO,GAAG,oBAAC,cAAc,EAAA,EAAC,OAAO,EAAE,WAAW,GAAI,CAAC;AACtD,iBAAA;AACD,gBAAA,OAAO,OAAO,CAAC;AAClB,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,gCAAO,CAAC;AAClB,aAAA;SACJ;;IAvBgB,qBAAqB,GAAA,UAAA,CAAA;QADzC,QAAQ;AACY,KAAA,EAAA,qBAAqB,CAwBzC,CAAA;IAAD,OAAC,qBAAA,CAAA;AAAA,CAxBD,CAAmD,KAAK,CAAC,SAAS,CAwBjE;;AC3DD,IAAA,YAAA,kBAAA,UAAA,MAAA,EAAA;IAA2B,SAAkC,CAAA,YAAA,EAAA,MAAA,CAAA,CAAA;AAA7D,IAAA,SAAA,YAAA,GAAA;;KA+BC;;;;;AA1BG,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;AAEvC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACpB,gBAAA,OAAO,IACH,KAAC,CAAA,aAAA,CAAA,cAAc,EACX,EAAA,eAAe,EAAE,GAAG,EACpB,SAAS,EAAC,KAAK,EACf,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,oBAAoB,EAAE,IAAI,EAEzB,EAAA,OAAO,CACK,CACpB,CAAC;AACL,aAAA;AAED,YAAA,QACI,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EACL,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,IAG9D,OAAO,CACL,EACT;SACL;;AA7BD,IAAA,MAAA,CAAA,cAAA,CAAA,YAAA,EAAA,cAAA,EAAA;;;;AAA6B,QAAA,KAAA,EAAA;AACzB,YAAA,SAAS,EAAE,WAAW;AACzB,SAAA;AAAC,KAAA,CAAA,CAAA;IA4BN,OAAC,YAAA,CAAA;AAAA,CA/BD,CAA2B,KAAK,CAAC,SAAS,CA+BzC;;AC7BD,IAAA,OAAA,kBAAA,UAAA,MAAA,EAAA;IAAqC,SAAiC,CAAA,OAAA,EAAA,MAAA,CAAA,CAAA;AAAtE,IAAA,SAAA,OAAA,GAAA;;KAwCC;;;;;AAvCG,QAAA,KAAA,EAAA,YAAA;YACI,IAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAEpD,IAAI,IAAI,IAAI,IAAI,EAAE;gBACd,QACI,KAAC,CAAA,aAAA,CAAA,cAAc,EACX,EAAA,SAAS,EAAC,UAAU,EACpB,OAAO,EAAE,KAAuC,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,4BAAA,CAAA,EAAA;AAEhD,oBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,KAAK,EAAE;AACH,4BAAA,MAAM,EAAE,MAAM;AACd,4BAAA,KAAK,EAAE,MAAM;AACb,4BAAA,OAAO,EAAE,OAAO;AAChB,4BAAA,QAAQ,EAAE,QAAQ;yBACrB,EAGE,EAAA,QAAA,CAAA,CACM,EACnB;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,SAAS,GAAG,mCAAmC,GAAG,IAAI,CAAC;gBAC3D,QACI,KAAC,CAAA,aAAA,CAAA,cAAc,EACX,EAAA,SAAS,EAAC,KAAK,EACf,OAAO,EACH,KAAmD,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,wCAAA,CAAA,EAAA;oBAGvD,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAA;AAC/C,wBAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,SAAS,EAAE,MAAM,EAAC,QAAQ,EAAA,EAC9B,IAAI,CACL,CACD,CACM,EACnB;AACL,aAAA;SACJ;;IAvCgB,OAAO,GAAA,UAAA,CAAA;QAD3B,QAAQ;AACY,KAAA,EAAA,OAAO,CAwC3B,CAAA;IAAD,OAAC,OAAA,CAAA;AAAA,CAxCD,CAAqC,KAAK,CAAC,SAAS,CAwCnD;;AC7Be,SAAA,0BAA0B,CACtC,KAAyB,EACzB,UAGgB,EAAA;;AAEhB,IAAA,IAAI,OAAO,CAAC;IACZ,IAAM,MAAM,GAAG,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,+BAA+B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,KAAI,UAAU,CAAC;AAC3E,IAAA,IAAM,iBAAiB,GAAG,KAAK,CAAC,yBAAyB;AACrD,UAAE,oBAAoB,CAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,yBAAyB,CAAC,MAAM,CACzC;UACD,SAAS,CAAC;AAChB,IAAA,IAAM,aAAa,GAAG,0BAA0B,CAC5C,KAAK,CAAC,QAAQ,EACd,CAAA,EAAA,GAAA,KAAK,CAAC,+BAA+B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAChD,CAAC;IAEF,IAAI,MAAM,KAAK,SAAS,EAAE;QACtB,OAAO,GAAG,UAAU,EAAE,CAAC;AAC1B,KAAA;SAAM,IAAI,MAAM,KAAK,OAAO,EAAE;AAC3B,QAAA,OAAO,GAAG,SAAS,CAAC,wCAAwC,CAAC,CAAC;AACjE,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,GAAG,UAAU,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;AAC1D,KAAA;IAED,OAAO,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,KAAK,CAAC,SAAS,EAAA,EAAG,OAAO,CAAO,CAAC;AAC5D,CAAC;AAEe,SAAA,oBAAoB,CAChC,QAAmB,EACnB,+BAEC,EAAA;AAED,IAAA,OAAO,0BAA0B,CAC7B,QAAQ,EACR,+BAA+B;UACzB,+BAA+B,CAAC,MAAM;UACtC,SAAS,CAClB,CAAC;AACN;;ACpDM,SAAUC,UAAQ,CAAC,aAA6B,EAAA;AAClD,IAAA,IAAM,KAAK,GAAGD,WAAS,CAAC,aAAa,CAAC,CAAC;AAEvC,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AACzC,CAAC;AAEK,SAAUA,WAAS,CAAC,aAA6B,EAAA;AACnD,IAAA,OAAO,YAAY,CAAC,aAAa,CAAC,CAAC;AACvC,CAAC;AAEe,SAAA,eAAe,CAAC,CAAgB,EAAE,CAAgB,EAAA;AAC9D,IAAA,OAAO,iBAAiB,CAACA,WAAS,CAAC,CAAC,CAAC,EAAEA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAGD,IAAA,KAAA,kBAAA,UAAA,MAAA,EAAA;IAAmC,SAAuC,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;AAA1E,IAAA,SAAA,KAAA,GAAA;;KAaC;;;;;AARG,QAAA,KAAA,EAAA,YAAA;YACI,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SAClE;;;;;;AAGD,QAAA,KAAA,EAAA,UAAkB,aAA4B,EAAA;AAC1C,YAAA,OAAO,oBAAC,OAAO,EAAA,EAAC,aAAa,EAAE,aAAa,GAAI,CAAC;SACpD;;AAXD,IAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,cAAA,EAAA;;;;AAA0D,QAAA,KAAA,EAAA;AACtD,YAAA,SAAS,EAAE,iBAAiB;AAC/B,SAAA;AAAC,KAAA,CAAA,CAAA;AAOF,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;IAZgB,KAAK,GAAA,UAAA,CAAA;QADzB,QAAQ;AACY,KAAA,EAAA,KAAK,CAazB,CAAA;IAAD,OAAC,KAAA,CAAA;AAAA,CAbD,CAAmC,KAAK,CAAC,SAAS,CAajD;;AC5BD,IAAM,sBAAsB,GAA8B;AACtD,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,MAAM,EAAE,KAAK;AACb,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,wBAAwB,EAAE,KAAK;AAC/B,IAAA,oBAAoB,EAAE,KAAK;AAC3B,IAAA,kBAAkB,EAAE,KAAK;AACzB,IAAA,YAAY,EAAE,KAAK;AACnB,IAAA,aAAa,EAAE,KAAK;AACpB,IAAA,KAAK,EAAE,EAAE;CACZ,CAAC;AAEF,IAAY,qBAMX,CAAA;AAND,CAAA,UAAY,qBAAqB,EAAA;AAC7B,IAAA,qBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,IAAkB,CAAA;AAClB,IAAA,qBAAA,CAAA,cAAA,CAAA,GAAA,IAAmB,CAAA;AACnB,IAAA,qBAAA,CAAA,aAAA,CAAA,GAAA,KAAmB,CAAA;AACnB,IAAA,qBAAA,CAAA,iBAAA,CAAA,GAAA,IAAsB,CAAA;AAC1B,CAAC,EANW,qBAAqB,KAArB,qBAAqB,GAMhC,EAAA,CAAA,CAAA,CAAA;SAEe,8BAA8B,CAC1C,KAAoB,EACpB,WAA0B,EAC1B,SAAwB,EAAA;IAExB,IAAI,SAAS,KAAK,IAAI,EAAE;AACpB,QAAA,OAAO,SAAS,CAAC;AACpB,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,KAAK,IAAI,WAAW,IAAI,WAAW,KAAK,CAAC;cAC1C,KAAK,GAAG,WAAW;cACnB,CAAC,CAAC;AACX,KAAA;AACL,CAAC;AAEe,SAAA,0BAA0B,CACtC,WAA2B,EAC3B,YAA4B,EAAA;IAE5B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,YAAY,IAAI,WAAW,EAAE;AAC7B,QAAA,MAAM,GAAG,YAAY,GAAG,WAAW,CAAC;AACvC,KAAA;AAAM,SAAA,IAAI,YAAY,EAAE;QACrB,MAAM,GAAG,YAAY,CAAC;AACzB,KAAA;AAAM,SAAA,IAAI,WAAW,EAAE;QACpB,MAAM,GAAG,WAAW,CAAC;AACxB,KAAA;AACD,IAAA,OAAO,MAAM,CAAC;AAClB,CAAC;AAEe,SAAA,YAAY,CACxB,UAA8B,EAC9B,aAA6B,EAAA;IAE7B,IAAI,SAAS,GAAG,EAAE,CAAC;AAEnB,IAAA,IACI,aAAa;SACZ,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,YAAY,CAAC,EAC3D;;QAEE,SAAS;YACL,aAAa,IAAI,aAAa,CAAC,GAAG;AAC9B,kBAAE,iBAAiB,CACb,CAAA,UAAU,KAAA,IAAA,IAAV,UAAU,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAV,UAAU,CAAE,eAAe,KAAI,IAAI,EACnC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAC1B,aAAa,CAAC,GAAG,CAAC,GAAG,EACrB,aAAa,CAAC,GAAG,CAAC,GAAG,CACxB;kBACD,EAAE,CAAC;AAChB,KAAA;AAED,IAAA,OAAO,SAAS,CAAC;AACrB,CAAC;AAEK,SAAU,8BAA8B,CAAC,aAA6B,EAAA;AACxE,IAAA,IAAM,UAAU,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;AAChD,IAAA,OAAO,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC,GAAG,UAAU,CAAC;AAC3E,CAAC;AAEK,SAAU,yBAAyB,CAAC,UAEzC,EAAA;;AAEG,IAAA,IAAM,MAAM,GAAGF,UAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAC3D,iBAAiB;KACpB,CAAC,CAAC,OAAO,EAAE,CAAC;;IAGb,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAEjC,IAAA,OAAO,MAAM,CAAC;AAClB,CAAC;SAEe,kBAAkB,CAC9B,GAAW,EACX,IAAY,EACZ,MAAwC,EAAA;;;AAIxC,IAAA,IAAM,eAAe,GAAsB,CAAC,sBAAsB,CAAC,GAAG,CAAC;UACjE,qBAAqB,CAAC,WAAW,GAAG,GAAG,GAAG,sBAAsB,CAAC,GAAG,CAAC;UACrE,qBAAqB,CAAC,WAAW,EACrC,QAAQ,EAAuB,CAAC;AAClC,IAAA,IAAM,gBAAgB,GAAuB,CAAC,sBAAsB,CAAC,GAAG,CAAC;UACnE,qBAAqB,CAAC,YAAY,GAAG,GAAG,GAAG,sBAAsB,CAAC,GAAG,CAAC;UACtE,qBAAqB,CAAC,YAAY,EACtC,QAAQ,EAAwB,CAAC;AACnC,IAAA,IAAM,eAAe,GAAsB,CAAC,sBAAsB,CAAC,GAAG,CAAC;UACjE,qBAAqB,CAAC,WAAW,GAAG,GAAG,GAAG,sBAAsB,CAAC,GAAG,CAAC;UACrE,qBAAqB,CAAC,WAAW,EACrC,QAAQ,EAAuB,CAAC;AAClC,IAAA,IAAM,mBAAmB,GAA0B,CAAC,sBAAsB,CACtE,GAAG,CACN;UACK,qBAAqB,CAAC,eAAe;YACrC,GAAG;YACH,sBAAsB,CAAC,GAAG,CAAC;UAC3B,qBAAqB,CAAC,eAAe,EACzC,QAAQ,EAA2B,CAAC;IAEtC,MAAM,CAAC,GAAG,CAAC,GAAG;AACV,QAAA,UAAU,EAAE,GAAG;AACf,QAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;AAC1C,cAAE,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;AACnC,cAAE,CAAC;AACP,QAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC;AAC7C,cAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC;AACrC,cAAE,CAAC;AACP,QAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;AAC1C,cAAE,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC;AACnC,cAAE,CAAC;QACP,eAAe,EAAE,8BAA8B,CAC3C,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,EACjC,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,EACnC,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAC5C;KACa,CAAC;AACvB,CAAC;AAEK,SAAU,aAAa,CAAC,aAA6B,EAAA;AACvD,IAAA,IAAI,UAAwD,CAAC;;AAG7D,IAAA,IACI,aAAa;SACZ,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,YAAY,CAAC,EAC3D;QACE,IAAM,aAAW,GAAqC,EAAE,CAAC;QACzD,IAAM,cAAY,GAAqC,EAAE,CAAC;QAC1D,IAAM,gBAAc,GAAqC,EAAE,CAAC;;QAE5D,IAAI,aAAa,CAAC,WAAW,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;gBAC3C,OAAA,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,WAAW,EAAE,aAAW,CAAC,CAAA;AAA/D,aAA+D,CAClE,CAAC;YACF,UAAU,GAAG,aAAW,CAAC;AAC5B,SAAA;;QAGD,IAAI,aAAa,CAAC,YAAY,EAAE;YAC5B,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;gBAC3C,OAAA,kBAAkB,CACd,GAAG,EACH,aAAa,CAAC,YAAY,EAC1B,cAAY,CACf,CAAA;AAJD,aAIC,CACJ,CAAC;YACF,UAAU,GAAG,cAAY,CAAC;AAC7B,SAAA;;AAGD,QAAA,IAAI,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,YAAY,EAAE;YACzD,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;;gBAC3C,gBAAc,CAAC,GAAG,CAAC,GAAG;AAClB,oBAAA,UAAU,EAAE,GAAG;AACf,oBAAA,WAAW,EAAE,0BAA0B,CAAA,CAAA,EAAA,GACnC,aAAW,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,EAAA,CAAA,EAAA,GAC7B,cAAY,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACjC;AACD,oBAAA,YAAY,EAAE,0BAA0B,CAAA,CAAA,EAAA,GACpC,aAAW,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,EAAA,CAAA,EAAA,GAC9B,cAAY,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAClC;AACD,oBAAA,WAAW,EAAE,0BAA0B,CAAA,CAAA,EAAA,GACnC,aAAW,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,EAAA,CAAA,EAAA,GAC7B,cAAY,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,CACjC;AACD,oBAAA,eAAe,EAAE,8BAA8B,CAC3C,0BAA0B,CAAA,CAAA,EAAA,GACtB,aAAW,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,WAAW,EAC7B,CAAA,EAAA,GAAA,cAAY,CAAC,GAAG,CAAC,0CAAE,WAAW,CACjC,EACD,0BAA0B,OACtB,aAAW,CAAC,GAAG,CAAC,0CAAE,YAAY,EAAA,CAAA,EAAA,GAC9B,cAAY,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,YAAY,CAClC,EACD,IAAI,CACP;iBACa,CAAC;AACvB,aAAC,CAAC,CAAC;YACH,UAAU,GAAG,gBAAc,CAAC;AAC/B,SAAA;AACJ,KAAA;;AAED,IAAA,OAAO,UAAU,CAAC;AACtB,CAAC;AAEK,SAAU,iBAAiB,CAC7B,UAAyB,EACzB,QAAuB,EACvB,SAAwB,EACxB,OAAsB,EAAA;AAEtB,IAAA,IAAI,UAAU,IAAI,QAAQ,IAAI,SAAS,IAAI,OAAO,EAAE;QAChD,OAAO,4CAAA,GAA6C,UAAU,GAAI,GAAA,GAAA,QAAQ,SAAI,SAAS,GAAA,GAAA,GAAI,OAAS,CAAC;AACxG,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,oCAAoC,CAAC;AAC/C,KAAA;AACL;;;ACxNM,SAAU,eAAe,CAAC,SAAiB,EAAA;IAC7C,IAAI,SAAS,KAAK,CAAC,EAAE;AACjB,QAAA,OAAO,sCAAc,CAAC;AACzB,KAAA;AAAM,SAAA;;AAEH,QAAA,QACI,KACK,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE;AACjC,YAAA,wBAAwB,EAAE,CAAC;AAC3B,YAAA,wBAAwB,EAAE,CAAC;SAC9B,CAAC,CACC,EACT;AACL,KAAA;AACL,CAAC;AAED,IAAM,eAAe,GAAG,4BAA4B,CAAC;AAErD,IAAM,OAAO,IAAAiB,IAAA,GAAA,EAAA;AACT,IAAAA,IAAA,CAAC,qBAAqB,CAAC,UAAU,CAAG,IAChC,oBAAC,YAAY,EAAA,EACT,SAAS,EAAE,eAAe,EAC1B,aAAa,EAAE,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,YAAA,CAAuB,GACxC,CACL;IACDA,IAAC,CAAA,qBAAqB,CAAC,WAAW,CAAA,IAC9B,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,SAAS,EAAE,eAAe,EAC1B,aAAa,EAAE,KAAyB,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,cAAA,CAAA,EACxC,OAAO,EAAE,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,wCAAA,CAAmD,GAC9D,CACL;IACDA,IAAC,CAAA,qBAAqB,CAAC,YAAY,CAAA,IAC/B,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,SAAS,EAAE,eAAe,EAC1B,aAAa,EAAE,KAA0B,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,eAAA,CAAA,EACzC,OAAO,EACH,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,iFAAA,CAGO,GAEb,CACL;IACDA,IAAC,CAAA,qBAAqB,CAAC,WAAW,CAAA,IAC9B,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,SAAS,EAAE,eAAe,EAC1B,aAAa,EAAE,KAAkC,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,uBAAA,CAAA,EACjD,OAAO,EACH,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,2DAAA,CAEO,GAEb,CACL;IACDA,IAAC,CAAA,qBAAqB,CAAC,eAAe,CAAA,IAClC,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,SAAS,EAAE,eAAe,EAC1B,aAAa,EAAE,KAA6B,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,kBAAA,CAAA,EAC5C,OAAO,EAAE,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,+CAAA,CAA0D,GACrE,CACL;SACJ,CAAC;AAEF,SAAS,oBAAoB,CAAC,MAAW,EAAA;IACrC,OAAO,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iBAAiB,IAAE,MAAM,CAAC,KAAK,CAAQ,CAAC;AACnE,CAAC;AAED,IAAM,UAAU,GAAmD,UAAA,KAAK,EAAA;AACpE,IAAA,IAAM,iBAAiB,IACnB,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAC,yBAAyB,EAAC,MAAM,EAAC,QAAQ,EAAA,EAAA,gBAAA,CAE7C,CACP,CAAC;AAEF,IAAA,IAAM,eAAe,IACjB,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAC,8BAA8B,EAAC,MAAM,EAAC,QAAQ,EAAA,EAAA,iBAAA,CAElD,CACP,CAAC;AAEF,IAAA,IAAM,UAAU,IACZ,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAC,QAAQ,EAAA,EAAA,QAAA,CAErC,CACP,CAAC;IAEF,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE;AACH,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,UAAU,EAAE,CAAC;AAChB,SAAA,EAAA;;QAEQ,eAAe;;QAAiB,iBAAiB;;QAE1D,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;;QACE,UAAU;AAChB,QAAA,mBAAA,CAAA,EACR;AACN,CAAC,CAAC;AAEF,IAAA,oBAAA,kBAAA,UAAA,MAAA,EAAA;IAAkD,SAGjD,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAA;AAHD,IAAA,SAAA,oBAAA,GAAA;;KA8EC;;;;;AA1EG,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wBAAwB,eAAW,cAAc,EAAA;AAC5D,gBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EACP,EAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,cAAc,EAAE,KAAK,EACrB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAChC,QAAQ,EAAE,KAAK,EACf,SAAS,EAAC,qBAAqB,EAC/B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,OAAO,EAAE;AACL,wBAAA;4BACI,EAAE,EAAE,qBAAqB,CAAC,UAAU;AACpC,4BAAA,QAAQ,EAAE,YAAY;AACtB,4BAAA,IAAI,EAAE,oBAAoB;AAC1B,4BAAA,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,UAAU,CAAC;AACjD,4BAAA,KAAK,EAAE,GAAG;AACb,yBAAA;AACD,wBAAA;4BACI,EAAE,EAAE,qBAAqB,CAAC,WAAW;AACrC,4BAAA,QAAQ,EAAE,aAAa;AACvB,4BAAA,IAAI,EAAE,oBAAoB;AAC1B,4BAAA,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,WAAW,CAAC;AAClD,4BAAA,KAAK,EAAE,EAAE;AACZ,yBAAA;AACD,wBAAA;4BACI,EAAE,EAAE,qBAAqB,CAAC,YAAY;AACtC,4BAAA,QAAQ,EAAE,cAAc;AACxB,4BAAA,IAAI,EAAE,oBAAoB;AAC1B,4BAAA,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,YAAY,CAAC;AACnD,4BAAA,KAAK,EAAE,EAAE;AACZ,yBAAA;AACD,wBAAA;4BACI,EAAE,EAAE,qBAAqB,CAAC,WAAW;AACrC,4BAAA,IAAI,EAAE,oBAAoB;AAC1B,4BAAA,QAAQ,EAAE,aAAa;AACvB,4BAAA,MAAM,EAAE,OAAO,CAAC,qBAAqB,CAAC,WAAW,CAAC;AAClD,4BAAA,KAAK,EAAE,GAAG;AACb,yBAAA;AACD,wBAAA;4BACI,EAAE,EAAE,qBAAqB,CAAC,eAAe;AACzC,4BAAA,QAAQ,EAAE,iBAAiB;AAC3B,4BAAA,MAAM,EACF,OAAO,CAAC,qBAAqB,CAAC,eAAe,CAAC;4BAClD,IAAI,EAAE,UAAC,MAAW,EAAA,EAAK,QACnB,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,SAAS,EAAC,iBAAiB,EAAA,WAAA,EACjB,uBAAuB,EAEhC,EAAA,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAC3B,EACV,EAAA;AACD,4BAAA,KAAK,EAAE,GAAG;AACb,yBAAA;qBACJ,EACH,CAAA;gBACD,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,KACvB,oBAAC,UAAU,EAAA,EAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAI,CAAA,CAClD,CACC,EACR;SACL;;;;;;eAGD,UAAqB,KAAU,EAAE,GAAa,EAAA;YAC1C,OAAO;AACH,gBAAA,KAAK,EAAE;AACH,oBAAA,UAAU,EACN,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;AACpD,0BAAE,MAAM;AACR,0BAAE,SAAS;AACtB,iBAAA;aACJ,CAAC;SACL;;AATD,IAAA,UAAA,CAAA;QADC,QAAQ;AAUR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;IACL,OAAC,oBAAA,CAAA;AAAA,CA9ED,CAAkD,KAAK,CAAC,SAAS,CA8EhE;;AClLM,IAAM,oBAAoB,GAE5B,UAAA,KAAK,EAAA;IACN,IAAI,KAAK,CAAC,UAAU,EAAE;;;QAGlB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,eAAe,KAAK,CAAC,EAAE;AACjD,YAAA,OAAO,sCAAc,CAAC;AACzB,SAAA;AAAM,aAAA;;AAEH,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EACK,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,cAAc,CACrD,SAAS,EACT;AACI,gBAAA,wBAAwB,EAAE,CAAC;AAC3B,gBAAA,wBAAwB,EAAE,CAAC;aAC9B,CACJ,CACE,EACT;AACL,SAAA;AACJ,KAAA;AAAM,SAAA;QACH,QACI,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE;AACH,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,QAAQ,EAAE,QAAQ;AACrB,aAAA,EAAA,EAAA,QAAA,CAGE,EACT;AACL,KAAA;AACL,EAAE;AAEK,IAAM,wBAAwB,GAGhC,UAAA,KAAK,EAAA;AACN,IAAA,IAAM,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAC1C,IAAI,OAAO,GAAG,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,gCAAA,CAA2C,CAAC;;AAG1D,IAAA,IACI,aAAa;SACZ,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,YAAY,CAAC,EAC3D;QACE,IAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAChE,QAAA,IAAM,MAAM,GAAG,KAAK,CAAC,UAAU;AAC3B,cAAE,yBAAyB,CAAC,KAAK,CAAC,UAAU,CAAC;AAC7C,cAAE,8BAA8B,CAAC,aAAa,CAAC,CAAC;AAEpD,QAAA,IAAI,MAAM,EAAE;YACR,OAAO,IACH,KAAC,CAAA,aAAA,CAAA,oBAAoB,IACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,KAAK,CAAC,cAAc,EAAA,CACtC,CACL,CAAC;AACL,SAAA;AACJ,KAAA;AAED,IAAA,OAAO,OAAO,CAAC;AACnB,EAAE;AAGF,IAAA,eAAA,kBAAA,UAAA,MAAA,EAAA;IAA6C,SAG5C,CAAA,eAAA,EAAA,MAAA,CAAA,CAAA;AAHD,IAAA,SAAA,eAAA,GAAA;;KAyBC;;;;;AArBG,QAAA,KAAA,EAAA,YAAA;YAAA,IAoBC,KAAA,GAAA,IAAA,CAAA;YAnBG,IAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAE3D,YAAA,QACI,KAAC,CAAA,aAAA,CAAA,cAAc,EACX,EAAA,OAAO,EAAE,YAAM,EAAA,QACX,KAAA,CAAA,aAAA,CAAC,wBAAwB,EACjB,QAAA,CAAA,EAAA,EAAA,KAAI,CAAC,KAAK,EAAA,EACd,UAAU,EAAE,UAAU,EACxB,CAAA,CAAA,IACL,EACD,SAAS,EAAC,UAAU,EACpB,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAC3B,oBAAoB,EAAE,IAAI,EAAA;AAE1B,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;oBACI,KAAC,CAAA,aAAA,CAAA,oBAAoB,IAAC,UAAU,EAAE,UAAU,EAAI,CAAA,CAC7C,CACM,EACnB;SACL;;IAxBgB,eAAe,GAAA,UAAA,CAAA;QADnC,QAAQ;AACY,KAAA,EAAA,eAAe,CAyBnC,CAAA;IAAD,OAAC,eAAA,CAAA;AAAA,CAzBD,CAA6C,KAAK,CAAC,SAAS,CAyB3D;;ACpGK,SAAUd,UAAQ,CAAC,aAA6B,EAAA;AAClD,IAAA,IAAM,KAAK,GAAGD,WAAS,CAAC,aAAa,CAAC,CAAC;AAEvC,IAAA,OAAO,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC;AACzC,CAAC;AAEK,SAAUA,WAAS,CAAC,aAA6B,EAAA;;AAEnD,IAAA,IACI,aAAa;AACb,QAAA,aAAa,CAAC,WAAW;QACzB,aAAa,CAAC,YAAY,EAC5B;QACE,OAAO,8BAA8B,CACjC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE;AACpC,YAAA,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,EAC7C,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE;YACrC,aAAa,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAC9C,IAAI,CACP,CAAC;AACL,KAAA;;AAGI,SAAA,IAAI,aAAa,IAAI,aAAa,CAAC,WAAW,EAAE;QACjD,OAAO,8BAA8B,CACjC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,EACxC,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,EACzC,aAAa,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAC/C,CAAC;AACL,KAAA;;AAGI,SAAA,IAAI,aAAa,IAAI,aAAa,CAAC,YAAY,EAAE;QAClD,OAAO,8BAA8B,CACjC,aAAa,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,EACzC,aAAa,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,EAC1C,aAAa,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,CAChD,CAAC;AACL,KAAA;;AAGD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;AAEe,SAAA,gBAAgB,CAAC,CAAgB,EAAE,CAAgB,EAAA;AAC/D,IAAA,OAAO,iBAAiB,CAACA,WAAS,CAAC,CAAC,CAAC,EAAEA,WAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAGD,IAAA,MAAA,kBAAA,UAAA,MAAA,EAAA;IAAoC,SAAuC,CAAA,MAAA,EAAA,MAAA,CAAA,CAAA;AAA3E,IAAA,SAAA,MAAA,GAAA;;KAqBC;;;;;AAhBG,QAAA,KAAA,EAAA,YAAA;YACI,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SAClE;;;;;;eAGD,UACI,aAA4B,EAC5B,iBAAqC,EAAA;AAErC,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,eAAe,EAAA,EACZ,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,iBAAiB,EAAA,CAC/B,EACJ;SACL;;AAnBD,IAAA,MAAA,CAAA,cAAA,CAAA,MAAA,EAAA,cAAA,EAAA;;;;AAA0D,QAAA,KAAA,EAAA;AACtD,YAAA,SAAS,EAAE,iBAAiB;AAC/B,SAAA;AAAC,KAAA,CAAA,CAAA;AAOF,IAAA,UAAA,CAAA;QADC,QAAQ;AAWR,KAAA,EAAA,MAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;IApBgB,MAAM,GAAA,UAAA,CAAA;QAD1B,QAAQ;AACY,KAAA,EAAA,MAAM,CAqB1B,CAAA;IAAD,OAAC,MAAA,CAAA;AAAA,CArBD,CAAoC,KAAK,CAAC,SAAS,CAqBlD;;ACjFe,SAAA,aAAa,CACzB,QAAmB,EACnB,yBAEC,EAAA;AAED,IAAA,OAAO,yBAAyB;UAC1B,oBAAoB,CAAC,QAAQ,EAAE,yBAAyB,CAAC,MAAM,CAAC;UAChE,SAAS,CAAC;AACpB;;ACJM,SAAU,kBAAkB,CAAC,QAAkB,EAAA;AACjD,IAAA,OAAO,uBAAuB,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC;AACrD,CAAC;SAEe,kBAAkB,CAC9B,QAAkB,EAClB,yBAEC,EACD,oBAA6B,EAAA;;IAE7B,IAAM,iBAAiB,GAAG,aAAa,CACnC,QAAQ,EACR,yBAAyB,CAC5B,CAAC;IAEF,IAAI,CAAC,iBAAiB,EAAE;AACpB,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;AAED,IAAA,IAAI,IAAI,GACJ,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,iBAAiB,CAAC,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,4BAA4B,MAC5D,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAK,KAAI,IAAI,CAAC;;AAGxB,IAAA,IAAI,oBAAoB,EAAE;QACtB,IAAM,4BAA4B,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,iBAAiB,CAAC,kBAAkB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,8BAA8B,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAI,CAC3G,UAAA,4BAA4B,EAAA;YACxB,OAAA,4BAA4B,CAAC,YAAY;gBACzC,oBAAoB,CAAA;AADpB,SACoB,CAC3B,CAAC;AACF,QAAA,IAAI,GAAG,4BAA4B;cAC7B,4BAA4B,CAAC,KAAK;cAClC,IAAI,CAAC;AACd,KAAA;AAED,IAAA,OAAO,IAAI,CAAC;AAChB;;AC7BM,SAAUC,UAAQ,CAAC,KAAqB,EAAA;IAC1C,OAAO,KAAK,IAAI,EAAE,CAAC;AACvB,CAAC;AAEK,SAAU,SAAS,CAAC,KAAqB,EAAA;IAC3C,OAAO,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACzD,CAAC;AAEe,SAAA,eAAe,CAAC,CAAgB,EAAE,CAAgB,EAAA;AAC9D,IAAA,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAGD,IAAA,KAAA,kBAAA,UAAA,MAAA,EAAA;IAAmC,SAA+B,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;AAAlE,IAAA,SAAA,KAAA,GAAA;;KAYC;AAXG,IAAA,MAAA,CAAA,cAAA,CAAI,KAAK,CAAA,SAAA,EAAA,OAAA,EAAA;AAAT,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,kBAAkB,CACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,IAAI,CAAC,KAAK,CAAC,yBAAyB,EACpC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAClC,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,OAAO,KAAM,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA,EAAA,IAAI,CAAC,KAAK,CAAO,CAAC;SAClC;;IAXgB,KAAK,GAAA,UAAA,CAAA;QADzB,QAAQ;AACY,KAAA,EAAA,KAAK,CAYzB,CAAA;IAAD,OAAC,KAAA,CAAA;AAAA,CAZD,CAAmC,KAAK,CAAC,SAAS,CAYjD;;;;ACnBe,SAAA,eAAe,CAAC,CAAS,EAAE,CAAS,EAAA;AAChD,IAAA,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,CAAC;AAGD,IAAA,KAAA,kBAAA,UAAA,MAAA,EAAA;IAAmC,SAA+B,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;AAAlE,IAAA,SAAA,KAAA,GAAA;;KAqEC;AA5CG,IAAA,MAAA,CAAA,cAAA,CAAI,KAAK,CAAA,SAAA,EAAA,OAAA,EAAA;AAAT,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACvD;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAc,CAAC;AAChD,YAAA,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAY,CAAC;AAC5C,YAAA,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAe,CAAC;AAElD,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACb,gBAAA,OAAO,iCAAQ,CAAC;AACnB,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;sBAC/B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;sBACpC,SAAS,CAAC;AAEhB,gBAAA,IAAM,OAAO,IACT,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,WAAW,CAAC,YAAY,CAAC,EACrC,EAAA,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CACtD,CACV,CAAC;gBAEF,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,IAC5B,OAAO,KAEP,KAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EACX,SAAS,EAAC,SAAS,EACnB,OAAO,EACH,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACK,wBAAA,IAAI,CAAC,KAAK;wBACX,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;;AAEL,wBAAA,aAAa,CACV,IAAI,CAAC,KAAK,EACV,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAC7B,CACC,IAGT,OAAO,CACK,CACpB,CAAC;AACL,aAAA;SACJ;;AAnED,IAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,cAAA,EAAA;;;;AAAkD,QAAA,KAAA,EAAA;AAC9C,YAAA,aAAa,EAAE,UAAC,KAAa,EAAE,OAAoB,EAAE,IAAa,EAAA,EAAK,QACnE,KACI,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,IAAI,IAAI,qCAAsC,GAAA,KAAO,EAC3D,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EAExB,EAAA,OAAO,CACR,IACP;AACD,YAAA,WAAW,EAAE,UAAC,KAAc,EAAA,EAAK,QAC7B,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;gBACK,KAAK;;AACN,gBAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,qBAAqB,GAAG,CACtC,IACN;YACD,cAAc,EAAE,YAAM,EAAA,QAClB,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;;gBAEI,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,WAAW,CAAC,mBAAmB,CAAC,EAAI,CAAA,CACrD,EACN,EAAA;AACJ,SAAA;AAAC,KAAA,CAAA,CAAA;IAvBe,KAAK,GAAA,UAAA,CAAA;QADzB,QAAQ;AACY,KAAA,EAAA,KAAK,CAqEzB,CAAA;IAAD,OAAC,KAAA,CAAA;AAAA,CArED,CAAmC,KAAK,CAAC,SAAS,CAqEjD;;;;AClFD,IAAA,cAAA,kBAAA,UAAA,MAAA,EAAA;IAAoC,SAAwC,CAAA,cAAA,EAAA,MAAA,CAAA,CAAA;AAA5E,IAAA,SAAA,cAAA,GAAA;;KAkEC;;;;;AA7DG,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAM,KAAK,GACP,IAAI,CAAC,KAAK,CAAC,KAAK;AAChB,iBAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;AAChB,sBAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc;sBAClC,SAAS,CAAC,CAAC;AACrB,YAAA,IAAI,OAAoB,CAAC;AAEzB,YAAA,IAAI,KAAK,EAAE;gBACP,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AACzC,oBAAA,OAAO,IACH,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEe,QAAM,CAAC,OAAO,EACzB,KAAK,EACD,IAAI,CAAC,KAAK,CAAC,QAAQ;8BACb,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;8BACxC,SAAS,EAGlB,EAAA,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;yBACvB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;4BAC5C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;wBAC1C,SAAS,CACV,CACV,CAAC;AACL,iBAAA;qBAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACjD,oBAAA,OAAO,IACH,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEA,QAAM,CAAC,QAAQ,EAC1B,KAAK,EACD,IAAI,CAAC,KAAK,CAAC,QAAQ;8BACb,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;8BACxC,SAAS,EAGlB,EAAA,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;yBACvB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;4BAC5C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;wBAC3C,UAAU,CACX,CACV,CAAC;AACL,iBAAA;AAAM,qBAAA;oBACH,OAAO,GAAG,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEA,QAAM,CAAC,OAAO,EAAA,EAAG,KAAK,CAAQ,CAAC;AAC7D,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,OAAO,GAAG,iCAAQ,CAAC;AACtB,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC1B,gBAAA,OAAO,IACH,KAAA,CAAA,aAAA,CAAC,cAAc,EACX,EAAA,OAAO,EAAE,KAAO,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,KAAK,CAAQ,EAC7B,SAAS,EAAC,OAAO,IAEhB,OAAO,CACK,CACpB,CAAC;AACL,aAAA;AAED,YAAA,OAAO,OAAO,CAAC;SAClB;;AAhED,IAAA,MAAA,CAAA,cAAA,CAAA,cAAA,EAAA,cAAA,EAAA;;;;AAA2D,QAAA,KAAA,EAAA;AACvD,YAAA,aAAa,EAAE,IAAI;AACtB,SAAA;AAAC,KAAA,CAAA,CAAA;IA+DN,OAAC,cAAA,CAAA;AAAA,CAlED,CAAoC,KAAK,CAAC,SAAS,CAkElD;;;;ACrEe,SAAA,uBAAuB,CAAC,CAAS,EAAE,CAAS,EAAA;AACxD,IAAA,OAAO,iBAAiB,CACpB,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC,GAAG,IAAI,EACxC,CAAC,GAAG,0BAA0B,CAAC,CAAC,CAAC,GAAG,IAAI,CAC3C,CAAC;AACN,CAAC;AAED,IAAA,aAAA,kBAAA,UAAA,MAAA,EAAA;IAA2C,SAG1C,CAAA,aAAA,EAAA,MAAA,CAAA,CAAA;AAHD,IAAA,SAAA,aAAA,GAAA;;KA4CC;;;;;AApCG,QAAA,KAAA,EAAA,YAAA;;AAEI,YAAA,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AACrC,YAAA,IAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC7C,YAAA,IAAM,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC;;;;;;;;;;AAY/C,YAAA,IAAI,OAAO,IACP,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAEA,QAAM,CAAC,aAAa,EAAA,EAAG,aAAa,CAAQ,CAChE,CAAC;;AAGF,YAAA,IACI,IAAI,CAAC,KAAK,CAAC,6BAA6B;gBACxC,cAAc;gBACd,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,EACnD;AACE,gBAAA,OAAO,IACH,KAAC,CAAA,aAAA,CAAA,KAAK,CAAC,QAAQ,EAAA,IAAA;oBACV,OAAO;oBACR,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAEA,QAAM,CAAC,QAAQ,EAAiB,EAAA,UAAA,CAAA,CACpC,CACpB,CAAC;AACL,aAAA;AAED,YAAA,OAAO,OAAO,CAAC;SAClB;;AAvCD,IAAA,MAAA,CAAA,cAAA,CAAA,aAAA,EAAA,cAAA,EAAA;;;;AAA0D,QAAA,KAAA,EAAA;AACtD,YAAA,6BAA6B,EAAE,IAAI;AACtC,SAAA;AAAC,KAAA,CAAA,CAAA;IAsCN,OAAC,aAAA,CAAA;AAAA,CA5CD,CAA2C,KAAK,CAAC,SAAS,CA4CzD;;AC5BK,SAAU,aAAa,CACzB,QAAkB,EAClB,yBAEC,EACD,YAA4B;;IAE5B,IAAI,UAAU,GAA8B,EAAE,CAAC;IAC/C,IAAM,iBAAiB,GAAG,yBAAyB;UAC7C,oBAAoB,CAAC,QAAQ,EAAE,yBAAyB,CAAC,MAAM,CAAC;UAChE,SAAS,CAAC;AAChB,IAAA,IACI,iBAAiB;AACjB,QAAA,iBAAiB,CAAC,gBAAgB;QAClC,iBAAiB,CAAC,gBAAgB,CAAC,UAAU;QAC7C,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAC1D;;QAEE,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC5D,YAAA,IACI,CAAC,YAAY,KAAK,aAAa,CAAC,QAAQ;AACpC,gBAAA,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CACpE,UAAU,CACb;AACL,iBAAC,YAAY,KAAK,aAAa,CAAC,OAAO;AACnC,oBAAA,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CACpE,SAAS,CACZ,CAAC,EACR;gBACE,UAAU,GAAG,eAAe,CAAC;AACzB,oBAAA,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AACnD,iBAAA,CAAC,CAAC;AACN,aAAA;AACJ,SAAA;;AAEI,aAAA;;YAED,IAAI,YAAY,KAAK,SAAS,EAAE;gBAC5B,UAAU,GAAG,eAAe,CACxB,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAChD,CAAC;AACL,aAAA;;AAEI,iBAAA;gBACD,iBAAiB,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CACjD,UAAA,UAAU,EAAA;AACN,oBAAA,IACI,YAAY,KAAK,aAAa,CAAC,QAAQ;AACvC,wBAAA,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,EAChD;AACE,wBAAA,UAAU,GAAG,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9C,qBAAA;AAAM,yBAAA,IACH,YAAY,KAAK,aAAa,CAAC,OAAO;AACtC,wBAAA,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,EAC/C;AACE,wBAAA,UAAU,GAAG,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAC9C,qBAAA;AACL,iBAAC,CACJ,CAAC;AACL,aAAA;AACJ,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,UAAU,CAAC;AACtB,CAAC;AACe,SAAA,gBAAgB,CAC5B,CAA0B,EAC1B,CAA0B,EAAA;AAE1B,IAAA,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AACK,SAAU,YAAY,CACxB,UAAmC,EAAA;AAEnC,IAAA,OAAO,UAAU,GAAG,UAAU,CAAC,iBAAiB,IAAI,IAAI,GAAG,IAAI,CAAC;AACpE,CAAC;AAEe,SAAA,QAAQ,CACpB,UAAmC,EACnC,YAA4B,EAAA;AAE5B,IAAA,OAAO,UAAU,IAAI,UAAU,CAAC,iBAAiB,KAAK,IAAI;UACpD,KAAG,oCAAoC,CACnC,UAAU,CAAC,iBAAiB,EAC5B,CAAC,CACF;UACH,EAAE,CAAC;AACb,CAAC;AAED;AACM,SAAU,oBAAoB,CAChC,QAAkB,EAClB,YAA2B,EAC3B,yBAEC,EACD,iBAA0B,EAAA;IAE1B,IAAM,UAAU,GAAG,aAAa,CAC5B,QAAQ,EACR,yBAAyB,EACzB,YAAY,CACf,CAAC;AACF,IAAA,IACI,UAAU;QACV,UAAU,CAAC,MAAM,KAAK,CAAC;AACvB,QAAA,UAAU,CAAC,CAAC,CAAC,CAAC,sBAAsB,EACtC;QACE,OAAO,oCAAoC,CACvC,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,gBAAgB,EACjE,iBAAiB,IAAI,CAAC,CACzB,CAAC;AACL,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;AACL,CAAC;AAEM,IAAM,WAAW,GAA8C,UAAA,KAAK,EAAA;;AAEvE,IAAA,IAAM,UAAU,GAAG,aAAa,CAC5B,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,yBAAyB,EAC/B,KAAK,CAAC,YAAY,CACrB,CAAC,CAAC,CAAC,CAAC;IACL,IACI,oBAAoB,CAChB,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,YAAY,IAAI,aAAa,CAAC,QAAQ,EAC5C,KAAK,CAAC,yBAAyB,CAClC,KAAK,IAAI,EACZ;AACE,QAAA,QACI,KAAA,CAAA,aAAA,CAAC,+BAA+B,EAAA,EAC5B,IAAI,EAAE,8BAA8B,CAChC,UAAU,EACV,UAAU,CAAC,iBAAiB,EAC5B,UAAU,CAAC,0BAA0B,EACrC,UAAU,CAAC,uBAAuB,EAClC,UAAU,CAAC,gBAAgB,CAC9B,EACD,OAAO,EAAE;AACL,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,UAAU,CACtC;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,eAAe,CAC3C;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,YAAY,CACxC;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,aAAa,CACzC;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,oBAAoB,CAChD;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,eAAe,CAC3C;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,gBAAgB,CAC5C;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,UAAU,CACtC;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,SAAS,CACrC;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,cAAc,CAC1C;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,wBAAwB,CACpD;AACD,gBAAA,4BAA4B,CACxB,wBAAwB,CAAC,uBAAuB,CACnD;AACJ,aAAA,EAAA,CACH,EACJ;AACL,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,IAAI,CAAC;AACf,KAAA;AACL,EAAE;AAGF,IAAA,MAAA,kBAAA,UAAA,MAAA,EAAA;IAAoC,SAAgC,CAAA,MAAA,EAAA,MAAA,CAAA,CAAA;AAApE,IAAA,SAAA,MAAA,GAAA;;KA4CC;;;;;AA3CG,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE;gBACtC,IAAI,OAAO,SAAA,CAAC;gBACZ,IAAM,QAAM,GAAG,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC;gBAC3D,IAAI,QAAM,KAAK,SAAS,EAAE;oBACtB,OAAO,GAAG,UAAU,EAAE,CAAC;AAC1B,iBAAA;qBAAM,IAAI,QAAM,KAAK,OAAO,EAAE;AAC3B,oBAAA,OAAO,GAAG,SAAS,CAAC,wCAAwC,CAAC,CAAC;AACjE,iBAAA;AAAM,qBAAA;oBACH,OAAO,GAAG,gCAAO,CAAC;oBAClB,IAAM,WAAW,GAAG,oBAAoB,CACpC,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,aAAa,CAAC,QAAQ,EACjD,IAAI,CAAC,KAAK,CAAC,yBAAyB,CACvC,CAAC;oBACF,IAAI,WAAW,KAAK,IAAI,EAAE;wBACtB,OAAO,IACH,KAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EACX,SAAS,EAAC,KAAK,EACf,YAAY,EAAE;AACV,gCAAA,KAAK,EAAE,GAAG;AACb,6BAAA,EACD,OAAO,EACH,KAAC,CAAA,aAAA,CAAA,WAAW,EACR,EAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,yBAAyB,EACrB,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAExC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACvC,CAAA,EAAA;AAGN,4BAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO,WAAW,CAAQ,CACb,CACpB,CAAC;AACL,qBAAA;AACJ,iBAAA;AAED,gBAAA,OAAO,OAAO,CAAC;AAClB,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,gCAAO,CAAC;AAClB,aAAA;SACJ;;IA3CgB,MAAM,GAAA,UAAA,CAAA;QAD1B,QAAQ;AACY,KAAA,EAAA,MAAM,CA4C1B,CAAA;IAAD,OAAC,MAAA,CAAA;AAAA,CA5CD,CAAoC,KAAK,CAAC,SAAS,CA4ClD;;SCrQe,kBAAkB,CAC9B,cAAwC,EACxC,SAAmB,EACnB,QAGS,EAAA;AAET,IAAA,IAAI,QAAQ,EAAE;QACV,QAAQ,CACJ,cAAc,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,KAAK,GAAA,CAAC,EAChC,SAAS,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAC7C,CAAC;AACL,KAAA;AACL,CAAC;AAEK,SAAU,kBAAkB,CAAC,OAA6B,EAAA;AAC5D,IAAA,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,UAAA,MAAM,EAAA,EAAI,OAAA,MAAM,CAAC,KAAK,CAAZ,EAAY,CAAC,CAAC;AACvD,CAAC;AAEe,SAAA,uBAAuB,CACnC,SAAmB,EACnB,MAA2B,EAAA;AAE3B,IAAA,OAAO,SAAS;SACX,MAAM,CACH,UAAA,KAAK,EAAA;AACD,QAAA,OAAA,CAAC,MAAM;AACP,YAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CACd,UAAA,WAAW,EAAA;gBACP,OAAA,KAAK,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,CAAA;AAAjD,aAAiD,CACxD,CAAA;AAJD,KAIC,CACR;AACA,SAAA,GAAG,CAAC,UAAA,KAAK,EAAA,EAAI,QAAC,EAAE,KAAK,EAAA,KAAA,EAAE,EAAV,EAAW,CAAC,CAAC;AACnC;;ACJA,IAAM,kBAAkB,GAInB,QAAQ,CAAC,UAAA,KAAK,EAAA;IACf,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE;AACH,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,YAAY,EAAE,MAAM;AACvB,SAAA,EACD,SAAS,EAAE,KAAK,CAAC,4BAA4B,EAAA;QAE5C,KAAK,CAAC,cAAc,CAAC,MAAM;;AAAG,QAAA,KAAK,CAAC,SAAS,CAAC,MAAM,CACnD,EACR;AACN,CAAC,CAAC,CAAC;AAGH,IAAA,gBAAA,kBAAA,UAAA,MAAA,EAAA;IAAsC,SAGrC,CAAA,gBAAA,EAAA,MAAA,CAAA,CAAA;AAUG,IAAA,SAAA,gBAAA,CAAY,KAA4B,EAAA;QAAxC,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;AAuDD,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,qBAAA,EAAA;;;;AAAgC,YAAA,KAAA,EAAA,UAAC,KAAU,EAAA;gBACvC,QACI,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAA;AAC3B,oBAAA,KAAA,CAAA,aAAA,CAAC,kBAAkB,EACf,EAAA,SAAS,EAAE,KAAI,CAAC,SAAS,EACzB,cAAc,EAAE,KAAI,CAAC,cAAc,EACnC,4BAA4B,EACxB,KAAI,CAAC,4BAA4B,EAEvC,CAAA;oBACF,KAAC,CAAA,aAAA,CAAA,UAAU,CAAC,mBAAmB,EAAA,QAAA,CAAA,EAAA,EAAK,KAAK,CAAI,CAAA,CAC3C,EACR;aACL;AAAC,SAAA,CAAA,CAAA;QArEE,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACjD;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SACrE;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,UAAA,MAAM,EAAA,EAAI,QAAC;gBAC7C,KAAK,EAAE,kCAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAQ;gBAClD,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,EAAC,EAAA,CAAC,CAAC;SACP;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAA4B,CAAA,SAAA,EAAA,8BAAA,EAAA;AAAvC,QAAA,GAAA,EAAA,YAAA;;AACI,YAAA,IAAM,iBAAiB,GACnB,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AACzD,YAAA,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA6B,CAAC;AAEzD,YAAA,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,GAAA,EAAA,GAAA,EAAA;AAC1B,gBAAA,EAAA,CAAC,OAAO,CAAC,WAAW,CAAA,GAAG,iBAAiB;AACxC,gBAAA,EAAA,CAAC,OAAO,CAAC,iBAAiB,CAAA,GAAG,CAAC,iBAAiB;oBACjD,CAAC;SACN;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,gBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAArB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,0BAA0B;AACxC,kBAAE;oBACI,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;AAChD,iBAAA;kBACD,SAAS,CAAC;SACnB;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,QACI,KAAC,CAAA,aAAA,CAAA,aAAa,EACV,EAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,qBAAqB,EAAE,IAAI,CAAC,UAAU,EACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,IAAI,CAAC,cAAc,EAC1B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACvC,CAAA,EACJ;SACL;;;;;;AAkBD,QAAA,KAAA,EAAA,UAAiB,MAAgC,EAAA;AAC7C,YAAA,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACnE;;AArFD,IAAA,MAAA,CAAA,cAAA,CAAA,gBAAA,EAAA,cAAA,EAAA;;;;AAA6D,QAAA,KAAA,EAAA;AACzD,YAAA,0BAA0B,EAAE,IAAI;AAChC,YAAA,4BAA4B,EAAE;AAC1B,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,WAAW,EAAE,aAAa;AAC1B,gBAAA,iBAAiB,EAAE,eAAe;AACrC,aAAA;AACJ,SAAA;AAAC,KAAA,CAAA,CAAA;AAQF,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAMR,KAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAUR,KAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAOR,KAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAgCD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAGZ,KAAA,EAAA,gBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;IAzFQ,gBAAgB,GAAA,UAAA,CAAA;QAD5B,QAAQ;AACI,KAAA,EAAA,gBAAgB,CA0F5B,CAAA;IAAD,OAAC,gBAAA,CAAA;AAAA,CA1FD,CAAsC,KAAK,CAAC,SAAS,CA0FpD;;AC3HM,IAAM,mBAAmB,GAAG;AAC/B,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,eAAe,EAAE,MAAM;AACvB,IAAA,WAAW,EAAE,OAAO;AACpB,IAAA,WAAW,EAAE,MAAM;CACtB,CAAC;AAEF,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAgC,SAAoC,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AAApE,IAAA,SAAA,UAAA,GAAA;;KAyEC;AAnEG,IAAA,MAAA,CAAA,cAAA,CAAc,UAAK,CAAA,SAAA,EAAA,OAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;YACI,QACI,8BACI,KAAK,EACD,IAAI,CAAC,KAAK,CAAC,UAAU;AACjB,sBAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB;AAC1B,0BAAE,EAAE;AACJ,0BAAE,EAAE,WAAW,EAAE,CAAC,EAAE;AACxB,sBAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAA;AAG3B,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAA,WAAA,EACzB,QAAS,GAAA,IAAI,CAAC,KAAK,CAAC,KAAO,EACtC,KAAK,EAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACE,mBAAmB,CAAA,EACnB,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAA,GAC5B,IAAI,CAAC,KAAK,CAAC,iBAAiB;0BAC1B,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;AACnC,0BAAE,EAAE,EAAC,EAAA,EAGZ,IAAI,CAAC,KAAK,CAAC,YAAY,CACrB,CACJ,EACT;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,UAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,EACJ,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CACb,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;AACK,oBAAA,IAAI,CAAC,KAAK;AACV,oBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAClB,EACL;AACL,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,UAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC9B,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,KAAK,EAChB,IAAI,CAAC,KAAK,CACb,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;oBACK,IAAI,CAAC,KAAK,CAAC,KAAK;AAChB,oBAAA,IAAI,CAAC,KAAK,CACZ,EACL;AACL,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;SACnE;;AAvED,IAAA,MAAA,CAAA,cAAA,CAAA,UAAA,EAAA,cAAA,EAAA;;;;AAAuD,QAAA,KAAA,EAAA;AACnD,YAAA,cAAc,EAAE,OAAO;AACvB,YAAA,UAAU,EAAE,KAAK;AACpB,SAAA;AAAC,KAAA,CAAA,CAAA;IAqEN,OAAC,UAAA,CAAA;AAAA,CAzED,CAAgC,KAAK,CAAC,SAAS,CAyE9C;;ACPM,IAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,IAAM,6BAA6B,GAAG,CAAC,CAAC;SAE/B,qBAAqB,CACjC,MAA2B,EAC3B,cAA8C,EAC9C,mBAAmC,EAAA;IAEnC,IAAI,QAAQ,yBACL,mBAAmB,CAAA,EACnB,MAAM,CAAC,kBAAkB,CAC/B,CAAC;AAEF,IAAA,IAAM,YAAY,GACX,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,mBAAmB,CACnB,EAAA,QAAQ,CACd,CAAC;AAEF,IAAA,IAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,cAAc,CAAC;IAElD,IAAI,CAAC,UAAU,EAAE;;QAEb,QAAQ,GAAG,MAAM,CAAC,0BAA0B;AACxC,cACS,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,mBAAmB,CACnB,EAAA,MAAM,CAAC,0BAA0B,CAE1C,GACS,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,YAAY,CACf,EAAA,EAAA,KAAK,EAAE,YAAY,CAAC,eAAe,EACnC,eAAe,EAAE,YAAY,CAAC,KAAK,EACnC,WAAW,EAAE,YAAY,CAAC,eAAe,GAC5C,CAAC;AACX,KAAA;AAED,IAAA,OAAO,QAAQ,CAAC;AACpB,CAAC;AAEK,SAAU,4BAA4B,CACxC,cAAsB,EACtB,YAAoB,EACpB,cAAiD,EACjD,mBAA2D,EAC3D,cAA+B,EAAA;AAF/B,IAAA,IAAA,cAAA,KAAA,KAAA,CAAA,EAAA,EAAA,cAAiD,GAAA,wBAAA,CAAA,EAAA;AACjD,IAAA,IAAA,mBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,mBAA2D,GAAA,6BAAA,CAAA,EAAA;AAC3D,IAAA,IAAA,cAAA,KAAA,KAAA,CAAA,EAAA,EAAA,cAA+B,GAAA,KAAA,CAAA,EAAA;;IAG/B,IAAM,UAAU,GACZ,cAAc,GAAG,cAAc,GAAG,mBAAmB,GAAG,CAAC,CAAC;AAE9D,IAAA,IAAI,cAAc,EAAE;;QAEhB,OAAO;AACH,YAAA,KAAK,EAAE,UAAU;SACpB,CAAC;AACL,KAAA;AAAM,SAAA;;QAEH,IAAM,KAAK,GAAG,YAAY,GAAG,cAAc,GAAG,mBAAmB,GAAG,CAAC,CAAC;QACtE,IAAM,MAAM,GAAG,CAAC,UAAU,GAAG,KAAK,IAAI,CAAC,CAAC;QACxC,OAAO;AACH,YAAA,KAAK,EAAA,KAAA;AACL,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,WAAW,EAAE,MAAM;SACtB,CAAC;AACL,KAAA;AACL,CAAC;AAEK,SAAU,uBAAuB,CACnC,OAA8B,EAAA;;AAG9B,IAAA,OAAO,OAAO;SACT,GAAG,CAAC,UAAC,MAA2B,EAAK,EAAA,OAAA,MAAM,CAAC,YAAY,CAAnB,EAAmB,CAAC;SACzD,MAAM,CAAC,UAAA,OAAO,EAAI,EAAA,OAAA,OAAO,KAAK,SAAS,CAArB,EAAqB,CAAC;AACxC,SAAA,GAAG,CAAC,UAAA,OAAO,EAAA,EAAI,OAAA,OAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,CAA1B,EAA0B,CAAC,CAAC;AACpD,CAAC;AAEe,SAAA,6BAA6B,CACzC,OAA8B,EAC9B,qBAAiC,EACjC,iBAAkC,EAClC,cAAiD,EACjD,mBAA2D,EAC3D,2BAA4C,EAAA;AAJ5C,IAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,qBAAiC,GAAA,CAAA,CAAA,EAAA;AACjC,IAAA,IAAA,iBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,iBAAkC,GAAA,KAAA,CAAA,EAAA;AAClC,IAAA,IAAA,cAAA,KAAA,KAAA,CAAA,EAAA,EAAA,cAAiD,GAAA,wBAAA,CAAA,EAAA;AACjD,IAAA,IAAA,mBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,mBAA2D,GAAA,6BAAA,CAAA,EAAA;AAC3D,IAAA,IAAA,2BAAA,KAAA,KAAA,CAAA,EAAA,EAAA,2BAA4C,GAAA,KAAA,CAAA,EAAA;;;AAI5C,IAAA,IAAI,iBAAiB,EAAE;AACnB,QAAA,IAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;AACtC,QAAA,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EAAQ,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,QAAA,IAAM,YAAU,GAAG,4BAA4B,CAC3C,SAAS,EACT,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,IAAI,CACP,CAAC;AAEF,QAAA,OAAOlB,UAAC,CAAC,KAAK,CAAC,cAAc,EAAE,YAAM,EAAA,OAAA,YAAU,CAAA,EAAA,CAAC,CAAC;AACpD,KAAA;SAAM,IAAI,qBAAqB,GAAG,CAAC,EAAE;QAClC,IAAM,cAAY,GAAGA,UAAC,CAAC,OAAO,CAC1B,OAAO,EACP,UAAA,MAAM,EAAA,EAAI,OAAA,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAAA,EAAA,CAC5D,CAAC;AAEF,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,UAAC,MAA2B,EAAE,KAAa,EAAA;;AAE1D,YAAA,IAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EACpB,uBAAuB,CACtB,cAAY,CAAC,KAAK,GAAG,qBAAqB,CAAC,CAC9C,CACJ,CAAC;AACF,YAAA,IAAM,MAAM,GACR,MAAM,CAAC,YAAY,KAAK,SAAS;AAC7B,kBAAE,CAAC;kBACD,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC;;AAGhD,YAAA,OAAO,4BAA4B,CAC/B,cAAc,EACd,MAAM,EACN,cAAc,EACd,mBAAmB,EACnB,2BAA2B,CAC9B,CAAC;AACN,SAAC,CAAC,CAAC;AACN,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,EAAE,CAAC;AACb,KAAA;AACL,CAAC;AAGD,IAAA,aAAA,kBAAA,UAAA,MAAA,EAAA;IAAmC,SAAuC,CAAA,aAAA,EAAA,MAAA,CAAA,CAAA;AACtE,IAAA,SAAA,aAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAED,IAAA,MAAA,CAAA,cAAA,CAAW,aAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SACjD;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,aAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,QACI,IAAI,CAAC,KAAK,CAAC,cAAc;AACzB,gBAAA,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAC5D;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,aAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;AAA5B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACpD;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,UACI,MAA2B,EAC3B,cAA8C,EAC9C,cAAuB,EACvB,mBAAmC,EACnC,iBAA2B,EAC3B,gBAKgB,EAChB,UAAoB,EAAA;YAEpB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,IAC3B,IAAI,CAAC,KAAK,CAAC,aAAa,CACpB,MAAM,EACN,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,CACb,KAED,KAAA,CAAA,aAAA,CAAC,UAAU,EACP,EAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EACnC,YAAY,EAAE,MAAM,CAAC,YAAY,EACjC,kBAAkB,EAAE,qBAAqB,CACrC,MAAM,EACN,cAAc,EACd,mBAAmB,CACtB,EACD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACnC,CAAA,CACL,CAAC;SACL;;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,aAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;AAA/B,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;AAChD,kBAAE,6BAA6B,CACzB,IAAI,CAAC,KAAK,CAAC,OAAO,EAClB,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAChC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC5B,IAAI,CAAC,KAAK,CAAC,cAAc,EACzB,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAC9B,IAAI,CAAC,KAAK,CAAC,2BAA2B,CACzC;kBACD,SAAS,CAAC;SACnB;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,aAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YADA,IAgBC,KAAA,GAAA,IAAA,CAAA;AAdG,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,UAAC,MAAM,EAAE,KAAK,EAAA,EAAK,QAAC;gBACtD,KAAK,EAAE,KAAI,CAAC,aAAa,CACrB,MAAM,EACN,KAAI,CAAC,iBAAiB,EACtB,KAAI,CAAC,KAAK,CAAC,cAAc,EACzB,KAAI,CAAC,oBAAoB,IAAI,KAAI,CAAC,KAAK,CAAC,qBAAqB;AACzD,sBAAE,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;sBAChC,SAAS,EACf,KAAI,CAAC,KAAK,CAAC,iBAAiB,EAC5B,KAAI,CAAC,KAAK,CAAC,gBAAgB,EAC3B,KAAI,CAAC,KAAK,CAAC,UAAU,CACxB;gBACD,KAAK,EAAE,MAAM,CAAC,KAAK;aACtB,EAAC,EAAA,CAAC,CAAC;SACP;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,QACI,oBAAC,iBAAiB,EAAA,EACd,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,aAAa,EAAE,IAAI,CAAC,cAAc,EAClC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,qBAAqB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,EACvD,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EACrD,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EACrD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACrC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAC3C,CAAA,EACJ;SACL;;;;;;AAGD,QAAA,KAAA,EAAA,UAAiB,MAAgC,EAAA;AAC7C,YAAA,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACnE;;;;;;AAGD,QAAA,KAAA,EAAA,UAAgC,MAAgC,EAAA;AAC5D,YAAA,kBAAkB,CACd,MAAM,EACN,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,CAAC,uBAAuB,CACrC,CAAC;SACL;;AAzHD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAMR,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AA4CD,IAAA,UAAA,CAAA;QADC,QAAQ;AAYR,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAgBR,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAsBD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAGZ,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAOZ,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;IA/HQ,aAAa,GAAA,UAAA,CAAA;QADzB,QAAQ;AACI,KAAA,EAAA,aAAa,CAgIzB,CAAA;IAAD,OAAC,aAAA,CAAA;AAAA,CAhID,CAAmC,KAAK,CAAC,SAAS,CAgIjD;;ACvUY,IAAA,kCAAkC,GAA6B;AACxE,IAAA,aAAa,EAAE,kBAAkB;AACjC,IAAA,gBAAgB,EAAE,4BAA4B;AAC9C,IAAA,YAAY,EAAE,iBAAiB;AAC/B,IAAA,eAAe,EAAE,2BAA2B;AAC5C,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,kBAAkB,EAAE,yBAAyB;AAC7C,IAAA,WAAW,EAAE,gBAAgB;AAC7B,IAAA,cAAc,EAAE,0BAA0B;AAC1C,IAAA,WAAW,EAAE,wBAAwB;AACrC,IAAA,cAAc,EAAE,kCAAkC;AAClD,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,aAAa,EAAE,yBAAyB;EAC1C;AAEW,IAAA,sBAAsB,GAE/B;AACA,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,QAAQ,EAAE,CAAC;AACX,IAAA,UAAU,EAAE,CAAC;AACb,IAAA,eAAe,EAAE,CAAC;AAClB,IAAA,eAAe,EAAE,CAAC;AAClB,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,YAAY,EAAE,CAAC;AACf,IAAA,WAAW,EAAE,CAAC;AACd,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,KAAK,EAAE,EAAE;EACX;AAEc,SAAA,gBAAgB,CAC5B,KAA4B,EAC5B,KAA4B,EAAA;AAE5B,IAAA,IAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,IAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,SAAS,GAAG,SAAS,EAAE;QACvB,OAAO,CAAC,CAAC,CAAC;AACb,KAAA;SAAM,IAAI,SAAS,GAAG,SAAS,EAAE;AAC9B,QAAA,OAAO,CAAC,CAAC;AACZ,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACrC,KAAA;AACL,CAAC;AAEK,SAAU,4BAA4B,CACxC,SAAuB,EACvB,MAAqE,EACrE,gBAA4D,EAC5D,gBAAoD,EAAA;AAFpD,IAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAqE,GAAA,kCAAA,CAAA,EAAA;AACrE,IAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAA,GAAA,YAAA,EAA2D,OAAA,CAAC,GAAA,CAAA,EAAA;AAG5D,IAAA,IAAM,kBAAkB,GAAG,SAAS,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;QACtC,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;;YAGrC,gBAAgB,EAAE,CAAC,EAAE,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;YAE9D,aAAa,EAAE,wBAAwB,EAClC,CAAC,CAAC,YAAY,IAAI,EAAE,EACxB;SACJ,CAAC;AACN,KAAC,CAAC,CAAC;;IAEH,IAAM,MAAM,GAAQ,EAAE,CAAC;AACvB,IAAA,KAAmB,UAAkB,EAAlB,oBAAA,GAAA,kBAAkB,EAAlB,EAAkB,GAAA,oBAAA,CAAA,MAAA,EAAlB,IAAkB,EAAE;AAAlC,QAAA,IAAM,IAAI,GAAA,oBAAA,CAAA,EAAA,CAAA,CAAA;QACX,IAAM,GAAG,GAAM,IAAI,CAAC,aAAa,GAAI,GAAA,GAAA,IAAI,CAAC,gBAAkB,CAAC;QAC7D,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI;AACzB,YAAA,KAAK,EAAE,CAAC;YACR,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,aAAa,EAAE,IAAI,CAAC,aAAa;SACpC,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;AACnC,KAAA;AAED,IAAA,IAAM,eAAe,GAAGA,UAAC,CAAC,MAAM,CAACA,UAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;AAC/C,QAAA,UAAA,IAAI,EAAI,EAAA,QAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,GAAG,CAAC,IAAC;AACvC,QAAA;AAAA,QAAA,IAAI,IAAI,OAAA,CAAC,IAAI,CAAC,KAAK,GAAA;AACnB,QAAA;QAAA,IAAI,EAAA,EAAI,OAAA,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA,EAAA;AACrD,KAAA,CAAC,CAAC;AAEH,IAAA,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,QAAA,IAAM,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAE1C,IAAM,iBAAiB,GAAsB,iCAAiC,CAC1E,cAAc,CAAC,aAAa,CAC/B,CAAC;AAEF,QAAA,QAAQ,iBAAiB;YACrB,KAAK,iBAAiB,CAAC,QAAQ;gBAC3B,OAAO,cAAc,CAAC,gBAAgB;sBAChC,MAAM,CAAC,aAAa;AACtB,sBAAE,MAAM,CAAC,gBAAgB,CAAC;YAClC,KAAK,iBAAiB,CAAC,UAAU;gBAC7B,OAAO,cAAc,CAAC,gBAAgB;sBAChC,MAAM,CAAC,eAAe;AACxB,sBAAE,MAAM,CAAC,kBAAkB,CAAC;YACpC,KAAK,iBAAiB,CAAC,OAAO;gBAC1B,OAAO,cAAc,CAAC,gBAAgB;sBAChC,MAAM,CAAC,YAAY;AACrB,sBAAE,MAAM,CAAC,eAAe,CAAC;YACjC,KAAK,iBAAiB,CAAC,MAAM;gBACzB,OAAO,cAAc,CAAC,gBAAgB;sBAChC,MAAM,CAAC,WAAW;AACpB,sBAAE,MAAM,CAAC,cAAc,CAAC;YAChC,KAAK,iBAAiB,CAAC,MAAM;gBACzB,OAAO,cAAc,CAAC,gBAAgB;sBAChC,MAAM,CAAC,WAAW;AACpB,sBAAE,MAAM,CAAC,cAAc,CAAC;YAChC,KAAK,iBAAiB,CAAC,KAAK;gBACxB,OAAO,cAAc,CAAC,gBAAgB;sBAChC,MAAM,CAAC,UAAU;AACnB,sBAAE,MAAM,CAAC,aAAa,CAAC;AAC/B,YAAA;gBACI,OAAO,MAAM,CAAC,UAAU,CAAC;AAChC,SAAA;AACJ,KAAA;AAAM,SAAA;QACH,OAAO,SAAS,CAAC;AACpB,KAAA;AACL;;AC/IM,SAAU,yCAAyC,CAAC,yBAEzD,EAAA;;AACG,IAAA,OAAA,EAAA,GAAA,EAAA;AACI,QAAA,EAAA,CAAC,iBAAiB,CAAC,QAAQ,KACvB,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,KAAK,EAAE;AACH,gBAAA,KAAK,EACD,yBAAyB,CAAC,iBAAiB,CAAC,QAAQ,CAAC;AAC5D,aAAA,EAAA,EAAA,UAAA,CAGI,CACZ;AACD,QAAA,EAAA,CAAC,iBAAiB,CAAC,UAAU,KACzB,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,KAAK,EAAE;AACH,gBAAA,KAAK,EACD,yBAAyB,CAAC,iBAAiB,CAAC,UAAU,CAAC;AAC9D,aAAA,EAAA,EAAA,YAAA,CAGI,CACZ;AACD,QAAA,EAAA,CAAC,iBAAiB,CAAC,OAAO,KACtB,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,KAAK,EAAE;AACH,gBAAA,KAAK,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,OAAO,CAAC;AAC9D,aAAA,EAAA,EAAA,SAAA,CAGI,CACZ;AACD,QAAA,EAAA,CAAC,iBAAiB,CAAC,MAAM,KACrB,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,KAAK,EAAE;AACH,gBAAA,KAAK,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC7D,aAAA,EAAA,EAAA,QAAA,CAGI,CACZ;AACD,QAAA,EAAA,CAAC,iBAAiB,CAAC,MAAM,KACrB,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,KAAK,EAAE;AACH,gBAAA,KAAK,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAC7D,aAAA,EAAA,EAAA,WAAA,CAGI,CACZ;AACD,QAAA,EAAA,CAAC,iBAAiB,CAAC,KAAK,KACpB,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,KAAK,EAAE;AACH,gBAAA,KAAK,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,KAAK,CAAC;AAC5D,aAAA,EAAA,EAAA,OAAA,CAGI,CACZ;AACH,QAAA,EAAA,CAAA;AACN,CAAC;AAEK,SAAU,4BAA4B,CACxC,MAAgC,EAAA;;AAEhC,IAAA,OAAA,EAAA,GAAA,EAAA;AACI,QAAA,EAAA,CAAC,iBAAiB,CAAC,QAAQ,CAAG,GAAA,MAAM,CAAC,aAAa;AAClD,QAAA,EAAA,CAAC,iBAAiB,CAAC,UAAU,CAAG,GAAA,MAAM,CAAC,eAAe;AACtD,QAAA,EAAA,CAAC,iBAAiB,CAAC,OAAO,CAAG,GAAA,MAAM,CAAC,YAAY;AAChD,QAAA,EAAA,CAAC,iBAAiB,CAAC,MAAM,CAAG,GAAA,MAAM,CAAC,WAAW;AAC9C,QAAA,EAAA,CAAC,iBAAiB,CAAC,MAAM,CAAG,GAAA,MAAM,CAAC,WAAW;AAC9C,QAAA,EAAA,CAAC,iBAAiB,CAAC,KAAK,CAAG,GAAA,MAAM,CAAC,UAAU;AAC9C,QAAA,EAAA,CAAA;AACN;;AC7DA,IAAA,iCAAA,kBAAA,UAAA,MAAA,EAAA;IAAuD,SAGtD,CAAA,iCAAA,EAAA,MAAA,CAAA,CAAA;AACG,IAAA,SAAA,iCAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAQD,IAAA,MAAA,CAAA,cAAA,CAAc,iCAAqB,CAAA,SAAA,EAAA,uBAAA,EAAA;AAAnC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,yCAAyC,CAC5C,IAAI,CAAC,uBAAuB,CAC/B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAc,iCAAuB,CAAA,SAAA,EAAA,yBAAA,EAAA;AAArC,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC1D;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAc,iCAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAArB,QAAA,GAAA,EAAA,YAAA;YADA,IAMC,KAAA,GAAA,IAAA,CAAA;AAJG,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,UAAA,KAAK,EAAA,EAAI,QAAC;AAClD,gBAAA,KAAK,EAAA,KAAA;AACL,gBAAA,KAAK,EAAE,KAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;aAC3C,EAAC,EAAA,CAAC,CAAC;SACP;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,QACI,KAAC,CAAA,aAAA,CAAA,gBAAgB,EACb,QAAA,CAAA,EAAA,IAAI,EAAC,yBAAyB,EAC9B,WAAW,EAAC,gBAAgB,EAC5B,YAAY,EAAE,IAAI,EAClB,OAAO,EAAE,IAAI,CAAC,OAAO,EACjB,EAAA,IAAI,CAAC,KAAK,CAChB,CAAA,EACJ;SACL;;AApCD,IAAA,MAAA,CAAA,cAAA,CAAA,iCAAA,EAAA,cAAA,EAAA;;;;AAEI,QAAA,KAAA,EAAA;AACA,YAAA,MAAM,EAAE,kCAAkC;AAC7C,SAAA;AAAC,KAAA,CAAA,CAAA;AAGF,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,iCAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,iCAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAMR,KAAA,EAAA,iCAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;IAhCQ,iCAAiC,GAAA,UAAA,CAAA;QAD7C,QAAQ;AACI,KAAA,EAAA,iCAAiC,CA6C7C,CAAA;IAAD,OAAC,iCAAA,CAAA;AAAA,CA7CD,CAAuD,KAAK,CAAC,SAAS,CA6CrE;;ACpCD,IAAM,MAAM,GAAG;AACX,IAAA,iBAAiB,CAAC,QAAQ;AAC1B,IAAA,iBAAiB,CAAC,UAAU;AAC5B,IAAA,iBAAiB,CAAC,OAAO;AACzB,IAAA,iBAAiB,CAAC,MAAM;AACxB,IAAA,iBAAiB,CAAC,MAAM;AACxB,IAAA,iBAAiB,CAAC,KAAK;CAC1B,CAAC;AAEI,SAAU,+BAA+B,CAAC,MAAc,EAAA;IAC1D,OAAO,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAQ,CAAC;AACvD,CAAC;AAEe,SAAA,8BAA8B,CAC1C,MAA2B,EAC3B,cAA8C,EAC9C,cAAuB,EACvB,mBAAmC,EACnC,iBAA2B,EAC3B,gBAKgB,EAChB,UAAoB,EAAA;IAEpB,QACI,KAAC,CAAA,aAAA,CAAA,UAAU,EACP,EAAA,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EACnC,YAAY,EAAE,MAAM,CAAC,YAAY,EACjC,kBAAkB,EAAE,qBAAqB,CACrC,MAAM,EACN,cAAc,EACd,mBAAmB,CACtB,EACD,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,iBAAiB,EAAE,iBAAiB,EACpC,gBAAgB,EAAE,gBAAgB,EACpC,CAAA,EACJ;AACN,CAAC;AAGD,IAAA,8BAAA,kBAAA,UAAA,MAAA,EAAA;IAEU,SAAsB,CAAA,8BAAA,EAAA,MAAA,CAAA,CAAA;AAC5B,IAAA,SAAA,8BAAA,CAAY,KAAU,EAAA;AAClB,QAAA,OAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAAA,IAAA,CAAA;KACf;AAQD,IAAA,MAAA,CAAA,cAAA,CAAc,8BAAqB,CAAA,SAAA,EAAA,uBAAA,EAAA;AAAnC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,yCAAyC,CAC5C,IAAI,CAAC,uBAAuB,CAC/B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,8BAAuB,CAAA,SAAA,EAAA,yBAAA,EAAA;AAArC,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC1D;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,8BAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAArB,QAAA,GAAA,EAAA,YAAA;YAAA,IAmBC,KAAA,GAAA,IAAA,CAAA;;YAjBG,OAAO,MAAM,CAAC,GAAG,CAAC,UAAA,KAAK,EAAA,EAAI,QAAC;AACxB,gBAAA,KAAK,EAAA,KAAA;AACL,gBAAA,KAAK,EAAE,KAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC;AACxC,gBAAA,YAAY,EAAE,KAAI,CAAC,KAAK,CAAC,MAAM;sBACzB,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1B,sBAAE,SAAS;AACf,gBAAA,kBAAkB,EAAE;AAChB,oBAAA,eAAe,EAAE,KAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACvD,iBAAA;AACJ,aAAA,IAAC,CAAC,CAAC,MAAM,CACN,UAAA,IAAI,EAAA;;AACA,gBAAA,OAAA,EACI,CAAA,CAAA,EAAA,GAAA,KAAI,CAAC,KAAK,CAAC,oBAAoB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAA;AACpD,qBAAC,IAAI,CAAC,KAAK,KAAK,iBAAiB,CAAC,KAAK;AACnC,wBAAA,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAC/B,CAAA;AAAA,aAAA,CACR,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,QACI,6BAAK,KAAK,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,EAAA;AAClC,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;oBACI,KAAO,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAA;AACvC,wBAAA,KAAA,CAAA,aAAA,CAAC,aAAa,EAAA,QAAA,CAAA,EACV,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,cAAc,EAAE,+BAA+B,EAC/C,aAAa,EAAE,8BAA8B,EAC7C,cAAc,EAAE,IAAI,EACpB,UAAU,EAAE,IAAI,EAAA,EACZ,IAAI,CAAC,KAAK,CAAA,CAChB,CACE,CACN;gBACL,IAAI,CAAC,KAAK,CAAC,oBAAoB,KAC5B,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,KAAK,EAAE;AACH,wBAAA,QAAQ,EAAE,EAAE;AACZ,wBAAA,UAAU,EAAE,MAAM;AAClB,wBAAA,SAAS,EAAE,QAAQ;AACnB,wBAAA,WAAW,EAAE,aAAa;AAC1B,wBAAA,SAAS,EAAE,gBAAgB;qBAC9B,EAEA,EAAA,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAC9B,CACT,CACC,EACR;SACL;;AAnED,IAAA,MAAA,CAAA,cAAA,CAAA,8BAAA,EAAA,cAAA,EAAA;;;;AAA2E,QAAA,KAAA,EAAA;AACvE,YAAA,MAAM,EAAE,kCAAkC;AAC1C,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,qBAAqB,EAAE,CAAC;AAC3B,SAAA;AAAC,KAAA,CAAA,CAAA;IAXO,8BAA8B,GAAA,UAAA,CAAA;QAD1C,QAAQ;AACI,KAAA,EAAA,8BAA8B,CA2E1C,CAAA;IAAD,OAAC,8BAAA,CAAA;AAAA,CA3ED,CAEU,KAAK,CAAC,SAAS,CAyExB;;ACrIY,IAAA,oCAAoC,GAAG;AAChD,IAAA,KAAK,EAAE,MAAM;AACb,IAAA,eAAe,EAAE,MAAM;AACvB,IAAA,WAAW,EAAE,MAAM;EACrB;SAEc,8BAA8B,GAAA;IAC1C,OAAO;AACH,QAAA;AACI,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,4BAA4B;AACnC,YAAA,kBAAkB,EAAE,oCAAoC;AACxD,YAAA,0BAA0B,EAAE,oCAAoC;AACnE,SAAA;AACD,QAAA;AACI,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,6BAA6B;AACpC,YAAA,kBAAkB,EAAE,oCAAoC;AACxD,YAAA,0BAA0B,EAAE,oCAAoC;AACnE,SAAA;KACJ,CAAC;AACN,CAAC;AAGD,IAAA,2BAAA,kBAAA,UAAA,MAAA,EAAA;IAAiD,SAGhD,CAAA,2BAAA,EAAA,MAAA,CAAA,CAAA;AACG,IAAA,SAAA,2BAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAMD,IAAA,MAAA,CAAA,cAAA,CAAW,2BAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YADA,IAQC,KAAA,GAAA,IAAA,CAAA;YANG,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAqB,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,QAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAC/C,MAAM,CACT,EAAA,EAAA,YAAY,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK;AAC1B,sBAAK,kBAAkB,CAAC,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,GAAA;AAC1D,sBAAE,SAAS,EAAA,CAAA,EAJmC,EAKpD,CAAC,CAAC;SACP;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,IAAA;AACI,gBAAA,KAAA,CAAA,aAAA,CAAC,aAAa,EAAA,QAAA,CAAA,EAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAM,EAAA,IAAI,CAAC,KAAK,CAAI,CAAA,CACpD,EACV;SACL;;AApBD,IAAA,MAAA,CAAA,cAAA,CAAA,2BAAA,EAAA,cAAA,EAAA;;;;AAAwE,QAAA,KAAA,EAAA;YACpE,oBAAoB,EAAE,8BAA8B,EAAE;AACzD,SAAA;AAAC,KAAA,CAAA,CAAA;AAGF,IAAA,UAAA,CAAA;QADC,QAAQ;AAQR,KAAA,EAAA,2BAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;IApBQ,2BAA2B,GAAA,UAAA,CAAA;QADvC,QAAQ;AACI,KAAA,EAAA,2BAA2B,CA6BvC,CAAA;IAAD,OAAC,2BAAA,CAAA;AAAA,CA7BD,CAAiD,KAAK,CAAC,SAAS,CA6B/D;;AC9CD,IAAA,cAAA,kBAAA,UAAA,MAAA,EAAA;IAAoC,SAAwC,CAAA,cAAA,EAAA,MAAA,CAAA,CAAA;AAOxE,IAAA,SAAA,cAAA,CAAY,KAA0B,EAAA;QAAtC,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAA6B,KAAI,CAAC,CAAC;;KACpD;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,cAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE;iBACpC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,OAAO,CAAT,EAAS,CAAC;AACtB,iBAAA,GAAG,CAAC,UAAA,CAAC,EAAI,EAAA,QAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,EAAhB,EAAiB,CAAC,CAAC;SACpC;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,cAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,EAAE,EAAE,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,QAAC;AACjD,gBAAA,KAAK,EAAE,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO,CAAC,CAAC,IAAI,CAAQ;gBAC5B,KAAK,EAAE,CAAC,CAAC,EAAE;aACd,EAAC,EAAA,CAAC,CAAC;SACP;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,QACI,oBAAC,aAAa,EAAA,EACV,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,IAAI,CAAC,cAAc,EAC1B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EACvC,CAAA,EACJ;SACL;;;;;;AAGD,QAAA,KAAA,EAAA,UAAiB,MAA2B,EAAA;AACxC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;gBAC5B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,KAAK,GAAA,CAAC,CAAC,CAAC;AACxD,aAAA;SACJ;;AA5CD,IAAA,MAAA,CAAA,cAAA,CAAA,cAAA,EAAA,cAAA,EAAA;;;;AAA2D,QAAA,KAAA,EAAA;AACvD,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,YAAY,EAAE,KAAK;AACtB,SAAA;AAAC,KAAA,CAAA,CAAA;AAQF,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAMR,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAgBD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAKZ,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;IA7CQ,cAAc,GAAA,UAAA,CAAA;QAD1B,QAAQ;AACI,KAAA,EAAA,cAAc,CA8C1B,CAAA;IAAD,OAAC,cAAA,CAAA;AAAA,CA9CD,CAAoC,KAAK,CAAC,SAAS,CA8ClD;;;;ACpDD,IAAA,gBAAA,kBAAA,UAAA,MAAA,EAAA;IAAsC,SAGrC,CAAA,gBAAA,EAAA,MAAA,CAAA,CAAA;AAHD,IAAA,SAAA,gBAAA,GAAA;;KAmCC;;;;;AArBG,QAAA,KAAA,EAAA,YAAA;YACI,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAA,WAAA,EACrB,oBAAoB,EAAA;AAE9B,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAA;AACpC,oBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAS,IAAI,CAAC,KAAK,CAAC,UAAU,CAAU;AACxC,oBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACjC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,EAC3C,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,IAE/B,IAAI,CAAC,KAAK,CAAC,UAAU,CACjB;oBACT,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AACL,oBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,CACvB,CACL,EACR;SACL;;AA9BD,IAAA,MAAA,CAAA,cAAA,CAAA,gBAAA,EAAA,cAAA,EAAA;;;;AAA6D,QAAA,KAAA,EAAA;AACzD,YAAA,UAAU,EAAE,eAAe;YAC3B,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,CAAC;YACzD,SAAS,EAAE,UAAU,CACjB,OAAO,EACP,eAAe,EACfkB,QAAM,CAAC,gBAAgB,CAC1B;AACJ,SAAA;AAAC,KAAA,CAAA,CAAA;IAZO,gBAAgB,GAAA,UAAA,CAAA;QAD5B,QAAQ;AACI,KAAA,EAAA,gBAAgB,CAmC5B,CAAA;IAAD,OAAC,gBAAA,CAAA;AAAA,CAnCD,CAAsC,KAAK,CAAC,SAAS,CAmCpD;;ICnDW,eASX;AATD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,YAA0B,CAAA;AAC1B,IAAA,cAAA,CAAA,qBAAA,CAAA,GAAA,mBAAyC,CAAA;AACzC,IAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,gBAAkC,CAAA;AAClC,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,eAAgC,CAAA;AACpC,CAAC,EATW,cAAc,KAAd,cAAc,GASzB,EAAA,CAAA,CAAA;;ACSM,IAAM,oBAAoB,GAAG,iCAAiC;AAE/D,SAAU,8BAA8B,CAC1C,SAAoB,EACpB,QAAgB,EAChB,aAA8B,EAC9B,cAAiC,EAAA;AADjC,IAAA,IAAA,aAAA,KAAA,KAAA,CAAA,EAAA,EAAA,aAA8B,GAAA,KAAA,CAAA,EAAA;AAC9B,IAAA,IAAA,cAAA,KAAA,KAAA,CAAA,EAAA,EAAA,cAAiC,GAAA,EAAA,CAAA,EAAA;IAEjC,IAAM,iBAAiB,GAAG,SAAS,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACjE,IAAI,iBAAiB,GAAa,EAAE,CAAC;AAErC,IAAA,IAAI,aAAa,EAAE;;;AAGf,QAAA,iBAAiB,GAAG,sBAAsB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;;AAGvE,QAAA,IAAI,iBAAiB,EAAE;YACnB,iBAAiB,GAAGlB,UAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;AAC9D,SAAA;AACJ,KAAA;;IAGD,IAAI,CAAC,iBAAiB,EAAE;AACpB,QAAA,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpC,KAAA;AAED,IAAA,IAAM,cAAc,GAAG;QACnB,IAAI,EAAE,cAAc,CAAC,QAAQ;AAC7B,QAAA,MAAM,EAAE,iBAAiB;KAC5B,CAAC;;IAEF,IAAM,YAAY,GAAG,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAClD,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,CAAA,EAAA,CAC1C,CAAC;;IAGF,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAClC,IAAA,SAAS,CAAC,mBAAmB,CAAA,cAAA,CAAA;QACzB,cAAc;OACX,cAAc,EACd,YAAY,CAAA,CACjB,CAAC;AACP,CAAC;SAEe,8BAA8B,CAC1C,SAAoB,EACpB,SAAmB,EACnB,cAAiC,EAAA;AAAjC,IAAA,IAAA,cAAA,KAAA,KAAA,CAAA,EAAA,EAAA,cAAiC,GAAA,EAAA,CAAA,EAAA;IAEjC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAElC,IAAA,IAAM,cAAc,GAAG;QACnB,IAAI,EAAE,cAAc,CAAC,QAAQ;AAC7B,QAAA,MAAM,EAAE,SAAS;KACpB,CAAC;AACF,IAAA,SAAS,CAAC,mBAAmB,CAAA,cAAA,CAAK,cAAc,EAAE,CAAA,cAAc,GAAE,CAAC;AACvE,CAAC;AAEK,SAAU,mCAAmC,CAC/C,SAAoB,EACpB,aAAqB,EACrB,WAAmB,EACnB,cAAiC,EAAA;AAAjC,IAAA,IAAA,cAAA,KAAA,KAAA,CAAA,EAAA,EAAA,cAAiC,GAAA,EAAA,CAAA,EAAA;IAEjC,IAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,IAAI,CAAC,GAAG,aAAa,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,EAAE,EAAE;AAC/C,QAAA,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACrB,KAAA;AAED,IAAA,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;AACzE,CAAC;AAEK,SAAU,sBAAsB,CAAC,OAAqB,EAAA;IACxD,OAAOA,UAAC,CAAC,IAAI,CACTA,UAAC,CAAC,OAAO,CACL,OAAO;;AAEF,SAAA,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ,CAAA,EAAA,CAAC;;;AAG/C,SAAA,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,OAAI,cAAA,CAAA,CAAC,CAAC,MAAM,CAAZ,CAAA,EAAa,CAAC,CAC/B,CACJ,CAAC;AACN,CAAC;AAEK,SAAU,cAAc,CAC1B,OAAqB,EAAA;AAErB,IAAA,OAAOA,UAAC,CAAC,KAAK,CACV,sBAAsB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,QAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAhB,EAAiB,CAAC,EAC3D,UAAU,CACb,CAAC;AACN,CAAC;AAEe,SAAA,4BAA4B,CACxC,KAAc,EACd,UAAmB,EAAA;AAEnB,IAAA,QACI,UAAU;AACV,QAAA,CAAC,KAAK,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EAChE;AACN,CAAC;AAEK,SAAU,mBAAmB,CAAC,WAAyB,EAAA;AACzD,IAAA,OAAO,WAAW,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAA7B,EAA6B,CAAC,CAAC;AAChE,CAAC;AAEK,SAAU,uBAAuB,CAAC,WAAyB,EAAA;AAC7D,IAAA,OAAO,WAAW,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAA7B,EAA6B,CAAC,CAAC;AAClE,CAAC;AAEK,SAAU,0BAA0B,CAAC,MAAsB,EAAA;AAC7D,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,GAAGA,UAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AAChF,CAAC;AAEe,SAAA,0BAA0B,CACtC,MAAsB,EACtB,QAAkB,EAAA;;;IAKlB,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;AAC5D,CAAC;AAEe,SAAA,mCAAmC,CAC/C,MAA+B,EAC/B,QAAkB,EAAA;AAElB,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CACzB,oBAAoB,CAAC,QAAQ,CAAC,YAAY,IAAI,OAAO,CAAC,CACzD,CAAC;AACN,CAAC;AAEe,SAAA,+BAA+B,CAC3C,MAA2B,EAC3B,QAAkB,EAAA;AAElB,IAAA,QACI,QAAQ,CAAC,aAAa,KAAK,SAAS;QACpCA,UAAC,CAAC,IAAI,CACF,MAAM,CAAC,MAAM,EACb,UAAA,KAAK,EAAA;YACD,OAAA,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,aAAa,CAAC,WAAW,EAAE,CAAA;SAAA,CACnE,EACH;AACN,CAAC;AAEe,SAAA,gCAAgC,CAC5C,MAA4B,EAC5B,QAAkB,EAAA;AAElB,IAAA,QACI,QAAQ,CAAC,cAAc,KAAK,SAAS;QACrCA,UAAC,CAAC,IAAI,CACF,MAAM,CAAC,MAAM,EACb,UAAA,KAAK,EAAA;YACD,OAAA,KAAK,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,cAAe,CAAC,WAAW,EAAE,CAAA;SAAA,CACrE,EACH;AACN,CAAC;AAEe,SAAA,0BAA0B,CACtC,MAAsB,EACtB,QAAkB,EAAA;IAElB,IAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,KAA0B,EAAA;AAClE,QAAA,IAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG,EAAA;AAC9C,YAAA,OAAA,4BAA4B,CACvB,QAAgB,CAAC,GAAG,CAAC;AAClB,kBAAG,QAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;kBACjC,SAAS,EACd,KAAa,CAAC,GAAG,CAAC,GAAI,KAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAS,CACnE,CAAA;AALD,SAKC,CACJ,CAAC;;;AAIF,QAAA,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,KAAC,CAAC,CAAC;;;AAIH,IAAA,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;SAEe,uBAAuB,CACnC,YAAqD,EACrD,kBAAyB,EACzB,WAA0B,EAAA;IAE1B,OAAO,YAAY,CAAC,GAAG,CAAC,UAAA,WAAW,EAAA,EAAI,QAAC;QACpC,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,IAAI,EAAE,kBAAkB,CAAC,MAAM;;QAE3B,UAAA,CAAC,IAAI,OAAA,WAAW,CAAC,WAAW,CAAC,MAAM,EAAEA,UAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAlD,EAAkD,CAC1D;KACJ,EAAC,EAAA,CAAC,CAAC;AACR,CAAC;AAEK,SAAU,4BAA4B,CAAC,kBAAyB,EAAA;AAClE,IAAA,IAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,UAAA,KAAK,EAAA,EAAI,QAAC;AAC3D,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,MAAM,EAAE;YACJ,IAAI,EAAE,cAAc,CAAC,mBAAmB;YACxC,MAAM,EAAE,CAAC,KAAK,CAAC;AAClB,SAAA;KACJ,EAAC,EAAA,CAAC,CAAC;IAEJ,IAAM,WAAW,GAAG,uBAAuB,CACvC,OAAO,EACP,kBAAkB,EAClB,mCAAmC,CACtC,CAAC;AAEF,IAAA,OAAOA,UAAC,CAAC,KAAK,CAAC,WAAW,EAAE,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,KAAK,CAAP,EAAO,CAAC,CAAC;AAC9C,CAAC;AAEK,SAAU,oBAAoB,CAChC,cAG8B,EAC9B,iBAA0B,EAC1B,SAAoB,EACpB,cAAsB,EACtB,YAAoB,EAAA;;IAGpB,IAAM,YAAY,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAC7C,UAAC,CAAa,IAAK,OAAA,CAAC,CAAC,EAAE,KAAK,YAAY,CAArB,EAAqB,CAC3C,CAAC;AAEF,IAAA,IAAI,iBAAiB,EAAE;;;AAGnB,QAAA,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAC1C,KAAA;AAAM,SAAA;AACH,QAAA,IAAM,UAAU,GAAG;AACf,YAAA,EAAE,EAAE,YAAY;AAChB,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,MAAM,EAAE,cAAc;SACzB,CAAC;;AAGF,QAAA,SAAS,CAAC,cAAc,CAAA,cAAA,CAAK,YAAY,EAAE,CAAA,UAAU,GAAE,CAAC;AAC3D,KAAA;AACL,CAAC;SAEe,uBAAuB,CACnC,KAAU,EACV,WAAyB,EACzB,WAA0B,EAAA;AAE1B,IAAA,QACI,WAAW,CAAC,MAAM,GAAG,CAAC;AACtB,QAAA,CAAC,WAAW;AACP,aAAA,GAAG,CAAC,UAAA,UAAU,EAAA,EAAI,OAAA,WAAW,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA,EAAA,CAAC;AACjD,aAAA,QAAQ,CAAC,KAAK,CAAC,EACtB;AACN,CAAC;SAEe,gBAAgB,CAC5B,IAAW,EACX,WAAyB,EACzB,WAA0B,EAAA;AAE1B,IAAA,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC;AACzB,UAAE,IAAI,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,uBAAuB,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,CAAA,EAAA,CAAC;UACtE,IAAI,CAAC;AACf;;ACvRA,IAAA,SAAA,kBAAA,UAAA,MAAA,EAAA;IAA+B,SAAgC,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA;AAA/D,IAAA,SAAA,SAAA,GAAA;;KAyCC;;;;;AAlCG,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,aAAa,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAA;AACnD,gBAAA,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EACI,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,IAAI,CAAC,QAAQ,EACtB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAC9B,SAAS,EAAC,cAAc,EACxB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAA,YAAA,EACxB,QAAQ,EACnB,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EACzC,CAAA;AACF,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAC,oBAAoB,EAC9B,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAA;oBAEvC,KACI,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,SAAS,EAAC,2BAA2B,EACrC,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,EAAA;wBAEd,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,cAAc,EAAA,CAAG,CACzB,CACP,CACJ,EACR;SACL;;;;;;AAGD,QAAA,KAAA,EAAA,UAAiB,KAAqB,EAAA;AAClC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACrB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAClD,aAAA;SACJ;;AAvCD,IAAA,MAAA,CAAA,cAAA,CAAA,SAAA,EAAA,cAAA,EAAA;;;;AAA6B,QAAA,KAAA,EAAA;AACzB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,mBAAmB,EAAE,oCAAoC;AACzD,YAAA,SAAS,EAAE,IAAI;AAClB,SAAA;AAAC,KAAA,CAAA,CAAA;AA+BF,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;IACL,OAAC,SAAA,CAAA;AAAA,CAzCD,CAA+B,KAAK,CAAC,SAAS,CAyC7C,CAAA;;AC5BD,IAAA,gBAAA,kBAAA,UAAA,MAAA,EAAA;IAAsC,SAGrC,CAAA,gBAAA,EAAA,MAAA,CAAA,CAAA;AAHD,IAAA,SAAA,gBAAA,GAAA;;KA2DC;AAjDG,IAAA,MAAA,CAAA,cAAA,CAAc,gBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAA7B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,GAAG,MAAM,CAAC;SACvD;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,sBAAsB,EAChC,KAAK,EAAE;AACH,oBAAA,aAAa,EAAE,QAAQ;AACvB,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,UAAU;AACzB,iBAAA,EAAA;gBAEA,IAAI,CAAC,KAAK,CAAC,IAAI;gBACf,IAAI,CAAC,KAAK,CAAC,oBAAoB,KAC5B,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAC,OAAO,EACjB,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,EAAA;oBAEzC,KAAC,CAAA,aAAA,CAAA,cAAc,EACX,QAAA,CAAA,EAAA,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EACxC,EAAA,IAAI,CAAC,KAAK,CAAC,mBAAmB,CACpC,CAAA,CACA,CACT;gBACA,IAAI,CAAC,KAAK,CAAC,aAAa,KACrB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAC,OAAO,EACjB,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,EAAA;AAEvD,oBAAA,KAAA,CAAA,aAAA,CAAC,SAAS,EACN,EAAA,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EACzC,QAAQ,EACJ,IAAI,CAAC,KAAK,CAAC,QAAQ;AACf,8BAAEA,UAAC,CAAC,QAAQ,CACN,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,IAAI,CAAC,KAAK,CAAC,WAAW,CACzB;AACH,8BAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAE7B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAA,CAC3C,CACA,CACT,CACC,EACR;SACL;;AAtDD,IAAA,MAAA,CAAA,cAAA,CAAA,gBAAA,EAAA,cAAA,EAAA;;;;AAA6D,QAAA,KAAA,EAAA;AACzD,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,WAAW,EAAE,GAAG;AACnB,SAAA;AAAC,KAAA,CAAA,CAAA;IARO,gBAAgB,GAAA,UAAA,CAAA;QAD5B,QAAQ;AACI,KAAA,EAAA,gBAAgB,CA2D5B,CAAA;IAAD,OAAC,gBAAA,CAAA;AAAA,CA3DD,CAAsC,KAAK,CAAC,SAAS,CA2DpD,CAAA;;ICnDW,oBAGX;AAHD,CAAA,UAAY,mBAAmB,EAAA;AAC3B,IAAA,mBAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,mBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACjB,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,GAG9B,EAAA,CAAA,CAAA,CAAA;AAkCK,SAAU,wBAAwB,CACpC,qBAAuD,EAAA;AAEvD,IAAA,OAAO,qBAAqB;AACxB,UAAE,wBAAwB,CAAI,KAAA,CAAA,KAAA,CAAA,EAAAA,UAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA,GAC5D,UAAU,CAAC;AACrB,CAAC;AAED,SAAS,sBAAsB,CAC3B,OAA6B,EAC7B,gBAAiD,EAAA;IAEjD,IAAM,UAAU,GAA0B,EAAE,CAAC;IAE7C,CAAC,OAAO,IAAI,EAAE;SACT,MAAM,CAAC,UAAA,MAAM,EAAI,EAAA,OAAA,MAAM,CAAC,EAAE,CAAT,EAAS,CAAC;SAC3B,OAAO,CAAC,UAAA,MAAM,EAAA;QACX,OAAA,UAAU,CAAC,IAAI,CAAC;YACZ,EAAE,EAAE,MAAM,CAAC,EAAG;AACd,YAAA,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAG;AAC/B,YAAA,OAAO,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAG,CAAC;AACrC,YAAA,SAAS,EACL,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,IAAI;SAC/D,CAAC,CAAA;AANF,KAME,CACL,CAAC;AAEN,IAAA,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,IAAA,SAAA,kBAAA,UAAA,MAAA,EAAA;IAA0C,SAGzC,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA;AAoBG,IAAA,SAAA,SAAA,CAAY,KAAwB,EAAA;QAApC,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAgBf,IAAA,CAAA;AA7BD,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,aAAA,EAAA;;;;;AAAkD,SAAA,CAAA,CAAA;AAClD,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,qBAAA,EAAA;;;;;AAA2D,SAAA,CAAA,CAAA;;AAI3D,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,2BAAA,EAAA;;;;;AAEgB,SAAA,CAAA,CAAA;AAGhB,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,UAAA,EAAA;;;;mBAAiD,EAAE;AAAC,SAAA,CAAA,CAAA;QAKhD,cAAc,CASZ,KAAI,CAAC,CAAC;AAER,QAAA,KAAI,CAAC,mBAAmB,GAAG,KAAI,CAAC,KAAK,CAAC,SAAS;cACzC,KAAI,CAAC,8BAA8B,CAAC,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC;cACzD,SAAS,CAAC;;KACnB;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,SAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAAb,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AAE3B,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBACtB,IAAI;oBACA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,0BAA0B,CAAC,MAAM,GAAG,CAAC;AACtD,0BAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,0BAA0B;0BAC/C,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC;AACrD,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;SACf;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,SAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAX,QAAA,GAAA,EAAA,YAAA;YADA,IAMC,KAAA,GAAA,IAAA,CAAA;YAJG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EAAE,GAAG,CAAC,UAAA,CAAC,IAAI,QAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACpC,CAAC,CACJ,EAAA,EAAA,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,KAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,EACjE,CAAA,EAAA,EAAA,CAAC,CAAC;SACP;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,SAAuB,CAAA,SAAA,EAAA,yBAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC;SACxE;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,SAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;AAE3D,YAAA,QACI,IAAI,CAAC,SAAS,KAAK,SAAS;AAC5B,gBAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,mBAAoB,EAC9C;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,SAAqB,CAAA,SAAA,EAAA,uBAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;SACrE;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,SAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAAjB,QAAA,GAAA,EAAA,YAAA;;;AAGI,YAAA,IACI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS;AACpC,gBAAA,IAAI,CAAC,qBAAqB,KAAK,SAAS,EAC1C;AACE,gBAAA,OAAO,SAAS,CAAC;AACpB,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,UAAA,CAAC,EAAI,EAAA,QAAC;oBACpC,EAAE,EAAE,CAAC,CAAC,MAAM;AACZ,oBAAA,IAAI,EAAE,CAAC,CAAC,aAAa,KAAK,mBAAmB,CAAC,GAAG;iBACpD,EAAC,EAAA,CAAC,CAAC;AACP,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,SAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,uBAAuB,CAC1B,IAAI,CAAC,kCAAkC,EACvC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC3B,IAAI,CAAC,yBAAyB,CACjC,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,SAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;AAA9B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,sBAAsB,CACzB,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,EACxB,IAAI,CAAC,gBAAgB,CACxB,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,SAAkC,CAAA,SAAA,EAAA,oCAAA,EAAA;AAA7C,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,yCAAyC,CAC5C,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE;iBACpB,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,EAAE,CAAJ,EAAI,CAAC;AACjB,iBAAA,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,QAAC;AACP,gBAAA,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAG;gBACrB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,OAAO,EAAE,CAAC,CAAC,IAAI;AAClB,aAAA,EAJS,EAIR,CAAC,CACV,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA;AAChC,gBAAA,KAAA,CAAA,aAAA,CAAC,gBAAgB,EAAA,EACb,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EACzC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EACrD,gBAAgB,EAAE,IAAI,CAAC,mBAAmB,EAC1C,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EACrD,CAAA;AACF,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAEmB,UAAU,CACjB,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,qBAAqB,EACrB,oBAAoB,CACvB,EAAA;AAED,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EACP,QAAA,CAAA,EAAA,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,UAAU,EACN,IAAI,CAAC,uBAAuB;8BACtB,IAAI,CAAC,UAAU;AACjB,8BAAE,SAAS,EAEnB,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAC/C,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,SAAS,EAAC,qBAAqB,EAC/B,YAAY,EAAC,GAAG,EAChB,QAAQ,EAAC,GAAG,EACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,gBAAgB,EAAE,IAAI,CAAC,aAAa,EACpC,cAAc,EAAE,IAAI,CAAC,aAAa,EAClC,OAAO,EAAE,CAAC,EAAA,EACN,IAAI,CAAC,KAAK,CAAC,eAAe,EAChC,CACA,CACJ,EACR;SACL;;;;;;AAED,QAAA,KAAA,EAAA,UAA0B,SAAsC,EAAA;YAC5D,IAAI,SAAS,CAAC,SAAS,EAAE;AACrB,gBAAA,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACzD,aAAA;SACJ;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC9B,aAAA;SACJ;;AAED;;;;AAIG;;;;;AACH,QAAA,KAAA,EAAA,UAAsC,SAAoB,EAAA;YAA1D,IAcC,KAAA,GAAA,IAAA,CAAA;YAbG,OAAO,QAAQ,CACX,YAAM,EAAA,OAAA,CAAC,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,WAAW,CAAC,GAAA,EACzD,UACI,OAAuB,EACvB,IAAoB,EACpB,QAAyB,EAAA;AAEzB,gBAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpB,KAAI,CAAC,aAAa,EAAE,CAAC;AACxB,iBAAA;gBACD,QAAQ,CAAC,OAAO,EAAE,CAAC;AACvB,aAAC,CACJ,CAAC;SACL;;AAED;;;AAGG;;;;;AACH,QAAA,KAAA,EAAA,UAAyC,SAAoB,EAAA;YAA7D,IAgBC,KAAA,GAAA,IAAA,CAAA;YAfG,OAAO,QAAQ,CACX,YAAA,EAAM,OAAA,SAAS,CAAC,WAAW,CAArB,EAAqB,EAC3B,UAAA,WAAW,EAAA;gBACP,IAAI,KAAI,CAAC,WAAW,EAAE;AAClB,oBAAA,IAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAChC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,EAAE,KAAK,oBAAoB,CAA7B,EAA6B,CACrC,CAAC;;oBAGF,IAAI,CAAC,WAAW,EAAE;AACd,wBAAA,KAAI,CAAC,WAAW,CAAC,KAAK,GAAG,EAAE,CAAC;AAC/B,qBAAA;AACJ,iBAAA;AACL,aAAC,CACJ,CAAC;SACL;;;;;;eAGD,UAAqB,KAAU,EAAE,GAAa,EAAA;YAC1C,OAAO;AACH,gBAAA,KAAK,EAAE;oBACH,UAAU,EAAE,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACzD,iBAAA;aACJ,CAAC;SACL;;;;;;AAGD,QAAA,KAAA,EAAA,UAAyB,KAAuB,EAAA;AAC5C,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;;;;;;AAGD,QAAA,KAAA,EAAA,UAAmB,UAAkB,EAAA;AACjC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CACf,UAAU,EACV,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAtB,EAAsB,CAAC,CACnD,CAAC;AACL,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAA6B,iBAA2B,EAAA;YADxD,IAWC,KAAA,GAAA,IAAA,CAAA;;YARG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,UAAA,QAAQ,EAAA;AAC/C,gBAAA,OAAA,KAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AAA5C,aAA4C,CAC/C,CAAC;;AAGF,YAAA,iBAAiB,CAAC,OAAO,CAAC,UAAA,QAAQ,EAAA;AAC9B,gBAAA,OAAA,KAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAA3C,aAA2C,CAC9C,CAAC;SACL;;;;;;eAGD,UAAiC,EAAU,EAAE,OAAgB,EAAA;;AAEzD,YAAA,IAAI,IAAI,CAAC,yBAAyB,KAAK,SAAS,EAAE;AAC9C,gBAAA,IAAI,CAAC,yBAAyB,GAAG,uBAAuB,CACpD,IAAI,CAAC,kCAAkC,EACvC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC9B,CAAC;AACL,aAAA;;YAGD,IACI,IAAI,CAAC,yBAAyB;AAC9B,gBAAA,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,KAAK,SAAS,EAClD;AACE,gBAAA,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;AAChD,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAA2B,QAAsC,EAAA;AAC7D,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC5B;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACtB;;;;;;AAED,QAAA,KAAA,EAAA,UAA2B,KAAQ,EAAA;AAC/B,YAAA,QACI,IAAI,CAAC,KAAK,CAAC,SAAS;gBACpB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACjD;SACL;;;;;;AAED,QAAA,KAAA,EAAA,UAA2B,GAAY,EAAA;AACnC,YAAA,IAAI,UAA8B,CAAC;YAEnC,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;gBACrC,UAAU;AACN,oBAAA,GAAG,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC;AACnB,0BAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;AAC/B,0BAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC;AAC5C,aAAA;AAED,YAAA,OAAO,UAAU,CAAC;SACrB;;AA3TD,IAAA,MAAA,CAAA,cAAA,CAAA,SAAA,EAAA,cAAA,EAAA;;;;AAA6B,QAAA,KAAA,EAAA;AACzB,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,mBAAmB,EAAE,EAAE;AACvB,YAAA,mBAAmB,EAAE,SAAS;AAC9B,YAAA,kBAAkB,EAAE,SAAS;AAChC,SAAA;AAAC,KAAA,CAAA,CAAA;AAOF,IAAA,UAAA,CAAA;QADC,UAAU;AAGK,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGhB,IAAA,UAAA,CAAA;QADC,UAAU;AACyC,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAsBpD,IAAA,UAAA,CAAA;QADC,QAAQ;AAYR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAMR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAQR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAeR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAOR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAMR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAWR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,oCAAA,EAAA,IAAA,CAAA,CAAA;AA2GD,IAAA,UAAA,CAAA;QADC,QAAQ;AAOR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAQZ,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAWZ,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAiBZ,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAGZ,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAGZ,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;IAqBL,OAAC,SAAA,CAAA;AAAA,CAhUD,CAA0C,KAAK,CAAC,SAAS,CAgUxD;;;;ACjZM,IAAM,sBAAsB,GAA0C;AACzE,IAAA,QAAQ,EAAE;AACN,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,SAAS,EAAE,mBAAmB;AACjC,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,SAAS,EAAE,kBAAkB;AAChC,KAAA;AACD,IAAA,UAAU,EAAE;AACR,QAAA,KAAK,EAAE,YAAY;AACnB,QAAA,SAAS,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,SAAS,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,SAAS,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,SAAS,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA,UAAU,EAAE;AACR,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,SAAS,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA,eAAe,EAAE;AACb,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,SAAS,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA,eAAe,EAAE;AACb,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,SAAS,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,SAAS,EAAE,kBAAkB;AAChC,KAAA;AACD,IAAA,YAAY,EAAE;AACV,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,SAAS,EAAE,kBAAkB;AAChC,KAAA;AACD,IAAA,WAAW,EAAE;AACT,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,SAAS,EAAE,QAAQ;AACtB,KAAA;AACD,IAAA,MAAM,EAAE;AACJ,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,SAAS,EAAE,QAAQ;AACtB,KAAA;AACD,IAAA,MAAM,EAAE;AACJ,QAAA,KAAK,EAAE,QAAQ;AACf,QAAA,SAAS,EAAE,gBAAgB;AAC9B,KAAA;AACD,IAAA,KAAK,EAAE;AACH,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,SAAS,EAAE,gBAAgB;AAC9B,KAAA;CACJ,CAAC;AAEF;;;;;AAKG;AACH,SAAS,eAAe,CAAC,QAAkB,EAAA;AACvC,IAAA,IAAM,KAAK,GAAmC,WAAW,CAAC,QAAQ,CAAC,CAAC;;AAGpE,IAAA,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;QACtB,OAAO,KAAK,CAAC,KAAK,CAAC;AACtB,KAAA;;AAEI,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;AACtC,KAAA;AACL,CAAC;AAED,SAAS,YAAY,CAAC,QAAkB,EAAA;AACpC,IAAA,IAAM,KAAK,GAAmC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEpE,IAAA,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,EAAE;QAC1B,OAAO,KAAK,CAAC,SAAS,CAAC;AAC1B,KAAA;;AAEI,SAAA;AACD,QAAA,OAAO,sBAAsB,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;AACpD,KAAA;AACL,CAAC;AAED,SAAS,WAAW,CAAC,QAAkB,EAAA;AACnC,IAAA,IAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;AAE3C,IAAA,IAAI,YAAY,EAAE;AACd,QAAA,OAAO,sBAAsB,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC,CAAC;AACzE,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,SAAS,CAAC;AACpB,KAAA;AACL,CAAC;AAED,IAAA,YAAA,kBAAA,UAAA,MAAA,EAAA;IAA0C,SAGzC,CAAA,YAAA,EAAA,MAAA,CAAA,CAAA;AAHD,IAAA,SAAA,YAAA,GAAA;;KA8BC;;;;;AA1BG,QAAA,KAAA,EAAA,YAAA;;YAEI,IAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;YAGpD,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;AAEjD,YAAA,IAAI,OAAO,IACP,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAGD,QAAc,CAAC,SAAS,CAAC,EAAA,EAAG,IAAI,CAAQ,CAC7D,CAAC;;YAGF,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;AACzD,gBAAA,OAAO,IACH,KAAA,CAAA,aAAA,CAAC,cAAc,EACX,EAAA,OAAO,EAAE,KAAO,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,OAAO,CAAQ,EAC/B,SAAS,EAAC,MAAM,IAEf,OAAO,CACK,CACpB,CAAC;AACL,aAAA;AAED,YAAA,OAAO,OAAO,CAAC;SAClB;;IACL,OAAC,YAAA,CAAA;AAAD,CAAC,CA9ByC,KAAK,CAAC,SAAS,CA8BxD,CAAA;;;ICrIW,eAgBX;AAhBD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,eAAgC,CAAA;AAChC,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,cAAA,CAAA,iBAAA,CAAA,GAAA,gBAAkC,CAAA;AAClC,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,cAA8B,CAAA;AAC9B,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,eAAgC,CAAA;AAChC,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,aAA4B,CAAA;AAC5B,IAAA,cAAA,CAAA,kBAAA,CAAA,GAAA,iBAAoC,CAAA;AACpC,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,eAAgC,CAAA;AAChC,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,cAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,cAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,cAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACrB,CAAC,EAhBW,cAAc,KAAd,cAAc,GAgBzB,EAAA,CAAA,CAAA,CAAA;IAEW,mBAgBX;AAhBD,CAAA,UAAY,kBAAkB,EAAA;AAC1B,IAAA,kBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC,CAAA;AACjC,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,kBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC,CAAA;AACnC,IAAA,kBAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,kBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,kBAAA,CAAA,gBAAA,CAAA,GAAA,WAA4B,CAAA;AAC5B,IAAA,kBAAA,CAAA,cAAA,CAAA,GAAA,SAAwB,CAAA;AACxB,IAAA,kBAAA,CAAA,kBAAA,CAAA,GAAA,KAAwB,CAAA;AACxB,IAAA,kBAAA,CAAA,gBAAA,CAAA,GAAA,KAAsB,CAAA;AACtB,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,kBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,kBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,kBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACrB,CAAC,EAhBW,kBAAkB,KAAlB,kBAAkB,GAgB7B,EAAA,CAAA,CAAA,CAAA;AAEK,SAAU,gBAAgB,CAAC,SAAc,EAAA;IAC3C,OAAO,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,iBAAiB,IAAE,SAAS,CAAC,KAAK,CAAQ,CAAC;AACtE,CAAC;IAEY,uBAAuB,IAAAD,IAAA,GAAA,EAAA;IAChCA,IAAC,CAAA,cAAc,CAAC,cAAc,CAAA,IAC1B,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,aAAa,EACT,8BAAM,SAAS,EAAC,WAAW,EACtB,EAAA,kBAAkB,CAAC,cAAc,CAC/B,GAEb,CACL;IACDA,IAAC,CAAA,cAAc,CAAC,UAAU,CAAA,IACtB,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,aAAa,EACT,8BAAM,SAAS,EAAC,WAAW,EACtB,EAAA,kBAAkB,CAAC,UAAU,CAC3B,GAEb,CACL;IACDA,IAAC,CAAA,cAAc,CAAC,eAAe,CAAA,IAC3B,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,aAAa,EACT,8BAAM,SAAS,EAAC,WAAW,EACtB,EAAA,kBAAkB,CAAC,eAAe,CAChC,GAEb,CACL;IACDA,IAAC,CAAA,cAAc,CAAC,aAAa,CAAA,IACzB,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,aAAa,EACT,8BAAM,SAAS,EAAC,WAAW,EACtB,EAAA,kBAAkB,CAAC,aAAa,CAC9B,GAEb,CACL;IACDA,IAAC,CAAA,cAAc,CAAC,UAAU,CAAA,IACtB,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,aAAa,EACT,8BAAM,SAAS,EAAC,iBAAiB,EAC5B,EAAA,kBAAkB,CAAC,UAAU,CAC3B,GAEb,CACL;IACDA,IAAC,CAAA,cAAc,CAAC,cAAc,CAAA,IAC1B,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,aAAa,EACT,8BAAM,SAAS,EAAC,iBAAiB,EAC5B,EAAA,kBAAkB,CAAC,cAAc,CAC/B,GAEb,CACL;IACDA,IAAC,CAAA,cAAc,CAAC,YAAY,CAAA,IACxB,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,aAAa,EACT,8BAAM,SAAS,EAAC,iBAAiB,EAC5B,EAAA,kBAAkB,CAAC,YAAY,CAC7B,GAEb,CACL;IACDA,IAAC,CAAA,cAAc,CAAC,gBAAgB,CAAG,IAC/B,oBAAC,YAAY,EAAA,EACT,aAAa,EACT,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA,EACtB,kBAAkB,CAAC,gBAAgB,CACjC,EAEX,OAAO,EAAE,KAA6B,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,kBAAA,CAAA,EAAA,CACxC,CACL;IACDA,IAAC,CAAA,cAAc,CAAC,cAAc,CAAG,IAC7B,oBAAC,YAAY,EAAA,EACT,aAAa,EACT,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA,EACtB,kBAAkB,CAAC,cAAc,CAC/B,EAEX,OAAO,EAAE,KAA2B,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,gBAAA,CAAA,EAAA,CACtC,CACL;IACDA,IAAC,CAAA,cAAc,CAAC,KAAK,CAAA,IACjB,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,aAAa,EACT,8BAAM,SAAS,EAAC,WAAW,EAAE,EAAA,kBAAkB,CAAC,KAAK,CAAQ,GAEnE,CACL;IACDA,IAAC,CAAA,cAAc,CAAC,KAAK,CAAA,IACjB,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,aAAa,EACT,8BAAM,SAAS,EAAC,WAAW,EAAE,EAAA,kBAAkB,CAAC,KAAK,CAAQ,GAEnE,CACL;AACD,IAAAA,IAAA,CAAC,cAAc,CAAC,MAAM,CAAA,IAClB,KAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EACT,aAAa,EACT,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,iBAAiB,EAAA;AAC5B,YAAA,kBAAkB,CAAC,MAAM;YAAE,GAAG;AAC/B,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,mBAAmB,GAAG,CAChC,EAEX,OAAO,EACH,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AACI,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACI,IAAI,EAAC,oCAAoC,EACzC,MAAM,EAAC,QAAQ,EAGf,EAAA,QAAA,CAAA;YAAC,GAAG;AAIL,YAAA,wJAAA,CAAA,EAAA,CAEb,CACL;AACD,IAAAA,IAAA,CAAC,cAAc,CAAC,OAAO,CAAA,IACnB,KAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EACT,aAAa,EACT,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA;AACtB,YAAA,kBAAkB,CAAC,OAAO;YAAE,GAAG;AAChC,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,mBAAmB,GAAG,CAChC,EAEX,OAAO,EACH,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AACI,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACI,IAAI,EAAC,uCAAuC,EAC5C,MAAM,EAAC,QAAQ,EAGf,EAAA,SAAA,CAAA;YAAC,GAAG;AAGL,YAAA,sFAAA,CAAA,EAAA,CAEb,CACL;AACD,IAAAA,IAAA,CAAC,cAAc,CAAC,KAAK,CAAA,IACjB,KAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EACT,aAAa,EACT,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,iBAAiB,EAAA;AAC5B,YAAA,kBAAkB,CAAC,KAAK;YAAE,GAAG;AAC9B,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,mBAAmB,GAAG,CAChC,EAEX,OAAO,EACH,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;AAEI,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAC,mCAAmC,EAAC,MAAM,EAAC,QAAQ,EAEvD,EAAA,OAAA,CAAA;;YAGJ,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AAGH,YAAA,gFAAA,CAAA,EAAA,CAEb,CACL;AACD,IAAAA,IAAA,CAAC,cAAc,CAAC,MAAM,CAAA,IAClB,KAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EACT,aAAa,EACT,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,iBAAiB,EAAA;AAC5B,YAAA,kBAAkB,CAAC,MAAM;YAAE,GAAG;AAC/B,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,mBAAmB,GAAG,CAChC,EAEX,OAAO,EACH,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;YAC6D,GAAG;YAC5D,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAC,2BAA2B,EAAC,MAAM,EAAC,QAAQ,EAAA,EAAA,QAAA,CAE/C,CACD,EAAA,CAEb,CACL;UACH;AAEF;;;AAGG;IACU,2BAA2B,IAAA,EAAA,GAAA,EAAA;IACpC,EAAC,CAAA,cAAc,CAAC,cAAc,CAAG,GAAA;QAC7B,EAAE,EAAE,cAAc,CAAC,cAAc;QACjC,IAAI,EAAE,kBAAkB,CAAC,cAAc;QACvC,QAAQ,EAAE,cAAc,CAAC,cAAc;AACvC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,IAAI,EAAE,UAAC,MAAW,EAAA,EAAK,OAAA,KAAC,CAAA,aAAA,CAAA,aAAa,EAAC,EAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAA,CAAI,GAAA;AACnE,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,cAAc,CAAC;AAC9D,QAAA,UAAU,EAAE,uBAAuB;AACtC,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,UAAU,CAAG,GAAA;QACzB,EAAE,EAAE,cAAc,CAAC,UAAU;QAC7B,IAAI,EAAE,kBAAkB,CAAC,UAAU;AACnC,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,UAAU,CAAC;AAC1D,QAAA,UAAU,EAAE,oBAAoB;AACnC,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,aAAa,CAAG,GAAA;QAC5B,EAAE,EAAE,cAAc,CAAC,aAAa;QAChC,IAAI,EAAE,kBAAkB,CAAC,aAAa;QACtC,QAAQ,EAAE,cAAc,CAAC,aAAa;AACtC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,IAAI,EAAE,UAAC,MAAW,EAAA,EAAK,OAAA,KAAC,CAAA,aAAA,CAAA,YAAY,EAAC,EAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAA,CAAI,GAAA;AAClE,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,aAAa,CAAC;AAChE,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,eAAe,CAAG,GAAA;QAC9B,EAAE,EAAE,cAAc,CAAC,eAAe;QAClC,IAAI,EAAE,kBAAkB,CAAC,eAAe;QACxC,QAAQ,EAAE,cAAc,CAAC,eAAe;AACxC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,IAAI,EAAE,UAAC,MAAW,EAAA,EAAK,OAAA,KAAC,CAAA,aAAA,CAAA,cAAc,EAAC,EAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAA,CAAI,GAAA;AACpE,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,eAAe,CAAC;AAClE,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,UAAU,CAAG,GAAA;QACzB,EAAE,EAAE,cAAc,CAAC,UAAU;QAC7B,IAAI,EAAE,kBAAkB,CAAC,UAAU;QACnC,QAAQ,EAAE,cAAc,CAAC,UAAU;AACnC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,UAAU,CAAC;AAC1D,QAAA,IAAI,EAAE,KAAK;AACd,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,cAAc,CAAG,GAAA;QAC7B,EAAE,EAAE,cAAc,CAAC,cAAc;QACjC,IAAI,EAAE,kBAAkB,CAAC,cAAc;QACvC,QAAQ,EAAE,cAAc,CAAC,cAAc;AACvC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,cAAc,CAAC;AAC9D,QAAA,IAAI,EAAE,KAAK;AACd,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,YAAY,CAAG,GAAA;QAC3B,EAAE,EAAE,cAAc,CAAC,YAAY;QAC/B,IAAI,EAAE,kBAAkB,CAAC,YAAY;QACrC,QAAQ,EAAE,cAAc,CAAC,YAAY;AACrC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,IAAI,EAAE,gBAAgB;AACtB,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,YAAY,CAAC;AAC5D,QAAA,IAAI,EAAE,KAAK;AACd,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,gBAAgB,CAAG,GAAA;QAC/B,EAAE,EAAE,cAAc,CAAC,gBAAgB;QACnC,IAAI,EAAE,kBAAkB,CAAC,gBAAgB;QACzC,QAAQ,EAAE,cAAc,CAAC,gBAAgB;AACzC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,gBAAgB,CAAC;AAChE,QAAA,IAAI,EAAE,KAAK;AACd,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,cAAc,CAAG,GAAA;QAC7B,EAAE,EAAE,cAAc,CAAC,cAAc;QACjC,IAAI,EAAE,kBAAkB,CAAC,cAAc;QACvC,QAAQ,EAAE,cAAc,CAAC,cAAc;AACvC,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,cAAc,CAAC;AAC9D,QAAA,IAAI,EAAE,KAAK;AACd,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,KAAK,CAAG,GAAA;QACpB,EAAE,EAAE,cAAc,CAAC,KAAK;QACxB,IAAI,EAAE,kBAAkB,CAAC,KAAK;AAC9B,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,KAAK,CAAC;AACrD,QAAA,UAAU,EAAE,eAAe;AAC9B,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,KAAK,CAAG,GAAA;QACpB,EAAE,EAAE,cAAc,CAAC,KAAK;QACxB,IAAI,EAAE,kBAAkB,CAAC,KAAK;AAC9B,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,KAAK,CAAC;AACrD,QAAA,UAAU,EAAE,eAAe;AAC9B,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,MAAM,CAAG,GAAA;QACrB,EAAE,EAAE,cAAc,CAAC,MAAM;QACzB,IAAI,EAAE,kBAAkB,CAAC,MAAM;AAC/B,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,MAAM,CAAC;AACtD,QAAA,UAAU,EAAE,gBAAgB;AAC/B,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,OAAO,CAAG,GAAA;QACtB,EAAE,EAAE,cAAc,CAAC,OAAO;QAC1B,IAAI,EAAE,kBAAkB,CAAC,OAAO;AAChC,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,OAAO,CAAC;AACvD,QAAA,UAAU,EAAE,iBAAiB;AAC7B,QAAA,IAAI,EAAE,KAAK;AACd,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,KAAK,CAAG,GAAA;QACpB,EAAE,EAAE,cAAc,CAAC,KAAK;QACxB,IAAI,EAAE,kBAAkB,CAAC,KAAK;AAC9B,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,KAAK,CAAC;AACrD,QAAA,UAAU,EAAE,eAAe;AAC3B,QAAA,IAAI,EAAE,KAAK;AACd,KAAA;IACD,EAAC,CAAA,cAAc,CAAC,MAAM,CAAG,GAAA;QACrB,EAAE,EAAE,cAAc,CAAC,MAAM;QACzB,IAAI,EAAE,kBAAkB,CAAC,MAAM;AAC/B,QAAA,MAAM,EAAE,uBAAuB,CAAC,cAAc,CAAC,MAAM,CAAC;AACtD,QAAA,UAAU,EAAE,gBAAgB;AAC5B,QAAA,IAAI,EAAE,KAAK;AACd,KAAA;QACH;AAEW,IAAA,wBAAwB,GAAG;AACpC,IAAA,2BAA2B,CAAC,cAAc,CAAC,cAAc,CAAC;AAC1D,IAAA,2BAA2B,CAAC,cAAc,CAAC,aAAa,CAAC;AACzD,IAAA,2BAA2B,CAAC,cAAc,CAAC,eAAe,CAAC;AAC3D,IAAA,2BAA2B,CAAC,cAAc,CAAC,UAAU,CAAC;AACtD,IAAA,2BAA2B,CAAC,cAAc,CAAC,cAAc,CAAC;AAC1D,IAAA,2BAA2B,CAAC,cAAc,CAAC,YAAY,CAAC;AACxD,IAAA,2BAA2B,CAAC,cAAc,CAAC,gBAAgB,CAAC;AAC5D,IAAA,2BAA2B,CAAC,cAAc,CAAC,cAAc,CAAC;AAC1D,IAAA,2BAA2B,CAAC,cAAc,CAAC,KAAK,CAAC;AACjD,IAAA,2BAA2B,CAAC,cAAc,CAAC,KAAK,CAAC;AACjD,IAAA,2BAA2B,CAAC,cAAc,CAAC,OAAO,CAAC;AACnD,IAAA,2BAA2B,CAAC,cAAc,CAAC,MAAM,CAAC;AAClD,IAAA,2BAA2B,CAAC,cAAc,CAAC,KAAK,CAAC;AACjD,IAAA,2BAA2B,CAAC,cAAc,CAAC,MAAM,CAAC;EACpD;AAEc,SAAA,YAAY,CACxB,cAA2C,EAC3C,aAA0C,EAAA;IAE1C,IAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,IAAM,SAAS,GAAgC,EAAE,CAAC;AAElD,IAAA,cAAc,CAAC,OAAO,CAAC,UAAA,MAAM,EAAA;QACzB,IAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAlB,EAAkB,CAAC,CAAC;AAChE,QAAA,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;AAEnC,QAAA,IAAI,WAAW,EAAE;AACb,YAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/B,SAAA;AACL,KAAC,CAAC,CAAC;IAEH,OAAW,cAAA,CAAA,MAAM,EAAKjB,UAAC,CAAC,UAAU,CAAC,aAAa,EAAE,SAAS,CAAC,CAAE,CAAA;AAClE;;AC5UA,IAAA,6BAAA,kBAAA,UAAA,MAAA,EAAA;IAA4C,SAA4B,CAAA,6BAAA,EAAA,MAAA,CAAA,CAAA;AAAxE,IAAA,SAAA,6BAAA,GAAA;;KAA2E;IAArE,6BAA6B,GAAA,UAAA,CAAA;QADlC,QAAQ;AACH,KAAA,EAAA,6BAA6B,CAAwC,CAAA;IAAD,OAAC,6BAAA,CAAA;CAAA,CAA/B,SAAS,CAAsB,CAAA,CAAA;AAG3E,IAAA,oBAAA,kBAAA,UAAA,MAAA,EAAA;IAAkD,SAGjD,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAA;AACG,IAAA,SAAA,oBAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAOD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;YACI,OAAO;gBACH,IAAI,CAAC,KAAK,CAAC,iBAAiB;gBAC5B,IAAI,CAAC,KAAK,CAAC,WAAW;gBACtB,IAAI,CAAC,KAAK,CAAC,UAAU;gBACrB,IAAI,CAAC,KAAK,CAAC,aAAa;aAC3B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAA0B,CAAA,SAAA,EAAA,4BAAA,EAAA;AAA9B,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,wBAAwB,CACxB,KAAA,CAAA,KAAA,CAAA,EAAAA,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CACzC,CAAA;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAkC,CAAA,SAAA,EAAA,oCAAA,EAAA;AAAtC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB;AACvC,kBAAE,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM;kBAC3C,UAAU,CAAC;SACpB;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAkC,CAAA,SAAA,EAAA,oCAAA,EAAA;AAAtC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,+BAA+B;AAC7C,kBAAE,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,MAAM;kBACjD,UAAU,CAAC;SACpB;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAwB,CAAA,SAAA,EAAA,0BAAA,EAAA;AAA5B,QAAA,GAAA,EAAA,YAAA;YADA,IAgBC,KAAA,GAAA,IAAA,CAAA;AAdG,YAAA,OAAO,IAAI,CAAC,0BAA0B,KAAK,SAAS;AAChD,kBAAE,YAAA,EAAM,OAAA,SAAS,GAAA;kBACf,UAAC,QAAkB,EAAA;oBACf,OAAA,iBAAiB,CACb,QAAQ,EACR,KAAI,CAAC,KAAK,CAAC,iBAAiB,EAC5B,KAAI,CAAC,KAAK,CAAC,WAAW,EACtB,KAAI,CAAC,KAAK,CAAC,kBAAkB,EAC7B,KAAI,CAAC,KAAK,CAAC,UAAU,EACrB,KAAI,CAAC,KAAK,CAAC,yBAAyB,EACpC,KAAI,CAAC,KAAK,CAAC,UAAU,EACrB,KAAI,CAAC,KAAK,CAAC,aAAa,EACxB,KAAI,CAAC,KAAK,CAAC,yBAAyB,CACvC,CAAA;AAVD,iBAUC,CAAC;SACf;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAqB,CAAA,SAAA,EAAA,uBAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;YADA,IASC,KAAA,GAAA,IAAA,CAAA;AAPG,YAAA,OAAO,IAAI,CAAC,kCAAkC,KAAK,SAAS;AACxD,kBAAE,YAAA,EAAM,OAAA,SAAS,GAAA;kBACf,UAAC,QAAkB,EAAA;oBACf,OAAA,oBAAoB,CAChB,QAAQ,EACR,KAAI,CAAC,KAAK,CAAC,+BAA+B,CAC7C,CAAA;AAHD,iBAGC,CAAC;SACf;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAAjB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,kCAAkC,KAAK,SAAS;AACxD,kBAAE,YAAA,EAAM,OAAA,SAAS,GAAA;kBACf,UAAC,QAAkB,EAAK,EAAA,OAAA,kBAAkB,CAAC,QAAQ,CAAC,CAA5B,EAA4B,CAAC;SAC9D;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAAjB,QAAA,GAAA,EAAA,YAAA;YADA,IAUC,KAAA,GAAA,IAAA,CAAA;AARG,YAAA,OAAO,IAAI,CAAC,kCAAkC,KAAK,SAAS;AACxD,kBAAE,YAAA,EAAM,OAAA,SAAS,GAAA;kBACf,UAAC,QAAkB,EAAA;AACf,oBAAA,OAAA,kBAAkB,CACd,QAAQ,EACR,KAAI,CAAC,KAAK,CAAC,yBAAyB,EACpC,KAAI,CAAC,KAAK,CAAC,oBAAoB,CAClC,CAAA;AAJD,iBAIC,CAAC;SACf;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YADA,IAUC,KAAA,GAAA,IAAA,CAAA;AARG,YAAA,OAAO,IAAI,CAAC,kCAAkC,KAAK,SAAS;AACxD,kBAAE,YAAA,EAAM,OAAA,SAAS,GAAA;kBACf,UAAC,QAAkB,EAAA;AACf,oBAAA,OAAA,aAAa,CACT,QAAQ,EACR,KAAI,CAAC,KAAK,CAAC,yBAAyB,EACpC,aAAa,CAAC,QAAQ,CACzB,CAAC,CAAC,CAAC,CAAA;AAJJ,iBAII,CAAC;SAClB;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;YADA,IASC,KAAA,GAAA,IAAA,CAAA;AAPG,YAAA,OAAO,IAAI,CAAC,kCAAkC,KAAK,SAAS;AACxD,kBAAE,YAAA,EAAM,OAAA,SAAS,GAAA;kBACf,UAAC,QAAkB,EAAA;oBACf,OAAA,cAAc,CACV,QAAQ,EACR,KAAI,CAAC,KAAK,CAAC,yBAAyB,CACvC,CAAA;AAHD,iBAGC,CAAC;SACf;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAqB,CAAA,SAAA,EAAA,uBAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,oBAAoB,CAAC;SACxE;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,UAAmC,SAAyB,EAAA;AACxD,YAAA,QAAQ,SAAS;gBACb,KAAK,cAAc,CAAC,UAAU;oBAC1B,OAAO,IAAI,CAAC,wBAAwB,CAAC;gBACzC,KAAK,cAAc,CAAC,KAAK;oBACrB,OAAO,IAAI,CAAC,aAAa,CAAC;gBAC9B,KAAK,cAAc,CAAC,KAAK;oBACrB,OAAO,IAAI,CAAC,aAAa,CAAC;gBAC9B,KAAK,cAAc,CAAC,MAAM;oBACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;gBACtC,KAAK,cAAc,CAAC,OAAO;oBACvB,OAAO,IAAI,CAAC,eAAe,CAAC;gBAChC,KAAK,cAAc,CAAC,KAAK;oBACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC;gBACtC,KAAK,cAAc,CAAC,MAAM;oBACtB,OAAO,IAAI,CAAC,cAAc,CAAC;AAC/B,gBAAA;AACI,oBAAA,OAAO,SAAS,CAAC;AACxB,aAAA;SACJ;;;;;;AAED,QAAA,KAAA,EAAA,UAAqC,SAAyB,EAAA;YAA9D,IAgFC,KAAA,GAAA,IAAA,CAAA;AA/EG,YAAA,QAAQ,SAAS;gBACb,KAAK,cAAc,CAAC,UAAU;oBAC1B,OAAO,UAAC,MAAW,EAAK,EAAA,QACpB,KAAC,CAAA,aAAA,CAAA,UAAU,EACP,EAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,YAAY,EAAE,IAAI,EAClB,aAAa,EAAE,IAAI,EACnB,WAAW,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,EAC5C,oBAAoB,EAAE,IAAI,EAC1B,WAAW,EAAE,IAAI,EACjB,WAAW,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW,EACnC,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EACjC,iBAAiB,EAAE,KAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,yBAAyB,EACrB,KAAI,CAAC,KAAK,CAAC,yBAAyB,EAExC,WAAW,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW,EACnC,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,EACjC,aAAa,EAAE,KAAI,CAAC,KAAK,CAAC,aAAa,EACvC,yBAAyB,EACrB,KAAI,CAAC,KAAK,CAAC,yBAAyB,EAE1C,CAAA,EApBkB,EAqBvB,CAAC;gBACN,KAAK,cAAc,CAAC,KAAK;AACrB,oBAAA,OAAO,UAAC,MAAW,EAAK,EAAA,OAAA,oBAAC,KAAK,EAAA,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAI,CAAA,CAAA,EAAA,CAAC;gBACjE,KAAK,cAAc,CAAC,KAAK;AACrB,oBAAA,OAAO,UAAC,MAAW,EAAK,EAAA,QACpB,KAAC,CAAA,aAAA,CAAA,KAAK,EACF,EAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,yBAAyB,EACrB,KAAI,CAAC,KAAK,CAAC,yBAAyB,EAExC,oBAAoB,EAAE,KAAI,CAAC,KAAK,CAAC,oBAAoB,EAAA,CACvD,EACL,EAAA,CAAC;gBACN,KAAK,cAAc,CAAC,MAAM;AACtB,oBAAA,OAAO,UAAC,MAAW,EAAK,EAAA,QACpB,KAAC,CAAA,aAAA,CAAA,MAAM,EACH,EAAA,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,+BAA+B,EAC3B,KAAI,CAAC,KAAK,CAAC,+BAA+B,EAE9C,yBAAyB,EACrB,KAAI,CAAC,KAAK,CAAC,yBAAyB,EAAA,CAE1C,EACL,EAAA,CAAC;gBACN,KAAK,cAAc,CAAC,OAAO;oBACvB,OAAO,UAAC,MAAW,EAAA,EAAK,QACpB,oBAAC,qBAAqB,EAAA,EAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,yBAAyB,EACrB,KAAI,CAAC,KAAK,CAAC,yBAAyB,EAE1C,CAAA,EANkB,EAOvB,CAAC;gBACN,KAAK,cAAc,CAAC,KAAK;oBACrB,OAAO,UAAC,MAAW,EAAA,EAAK,QACpB,oBAAC,KAAK,EAAA,EACF,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,+BAA+B,EAC3B,KAAI,CAAC,KAAK,CAAC,+BAA+B,EAEhD,CAAA,EANkB,EAOvB,CAAC;gBACN,KAAK,cAAc,CAAC,MAAM;AACtB,oBAAA,OAAO,UAAC,MAAW,EAAK,EAAA,QACpB,KAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EACH,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,yBAAyB,EACrB,KAAI,CAAC,KAAK,CAAC,yBAAyB,EAExC,YAAY,EAAE,aAAa,CAAC,QAAQ,EAAA,CACtC,EACL,EAAA,CAAC;AACN,gBAAA;AACI,oBAAA,OAAO,SAAS,CAAC;AACxB,aAAA;SACJ;;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAX,QAAA,GAAA,EAAA,YAAA;YADA,IAyBC,KAAA,GAAA,IAAA,CAAA;YAvBG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;;;AAG3B,gBAAA,IAAM,MAAM,GAAA,QAAA,CAAA,EAAA,EAAQ,CAAC,CAAE,CAAC;AAExB,gBAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;oBAClB,IAAM,eAAe,GAAG,KAAI,CAAC,wBAAwB,CACjD,MAAM,CAAC,EAAoB,CAC9B,CAAC;AACF,oBAAA,IAAI,eAAe,EAAE;AACjB,wBAAA,MAAM,CAAC,QAAQ,GAAG,eAAe,CAAC;AACrC,qBAAA;AACJ,iBAAA;AACD,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;oBACd,IAAM,iBAAiB,GAAG,KAAI,CAAC,0BAA0B,CACrD,MAAM,CAAC,EAAoB,CAC9B,CAAC;AACF,oBAAA,IAAI,iBAAiB,EAAE;AACnB,wBAAA,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC;AACnC,qBAAA;AACJ,iBAAA;AACD,gBAAA,OAAO,MAAM,CAAC;AAClB,aAAC,CAAC,CAAC;SACN;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,6BAA6B,EAAA,QAAA,CAAA,EAAA,EACtB,IAAI,CAAC,KAAK,EAAA,EACd,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,EACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAC,wBAAwB,EAAA,CAAA,CACpC,EACJ;SACL;;;;;;eAGD,UACI,UAAkB,EAClB,wBAAqD,EAAA;AAErD,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;;AAEtB,gBAAA,IAAM,YAAY,GAAG,uBAAuB,CACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CACnC,CAAC;gBAEF,IAAI,gBAAgB,GAA0B,EAAE,CAAC;AAEjD,gBAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACvB,oBAAA,gBAAgB,GAAG,wBAAwB,CAAC,GAAG,CAC3C,UAAA,CAAC,EAAA;;wBAAI,QAAC,SAAE,EAAC,CAAA,CAAC,CAAC,EAAG,CAAA,GAAG,UAAU,EAAA,EAA0B,EAAA;AAAhD,qBAAgD,CACxD,CAAC;AAEF,oBAAA,IAAM,eAAe,GAAG;AACpB,wBAAA,EAAE,EAAE,oBAAoB;wBACxB,IAAI,EAAE,cAAc,CAAC,QAAQ;AAC7B,wBAAA,MAAM,EAAE,gBAAgB;qBAC3B,CAAC;;AAGF,oBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,gBAC5B,YAAY,EAAA;wBACf,eAAe;uBACjB,CAAC;AACN,iBAAA;AAAM,qBAAA;;oBAEH,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AACrD,iBAAA;AACJ,aAAA;SACJ;;AAhSD,IAAA,MAAA,CAAA,cAAA,CAAA,oBAAA,EAAA,cAAA,EAAA;;;;AAA6B,QAAA,KAAA,EAAA;YACzB,WAAW,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,CAAC;AACpD,YAAA,aAAa,EAAE,IAAI;AACtB,SAAA;AAAC,KAAA,CAAA,CAAA;AAGF,IAAA,UAAA,CAAA;QADC,QAAQ;AAQR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,4BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,oCAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,oCAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAgBR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AASR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAUR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAUR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AASR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AA0GD,IAAA,UAAA,CAAA;QADC,QAAQ;AAyBR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAeD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAkCZ,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;IAxSgB,oBAAoB,GAAA,UAAA,CAAA;QADxC,QAAQ;AACY,KAAA,EAAA,oBAAoB,CAySxC,CAAA;IAAD,OAAC,oBAAA,CAAA;AAAA,CAzSD,CAAkD,KAAK,CAAC,SAAS,CAyShE;;AC1VD,IAAA,MAAA,kBAAA,UAAA,MAAA,EAAA;IAAoC,SAAgC,CAAA,MAAA,EAAA,MAAA,CAAA,CAAA;AAKhE,IAAA,SAAA,MAAA,CAAY,KAAkB,EAAA;QAA9B,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAUf,IAAA,CAAA;AAfW,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,SAAA,EAAA;;;;mBAAyC,IAAI;AAAC,SAAA,CAAA,CAAA;AAC9C,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,WAAA,EAAA;;;;mBAA6B,KAAK;AAAC,SAAA,CAAA,CAAA;AAC/C,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,UAAA,EAAA;;;;;AAAsB,SAAA,CAAA,CAAA;QAIlB,cAAc,CAAkD,KAAI,CAAC,CAAC;QACtE,KAAI,CAAC,KAAK,GAAG;AACT,YAAA,WAAW,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;SACjC,CAAC;QACF,KAAI,CAAC,QAAQ,GAAG;AACZ,YAAA,OAAO,EAAE,MAAM,CAAC,UAAC,IAA2B,EAAA;AACxC,gBAAA,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,aAAC,CAAC;SACL,CAAC;;KACL;AACD,IAAA,MAAA,CAAA,cAAA,CAAW,MAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YACI,OAAO;AACH,gBAAA,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACf,gBAAA,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACvB,gBAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;aAC5B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAY,MAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;SAC9C;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAY,MAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;SAC/C;;;AAAA,KAAA,CAAA,CAAA;;;;;AAEO,QAAA,KAAA,EAAA,YAAA;AACJ,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,MAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;;YAEN,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAClC,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AAED,YAAA,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;AACjC,gBAAA,OAAO,KAAK,CAAC;AAChB,aAAA;AAED,YAAA,IAAI,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;;YAEnC,OACI,eAAe,GAAG,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,EAAE,eAAe,CAAC;AAC/C,oBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EACtB;gBACE,eAAe,IAAI,CAAC,CAAC;AACxB,aAAA;YACD,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,eAAe,GAAG,KAAK,CAAC,MAAM,EAAE;;AAEhC,gBAAA,eAAe,IAAI,CAAC,CAAC;gBACrB,IAAI,eAAe,IAAI,CAAC,EAAE;;oBAEtB,WAAW,GAAG,EAAE,CAAC;AACpB,iBAAA;AAAM,qBAAA;;oBAEH,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC;AACzD,iBAAA;AACJ,aAAA;AACD,YAAA,OAAO,WAAW,CAAC;SACtB;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,UAAwB,SAAkB,EAAA;AACtC,YAAA,IAAI,KAAK,GAAQ;gBACb,CAAC,EAAE,IAAI,CAAC,OAAO;gBACf,CAAC,EAAE,IAAI,CAAC,OAAO;AACf,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,EAAE,EAAE,OAAO;AACX,gBAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,SAAS;AACxC,gBAAA,KAAK,EAAE;AACH,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,UAAU,EAAE,OAAO;AACtB,iBAAA;aACJ,CAAC;AACF,YAAA,IAAM,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;AACnE,YAAA,IAAI,SAAS,EAAE;gBACX,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAClC,gBAAA,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAC5B,KAAK,CAAC,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC7B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACjD,aAAA;AACD,YAAA,OAAO,KAAU,CAAA,aAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,KAAK,CAAG,EAAA,IAAI,CAAQ,CAAC;SACzC;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;AACI,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACxB,CAAA;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AAC1B,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBAC5B,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EACtC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAA,CACvB,CACF,EACN;SACL;;AApHW,IAAA,UAAA,CAAA;QAAX,UAAU;AAA+C,KAAA,EAAA,MAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAC9C,IAAA,UAAA,CAAA;QAAX,UAAU;AAAoC,KAAA,EAAA,MAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAgCvC,IAAA,UAAA,CAAA;QAAP,MAAM;AAEN,KAAA,EAAA,MAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAiCR,KAAA,EAAA,MAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;IAvEgB,MAAM,GAAA,UAAA,CAAA;QAD1B,QAAQ;AACY,KAAA,EAAA,MAAM,CAsH1B,CAAA;IAAD,OAAC,MAAA,CAAA;AAAA,CAtHD,CAAoC,KAAK,CAAC,SAAS,CAsHlD;;AC3ID,IAAY,iBAGX,CAAA;AAHD,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,iBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAG,CAAA;AACH,IAAA,iBAAA,CAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACV,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA;;ACqBD,IAAA,QAAA,kBAAA,UAAA,MAAA,EAAA;IAAsC,SAAkC,CAAA,QAAA,EAAA,MAAA,CAAA,CAAA;AACpE,IAAA,SAAA,QAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;AACW,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,WAAA,EAAA;;;;mBAA4B,KAAK;AAAC,SAAA,CAAA,CAAA;QAF1C,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAGS,IAAA,MAAA,CAAA,cAAA,CAAY,QAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAtB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,SAAS;AACjB,kBAAE,IAAI,CAAC,KAAK,CAAC,eAAe;AAC5B,kBAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;SAC/B;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,QAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACvB;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,QAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;SACzD;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,QAAK,CAAA,SAAA,EAAA,OAAA,EAAA;AAAjB,QAAA,GAAA,EAAA,YAAA;YACN,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM,EAAE;AACxD,gBAAA,QACI,IAAI,CAAC,KAAK,CAAC,UAAU;oBACrB,IAAI,CAAC,KAAK,CAAC,WAAW;oBACtB,IAAI,CAAC,KAAK,CAAC,UAAU;AACrB,oBAAA,CAAC,EACH;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,QACI,IAAI,CAAC,KAAK,CAAC,UAAU;oBACrB,IAAI,CAAC,KAAK,CAAC,WAAW;oBACtB,IAAI,CAAC,KAAK,CAAC,UAAU;AACrB,oBAAA,CAAC,EACH;AACL,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAW,QAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO;gBACH,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe;gBAC5C,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe;AAC5C,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC;AACrC,gBAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC;aACzC,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;gBAClB,KAAK,IACD,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,SAAS,EACd,KAAK,EAAE;wBACH,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE;wBACzC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO;qBACrD,EACD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,QAAQ,EACnD,gBAAgB,EACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM;AAClD,0BAAE,SAAS;AACX,0BAAE,UAAU,EAEpB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,CAAC,EAAE,IAAI,CAAC,KAAK,EAAA,EAEZ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAChD,CACV,CAAC;AACL,aAAA;AACD,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;gBACI,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,WAAW,EAAC,GAAG,EACf,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,SAAS,EAC1C,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAChB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAChB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACzB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EACpD,CAAA;AACF,gBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,MAAM,EAAC,SAAS,EAChB,WAAW,EAAC,KAAK,EACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,SAAS,EACvC,CAAC,EAAE,IAAI,CAAC,UAAU,EAClB,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,EAAE,EAAE,IAAI,CAAC,OAAO,EAClB,CAAA;AACF,gBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EACtC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAC7B,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,MAAM,EAAC,SAAS,EAChB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EACvB,CAAA;gBACD,KAAK,CACN,EACN;SACL;;AA/FW,IAAA,UAAA,CAAA;QAAX,UAAU;AAAmC,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAEpC,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAgBR,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAOR,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;IA9CgB,QAAQ,GAAA,UAAA,CAAA;QAD5B,QAAQ;AACY,KAAA,EAAA,QAAQ,CAqG5B,CAAA;IAAD,OAAC,QAAA,CAAA;AAAA,CArGD,CAAsC,KAAK,CAAC,SAAS,CAqGpD;;ACzHD,IAAA,iCAAA,kBAAA,YAAA;AAWI,IAAA,SAAA,iCAAA,GAAA;AARA,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,iBAAA,EAAA;;;;;AAA2C,SAAA,CAAA,CAAA;AAG3C,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,aAAA,EAAA;;;;mBAAqB,KAAK;AAAC,SAAA,CAAA,CAAA;AAG3B,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,WAAA,EAAA;;;;;AAAqC,SAAA,CAAA,CAAA;QAGjC,cAAc,CAAC,IAAI,CAAC,CAAC;KACxB;AAVD,IAAA,UAAA,CAAA;QADC,UAAU;AACgC,KAAA,EAAA,iCAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAG3C,IAAA,UAAA,CAAA;QADC,UAAU;AACgB,KAAA,EAAA,iCAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAG3B,IAAA,UAAA,CAAA;QADC,UAAU;AAC0B,KAAA,EAAA,iCAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAKzC,OAAC,iCAAA,CAAA;AAAA,CAdD,EAcC,CAAA;;ACRe,SAAA,iBAAiB,CAC7B,mBAA+B,EAC/B,IAAa,EAAA;IAEb,IAAM,6BAA6B,GAAG,6BAA6B,CAC/D,mBAAmB,CACtB,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,aAAa,KAAK,SAAS,CAAA,EAAA,CAAC,CAAC;;IAG7C,IAAM,cAAc,GAAG,6BAA6B;SAC/C,GAAG,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,aAAa,CAAf,EAAe,CAAC;AACzB,SAAA,KAAK,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;;IAGnD,IAAM,oBAAoB,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE5D,IAAI,QAAQ,GAAG,EAAE,CAAC;AAClB,IAAA,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;;AAEjC,QAAA,QAAQ,GAAG,8BAA8B,CACrC,oBAAoB,CAAC,CAAC,CAAC,EACvB,oBAAoB,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CACxD,CAAC;AACL,KAAA;;AAGD,IAAA,IAAM,qBAAqB,GAAG,cAAc,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA;AAC9C,QAAA,OAAA,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AAA5B,KAA4B,CAC/B,CAAC;;IAGF,IAAI,KAAK,GAAG,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEvD,IAAA,IAAI,cAAc,CAAC,MAAM,GAAG,6BAA6B,CAAC,MAAM,EAAE;AAC9D,QAAA,KAAK,GAAM,KAAK,GAAQ,OAAA,IAAA,6BAA6B,CAAC,MAAM;YACxD,cAAc,CAAC,MAAM,CAAA,GAAA,OAAO,CAAC;AACpC,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAEe,SAAA,uBAAuB,CACnC,SAAiB,EACjB,KAAa,EACb,UAAkB,EAClB,QAAgB,EAChB,SAAiB,EACjB,aAAqB,EAAA;IAErB,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,IAAM,gBAAgB,GAAG,YAAY,CACjC,SAAS,EACT,UAAU,EACP,QAAQ,GAAI,IAAA,CAClB,CAAC;IACF,IAAM,wBAAwB,GAAG,KAAK,IAAI,SAAS,GAAG,aAAa,CAAC,CAAC;AACrE,IAAA,IAAM,sBAAsB,GAAG,SAAS,GAAG,wBAAwB,CAAC;;AAGpE,IAAA,IAAI,gBAAgB,GAAG,CAAC,GAAG,wBAAwB,EAAE;QACjD,MAAM,GAAG,OAAO,CAAC;AACpB,KAAA;;AAEI,SAAA,IAAI,gBAAgB,GAAG,CAAC,GAAG,sBAAsB,EAAE;QACpD,MAAM,GAAG,KAAK,CAAC;AAClB,KAAA;AAED,IAAA,OAAO,MAAM,CAAC;AAClB,CAAC;AAEK,SAAU,aAAa,CACzB,SAA6B,EAC7B,QAAgB,EAChB,UAAoB,EACpB,kBAA4B,EAC5B,cAAwB,EAAA;;IAGxB,IAAI,KAAK,GAAG,SAAS,CAAC;IAEtB,IAAI,KAAK,KAAK,SAAS,EAAE;AACrB,QAAA,KAAK,GAAG,cAAc;cAChB,OAAO,CACH,OAAO,CACH,4BAA4B,CACxB,QAAQ,EACR,UAAU,EACV,kBAAkB,CACrB,CACJ,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAC7B,CAAC,KAAK,EAAE;cACT,OAAO,CACH,OAAO,CAAC,sBAAsB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CACxD,MAAM,CAAC,QAAQ,CAAC,CACnB,CACJ,CAAC,KAAK,EAAE,CAAC;AACnB,KAAA;AAED,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAEK,SAAU,4BAA4B,CACxC,QAAgB,EAChB,UAAoB,EACpB,kBAA4B,EAC5B,SAAkB,EAAA;IAElB,IAAM,aAAa,GAAG,sBAAsB,CACxC,QAAQ,EACR,UAAU,EACV,SAAS,CACZ,CAAC;IACF,IAAM,gBAAgB,GAAG,sBAAsB,CAC3C,QAAQ,EACR,kBAAkB,EAClB,SAAS,CACZ,CAAC;IAEF,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;AACrD,CAAC;SAEe,sBAAsB,CAClC,QAAgB,EAChB,UAAoB,EACpB,SAAkB,EAAA;AAElB,IAAA,IAAM,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;;IAElE,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,IAAI,UAAU,CAAC,CAAC;AACzD,CAAC;AAEe,SAAA,qBAAqB,CAAC,QAAgB,EAAE,KAAa,EAAA;AACjE,IAAA,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC/C,CAAC;SAEe,cAAc,CAC1B,SAAyB,EACzB,UAAsB,EACtB,UAAsB,EAAA;AADtB,IAAA,IAAA,UAAA,KAAA,KAAA,CAAA,EAAA,EAAA,UAAsB,GAAA,CAAA,CAAA,EAAA;AACtB,IAAA,IAAA,UAAA,KAAA,KAAA,CAAA,EAAA,EAAA,UAAsB,GAAA,CAAA,CAAA,EAAA;AAEtB,IAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjB,KAAA;AAAM,SAAA;QACH,IAAI,GAAG,GAAG,UAAU,CAAC;QACrB,IAAI,GAAG,GAAG,UAAU,CAAC;AAErB,QAAA,KAAuB,UAAS,EAAT,WAAA,GAAA,SAAS,EAAT,EAAS,GAAA,WAAA,CAAA,MAAA,EAAT,IAAS,EAAE;AAA7B,YAAA,IAAM,QAAQ,GAAA,WAAA,CAAA,EAAA,CAAA,CAAA;YACf,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACpC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;kBAChC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC;kBAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvC,SAAA;AAED,QAAA,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACpC,KAAA;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAA;AACjC,IAAA,OAAO,UAAC,KAAsB,EAAA;QAC1B,OAAO,KAAK,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC;AAC1E,KAAC,CAAC;AACN,CAAC;AAEK,SAAU,oBAAoB,CAAC,YAAoB,EAAA;IACrD,OAAO,UAAC,CAAe,EAAE,CAAe,EAAA;AACpC,QAAA,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC;AACnD,QAAA,IAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC;QACnD,IAAI,SAAS,GAAG,SAAS,EAAE;YACvB,OAAO,CAAC,CAAC,CAAC;AACb,SAAA;aAAM,IAAI,SAAS,GAAG,SAAS,EAAE;AAC9B,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;AACL,KAAC,CAAC;AACN,CAAC;AAEK,SAAU,wBAAwB,CAAC,gBAAmC,EAAA;IACxE,OAAO,UAAC,CAAe,EAAE,CAAe,EAAA;AACpC,QAAA,IAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpE,QAAA,IAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AACpE,QAAA,IACI,CAAC,YAAY,IAAI,YAAY;AAC7B,aAAC,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,EAClC;AACE,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;AAAM,aAAA,IAAI,YAAY,EAAE;AACrB,YAAA,OAAO,CAAC,CAAC;AACZ,SAAA;AAAM,aAAA;YACH,OAAO,CAAC,CAAC,CAAC;AACb,SAAA;AACL,KAAC,CAAC;AACN,CAAC;AAEe,SAAA,eAAe,CAAC,CAAe,EAAE,CAAe,EAAA;AAC5D,IAAA,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE;AACnB,QAAA,OAAO,CAAC,CAAC;AACZ,KAAA;AAAM,SAAA,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAE;QAC1B,OAAO,CAAC,CAAC,CAAC;AACb,KAAA;AACD,IAAA,OAAO,CAAC,CAAC;AACb;;AClNM,SAAU,0BAA0B,CACtC,WAA8B,EAAA;AAE9B,IAAA,IAAM,MAAM,GAAa;QACrB,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;KACZ,CAAC;IAEF,IAAM,GAAG,GAAwC,EAAE,CAAC;IAEpD,IAAI,QAAQ,GAAG,CAAC,CAAC;;;IAIjB,WAAW;AACN,SAAA,IAAI,CACD,UAAC,CAAkB,EAAE,CAAkB,EAAA;AACnC,QAAA,OAAA,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,CAAA;AAArC,KAAqC,CAC5C;SACA,OAAO,CAAC,UAAC,MAAuB,EAAA;QAC7B,IAAI,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,SAAS,EAAE;AACxC,YAAA,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC5D,YAAA,QAAQ,EAAE,CAAC;AACd,SAAA;AACL,KAAC,CAAC,CAAC;AAEP,IAAA,OAAO,GAAG,CAAC;AACf;;IC/BY,UAQX;AARD,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,SAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC,CAAA;AAClC,IAAA,SAAA,CAAA,QAAA,CAAA,GAAA,SAAkB,CAAA;AAClB,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,QAAgB,CAAA;AAChB,IAAA,SAAA,CAAA,YAAA,CAAA,GAAA,aAA0B,CAAA;AAC1B,IAAA,SAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,SAAA,CAAA,iBAAA,CAAA,GAAA,kBAAoC,CAAA;AACxC,CAAC,EARW,SAAS,KAAT,SAAS,GAQpB,EAAA,CAAA,CAAA,CAAA;AAYD,IAAA,aAAA,kBAAA,UAAA,MAAA,EAAA;IAA2C,SAG1C,CAAA,aAAA,EAAA,MAAA,CAAA,CAAA;AACG,IAAA,SAAA,aAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;;;;;AAeD,QAAA,KAAA,EAAA,UAAiB,MAA2B,EAAA;YACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,KAAK,GAAA,CAAC,CAAC,CAAC;SACjD;;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,aAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YAAV,IAIC,KAAA,GAAA,IAAA,CAAA;YAHG,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;AACzC,iBAAA,MAAM,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,SAAS,CAAA,EAAA,CAAC;AAC1D,iBAAA,GAAG,CAAC,UAAA,EAAE,EAAA,EAAI,QAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAd,EAAe,CAAC,CAAC;SACnC;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,aAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;;AACN,YAAA,OAAA,EAAA,GAAA,EAAA;gBACI,EAAC,CAAA,SAAS,CAAC,cAAc,CAAG,GAAA;oBACxB,KAAK,GACD,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EAAgB,gBAAgB,EAAA;;AAE3B,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,cAAc,CAAC;AACrC,4BAAA,IAAI,CAAC,UAAU,EAAE,CAClB,CACV;oBACD,KAAK,EAAE,SAAS,CAAC,cAAc;AAClC,iBAAA;gBACD,EAAC,CAAA,SAAS,CAAC,MAAM,CAAG,GAAA;AAChB,oBAAA,KAAK,GACD,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;AAEK,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CACnD,CACV;oBACD,KAAK,EAAE,SAAS,CAAC,MAAM;AAC1B,iBAAA;gBACD,EAAC,CAAA,SAAS,CAAC,KAAK,CAAG,GAAA;AACf,oBAAA,KAAK,GACD,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;AAEK,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAClD,CACV;oBACD,KAAK,EAAE,SAAS,CAAC,KAAK;AACzB,iBAAA;gBACD,EAAC,CAAA,SAAS,CAAC,UAAU,CAAG,GAAA;AACpB,oBAAA,KAAK,GACD,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;AAEK,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC;AACjC,4BAAA,IAAI,CAAC,UAAU,EAAE,CAClB,CACV;oBACD,KAAK,EAAE,SAAS,CAAC,UAAU;AAC9B,iBAAA;gBACD,EAAC,CAAA,SAAS,CAAC,GAAG,CAAG,GAAA;AACb,oBAAA,KAAK,GACD,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;AAEK,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAChD,CACV;oBACD,KAAK,EAAE,SAAS,CAAC,GAAG;oBACpB,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC;AAC3C,iBAAA;gBACD,EAAC,CAAA,SAAS,CAAC,IAAI,CAAG,GAAA;AACd,oBAAA,KAAK,GACD,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;AAEK,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CACjD,CACV;oBACD,KAAK,EAAE,SAAS,CAAC,IAAI;AACxB,iBAAA;gBACD,EAAC,CAAA,SAAS,CAAC,eAAe,CAAG,GAAA;AACzB,oBAAA,KAAK,GACD,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;AAEK,wBAAA,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC;AACtC,4BAAA,IAAI,CAAC,UAAU,EAAE,CAClB,CACV;oBACD,KAAK,EAAE,SAAS,CAAC,eAAe;AACnC,iBAAA;AACH,gBAAA,EAAA,CAAA;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,aAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAX,QAAA,GAAA,EAAA,YAAA;YAAV,IAIC,KAAA,GAAA,IAAA,CAAA;YAHG,OAAO,IAAI,CAAC,KAAK;AACZ,iBAAA,MAAO,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,SAAS,CAAA,EAAA,CAAC;AAChE,iBAAA,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,KAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAxB,EAAwB,CAAC,CAAC;SAC3C;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,UAAkB,SAAiB,EAAA;AAC/B,YAAA,QACI,IAAI,CAAC,KAAK,CAAC,eAAe;gBAC1B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,SAAS,EACrD;SACL;;;;;;AAED,QAAA,KAAA,EAAA,UAAmB,SAAiB,EAAA;AAChC,YAAA,QACI,IAAI,CAAC,KAAK,CAAC,eAAe;gBAC1B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,UAAU,EACtD;SACL;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,QACI,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE;AACH,oBAAA,OAAO,EAAE,cAAc;AACvB,oBAAA,aAAa,EAAE,QAAQ;AACvB,oBAAA,UAAU,EAAE,CAAC;AAChB,iBAAA,EAAA;AAED,gBAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,wBAAwB,EAAG,CAAA,CACrC,EACT;SACL;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAC,CAAA,aAAA,CAAA,aAAa,EACV,EAAA,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACrB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,KAAK,EAAE,IAAI,CAAC,cAAc,EAAA,CAC5B,EACJ;SACL;;AA5ID,IAAA,MAAA,CAAA,cAAA,CAAA,aAAA,EAAA,cAAA,EAAA;;;;AAA0D,QAAA,KAAA,EAAA;AACtD,YAAA,IAAI,EAAE,6BAA6B;AACnC,YAAA,WAAW,EAAE,uBAAuB;AACpC,YAAA,MAAM,EAAE;AACJ,gBAAA,SAAS,CAAC,cAAc;AACxB,gBAAA,SAAS,CAAC,MAAM;AAChB,gBAAA,SAAS,CAAC,KAAK;AACf,gBAAA,SAAS,CAAC,GAAG;AACb,gBAAA,SAAS,CAAC,IAAI;AACd,gBAAA,SAAS,CAAC,eAAe;AAC5B,aAAA;AACJ,SAAA;AAAC,KAAA,CAAA,CAAA;AAGF,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAGZ,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAsER,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,aAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;IA5GgB,aAAa,GAAA,UAAA,CAAA;QADjC,QAAQ;AACY,KAAA,EAAA,aAAa,CAqJjC,CAAA;IAAD,OAAC,aAAA,CAAA;AAAA,CArJD,CAA2C,KAAK,CAAC,SAAS,CAqJzD;;SClLe,0BAA0B,GAAA;;AACtC,IAAA,OAAA,EAAA,GAAA,EAAA;AACI,QAAA,EAAA,CAAC,SAAS,CAAC,MAAM,CAAA,GAAG,QAAQ;AAC5B,QAAA,EAAA,CAAC,SAAS,CAAC,cAAc,CAAA,GAAG,QAAQ;AACpC,QAAA,EAAA,CAAC,SAAS,CAAC,KAAK,CAAA,GAAG,QAAQ;AAC3B,QAAA,EAAA,CAAC,SAAS,CAAC,UAAU,CAAA,GAAG,QAAQ;AAChC,QAAA,EAAA,CAAC,SAAS,CAAC,GAAG,CAAA,GAAG,QAAQ;AACzB,QAAA,EAAA,CAAC,SAAS,CAAC,IAAI,CAAA,GAAG,QAAQ;AAC1B,QAAA,EAAA,CAAC,SAAS,CAAC,eAAe,CAAA,GAAG,QAAQ;AACvC,QAAA,EAAA,CAAA;AACN;;ACOA,IAAA,yBAAA,kBAAA,UAAA,MAAA,EAAA;IAAuD,SAEtD,CAAA,yBAAA,EAAA,MAAA,CAAA,CAAA;AAFD,IAAA,SAAA,yBAAA,GAAA;;KAmEC;;;;;AAvDG,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,EAAA;AACvC,gBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAsB,EAAA,aAAA,CAAA;gBACzD,KAKI,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAA,qOAAA,CAAA;gBACJ,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AACN,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;;AAEI,oBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;AACI,wBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;AACI,4BAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,EAAA,EAAA,oBAAA,CAEzC,CACR;AACL,wBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;4BACI,KACI,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,EAGvC,EAAA,sBAAA,CAAA;AAGR,4BAAA,6EAAA,CAAA;AACL,wBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;4BACI,KAAQ,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,EAExC,EAAA,mBAAA,CAAA;AAER,4BAAA,uCAAA,CAAA;AACL,wBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;AACI,4BAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAA,EAAA,kBAAA,CAEvC,CACR;AACL,wBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;AACI,4BAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EAAQ,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAA,EAAA,kBAAA,CAEvC,CACR;AACL,wBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;4BACI,KAAQ,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,EAEtC,EAAA,iBAAA,CAAA;6DAER,CACJ,CACH,CACJ,EACR;SACL;;AA/DD,IAAA,MAAA,CAAA,cAAA,CAAA,yBAAA,EAAA,cAAA,EAAA;;;;AAA6D,QAAA,KAAA,EAAA;AACzD,YAAA,aAAa,EAAE,kBAAkB;AACjC,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,YAAY,EAAE,iBAAiB;AAC/B,YAAA,WAAW,EAAE,gBAAgB;AAC7B,YAAA,WAAW,EAAE,wBAAwB;AACrC,YAAA,UAAU,EAAE,eAAe;AAC9B,SAAA;AAAC,KAAA,CAAA,CAAA;IAyDN,OAAC,yBAAA,CAAA;AAAA,CAnED,CAAuD,KAAK,CAAC,SAAS,CAmErE,CAAA;;ACrED,IAAA,QAAA,kBAAA,UAAA,MAAA,EAAA;IAAsC,SAAkC,CAAA,QAAA,EAAA,MAAA,CAAA,CAAA;AAGpE,IAAA,SAAA,QAAA,CAAY,KAAoB,EAAA;QAAhC,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;AALW,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,WAAA,EAAA;;;;mBAAqB,KAAK;AAAC,SAAA,CAAA,CAAA;QAInC,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAED,IAAA,MAAA,CAAA,cAAA,CAAW,QAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YACI,OAAO;AACH,gBAAA,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACf,gBAAA,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACf,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;AACvB,gBAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;aAC5B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;AACI,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACxB,CAAA;gBACF,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EACtC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAA,CACvB,CACF,EACN;SACL;;AAxCW,IAAA,UAAA,CAAA;QAAX,UAAU;AAA4B,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IADtB,QAAQ,GAAA,UAAA,CAAA;QAD5B,QAAQ;AACY,KAAA,EAAA,QAAQ,CA0C5B,CAAA;IAAD,OAAC,QAAA,CAAA;AAAA,CA1CD,CAAsC,KAAK,CAAC,SAAS,CA0CpD,CAAA;;ACjBD,IAAM,yBAAyB,GAAG,qBAAqB,CAAC;AACxD,IAAM,wBAAwB,GAAG,WAAW,CAAC;AAC7C,IAAM,sBAAsB,GAAG,SAAS,CAAC;AACzC,IAAM,wBAAwB,GAAG,WAAW,CAAC;AAG7C,IAAA,qBAAA,kBAAA,UAAA,MAAA,EAAA;IAAmD,SAGlD,CAAA,qBAAA,EAAA,MAAA,CAAA,CAAA;AAiCG,IAAA,SAAA,qBAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;AAnCD,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,oBAAA,EAAA;;;;mBAAoE,EAAE;AAAC,SAAA,CAAA,CAAA;AACvE,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,kBAAA,EAAA;;;;mBAA8D,EAAE;AAAC,SAAA,CAAA,CAAA;AACjE,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,oBAAA,EAAA;;;;mBAAyC,EAAE;AAAC,SAAA,CAAA,CAAA;AAE5C,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,KAAA,EAAA;;;;;AAAoC,SAAA,CAAA,CAAA;AACpC,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,cAAA,EAAA;;;;mBAAgC,KAAK;AAAC,SAAA,CAAA,CAAA;AAEtC,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,sBAAA,EAAA;;;;mBAA+B,EAAE;AAAC,SAAA,CAAA,CAAA;AAClC,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,eAAA,EAAA;;;;mBAAwB,CAAC;AAAC,SAAA,CAAA,CAAA;AAC1B,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,6BAAA,EAAA;;;;AAAsC,YAAA,KAAA,EAAA;gBAClC,EAAE;gBACF,GAAG;gBACH,GAAG;gBACH,GAAG;gBACH,GAAG;gBACH,IAAI;gBACJ,IAAI;gBACJ,IAAI;gBACJ,KAAK;gBACL,KAAK;AACR,aAAA;AAAC,SAAA,CAAA,CAAA;AACF,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,6BAAA,EAAA;;;;AAAsC,YAAA,KAAA,EAAA,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAAC,SAAA,CAAA,CAAA;AAC3E,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,aAAA,EAAA;;;;mBAAsB,EAAE;AAAC,SAAA,CAAA,CAAA;AACzB,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,YAAA,EAAA;;;;mBAAqB,EAAE;AAAC,SAAA,CAAA,CAAA;AACxB,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,cAAA,EAAA;;;;mBAAuB,EAAE;AAAC,SAAA,CAAA,CAAA;AAC1B,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,YAAA,EAAA;;;;mBAAqB,EAAE;AAAC,SAAA,CAAA,CAAA;AACxB,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,cAAA,EAAA;;;;mBAAuB,EAAE;AAAC,SAAA,CAAA,CAAA;QAQtB,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;;;;;AAGD,QAAA,KAAA,EAAA,UAAc,GAAe,EAAA;AACzB,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;SAClB;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACtB,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAChD,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;YACI,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,CAAC;;YAEvE,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;;;;;;AAGD,QAAA,KAAA,EAAA,UAA0B,KAAa,EAAA;AACnC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACtB,gBAAA,8BAA8B,CAC1B,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,KAAK,EACL,IAAI,CAAC,YAAY,CACpB,CAAC;AACL,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAoB,CAAuB,EAAA;AACvC,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC5B,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAkB,CAAuB,EAAA;AACrC,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7B,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAsB,CAAsB,EAAA;YAD5C,IAgGC,KAAA,GAAA,IAAA,CAAA;;YA7FG,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE3B,YAAA,IAAM,MAAM,GAAG,CAAC,CAAC,MAAoB,CAAC;YACtC,IAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACrD,IAAM,aAAa,GAAkB,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YACtE,IAAI,WAAW,GAAkB,IAAI,CAAC;YACtC,IAAI,aAAa,GAAkB,IAAI,CAAC;YAExC,IAAI,aAAa,KAAK,IAAI,EAAE;gBACxB,IAAM,mBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AACjE,gBAAA,IAAI,mBAAiB,EAAE;;;oBAGnB,IAAM,uBAAuB,GAAGA,UAAC,CAAC,IAAI,CAClC,IAAI,CAAC,kBAAkB,EACvB,UAAA,CAAC,EAAA;AACG,wBAAA,OAAA,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AACd,4BAAA,mBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;AACtC,4BAAA,CAAC,KAAK,mBAAiB,CAAA;AAFvB,qBAEuB,CAC9B,CAAC;AACF,oBAAA,mBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC;AACnC,oBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACvB,wBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CACjB,mBAAiB,CAAC,aAAa,EAC/B,mBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EACpC,uBAAuB,KAAA,IAAA,IAAvB,uBAAuB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAvB,uBAAuB,CAAE,aAAa,EACtC,uBAAuB,aAAvB,uBAAuB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAvB,uBAAuB,CAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAC3C,MAAM,CAAC,YAAA;AACH,4BAAA,IAAI,KAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACtB,gCAAA,8BAA8B,CAC1B,KAAI,CAAC,KAAK,CAAC,SAAS,EACpB,CAAC,mBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CACvC,CAAC;AACL,6BAAA;AACD,4BAAA,mBAAiB,CAAC,SAAS,GAAG,IAAI,CAAC;yBACtC,CAAC,EACF,MAAM,CAAC,YAAA;4BACH,OAAA,KAAI,CAAC,eAAe,CAChB,mBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CACrC,CAAA;yBAAA,CACJ,EACD,SAAS,EACT,SAAS,EACT,mBAAiB,CAAC,aAAa,CAAC,CAAC;4BAC7B,mBAAiB,CAAC,KAAK,CAAC,UAAU;AAClC,8BAAE,QAAQ;8BACR,KAAK,CACd,CAAC;AACL,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;AAChD,aAAA;YAED,IAAI,WAAW,KAAK,IAAI,EAAE;gBACtB,IAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC3D,gBAAA,IAAI,eAAe,EAAE;AACjB,oBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACvB,wBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CACjB,eAAe,CAAC,OAAO,EACvB,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAClC,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,CACT,CAAC;AACL,qBAAA;AACJ,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACpD,aAAA;YAED,IAAI,aAAa,KAAK,IAAI,EAAE;gBACxB,IAAM,iBAAiB,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AACjE,gBAAA,IAAI,iBAAiB,EAAE;AACnB,oBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACvB,wBAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CACjB,iBAAiB,CAAC,OAAO,EACzB,iBAAiB,CAAC,KAAK,CAAC,IAAI;AACxB,8BAAE,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO;AACtC,8BAAE,SAAS,EACf,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,CACT,CAAC;AACL,qBAAA;AACJ,iBAAA;AACJ,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAA0B,CAAsB,EAAA;AAC5C,YAAA,IAAM,MAAM,GAAG,CAAC,CAAC,MAAiB,CAAC;YAEnC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;gBACxC,IAAI,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;AACxD,aAAA;SACJ;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAE9C,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;AACtB,gBAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAChD,aAAA;SACJ;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;;AAEI,YAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,YAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACtC,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpE;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAgB,CAAC,CAAC;AAClD,YAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAc,CAAC,CAAC;SACjD;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpE;;;;;;AAED,QAAA,KAAA,EAAA,UAAiB,KAAa,EAAA;AAC1B,YAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC1D;;;;;;AAED,QAAA,KAAA,EAAA,UAAsB,KAAa,EAAE,IAAY,EAAE,UAAsB,EAAA;AAAtB,YAAA,IAAA,UAAA,KAAA,KAAA,CAAA,EAAA,EAAA,UAAsB,GAAA,CAAA,CAAA,EAAA;AACrE,YAAA,OAAO,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;SACpE;;;;;;AAED,QAAA,KAAA,EAAA,UACI,UAAoB,EACpB,SAAiB,EACjB,YAAoB,EAAA;AAEpB,YAAA,IAAI,GAAW,CAAC;YAChB,IAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAChC,UAAA,CAAC,EAAI,EAAA,OAAA,SAAS,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,CAAhC,EAAgC,CACxC,CAAC;YACF,IAAI,CAAC,YAAY,EAAE;gBACf,GAAG,GAAG,EAAE,CAAC;AACT,gBAAA,OAAO,SAAS,GAAG,GAAG,GAAG,YAAY,GAAG,CAAC,EAAE;oBACvC,GAAG,IAAI,EAAE,CAAC;AACb,iBAAA;AACJ,aAAA;AAAM,iBAAA;gBACH,GAAG,GAAG,YAAY,CAAC;AACtB,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;SACd;;;;;;AAED,QAAA,KAAA,EAAA,UACI,YAAoB,EACpB,SAAiB,EACjB,cAAuB,EAAA;YAEvB,IAAM,GAAG,GAAsD,EAAE,CAAC;YAClE,IAAI,QAAQ,GAAG,YAAY,CAAC;YAC5B,OAAO,QAAQ,GAAG,SAAS,EAAE;gBACzB,IAAI,KAAK,GAAuB,SAAS,CAAC;;;AAI1C,gBAAA,IACI,cAAc;oBACd,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC;oBAC7C,QAAQ,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,EACrC;AACE,oBAAA,KAAK,GAAG,QAAQ,GAAG,EAAE,CAAC;AACzB,iBAAA;gBACD,GAAG,CAAC,IAAI,CAAC;AACL,oBAAA,QAAQ,EAAE,QAAQ;AAClB,oBAAA,KAAK,EAAA,KAAA;AACR,iBAAA,CAAC,CAAC;gBACH,QAAQ,IAAI,YAAY,CAAC;AAC5B,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;SACd;;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;AAA7B,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAC7B,IAAI,CAAC,2BAA2B,EAChC,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,EAAE,CACL,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;AAA7B,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAC7B,IAAI,CAAC,2BAA2B,EAChC,IAAI,CAAC,IAAI,EACT,EAAE,CACL,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAuB,CAAA,SAAA,EAAA,yBAAA,EAAA;AAAnC,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAC7B,IAAI,CAAC,2BAA2B,EAChC,IAAI,CAAC,UAAU,EACf,EAAE,CACL,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAM,CAAA,SAAA,EAAA,QAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YACN,IAAI,GAAG,GAAW,EAAE,CAAC;;YAErB,GAAG,CAAC,IAAI,CAAC;AACL,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,KAAK,EAAE,GAAG;AACb,aAAA,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC;AACL,gBAAA,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;AACzB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI;AAChC,aAAA,CAAC,CAAC;;YAEH,GAAG,GAAG,GAAG,CAAC,MAAM,CACZ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CACrE,CAAC;AACF,YAAA,OAAO,GAAG,CAAC;SACd;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAM,CAAA,SAAA,EAAA,QAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,SAAS,CACjB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,iBAAiB,CACzB,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,SAAS,CACjB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,uBAAuB,CAC/B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAI,CAAA,SAAA,EAAA,MAAA,EAAA;AAAhB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,QACI,IAAI,CAAC,KAAK,CAAC,IAAI;gBACf,IAAI,CAAC,KAAK,CAAC,SAAS;AACf,qBAAA,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM,CAAA,EAAA,CAAC;AACrD,qBAAA,MAAM,CACH,UAAC,GAAW,EAAE,IAAkB,EAAA;oBAC5B,OAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;AAAzB,iBAAyB,EAC7B,CAAC,CACJ,EACP;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB;AAChC,kBAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC1D,kBAAE,IAAI,CAAC,IAAI,CAAC;SACnB;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;SACzE;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAtB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,QACI,IAAI,CAAC,KAAK,CAAC,UAAU;gBACrB,IAAI,CAAC,KAAK,CAAC,SAAS;AACf,qBAAA,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM,CAAA,EAAA,CAAC;AACrD,qBAAA,MAAM,CACH,UAAC,GAAW,EAAE,IAAkB,EAAA;oBAC5B,OAAA,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;AAAzB,iBAAyB,EAC7B,CAAC,CACJ,EACP;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;AAA7B,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB;AAChC,kBAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAChE,kBAAE,IAAI,CAAC,UAAU,CAAC;SACzB;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAArB,QAAA,GAAA,EAAA,YAAA;YAAV,IAUC,KAAA,GAAA,IAAA,CAAA;AATG,YAAA,QACI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;AAChB,iBAAA,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM,CAAA,EAAA,CAAC;AACrD,iBAAA,IAAI,CAAC,UAAA,QAAQ,EAAA,EAAI,OAAA,QAAQ,CAAC,KAAK,GAAG,KAAI,CAAC,IAAI,CAAA,EAAA,CAAC;AAC7C,kBAAE,KAAK;kBACL,EAAE;AACR,gBAAA,IAAI,CAAC,WAAW;gBAChB,IAAI,CAAC,WAAW,EAClB;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;YAAV,IAUC,KAAA,GAAA,IAAA,CAAA;AATG,YAAA,QACI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;AAChB,iBAAA,MAAM,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM,CAAA,EAAA,CAAC;AACrD,iBAAA,IAAI,CAAC,UAAA,QAAQ,EAAA,EAAI,OAAA,QAAQ,CAAC,KAAK,GAAG,KAAI,CAAC,UAAU,CAAA,EAAA,CAAC;AACnD,kBAAE,KAAK;kBACL,EAAE;AACR,gBAAA,IAAI,CAAC,iBAAiB;gBACtB,IAAI,CAAC,WAAW,EAClB;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;AAA/B,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;SAC5D;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAtB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,mBAAmB,CAAC;SAC5D;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC;SAChE;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;SAC/D;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAA1B,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,GAAG,CAAC;SAC3C;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;SAC/D;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;AAA7B,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,GAAG,CAAC;SAC9C;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;AAA/B,QAAA,GAAA,EAAA,YAAA;;AAEN,YAAA,QACI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;gBACzD,IAAI,CAAC,WAAW,EAClB;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;YACN,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,QACI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;AACrB,qBAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB;AAC1B,wBAAA,IAAI,CAAC,mBAAmB;wBACxB,CAAC,GAAG,IAAI,CAAC,aAAa;wBACtB,IAAI,CAAC,YAAY,CAAC;AAC1B,oBAAA,CAAC,EACH;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,QACI,IAAI,CAAC,KAAK,CAAC,SAAS;qBACnB,IAAI,CAAC,oBAAoB;AACtB,wBAAA,IAAI,CAAC,mBAAmB;wBACxB,CAAC,GAAG,IAAI,CAAC,aAAa;AACtB,wBAAA,IAAI,CAAC,YAAY,CAAC,EACxB;AACL,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAM,CAAA,SAAA,EAAA,QAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;YAEnE,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC1B,OAAO,IAAI,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC;AAC9D,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;SAC3C;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAM,CAAA,SAAA,EAAA,QAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YACN,QACI,IAAI,CAAC,WAAW;AAChB,gBAAA,IAAI,CAAC,4BAA4B;gBACjC,IAAI,CAAC,WAAW,EAClB;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,4BAA4B,CAAC;SAC/D;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAA4B,CAAA,SAAA,EAAA,8BAAA,EAAA;AAAxC,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;SACrD;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;AAAjB,QAAA,GAAA,EAAA,YAAA;;AAEN,YAAA,OAAO,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SAC/B;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;AAAjB,QAAA,GAAA,EAAA,YAAA;YACN,QACI,IAAI,CAAC,oBAAoB;AACzB,gBAAA,IAAI,CAAC,WAAW;AAChB,gBAAA,IAAI,CAAC,aAAa;gBAClB,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC;AACzC,iBAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAC1C;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;SACjE;;;AAAA,KAAA,CAAA,CAAA;AAGS,IAAA,MAAA,CAAA,cAAA,CAAI,qBAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;;AAApB,QAAA,GAAA,EAAA,YAAA;YAAV,IA0DC,KAAA,GAAA,IAAA,CAAA;YAzDG,IAAM,kBAAkB,GAAkB,EAAE,CAAC;YAE7C,IAAI,KAAK,GAAG,CAAC,CAAC;AAEd,YAAA,IAAI,QAAQ,GAAGA,UAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAC,MAAkB,EAAA;AACxD,gBAAA,IAAM,OAAO,GAAG;AACZ,oBAAA,KAAK,EAAA,KAAA;oBACL,GAAG,EAAE,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;iBACxC,CAAC;;gBAGF,KAAK,GAAG,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEvC,gBAAA,OAAO,OAAO,CAAC;AACnB,aAAC,CAAC,CAAC;;AAGH,YAAA,IAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAA,KAAA,EAAE,GAAG,EAAA,GAAA,EAAE,CAAC,CAAC;;AAG9B,YAAA,QAAQ,CAAC,IAAI,CACT,UACI,CAAiC,EACjC,CAAiC,EAAA;AAEjC,gBAAA,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAC7B,aAAC,CACJ,CAAC;AAEF,YAAA,QAAQ,CAAC,OAAO,CACZ,UAAC,OAAuC,EAAE,KAAa,EAAA;gBACnD,kBAAkB,CAAC,IAAI,CACnB,KAAA,CAAA,aAAA,CAAC,QAAQ,EACL,EAAA,GAAG,EAAE,UAAA,iBAAiB,EAAA;wBAClB,IAAI,iBAAiB,KAAK,IAAI,EAAE;AAC5B,4BAAA,KAAI,CAAC,kBAAkB,CACnB,KAAK,CACR,GAAG,iBAAiB,CAAC;AACzB,yBAAA;qBACJ,EACD,KAAK,EAAC,SAAS,EACf,CAAC,EAAE,KAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,EAC7B,CAAC,EAAE,KAAI,CAAC,KAAK,EACb,MAAM,EAAE,KAAI,CAAC,UAAU,EACvB,KAAK,EAAE,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,EAClC,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,QAAQ,EACzB,gBAAgB,EAAE;wBACd,yBAAyB;AACzB,wBAAA,KAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;AACrC,qBAAA,CAAC,IAAI,CAAC,GAAG,CAAC,EAAA,CACb,CACL,CAAC;AACN,aAAC,CACJ,CAAC;AAEF,YAAA,OAAO,kBAAkB,CAAC;SAC7B;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAtB,QAAA,GAAA,EAAA,YAAA;;AAEN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc;AAC5B,kBAAE,CAAC;kBACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;SACpD;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAArB,QAAA,GAAA,EAAA,YAAA;YAAV,IAwDC,KAAA,GAAA,IAAA,CAAA;AAvDG,YAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;YAC7B,IAAM,eAAe,GAAG,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,QAAsB,EAAE,CAAS,EAAA;gBAC9D,IAAM,WAAW,GACb,QAAQ,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM;AAC3C,sBAAE,CAAC,KAAI,CAAC,aAAa,CACf,QAAQ,CAAC,KAAK,EACd,KAAI,CAAC,UAAU,EACf,KAAI,CAAC,UAAU,CAClB;AACH,sBAAE,KAAI,CAAC,aAAa,CACd,QAAQ,CAAC,KAAK,EACd,KAAI,CAAC,IAAI,EACT,KAAI,CAAC,UAAU,CAClB,CAAC;gBAEZ,IAAM,UAAU,GAAG,KAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAE3D,gBAAA,QACI,KAAC,CAAA,aAAA,CAAA,QAAQ,EACL,EAAA,GAAG,EAAK,QAAQ,CAAC,KAAK,GAAA,GAAA,IAClB,QAAQ,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM;AAC3C,0BAAE,QAAQ;AACV,0BAAE,KAAK,CACb,EACF,GAAG,EAAE,UAAC,iBAA2B,EAAA;wBAC7B,IAAI,iBAAiB,KAAK,IAAI,EAAE;AAC5B,4BAAA,KAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC;AAClD,yBAAA;AACL,qBAAC,EACD,CAAC,EAAE,KAAI,CAAC,KAAK,GAAG,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC7C,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,UAAU,EACN,KAAI,CAAC,KAAK,CAAC,SAAS;yBACnB,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,CACpC,QAAQ,CAAC,KAAK,CACjB;4BACG,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,CACtC,QAAQ,CAAC,KAAK,CACjB,CAAC;AACF,0BAAE,CAAC;0BACD,GAAG,EAEb,eAAe,EAAE,eAAe,EAChC,KAAK,EAAE,QAAQ,CAAC,KAAK,EACrB,SAAS,EAAE,QAAQ,CAAC,KAAK,EACzB,gBAAgB,EAAE;wBACd,yBAAyB;AACzB,wBAAA,KAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;qBACjC,CAAC,IAAI,CAAC,GAAG,CAAC,EACX,IAAI,EAAE,QAAQ,EAChB,CAAA,EACJ;AACN,aAAC,CAAC,CAAC;SACN;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,qBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;YAAV,IA4BC,KAAA,GAAA,IAAA,CAAA;AA3BG,YAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAkB,EAAE,KAAa,EAAA;gBAC5D,IAAM,CAAC,GAAG,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3C,gBAAA,IAAM,KAAK,GAAG,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACjD,QACI,KAAC,CAAA,aAAA,CAAA,MAAM,EACH,EAAA,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,UAAC,eAAuB,EAAA;wBACzB,IAAI,eAAe,KAAK,IAAI,EAAE;AAC1B,4BAAA,KAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC;AAClD,yBAAA;qBACJ,EACD,CAAC,EAAE,KAAI,CAAC,KAAK,GAAG,CAAC,EACjB,CAAC,EAAE,KAAI,CAAC,OAAO,EACf,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,KAAI,CAAC,YAAY,EACzB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,UAAU,EAAE,MAAM,CAAC,UAAU,EAC7B,gBAAgB,EAAE;wBACd,yBAAyB;AACzB,wBAAA,KAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;qBACnC,CAAC,IAAI,CAAC,GAAG,CAAC,EACX,IAAI,EAAE,MAAM,EACd,CAAA,EACJ;AACN,aAAC,CAAC,CAAC;SACN;;;AAAA,KAAA,CAAA,CAAA;;;;;eAED,UACI,CAAS,EACT,IAAY,EACZ,KAAa,EACb,SAA6B,EAC7B,SAAkB,EAClB,MAAoB,EAAA;AAApB,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAoB,GAAA,GAAA,CAAA,EAAA;AAEpB,YAAA,IAAI,KAAK,CAAC;AACV,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;gBAChC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC7D,aAAA;AAAM,iBAAA;AACH,gBAAA,KAAK,GAAG,SAAS;AACb,sBAAK,MAAM,GAAA,GAAA,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc;wBAClC,EAAE,CAAA,GAAA,GAAA,GAAI,SAAS,GAAY,YAAA;sBAC5B,MAAM,GAAA,GAAA,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAA,GAAA,YAAY,CAAC;AAClE,aAAA;AACD,YAAA,IAAM,aAAa,GAAG,SAAS,KAAK,iBAAiB,CAAC,MAAM,CAAC;AAE7D,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,OAAO,EAAA,EACJ,GAAG,EAAE,oBAAA,IAAqB,aAAa,GAAG,QAAQ,GAAG,KAAK,CAAE,EAC5D,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EACjC,CAAC,EAAE,CAAC,EACJ,MAAM,EAAE,IAAI,CAAC,WAAW,EACxB,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,IAAI,EAChB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,IAAI,EACd,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAClD,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,KAAK,EAAA,CACd,EACJ;SACL;;;;;;eAED,UAAc,CAAS,EAAE,SAA6B,EAAA;AAClD,YAAA,IAAM,UAAU,GAAG,SAAS,KAAK,iBAAiB,CAAC,GAAG,CAAC;AAEvD,YAAA,QACI,KAAC,CAAA,aAAA,CAAA,OAAO,EACJ,EAAA,GAAG,EAAE,oBAAqB,IAAA,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAE,EACzD,CAAC,EAAE,IAAI,CAAC,KAAK,EACb,CAAC,EAAE,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAC1C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC3B,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,CAAC,EACb,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAC3B,KAAK,EAAE,IAAI,CAAC,MAAM,EAClB,WAAW,EAAE,UAAU,EAAA,CACzB,EACJ;SACL;;;;;;AAED,QAAA,KAAA,EAAA,UAAkB,GAAW,EAAE,QAAgB,EAAE,YAAoB,EAAA;YACjE,IAAI,KAAK,GAAW,EAAE,CAAC;;YAGvB,KAAK,CAAC,IAAI,CAAC;AACP,gBAAA,QAAQ,EAAE,CAAC;AACX,gBAAA,KAAK,EAAE,GAAG;AACb,aAAA,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC;AACP,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,KAAK,EAAE,QAAQ;AAClB,aAAA,CAAC,CAAC;;AAEH,YAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAEpE,YAAA,OAAO,KAAK,CAAC;SAChB;;AAES,IAAA,MAAA,CAAA,cAAA,CAAW,qBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;SAChD;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAW,qBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,mBAAmB;AAC3B,kBAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS;AAC1B,kBAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;SAC9B;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,UAAuB,SAA6B,EAAA;;AAEhD,YAAA,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;;AAGlC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;gBAC3B,UAAU;oBACN,SAAS,KAAK,iBAAiB,CAAC,MAAM;0BAChC,IAAI,CAAC,YAAY;0BACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5C,aAAA;AAED,YAAA,OAAO,UAAU,CAAC;SACrB;;;;;;AAED,QAAA,KAAA,EAAA,UAA6B,KAAa,EAAA;AACtC,YAAA,OAAO,EAAG,GAAA,sBAAsB,GAAG,KAAO,CAAC;SAC9C;;;;;;AAED,QAAA,KAAA,EAAA,UAA+B,KAAa,EAAA;AACxC,YAAA,OAAO,EAAG,GAAA,wBAAwB,GAAG,KAAO,CAAC;SAChD;;;;;;AAED,QAAA,KAAA,EAAA,UAA+B,KAAa,EAAA;AACxC,YAAA,OAAO,EAAG,GAAA,wBAAwB,GAAG,KAAO,CAAC;SAChD;;;;;;AAED,QAAA,KAAA,EAAA,UAAuB,OAAe,EAAA;AAClC,YAAA,OAAO,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;SAC7D;;;;;;AAED,QAAA,KAAA,EAAA,UAAyB,OAAe,EAAA;AACpC,YAAA,OAAO,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;SAC/D;;;;;;AAED,QAAA,KAAA,EAAA,UAAyB,OAAe,EAAA;AACpC,YAAA,OAAO,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;SAC/D;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,IAAI,IAAI,CAAC,GAAG,EAAE;;gBAEV,IAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAY,CAAC;gBAChD,CAAC,CAAC,GAAG,CAAC;AACD,qBAAA,IAAI,CAAC,GAAG,GAAG,yBAAyB,CAAC;AACrC,qBAAA,MAAM,EAAE,CAAC;AACd,gBAAA,OAAO,GAAG,CAAC;AACd,aAAA;AAAM,iBAAA;gBACH,OAAO,QAAQ,CAAC,eAAe,CAC3B,4BAA4B,EAC5B,KAAK,CACR,CAAC;AACL,aAAA;SACJ;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,WAAW,EAAE,IAAI,CAAC,WAAW,EAAA;AAC9B,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,KAAK,EAAC,4BAA4B,EAClC,GAAG,EAAE,IAAI,CAAC,GAAU,EACpB,KAAK,EAAE,IAAI,CAAC,QAAQ,EACpB,MAAM,EAAE,IAAI,CAAC,SAAS,EACtB,SAAS,EAAC,kBAAkB,EAC5B,YAAY,EAAE,IAAI,CAAC,eAAe,EAAA;AAElC,oBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,IAAI,EAAC,SAAS,EACd,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,IAAI,CAAC,QAAQ,EACpB,MAAM,EAAE,IAAI,CAAC,SAAS,EACtB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAC/B,WAAW,EAAE,IAAI,CAAC,qBAAqB,EACzC,CAAA;oBAQF,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,IAAI,EAAC,SAAS,EACd,CAAC,EAAE,IAAI,CAAC,KAAK,EACb,CAAC,EAAE,IAAI,CAAC,KAAK,EACb,MAAM,EAAE,IAAI,CAAC,UAAU,EACvB,KAAK;;AAED,wBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAE7B,CAAA;AACD,oBAAA,IAAI,CAAC,SAAS;AACd,oBAAA,IAAI,CAAC,OAAO;AACZ,oBAAA,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,GAAG,CAAC;AACvD,oBAAA,IAAI,CAAC,aAAa;wBACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,CAAC;oBACpD,IAAI,CAAC,KAAK,CAAC,SAAS;wBACjB,IAAI,CAAC,KAAK,CACN,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,MAAM,EACX,iBAAiB,CAAC,GAAG,EACrB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,cAAc,CACtB;oBACJ,IAAI,CAAC,KAAK,CAAC,SAAS;AACjB,wBAAA,IAAI,CAAC,mBAAmB;AACxB,wBAAA,IAAI,CAAC,KAAK,CACN,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,YAAY,EACjB,iBAAiB,CAAC,MAAM,EACxB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,iBAAiB,CACzB,CACH,CACJ,EACR;SACL;;AA5zBD,IAAA,MAAA,CAAA,cAAA,CAAA,qBAAA,EAAA,cAAA,EAAA;;;;AAAkE,QAAA,KAAA,EAAA;AAC9D,YAAA,SAAS,EAAE,IAAI;AAClB,SAAA;AAAC,KAAA,CAAA,CAAA;AAQF,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,KAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAKZ,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAKZ,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AASZ,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAKZ,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAKZ,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAgGZ,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAOZ,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAkFS,IAAA,UAAA,CAAA;QAAT,QAAQ;AAMR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAMR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAMR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAgBR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAMR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAMR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAWR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,MAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAWR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAUR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAUR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAMR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAmBR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAQR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAMR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAGR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAQR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAGS,IAAA,UAAA,CAAA;QAAT,QAAQ;AA0DR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAKR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAwDR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AA4BR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AA2ES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,qBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;IAnuBgB,qBAAqB,GAAA,UAAA,CAAA;QADzC,QAAQ;AACY,KAAA,EAAA,qBAAqB,CA61BzC,CAAA;IAAD,OAAC,qBAAA,CAAA;AAAA,CA71BD,CAAmD,KAAK,CAAC,SAAS,CA61BjE;;ACn2BD,IAAA,YAAA,kBAAA,UAAA,MAAA,EAAA;IAA0C,SAGzC,CAAA,YAAA,EAAA,MAAA,CAAA,CAAA;AAWG,IAAA,SAAA,YAAA,CAAY,KAAwB,EAAA;QAApC,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAwDf,IAAA,CAAA;AAnEW,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,eAAA,EAAA;;;;AAAuC,YAAA,KAAA,EAAA,oBAAoB,EAAE;AAAC,SAAA,CAAA,CAAA;AAC9D,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,eAAA,EAAA;;;;mBAAiC,KAAK;AAAC,SAAA,CAAA,CAAA;AAEnD,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,MAAA,EAAA;;;;;AAAgD,SAAA,CAAA,CAAA;AAChD,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,UAAA,EAAA;;;;;AAAsB,SAAA,CAAA,CAAA;QASlB,cAAc,CAGZ,KAAI,CAAC,CAAC;QAER,KAAI,CAAC,QAAQ,GAAG;YACZ,GAAG,EAAE,UAAC,IAA2B,EAAA;AAC7B,gBAAA,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;aACpB;AACD,YAAA,UAAU,EAAE,UACR,OAKC,EACD,OAAqB,EACrB,aAKC,EACD,aAA2B,EAC3B,WAAwB,EACxB,OAAoB,EACpB,UAAuB,EACvB,MAA0B,EAC1B,gBAAgC,EAAA;AADhC,gBAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA0B,GAAA,SAAA,CAAA,EAAA;AAC1B,gBAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAgC,GAAA,KAAA,CAAA,EAAA;gBAEhC,KAAI,CAAC,aAAa,GAAG;AACjB,oBAAA,OAAO,EAAA,OAAA;AACP,oBAAA,OAAO,EAAA,OAAA;AACP,oBAAA,aAAa,EAAA,aAAA;AACb,oBAAA,aAAa,EAAA,aAAA;AACb,oBAAA,WAAW,EAAA,WAAA;AACX,oBAAA,OAAO,EAAA,OAAA;AACP,oBAAA,UAAU,EAAA,UAAA;AACV,oBAAA,MAAM,EAAA,MAAA;AACN,oBAAA,gBAAgB,EAAA,gBAAA;iBACnB,CAAC;aACL;YACD,UAAU,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,CAAC,OAAO,CAAA,EAAA;YAC5C,mBAAmB,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,CAAC,gBAAgB,CAAA,EAAA;YAC9D,gBAAgB,EAAE,cAAM,OAAA,KAAI,CAAC,aAAa,CAAC,aAAa,CAAA,EAAA;AACxD,YAAA,YAAY,EAAE,YAAA;gBACV,KAAI,CAAC,aAAa,CAAC,UAAU;AACzB,oBAAA,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;aACvC;AACD,YAAA,qBAAqB,EAAE,YAAA;gBACnB,KAAI,CAAC,aAAa,CAAC,UAAU;AACzB,oBAAA,KAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;aACvC;SACJ,CAAC;;KACL;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,YAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAA1B,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;SACvC;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,YAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACpD;;;AAAA,KAAA,CAAA,CAAA;AAIS,IAAA,MAAA,CAAA,cAAA,CAAY,YAAa,CAAA,SAAA,EAAA,eAAA,EAAA;;;AAAzB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,qBAAqB,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACrB,IAAI,CAAC,aAAa,CACrB,EAAA,EAAA,OAAO,EAAO,QAAA,CAAA,EAAA,EAAA,IAAI,CAAC,aAAa,CAAC,aAAc,KACjD,CAAC;SACN;;;AAAA,KAAA,CAAA,CAAA;;;;;;;AAKD,QAAA,KAAA,EAAA,UAA+B,OAAgB,EAAA;AAC3C,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;SAChC;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,IAAI,IAAI,CAAC,IAAI,EAAE;;AAEX,gBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;AACnC,aAAA;AAAM,iBAAA;gBACH,OAAO,QAAQ,CAAC,eAAe,CAC3B,4BAA4B,EAC5B,KAAK,CACR,CAAC;AACL,aAAA;SACJ;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,IAAM,mBAAmB,GAAQ,EAAE,CAAC;AACpC,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,gBAAA,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC;AACvC,aAAA;YACD,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE;AACH,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,OAAO,EAAE,cAAc;AAC1B,iBAAA,EAAA,WAAA,EACS,cAAc,EAAA;AAExB,gBAAA,KAAA,CAAA,aAAA,CAAC,cAAc,EACX,QAAA,CAAA,EAAA,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,EAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EACjC,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,eAAe,EAAE,IAAI,CAAC,sBAAsB,IACxC,mBAAmB,CAAA,EAEtB,IAAI,CAAC,OAAO,CACA;AAChB,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,KAC7B,oBAAC,cAAc,EAAA,QAAA,CAAA,EACX,SAAS,EACL,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,KAAK;AACzC,0BAAE,QAAQ;AACV,0BAAE,KAAK,EAEf,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EACvC,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,eAAe,EAAE,IAAI,CAAC,sBAAsB,EACxC,EAAA,mBAAmB,CAEtB,EAAA,IAAI,CAAC,aAAa,CACN,CACpB;AACD,gBAAA,KAAA,CAAA,aAAA,CAAC,qBAAqB,EAClB,QAAA,CAAA,EAAA,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EACtB,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EACpC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY,EACxC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,IACtD,IAAI,CAAC,KAAK,CAChB,CAAA,CACA,EACR;SACL;;AAjJD,IAAA,MAAA,CAAA,cAAA,CAAA,YAAA,EAAA,cAAA,EAAA;;;;AAAyD,QAAA,KAAA,EAAA;AACrD,YAAA,SAAS,EAAE,GAAG;AACjB,SAAA;AAAC,KAAA,CAAA,CAAA;AARU,IAAA,UAAA,CAAA;QAAX,UAAU;AAA+D,KAAA,EAAA,YAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAC9D,IAAA,UAAA,CAAA;QAAX,UAAU;AAAwC,KAAA,EAAA,YAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAoEzC,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,YAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,YAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAIS,IAAA,UAAA,CAAA;QAAT,QAAQ;AAKR,KAAA,EAAA,YAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAKD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAGZ,KAAA,EAAA,YAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;IA/FgB,YAAY,GAAA,UAAA,CAAA;QADhC,QAAQ;AACY,KAAA,EAAA,YAAY,CA4JhC,CAAA;IAAD,OAAC,YAAA,CAAA;AAAA,CA5JD,CAA0C,KAAK,CAAC,SAAS,CA4JxD;;;;IC3LW,UAGX;AAHD,CAAA,UAAY,SAAS,EAAA;AACjB,IAAA,SAAA,CAAA,SAAA,CAAA,GAAA,GAAa,CAAA;AACb,IAAA,SAAA,CAAA,OAAA,CAAA,GAAA,GAAW,CAAA;AACf,CAAC,EAHW,SAAS,KAAT,SAAS,GAGpB,EAAA,CAAA,CAAA,CAAA;AAGD,IAAA,eAAA,kBAAA,UAAA,MAAA,EAAA;IAAqC,SAGpC,CAAA,eAAA,EAAA,MAAA,CAAA,CAAA;AAQG,IAAA,SAAA,eAAA,CAAY,KAA4B,EAAA;QAAxC,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAGf,IAAA,CAAA;AAND,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,eAAA,EAAA;;;;;AAAiC,SAAA,CAAA,CAAA;AAI7B,QAAA,KAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QACzC,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;;;;;eAED,UAAoB,KAAgB,EAAE,OAAmB,EAAA;AACrD,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,SAAS,EAAE,UAAU,CACjB;AACI,oBAAA,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK;AACnD,oBAAA,uBAAuB,EACnB,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK;iBACzC,EACD,KAAK,EACL,QAAQ,EACR,iBAAiB,CACpB,EAAA,WAAA,EACU,iBAAkB,GAAA,KAAO,EACpC,KAAK,EAAE;AACH,oBAAA,UAAU,EAAE,CAAC;AACb,oBAAA,MAAM,EACF,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK;AAC9B,0BAAE,SAAS;AACX,0BAAE,SAAS;AACnB,oBAAA,UAAU,EACN,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK;AAC9B,0BAAE,QAAQ;AACV,0BAAE,QAAQ;AAClB,oBAAA,KAAK,EACD,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK,GAAG,MAAM,GAAG,SAAS;AAC3D,oBAAA,eAAe,EACX,IAAI,CAAC,KAAK,CAAC,aAAa,KAAK,KAAK,GAAG,SAAS,GAAG,MAAM;AAC3D,oBAAA,WAAW,EAAE,SAAS;AACzB,iBAAA,EACD,OAAO,EAAE,OAAO,IAEf,KAAK,CACD,EACX;SACL;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EAAA,YAAA,EAAY,EAAE,EAAA;gBACrB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC7D,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAChD,EAChB;SACL;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAC3C;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SAC3C;;AArED,IAAA,MAAA,CAAA,cAAA,CAAA,eAAA,EAAA,cAAA,EAAA;;;;AAA6D,QAAA,KAAA,EAAA;YACzD,aAAa,EAAE,SAAS,CAAC,KAAK;AACjC,SAAA;AAAC,KAAA,CAAA,CAAA;AAGF,IAAA,UAAA,CAAA;QADC,UAAU;AACsB,KAAA,EAAA,eAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAuDjC,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAIZ,KAAA,EAAA,eAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAIZ,KAAA,EAAA,eAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;IAzEQ,eAAe,GAAA,UAAA,CAAA;QAD3B,QAAQ;AACI,KAAA,EAAA,eAAe,CA0E3B,CAAA;IAAD,OAAC,eAAA,CAAA;AAAA,CA1ED,CAAqC,KAAK,CAAC,SAAS,CA0EnD;;ACjFD,IAAA,aAAA,kBAAA,UAAA,MAAA,EAAA;IAAmC,SAAwC,CAAA,aAAA,EAAA,MAAA,CAAA,CAAA;AACvE,IAAA,SAAA,aAAA,CAAY,KAA0B,EAAA;AAClC,QAAA,OAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAAA,IAAA,CAAA;KACf;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,OAAO,EACjB,KAAK,EAAE;AACH,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,UAAU,EAAE,EAAE;AACjB,iBAAA,EAAA;AAED,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,KAAK,EAAE;AACH,wBAAA,UAAU,EAAE,EAAE;AACjB,qBAAA,EAAA;AAED,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAe,EAAA,SAAA,CAAA;oBAClD,KAAC,CAAA,aAAA,CAAA,eAAe,IACZ,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAClC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACpC,CAAA,CACA,CACJ,EACR;SACL;;IACL,OAAC,aAAA,CAAA;AAAD,CAAC,CA7BkC,KAAK,CAAC,SAAS,CA6BjD;;ACkBD,SAAS,gBAAgB,CAAC,KAAa,EAAE,IAAgB,EAAA;AAAhB,IAAA,IAAA,IAAA,KAAA,KAAA,CAAA,EAAA,EAAA,IAAgB,GAAA,CAAA,CAAA,EAAA;AACrD,IAAA,IAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;AACvD,IAAA,IAAM,KAAK,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;AAEtD,IAAA,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAGD,IAAA,4BAAA,kBAAA,UAAA,MAAA,EAAA;IAA0D,SAGzD,CAAA,4BAAA,EAAA,MAAA,CAAA,CAAA;AACG,IAAA,SAAA,4BAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAUD,IAAA,MAAA,CAAA,cAAA,CAAI,4BAAqB,CAAA,SAAA,EAAA,uBAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,QACI,IAAI,CAAC,KAAK,CAAC,gBAAgB;AAC3B,gBAAAA,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,4BAA4B;gBACvC,IAAI,CAAC,KAAK,CAAC,sBAAsB;gBACjC,IAAI,CAAC,KAAK,CAAC,gBAAgB;AAC3B,gBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,EAC5B;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,UACI,UAA4B,EAC5B,kBAAoC,EACpC,sBAA4C,EAC5C,gBAA8C,EAC9C,UAAkB,EAClB,SAAiB,EACjB,cAA+B,EAC/B,KAA4B,EAC5B,KAAmB,EACnB,cAA0B,EAAA;AAH1B,YAAA,IAAA,cAAA,KAAA,KAAA,CAAA,EAAA,EAAA,cAA+B,GAAA,KAAA,CAAA,EAAA;AAC/B,YAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAA4B,GAAA,YAAA,CAAA,EAAA;AAC5B,YAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAmB,GAAA,GAAA,CAAA,EAAA;AACnB,YAAA,IAAA,cAAA,KAAA,KAAA,CAAA,EAAA,EAAA,cAA0B,GAAA,CAAA,CAAA,EAAA;AAE1B,YAAA,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,OAAO,EACjB,KAAK,EAAE;AACH,oBAAA,OAAO,EAAE,MAAM;AACf,oBAAA,UAAU,EAAE,QAAQ;AACpB,oBAAA,UAAU,EAAE,EAAE;AACjB,iBAAA,EAAA;AAED,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,KAAK,EAAE;AACH,wBAAA,KAAK,EAAE,KAAK;AACZ,wBAAA,UAAU,EAAE,EAAE;AACd,wBAAA,WAAW,EAAE,EAAE;AAClB,qBAAA,EAAA;AAED,oBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAA;wBAAG,KAAK;AAAQ,wBAAA,GAAA,CAAA;AACnD,oBAAA,KAAA,CAAA,aAAA,CAAC,MAAM,EACH,EAAA,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,aAAa,CACd,SAAS,EACT,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,cAAc,CACjB,EACD,OAAO,EAAE,KAAK,EACd,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,sBAAsB,EAChC,KAAK,EAAE,UAAU,GACnB,CACA;gBACN,KAAC,CAAA,aAAA,CAAA,YAAY,IACT,SAAS,EAAEkB,QAAM,CAAC,mBAAmB,CAAC,EACtC,KAAK,EAAE,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,EAClD,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,cAAc,IAAI,CAAC,EAChC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EACtC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAA,CACvC,CACA,EACR;SACL;;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,4BAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,cAAc,CACtB,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB,IAAI,CAAC,KAAK,CAAC,gBAAiB,EAC5B,IAAI,CAAC,KAAK,CAAC,sBAAsB,EACjC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,IAAI,CAAC,KAAK,CAAC,cAAc,EACzB,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,GAAG,YAAY,EAC5D,IAAI,CAAC,KAAK,CAAC,eAAe,EAC1B,IAAI,CAAC,KAAK,CAAC,cAAc,CAC5B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,4BAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;AAA9B,QAAA,GAAA,EAAA,YAAA;YACI,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC5B,gBAAA,OAAO,IAAI,CAAC,cAAc,CACtB,IAAI,CAAC,KAAK,CAAC,gBAAiB,EAC5B,IAAI,CAAC,KAAK,CAAC,UAAU,EACrB,IAAI,CAAC,KAAK,CAAC,4BAA6B,EACxC,IAAI,CAAC,KAAK,CAAC,sBAAuB,EAClC,IAAI,CAAC,KAAK,CAAC,gBAAiB,EAC5B,IAAI,CAAC,KAAK,CAAC,eAAgB,EAC3B,IAAI,CAAC,KAAK,CAAC,cAAc,EACzB,mBAAmB,EACnB,IAAI,CAAC,KAAK,CAAC,eAAe,EAC1B,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAClC,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,4BAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;YACI,QACI,6BACI,SAAS,EAAEC,UAAU,CAAC,2BAA2B,EAAE,OAAO,CAAC,EAC3D,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,EAAA;AAErC,gBAAA,KAAA,CAAA,aAAA,CAAC,aAAa,EACV,EAAA,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAC3C,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAC3C,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAC9C,CAAA,CACA,EACR;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,4BAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAA1B,QAAA,GAAA,EAAA,YAAA;YACI,QACI,gCACI,SAAS,EAAC,wBAAwB,EAClC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAClC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAA;;gBAElB,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA,aAAA,EAAa,MAAM,EAAG,CAAA,CAChD,EACX;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,4BAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;AAA9B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,gBAAgB,EAAA,EACb,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,QAAQ,EAAK,IAAI,CAAC,KAAK,CAAC,cAAc,GAAW,WAAA,EACjD,QAAQ,EAAE,IAAI,EACd,IAAI,EAAC,QAAQ,EAAA,CACf,EACJ;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAc,4BAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;YACI,QACI,oBAAC,aAAa,EAAA,EACV,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACzC,CAAA,EACJ;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,SAAS,EAAEA,UAAU,CACjB,kCAAkC,EAClC,IAAI,CAAC,KAAK,CAAC,YAAY;AACnB,sBAAED,QAAM,CAAC,SAAS,CAAC;AACnB,sBAAEA,QAAM,CAAC,UAAU,CAAC,CAC3B,EAAA;gBAED,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAA;oBAChD,IAAI,CAAC,KAAK,CAAC,eAAe;wBACvB,IAAI,CAAC,KAAK,CAAC,uBAAuB;wBAClC,IAAI,CAAC,KAAK,CAAC,iBAAiB;AAC5B,wBAAA,IAAI,CAAC,aAAa;AACrB,oBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU;AAC5C,oBAAA,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,gBAAgB;AAClD,oBAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,CAAC,aAAa;oBAClD,IAAI,CAAC,KAAK,CAAC,gBAAgB;oBAC3B,IAAI,CAAC,KAAK,CAAC,cAAc;oBAC1B,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAA;AAC9C,wBAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY;wBAChD,IAAI,CAAC,KAAK,CAAC,oBAAoB;4BAC5B,IAAI,CAAC,gBAAgB,CACvB,CACJ;gBACL,IAAI,CACH,EACR;SACL;;AA5LD,IAAA,MAAA,CAAA,cAAA,CAAA,4BAAA,EAAA,cAAA,EAAA;;;;AAAyE,QAAA,KAAA,EAAA;AACrE,YAAA,iBAAiB,EAAE,IAAI;AACvB,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,eAAe,EAAE,GAAG;AACvB,SAAA;AAAC,KAAA,CAAA,CAAA;AAGF,IAAA,UAAA,CAAA;QADC,QAAQ;AAUR,KAAA,EAAA,4BAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAoID,IAAA,UAAA,CAAA;QADC,QAAQ;AAQR,KAAA,EAAA,4BAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;IArKgB,4BAA4B,GAAA,UAAA,CAAA;QADhD,QAAQ;AACY,KAAA,EAAA,4BAA4B,CAqMhD,CAAA;IAAD,OAAC,4BAAA,CAAA;AAAA,CArMD,CAA0D,KAAK,CAAC,SAAS,CAqMxE,CAAA;;ACpQD,IAAY,kBAEX,CAAA;AAFD,CAAA,UAAY,kBAAkB,EAAA;AAC1B,IAAA,kBAAA,CAAA,gBAAA,CAAA,GAAA,iBAAkC,CAAA;AACtC,CAAC,EAFW,kBAAkB,KAAlB,kBAAkB,GAE7B,EAAA,CAAA,CAAA;;ACmBD,IAAA,WAAA,kBAAA,UAAA,MAAA,EAAA;IAAyC,SAAqC,CAAA,WAAA,EAAA,MAAA,CAAA,CAAA;AAC1E,IAAA,SAAA,WAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAMS,IAAA,MAAA,CAAA,cAAA,CAAI,WAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAhB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS;AACvB,kBAAE,IAAI,CAAC,KAAK,CAAC,WAAW;AACxB,kBAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;SAC3B;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;AACI,gBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,EACI,MAAM,EAAC,SAAS,EAChB,WAAW,EAAC,KAAK,EACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAC3B,CAAC,EAAE,IAAI,CAAC,YAAY,EACpB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAChB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAClB,CAAA;gBACF,KACI,CAAA,aAAA,CAAA,QAAA,EAAA,EAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EACtC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACzB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAChB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAChB,MAAM,EAAC,SAAS,EAChB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAA,CACvB,CACF,EACN;SACL;;AAhCD,IAAA,MAAA,CAAA,cAAA,CAAA,WAAA,EAAA,cAAA,EAAA;;;;AAA6B,QAAA,KAAA,EAAA;AACzB,YAAA,MAAM,EAAE,GAAG;AACX,YAAA,WAAW,EAAE,CAAC;AACjB,SAAA;AAAC,KAAA,CAAA,CAAA;AAEQ,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,WAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;IAdgB,WAAW,GAAA,UAAA,CAAA;QAD/B,QAAQ;AACY,KAAA,EAAA,WAAW,CAsC/B,CAAA;IAAD,OAAC,WAAA,CAAA;AAAA,CAtCD,CAAyC,KAAK,CAAC,SAAS,CAsCvD,CAAA;;SC3De,mBAAmB,CAC/B,KAAa,EACb,OAA8B,EAC9B,KAAa,EAAA;;IAGb,IAAI,CAAC,OAAO,EAAE;AACV,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;IAED,IAAI,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE;AAC7B,QAAA,OAAO,KAAK,CAAC;AAChB,KAAA;AAED,IAAA,IAAI,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;;IAEnC,OACI,eAAe,GAAG,CAAC;QACnB,OAAQ,CAAC,kBAAkB,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,KAAK,EACzD;QACE,eAAe,IAAI,CAAC,CAAC;AACxB,KAAA;IACD,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,IAAA,IAAI,eAAe,GAAG,KAAK,CAAC,MAAM,EAAE;;AAEhC,QAAA,eAAe,IAAI,CAAC,CAAC;QACrB,IAAI,eAAe,IAAI,CAAC,EAAE;;YAEtB,WAAW,GAAG,EAAE,CAAC;AACpB,SAAA;AAAM,aAAA;;YAEH,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC;AACzD,SAAA;AACJ,KAAA;AACD,IAAA,OAAO,WAAW,CAAC;AACvB;;ACXA,IAAA,SAAA,kBAAA,UAAA,MAAA,EAAA;IAAuC,SAAmC,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA;AAGtE,IAAA,SAAA,SAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAOf,IAAA,CAAA;AAVW,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,SAAA,EAAA;;;;mBAAyC,IAAI;AAAC,SAAA,CAAA,CAAA;AAC1D,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,UAAA,EAAA;;;;;AAAsB,SAAA,CAAA,CAAA;QAGlB,cAAc,CAAC,KAAI,CAAC,CAAC;QACrB,KAAI,CAAC,QAAQ,GAAG;AACZ,YAAA,OAAO,EAAE,MAAM,CAAC,UAAC,IAA2B,EAAA;AACxC,gBAAA,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACxB,aAAC,CAAC;SACL,CAAC;;KACL;AAOD,IAAA,MAAA,CAAA,cAAA,CAAY,SAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAM,GAAG,CAAC,CAAC;SAC/C;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAY,SAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAO,GAAG,CAAC,CAAC;SAChD;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,UAAwB,SAAkB,EAAA;AACtC,YAAA,IAAI,KAAK,GAAQ;gBACb,CAAC,EAAE,IAAI,CAAC,OAAO;gBACf,CAAC,EAAE,IAAI,CAAC,OAAO;AACf,gBAAA,UAAU,EAAE,QAAQ;AACpB,gBAAA,EAAE,EAAE,OAAO;gBACX,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS;AAC7C,gBAAA,KAAK,EAAE;AACH,oBAAA,QAAQ,EAAE,MAAM;AAChB,oBAAA,UAAU,EAAE,OAAO;AACtB,iBAAA;aACJ,CAAC;YACF,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AAC1C,YAAA,IAAM,WAAW,GAAG,mBAAmB,CACnC,KAAK,EACL,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAK,CAAC,KAAM,CACpB,CAAC;AACF,YAAA,IAAM,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,GAAG,WAAW,CAAC;AACxE,YAAA,IAAI,SAAS,EAAE;gBACX,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAClC,gBAAA,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAC5B,KAAK,CAAC,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;gBAC7B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC;AACjD,aAAA;AACD,YAAA,OAAO,KAAU,CAAA,aAAA,CAAA,MAAA,EAAA,QAAA,CAAA,EAAA,EAAA,KAAK,CAAG,EAAA,IAAI,CAAQ,CAAC;SACzC;;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,SAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAf,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,GAAG,GAAG,CAAC;SACzC;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,SAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAf,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;SACvD;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;gBACI,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,MAAM,EAAE,IAAI,CAAC,WAAW,EACxB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAC3B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACjB,CAAA;AACD,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;;AAAG,gBAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;gBACzD,KACI,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EACtC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAA,CACvB,CACF,EACN;SACL;;AAxED,IAAA,MAAA,CAAA,cAAA,CAAA,SAAA,EAAA,cAAA,EAAA;;;;AAA6B,QAAA,KAAA,EAAA;AACzB,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACb,SAAA;AAAC,KAAA,CAAA,CAAA;AAfU,IAAA,UAAA,CAAA;QAAX,UAAU;AAA+C,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAqDhD,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;IA5DgB,SAAS,GAAA,UAAA,CAAA;QAD7B,QAAQ;AACY,KAAA,EAAA,SAAS,CAsF7B,CAAA;IAAD,OAAC,SAAA,CAAA;AAAA,CAtFD,CAAuC,KAAK,CAAC,SAAS,CAsFrD,CAAA;;AC/FD,IAAY,aAGX,CAAA;AAHD,CAAA,UAAY,aAAa,EAAA;AACrB,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,aAAA,CAAA,aAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACb,CAAC,EAHW,aAAa,KAAb,aAAa,GAGxB,EAAA,CAAA,CAAA,CAAA;AAaD,IAAA,SAAA,kBAAA,UAAA,MAAA,EAAA;IAAuC,SAA+B,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA;AAClE,IAAA,SAAA,SAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;AAEW,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,WAAA,EAAA;;;;mBAAmB,KAAK;AAAC,SAAA,CAAA,CAAA;QAHjC,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAIS,IAAA,MAAA,CAAA,cAAA,CAAW,SAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,IAAI,UAAU,CAAC;AACf,YAAA,IAAI,WAAW,CAAC;AAChB,YAAA,IAAI,OAAO,CAAC;YACZ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;gBACnD,WAAW;oBACP,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;gBAEjE,UAAU;oBACN,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC;gBAEjE,OAAO;AACH,oBAAA,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;AACpE,aAAA;AAAM,iBAAA;gBACH,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAK,GAAG,CAAC,CAAC;gBAEnC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAK,GAAG,CAAC,CAAC;AAElC,gBAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;AAC7D,aAAA;YAED,OAAO;AACH,gBAAA,CAAC,EAAE,OAAO;AACV,gBAAA,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;gBACf,KAAK,EAAE,UAAU,GAAG,CAAC;gBACrB,MAAM,EAAE,WAAW,GAAG,CAAC;aAC1B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;AACnD,gBAAA,QACI,KAAA,CAAA,aAAA,CAAC,WAAW,EAAA,QAAA,CAAA,EACR,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACvB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAA,EAC7B,IAAI,CAAC,KAAK,CAAA,CAChB,EACJ;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,QACI,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,QAAA,CAAA,EACN,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EACtB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAA,EACnB,IAAI,CAAC,KAAK,CAAA,CAChB,EACJ;AACL,aAAA;SACJ;;AAnDW,IAAA,UAAA,CAAA;QAAX,UAAU;AAA0B,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAE3B,IAAA,UAAA,CAAA;QAAT,QAAQ;AA2BR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;IAnCgB,SAAS,GAAA,UAAA,CAAA;QAD7B,QAAQ;AACY,KAAA,EAAA,SAAS,CA0D7B,CAAA;IAAD,OAAC,SAAA,CAAA;AAAA,CA1DD,CAAuC,KAAK,CAAC,SAAS,CA0DrD,CAAA;;;;ACjED,IAAM,uBAAuB,GAAG,eAAe,CAAC;AAChD,IAAM,cAAc,GAAG,EAAE,CAAC;AAgB1B,IAAA,KAAA,kBAAA,UAAA,MAAA,EAAA;IAAmC,SAA+B,CAAA,KAAA,EAAA,MAAA,CAAA,CAAA;AAO9D,IAAA,SAAA,KAAA,CAAY,KAAiB,EAAA;QAA7B,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IASf,IAAA,CAAA;AAhBW,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,eAAA,EAAA;;;;AAAuC,YAAA,KAAA,EAAA,oBAAoB,EAAE;AAAC,SAAA,CAAA,CAAA;AAC9D,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,cAAA,EAAA;;;;mBAAuB,KAAK;AAAC,SAAA,CAAA,CAAA;AACzC,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,eAAA,EAAA;;;;mBAAwB,KAAK;AAAC,SAAA,CAAA,CAAA;AAE9B,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,QAAA,EAAA;;;;;AAA+C,SAAA,CAAA,CAAA;QAI3C,cAAc,CAOZ,KAAI,CAAC,CAAC;;KACX;;;;;AAGD,QAAA,KAAA,EAAA,UACI,OAAgE,EAChE,OAAqB,EACrB,WAAwB,EACxB,OAAoB,EACpB,UAAuB,EACvB,MAA0B,EAC1B,gBAAgC,EAAA;AADhC,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAA0B,GAAA,SAAA,CAAA,EAAA;AAC1B,YAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAgC,GAAA,KAAA,CAAA,EAAA;YAEhC,IAAI,CAAC,aAAa,GAAG;AACjB,gBAAA,OAAO,EAAA,OAAA;AACP,gBAAA,OAAO,EAAA,OAAA;AACP,gBAAA,WAAW,EAAA,WAAA;AACX,gBAAA,OAAO,EAAA,OAAA;AACP,gBAAA,UAAU,EAAA,UAAA;AACV,gBAAA,MAAM,EAAA,MAAA;AACN,gBAAA,gBAAgB,EAAA,gBAAA;aACnB,CAAC;SACL;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;SACrC;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC;SAC9C;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;AAC/B,gBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;AACnC,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;AAC/B,gBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;AACnC,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;SAChD;;;;;;AAGD,QAAA,KAAA,EAAA,UAAiB,cAAyB,EAAA;YACtC,IAAI,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,EAAE;gBAC7D,8BAA8B,CAC1B,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EACpC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,KAAK,CAAC,cAAc,CAC5B,CAAC;AACL,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAiB,cAAyB,EAAA;YACtC,IAAM,QAAQ,GAAW,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;AACvD,kBAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;AAChD,kBAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAEvD,YAAA,mCAAmC,CAC/B,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAChD,QAAQ,EACR,IAAI,CAAC,KAAK,CAAC,cAAc,CAC5B,CAAC;AACF,YAAA,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC;SACnC;;;;;;AAGD,QAAA,KAAA,EAAA,UAAU,CAAuB,EAAA;AAC7B,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC5B,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAQ,CAAuB,EAAA;AAC3B,YAAA,IAAI,CAAC,CAAC,KAAK,KAAK,EAAE,EAAE;AAChB,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7B,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAY,CAAsB,EAAA;YADlC,IAuBC,KAAA,GAAA,IAAA,CAAA;;YApBG,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAE5B,YAAA,IAAM,MAAM,GAAG,CAAC,CAAC,MAAoB,CAAC;YACtC,IAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACrD,IAAM,cAAc,GAAkB,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAExE,IAAI,cAAc,KAAK,IAAI,EAAE;gBACzB,IAAM,gBAAc,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACnD,gBAAA,IAAI,gBAAc,EAAE;oBAChB,IAAI,CAAC,UAAU,CACX,gBAAc,CAAC,YAAY,EAC3B,gBAAc,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EACjC,MAAM,CAAC,YAAA,EAAM,OAAA,KAAI,CAAC,gBAAgB,CAAC,gBAAc,CAAC,GAAA,CAAC,EACnD,MAAM,CAAC,YAAA,EAAM,OAAA,KAAI,CAAC,gBAAgB,CAAC,gBAAc,CAAC,GAAA,CAAC,EACnD,IAAI,CAAC,iBAAiB,EACtB,SAAS,EACT,QAAQ,CACX,CAAC;AACL,iBAAA;AACJ,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAgB,CAAsB,EAAA;AAClC,YAAA,IAAM,MAAM,GAAG,CAAC,CAAC,MAAiB,CAAC;YACnC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;gBACxC,IAAI,CAAC,YAAY,EAAE,CAAC;AACvB,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAuB,OAAgB,EAAA;AACnC,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;YAE7B,IAAI,CAAC,OAAO,EAAE;gBACV,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;gBACrB,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC/B,aAAA;SACJ;;AAED,IAAA,MAAA,CAAA,cAAA,CAAI,KAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAAb,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,EAAE,CAAC;SACb;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAI,KAAK,CAAA,SAAA,EAAA,OAAA,EAAA;AAAT,QAAA,GAAA,EAAA,YAAA;YAAA,IAsDC,KAAA,GAAA,IAAA,CAAA;AArDG,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;AAEjB,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK,EAAA;AACjD,gBAAA,IAAI,IAAI,CAAC;AACT,gBAAA,IAAI,IAAI,CAAC;AAET,gBAAA,IAAI,SAAS,CAAC;AACd,gBAAA,IAAI,CAAC,CAAC;AACN,gBAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE;oBAC7B,IAAI;wBACA,CAAC,CAAC,IAAI,CAAC,QAAS,GAAG,IAAI,CAAC,UAAU;AAC9B,4BAAA,KAAI,CAAC,KAAK,CAAC,aAAa;AAC5B,4BAAA,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACrB,oBAAA,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC;AAErC,oBAAA,CAAC,GAAG,CAAC,KAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,CAAC;AAChC,oBAAA,SAAS,GACF,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,IAAI,CACP,EAAA,EAAA,QAAQ,EAAE,IAAI,CAAC,QAAS,EACxB,QAAQ,EAAE,aAAa,CAAC,SAAS,GACpC,CAAC;AACL,iBAAA;AAAM,qBAAA;oBACH,IAAI;wBACA,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;4BACxD,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC;AACvD,8BAAE,CAAC;8BACD,GAAG,CAAC;AAEd,oBAAA,CAAC,GAAG,KAAI,CAAC,SAAS,GAAG,CAAC,CAAC;oBACvB,IAAI,GAAG,IAAI,CAAC;oBACZ,SAAS,GAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAQ,IAAI,CAAE,EAAA,EAAA,QAAQ,EAAE,aAAa,CAAC,MAAM,EAAA,CAAE,CAAC;AAC3D,iBAAA;AACD,gBAAA,QACI,KAAC,CAAA,aAAA,CAAA,SAAS,IACN,GAAG,EAAE,UAAC,IAAe,EAAA;wBACjB,IAAI,IAAI,KAAK,IAAI,EAAE;AACf,4BAAA,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AAC7B,yBAAA;AACL,qBAAC,EACD,GAAG,EAAE,IAAI,CAAC,UAAU,EACpB,gBAAgB,EAAE,EAAA,GAAG,KAAI,CAAC,KAAK,CAAC,aAAa,GAAG,KAAO,EACvD,cAAc,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,EAClC,CAAC,EACG,CAAC,IAAI,CAAC,UAAU,GAAG,KAAI,CAAC,KAAK,CAAC,aAAa;wBAC3C,KAAI,CAAC,KAAK,CAAC,KAAK,EAEpB,CAAC,EAAE,CAAC,EACJ,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,SAAS,EACjB,CAAA,EACJ;AACN,aAAC,CAAC,CAAC;SACN;;;AAAA,KAAA,CAAA,CAAA;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;SAChD;;;;;;AAED,QAAA,KAAA,EAAA,UAA0B,OAAe,EAAA;AACrC,YAAA,OAAO,iBAAiB,CACpB,OAAO,EACP,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,uBAAuB,CACtD,CAAC;SACL;;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,KAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAA1B,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;SACvC;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,KAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACpD;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAI,KAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;YACI,IAAM,mBAAmB,GAAQ,EAAE,CAAC;AAEpC,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACtB,gBAAA,mBAAmB,CAAC,OAAO,GAAG,KAAK,CAAC;AACvC,aAAA;AAED,YAAA,OAAO,mBAAmB,CAAC;SAC9B;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;;AAEI,YAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC1C,YAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SACzC;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,SAAgB,CAAC,CAAC;AAClD,YAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,OAAc,CAAC,CAAC;SACjD;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE;AACH,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,OAAO,EAAE,MAAM;AAClB,iBAAA,EAAA;AAED,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,SAAS,EAAEC,UAAU,CACjBD,QAAM,CAAC,UAAU,EACjB,OAAO,EACP,CAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,WAAW,GAAG,EAAE,IAAA,YAAY,CAC1D,EAAA,EAEA,IAAI,CAAC,KAAK,CAAC,UAAU,CACnB;AACP,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AACI,oBAAA,KAAA,CAAA,aAAA,CAAC,cAAc,EAAA,QAAA,CAAA,EACX,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE,EACrC,OAAO,EAAE,IAAI,CAAC,UAAU,EACxB,eAAe,EAAE,IAAI,CAAC,sBAAsB,EAC5C,oBAAoB,EAAE,IAAI,EAAA,EACtB,IAAI,CAAC,mBAAmB,CAAA,EAE3B,IAAI,CAAC,OAAO,CACA;AACjB,oBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EACzC,WAAW,EAAE,IAAI,CAAC,WAAW,EAAA;AAE7B,wBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EACI,KAAK,EAAC,4BAA4B,EAClC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,SAAS,EACtB,SAAS,EAAC,eAAe,EACzB,YAAY,EAAE,IAAI,CAAC,eAAe,EAClC,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAA;AAE9B,4BAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,IAAI,EAAC,SAAS,EACd,CAAC,EAAE,CAAC,EACJ,CAAC,EAAE,CAAC,EACJ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,SAAS,EACtB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,EACvC,WAAW,EAAE,IAAI,CAAC,qBAAqB,EACzC,CAAA;4BACD,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,KACrB,8BACI,MAAM,EAAC,SAAS,EAChB,WAAW,EAAC,KAAK,EACjB,EAAE,EAAE,CAAC,EACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACpB,EAAE,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,EACtB,EAAE,EAAE,IAAI,CAAC,SAAS,GAAG,CAAC,GACxB,CACL;AACA,4BAAA,IAAI,CAAC,KAAK,CACT,CACH,CACJ,CACL,EACR;SACL;;AApUW,IAAA,UAAA,CAAA;QAAX,UAAU;AAA+D,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,eAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAC9D,IAAA,UAAA,CAAA;QAAX,UAAU;AAA8B,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAkBzC,IAAA,UAAA,CAAA;QADC,QAAQ;AAmBR,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAKZ,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAGZ,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAUZ,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAaZ,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAKZ,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAKZ,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAuBZ,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAMZ,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAOZ,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAKZ,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AA+DD,IAAA,UAAA,CAAA;QADC,MAAM;AAIN,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AASS,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,KAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;IA9OgB,KAAK,GAAA,UAAA,CAAA;QADzB,QAAQ;AACY,KAAA,EAAA,KAAK,CAsUzB,CAAA;IAAD,OAAC,KAAA,CAAA;AAAA,CAtUD,CAAmC,KAAK,CAAC,SAAS,CAsUjD,CAAA;;SCrVe,cAAc,CAC1B,SAAqB,EACrB,YAA2B,EAC3B,QAAmB,EAAA;IAEnB,IAAM,qBAAqB,GAAG,sCAAsC,CAChE,SAAS,EACT,YAAY,CACf,CAAC;IAEF,IAAM,UAAU,GAAG,2BAA2B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAExE,IAAA,IAAM,YAAY,GAAG,SAAS,CAAC,MAAM,CAAC,UAAA,QAAQ,EAAA;AAC1C,QAAA,OAAA,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAA;KAAA,CAC1D,CAAC,MAAM,CAAC;;IAGT,IAAM,QAAQ,GAAGlB,UAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,OAAO,EAAA,EAAI,OAAA,OAAO,CAAC,OAAO,CAAf,EAAe,CAAC,CAAC,CAAC;IAClE,IAAM,YAAY,GAAG,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAI,EAAG,GAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAG,CAAK,CAAC;AACvD,IAAA,IAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC;IAC3D,IAAM,WAAW,IACb,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;QACe,YAAY;;QAAG,YAAY,CACnC,CACV,CAAC;AAEF,IAAA,QACI,KAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EACR,SAAS,EAAE,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAC3C,WAAW,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,EAClC,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,WAAW,EAAA,CACzB,EACJ;AACN,CAAC;SAEe,eAAe,GAAA;IAC3B,OAAO,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAEQ,KAAU,EAAE,GAAG,EAAC,0BAA0B,EAAA,CAAG,CAAC;AACnE,CAAC;AAGD,IAAA,YAAA,kBAAA,UAAA,MAAA,EAAA;IAA0C,SAGzC,CAAA,YAAA,EAAA,MAAA,CAAA,CAAA;AACG,IAAA,SAAA,YAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AACS,IAAA,MAAA,CAAA,cAAA,CAAI,YAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAhB,QAAA,GAAA,EAAA,YAAA;YAAV,IAmBC,KAAA,GAAA,IAAA,CAAA;AAlBG,YAAA,IAAM,iCAAiC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AACrD,iBAAA,kBAAkB,CAAC;AAExB,YAAA,IAAI,CAACR,UAAC,CAAC,OAAO,CAAC,iCAAiC,CAAC,EAAE;AAC/C,gBAAA,OAAOA,UAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC;AAC3C,qBAAA,MAAM,CAAC,UAAA,QAAQ,EAAA,EAAI,OAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC;AACzC,qBAAA,GAAG,CAAC,UAAA,QAAQ,EAAA,EAAI,QAAC;AACd,oBAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC5B,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,OAAO,EAAE,cAAc,CACnB,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EACtD,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,IAAI,EAAE,EAChD,iCAAiC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CACtD;iBACJ,EAAC,EAAA,CAAC,CAAC;AACX,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,YAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAd,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;gBACI,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAA,EAAG,eAAe,EAAE,CAAQ;AAExD,gBAAA,iBAAA,CAAA,EACT;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACF,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,cAAc,EAAE;AACZ,oBAAA;wBACI,IAAI,EAAE,cAAc,CAAC,OAAO;AAC5B,wBAAA,MAAM,EAAE,CAAC,kBAAkB,CAAC,cAAc,CAAC;AAC9C,qBAAA;AACJ,iBAAA,EACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,YAAY,EAC7B,aAAa,EAAE,iBAAiB,EAAA,CAClC,EACJ;SACL;;AAhDS,IAAA,UAAA,CAAA;QAAT,QAAQ;AAmBR,KAAA,EAAA,YAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAOR,KAAA,EAAA,YAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;IApCgB,YAAY,GAAA,UAAA,CAAA;QADhC,QAAQ;AACY,KAAA,EAAA,YAAY,CAyDhC,CAAA;IAAD,OAAC,YAAA,CAAA;AAAA,CAzDD,CAA0C,KAAK,CAAC,SAAS,CAyDxD,CAAA;;AC5HD,IAAY,iBAEX,CAAA;AAFD,CAAA,UAAY,iBAAiB,EAAA;AACzB,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AAC3B,CAAC,EAFW,iBAAiB,KAAjB,iBAAiB,GAE5B,EAAA,CAAA,CAAA;;ACgBe,SAAA,aAAa,CACzB,yBAAkC,EAClC,aAAmC,EAAA;AAEnC,IAAA,IAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;;AAIzC,IAAA,IAAM,YAAY,GAAG,WAAW,GAAG,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC;IACvD,IAAM,oBAAoB,GAAGA,UAAC,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACnE,IAAM,iBAAiB,GAAGA,UAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,UAAA,OAAO,EAAA,EAAI,QAClE,KAAI,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAA,OAAO,CAAK,EACnB,EAAA,CAAC,CAAC;IACH,IAAI,aAAa,GAA6B,EAAE,CAAC;AAEjD,IAAA,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;;QAE9B,IAAM,MAAM,GAAG,iBAAiB;aAC3B,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;AACtC,aAAA,MAAM,CAAC,UAAC,IAAiB,EAAE,IAAiB,IAAU,OAAA;YACnD,IAAI;YACJ,IAAI;YACJ,IAAI;SACP,CAJsD,EAItD,CAAC,CAAC;AAEP,QAAA,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;AAG3B,QAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5B,QAAA,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACvE,KAAA;AAAM,SAAA;;QAEH,aAAa,GAAG,iBAAiB,CAAC;AACrC,KAAA;IAED,IAAM,sBAAsB,GAAGA,UAAC,CAAC,OAAO,CACpC,aAAa,EACb,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,UAAU,CAAlB,EAAkB,CAC1B,CAAC;AACF,IAAA,IAAM,SAAS,GAAGA,UAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,UAAA,aAAa,EAAA,EAAI,QAAC;AACnE,QAAA,KAAK,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC,MAAM;AACnD,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,mBAAmB,EAAEA,UAAC,CAAC,IAAI,CACvB,sBAAsB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAA,SAAS,EAAA;AAC/C,YAAA,OAAA,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,GAAG,SAAS,CAAA;AAArD,SAAqD,CACxD,CACJ;AACD,QAAA,gBAAgB,EAAEA,UAAC,CAAC,IAAI,CACpB,sBAAsB,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,UAAA,SAAS,EAAA;YAC/C,OAAA,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,CAAC,WAAW;AAC5D,kBAAE,SAAS,CAAC,cAAc,CAAC,WAAW;AACtC,kBAAE,SAAS,CAAA;AAFf,SAEe,CAClB,CACJ;AACD,QAAA,KAAK,EAAE,iBAAiB,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;KAClE,EAAC,EAAA,CAAC,CAAC;;AAIJ,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AACI,QAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAI,WAAW,CAAK;;QAAQ,YAAY;;QAAQ,aAAa;QAAE,GAAG;;AAElE,QAAA,KAAA,CAAA,aAAA,CAAC,kBAAkB,EAAA,EACf,yBAAyB,EAAE,yBAAyB,EACpD,IAAI,EAAE,SAAS,EAAA,CACjB,CACC,EACT;AACN,CAAC;AAEK,SAAU,iBAAiB,CAAC,aAAmC,EAAA;IACjE,IAAM,MAAM,GAAkC,EAAE,CAAC;AAEjD,IAAA,aAAa,CAAC,OAAO,CAAC,UAAA,SAAS,EAAA;AAC3B,QAAA,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,SAAS,EAAA;YAClC,IAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,IAAM,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;YAE9D,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACpC,YAAA,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CACd,iCAAiC,CAC7B,SAAS,CAAC,yBAAyB,EACnC,SAAS,CAAC,wBAAwB,CACrC,CACJ,CAAC;AACN,SAAC,CAAC,CAAC;AACP,KAAC,CAAC,CAAC;AAEH,IAAA,OAAOA,UAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAChB,SAAA,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;QACP,OAAA,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AAAtD,KAAsD,CACzD;SACA,GAAG,CAAC,UAAA,KAAK,EAAI,EAAA,QAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAEA,UAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAC,EAAA,CAAC,CAAC;AAC7E,CAAC;AAEM,IAAM,kBAAkB,GAAqD,UAAA,KAAK,EAAA;IACrF,OAAO,KAAK,CAAC,aAAa;UACpB,aAAa,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,aAAa,CAAC;UACnE,IAAI,CAAC;AACf,CAAC;;SCrGe,cAAc,GAAA;IAC1B,OAAO,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,yBAAyB,EAAA,CAAG,CAAC;AACjE,CAAC;AAGD,IAAA,WAAA,kBAAA,UAAA,MAAA,EAAA;IAAyC,SAAqC,CAAA,WAAA,EAAA,MAAA,CAAA,CAAA;AAC1E,IAAA,SAAA,WAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,WAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAf,QAAA,GAAA,EAAA,YAAA;YAAV,IAkCC,KAAA,GAAA,IAAA,CAAA;AAjCG,YAAA,IAAM,mCAAmC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AACvD,iBAAA,oBAAoB,CAAC;AAE1B,YAAA,IAAI,CAACA,UAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC,EAAE;AACjD,gBAAA,OAAOA,UAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC;AAC7C,qBAAA,MAAM,CAAC,UAAA,QAAQ,EAAA,EAAI,OAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC;AACzC,qBAAA,GAAG,CAAC,UAAA,QAAQ,EAAA,EAAI,QAAC;AACd,oBAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC5B,oBAAA,KAAK,EAAE,SAAS;oBAChB,OAAO,GACH,KAAA,CAAA,aAAA,CAAC,kBAAkB,EAAA,EACf,yBAAyB,EACrB,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,EAE9C,SAAS,EACL,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAChC,MAAM,CAAC,QAAQ,CAAC,CACnB,EAEL,aAAa,EACT,mCAAmC,CAC/B,MAAM,CAAC,QAAQ,CAAC,CACnB,EAEL,cAAc,EACV,KAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAA,CAE1C,CACL;iBACJ,EAAC,EAAA,CAAC,CAAC;AACX,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,WAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAd,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;gBACI,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAA,EAAG,cAAc,EAAE,CAAQ;AAEvD,gBAAA,cAAA,CAAA,EACT;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACF,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,cAAc,EAAE;AACZ,oBAAA;wBACI,IAAI,EAAE,cAAc,CAAC,MAAM;AAC3B,wBAAA,MAAM,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;AACxC,qBAAA;AACJ,iBAAA,EACD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,aAAa,EAAE,UAAU,EAAA,CAC3B,EACJ;SACL;;AA/DS,IAAA,UAAA,CAAA;QAAT,QAAQ;AAkCR,KAAA,EAAA,WAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAOR,KAAA,EAAA,WAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;IAjDgB,WAAW,GAAA,UAAA,CAAA;QAD/B,QAAQ;AACY,KAAA,EAAA,WAAW,CAsE/B,CAAA;IAAD,OAAC,WAAA,CAAA;AAAA,CAtED,CAAyC,KAAK,CAAC,SAAS,CAsEvD,CAAA;;AC1ED,IAAA,SAAA,kBAAA,UAAA,MAAA,EAAA;IAAuC,SAAmC,CAAA,SAAA,EAAA,MAAA,CAAA,CAAA;AACtE,IAAA,SAAA,SAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,SAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAhB,QAAA,GAAA,EAAA,YAAA;;YACN,OAAO,CAAA,EAAA,GAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,CAAC;SACpD;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,SAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAd,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,YAAY;AACpB,kBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC;kBAC7D,SAAS,CAAC;SACnB;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,SAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAd,QAAA,GAAA,EAAA,YAAA;;AACN,YAAA,OAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CACtD,eAAe,CAAC;SACzB;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,SAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAf,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC;SACvC;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,SAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAAb,QAAA,GAAA,EAAA,YAAA;YAAV,IAyFC,KAAA,GAAA,IAAA,CAAA;YAxFG,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACxC,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;AAED,YAAA,IAAM,KAAK,GAAG,IAAI,CAAC,UAAW,CAAC,KAAK,CAAC;YACrC,IAAM,IAAI,GAAG,IAAI,CAAC,UAAW,CAAC,IAAI,IAAI,EAAE,CAAC;YAEzC,IAAM,QAAQ,GAAG,KAAK;AAClB,kBAAE,sBAAsB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;kBAC7D,SAAS,CAAC;AAEhB,YAAA,IAAM,SAAS,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAEzC,YAAA,OAAO,QAAQ;kBACT,QAAQ,CAAC,GAAG,CAAC,UAAC,IAAe,EAAE,KAAa,EAAA;AACxC,oBAAA,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC9B,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC1C,IAAM,iBAAiB,GAAG,kBAAkB,CACxC,UAAU,EACV,KAAK,CACR,CAAC;AACF,oBAAA,IAAM,eAAe,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjD,oBAAA,IAAM,IAAI,GAAG,KAAI,CAAC,UAAU;AACxB,0BAAE,gCAAiC,GAAA,KAAI,CAAC,UAAU,SAAI,IAAI,CAAC,oBAAoB,GAAA,GAAA,GAAI,IAAI,CAAC,kBAAkB,GAAW,UAAA,GAAA,KAAI,CAAC,WAAa;0BACrI,iBAAiB,CAAC;AACxB,oBAAA,IAAM,QAAQ,GAAG,KAAI,CAAC,UAAU;AAC5B,0BAAK,KAAI,CAAC,WAAW,YAAO,KAAI,CAAC,UAAU,GAAA,GAAA,GAAI,IAAI,CAAC,oBAAoB,GAAM,KAAA,GAAA,IAAI,CAAC,kBAAoB;0BAClG,IAAI,CAAC,oBAAoB,WAAM,IAAI,CAAC,kBAAoB,CAAC;oBAClE,OAAO;AACH,wBAAA,KAAK,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;AAC3B,wBAAA,UAAU,EAAE,UAAU;AACtB,wBAAA,QAAQ,EAAE,QAAQ;AAClB,wBAAA,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC3B,wBAAA,UAAU,EAAE,SAAS;AACrB,wBAAA,OAAO,GACH,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AACI,4BAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;;AAAW,gCAAA,IAAI,CAAC,IAAI;AAAO,gCAAA,GAAA,CAAA;;4BACT,GAAG;4BACrB,KACK,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,CAAC,kBAAkB,CAChC;4BAAC,GAAG;;4BACC,GAAG;4BACjB,KACK,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,CAAC,iBAAiB,CAC/B;4BACT,KAAS,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;;4BACO,GAAG;4BACnB,KACK,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,eAAe,CAAC,kBAAkB,CAC9B;4BAAC,GAAG;;4BACC,GAAG;4BACjB,KACK,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,eAAe,CAAC,iBAAiB,CAC7B;4BACT,KAAS,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;;4BACD,GAAG;4BACX,KAAS,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,UAAU,CAAC,eAAe,CAAU;4BAAC,GAAG;;4BACrC,GAAG;4BACd,UAAU,CAAC,gBAAgB,KACxB,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;gCACK,GAAG;;gCACA,GAAG;gCACP,KACK,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,UAAU,CAAC,gBAAgB,CACvB;gCAAC,GAAG;8CAEd,CACN;4BACD,KAAS,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;iDAER,GAAG;4BACJ,KACI,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,MAAM,EAAC,QAAQ,EACf,IAAI,EAAE,IAAI,EACV,GAAG,EAAC,qBAAqB,EAAA;AAEzB,gCAAA,KAAA,CAAA,aAAA,CAAA,KAAA,CAAA,QAAA,EAAA,IAAA;AACK,oCAAA,QAAQ,EACR,GAAG;AACJ,oCAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,qBAAqB,GAAG,CACtC,CACH,CACD,CACV;qBACJ,CAAC;AACN,iBAAC,CAAC;kBACF,EAAE,CAAC;SACZ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,SAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAd,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AACI,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAS,CAAA;AAErC,gBAAA,MAAA,CAAA,EACT;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,QACI,KAAC,CAAA,aAAA,CAAA,KAAK,EACF,EAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,IAAI,CAAC,SAAS,EAC1B,aAAa,EAAE,OAAO,EACxB,CAAA,EACJ;SACL;;AAnIS,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAGR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAyFR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAOR,KAAA,EAAA,SAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;IA3HgB,SAAS,GAAA,UAAA,CAAA;QAD7B,QAAQ;AACY,KAAA,EAAA,SAAS,CA0I7B,CAAA;IAAD,OAAC,SAAA,CAAA;AAAA,CA1ID,CAAuC,KAAK,CAAC,SAAS,CA0IrD,CAAA;;ACjJD,SAAS,oBAAoB,CAAC,IAAY,EAAA;IACtC,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAErC,IAAA,IAAI,OAAO,EAAE;AACT,QAAA,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,KAAA;AAAM,SAAA;AACH,QAAA,OAAO,SAAS,CAAC;AACpB,KAAA;AACL,CAAC;AAGD,IAAA,gBAAA,kBAAA,UAAA,MAAA,EAAA;IAA8C,SAG7C,CAAA,gBAAA,EAAA,MAAA,CAAA,CAAA;AAHD,IAAA,SAAA,gBAAA,GAAA;;KAkCC;;;;;AA9BG,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EACX,SAAS,EAAC,OAAO,EACjB,OAAO,EACH,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE;AACH,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,SAAS,EAAE,GAAG;AACd,wBAAA,SAAS,EAAE,MAAM;AACpB,qBAAA,EAAA;oBAED,KAAC,CAAA,aAAA,CAAA,aAAa,IACV,KAAK,EACD,IAAI,CAAC,KAAK,CAAC,SAAS;6BACf,GAAG,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,oBAAoB,CAAC,EAAE,CAAC,CAAxB,EAAwB,CAAC;6BACnC,MAAM,CAAC,UAAA,EAAE,EAAA,EAAI,OAAA,EAAE,KAAK,SAAS,CAAhB,EAAgB,CAAa,EAEnD,SAAS,EAAE,EAAE,EAAA,CACf,CACA,EAEV,oBAAoB,EAAE,IAAI,EAAA;AAE1B,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAA;AAC9B,oBAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAA,CAAI,CACrD,CACO,EACnB;SACL;;IAjCgB,gBAAgB,GAAA,UAAA,CAAA;QADpC,QAAQ;AACY,KAAA,EAAA,gBAAgB,CAkCpC,CAAA;IAAD,OAAC,gBAAA,CAAA;AAAA,CAlCD,CAA8C,KAAK,CAAC,SAAS,CAkC5D,CAAA;;;AClCD,IAAY,0BAKX,CAAA;AALD,CAAA,UAAY,0BAA0B,EAAA;AAClC,IAAA,0BAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,0BAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,0BAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,0BAAA,CAAA,YAAA,CAAA,GAAA,WAAwB,CAAA;AAC5B,CAAC,EALW,0BAA0B,KAA1B,0BAA0B,GAKrC,EAAA,CAAA,CAAA,CAAA;AAEM,IAAM,8BAA8B,IAAA,EAAA,GAAA,EAAA;IACvC,EAAC,CAAA,0BAA0B,CAAC,QAAQ,CAAG,GAAA;QACnC,EAAE,EAAE,0BAA0B,CAAC,QAAQ;QACvC,QAAQ,EAAE,UAAC,GAAkC,EAAK,EAAA,OAAA,GAAG,CAAC,OAAO,CAAC,KAAK,CAAA,EAAA;AACnE,QAAA,MAAM,EAAE,SAAS;QACjB,IAAI,EAAE,UAAC,KAAkD,EAAK,EAAA,QAC1D,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAA,EAC7B,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CACzB,EACT,EAAA;AACD,QAAA,QAAQ,EAAE,EAAE;AACf,KAAA;IACD,EAAC,CAAA,0BAA0B,CAAC,IAAI,CAAG,GAAA;QAC/B,EAAE,EAAE,0BAA0B,CAAC,IAAI;QACnC,QAAQ,EAAE,UAAC,GAAkC,EAAA,EAAK,OAAA,GAAG,CAAC,IAAI,CAAA,EAAA;AAC1D,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,QAAQ,EAAE,GAAG;AAChB,KAAA;IACD,EAAC,CAAA,0BAA0B,CAAC,WAAW,CAAG,GAAA;QACtC,EAAE,EAAE,0BAA0B,CAAC,WAAW;QAC1C,QAAQ,EAAE,UAAC,GAAkC,EAAA,EAAK,OAAA,GAAG,CAAC,WAAW,CAAA,EAAA;AACjE,QAAA,MAAM,EAAE,aAAa;AACrB,QAAA,QAAQ,EAAE,GAAG;AAChB,KAAA;IACD,EAAC,CAAA,0BAA0B,CAAC,UAAU,CAAG,GAAA;QACrC,EAAE,EAAE,0BAA0B,CAAC,UAAU;AACzC,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,QAAQ,EAAE,EAAE;AACf,KAAA;OACJ,CAAC;AAEF,SAAS,UAAU,CAAC,GAAkC,EAAA;AAClD,IAAA,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE;QACxD,OAAU,GAAG,CAAC,OAAO,CAAC,KAAK,GAAI,GAAA,GAAA,GAAG,CAAC,OAAO,CAAC,GAAK,CAAC;AACpD,KAAA;AAAM,SAAA;QACH,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AACvC,KAAA;AACL,CAAC;AAGD,IAAA,kBAAA,kBAAA,UAAA,MAAA,EAAA;IAAgD,SAE/C,CAAA,kBAAA,EAAA,MAAA,CAAA,CAAA;AACG,IAAA,SAAA,kBAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;2BANgB,kBAAkB,CAAA;AAenC,IAAA,MAAA,CAAA,cAAA,CAAI,kBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;AAAZ,QAAA,GAAA,EAAA,YAAA;YADA,IAWC,KAAA,GAAA,IAAA,CAAA;AATG,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;oBACvB,OAAA,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,UAAA,EAAE,EAAA;AAC5B,wBAAA,OAAA,KAAI,CAAC,KAAK,CAAC,WAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;AAAvC,qBAAuC,CAC1C,CAAA;AAFD,iBAEC,CACJ,CAAC;AACL,aAAA;AAED,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE,CAAC;SACzE;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAI,kBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAX,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe;AAC9C,kBAAE,IAAI,CAAC,KAAK,CAAC,eAAe;kBAC1B,EAAE,CAAC;YACT,OAAO;sCAEI,8BAA8B,CAC7B,0BAA0B,CAAC,QAAQ,CACtC,CACE,EAAA,eAAe,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAA;sCAGpD,8BAA8B,CAC7B,0BAA0B,CAAC,IAAI,CAClC,CACE,EAAA,eAAe,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAA;sCAGhD,8BAA8B,CAC7B,0BAA0B,CAAC,WAAW,CACzC,CACE,EAAA,eAAe,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAA;AAGvD,gBAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EAAA,8BAA8B,CAC7B,0BAA0B,CAAC,UAAU,CACxC,KACD,IAAI,EAAE,IAAI,CAAC,gBAAgB,EACxB,CAAA,EAAA,eAAe,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAA;aAEhE,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,kBAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;YADA,IA8BC,KAAA,GAAA,IAAA,CAAA;AA5BG,YAAA,IAAI,YAEoB,CAAC;;;AAIzB,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;AACzB,gBAAA,YAAY,GAAG,YAAM,EAAA,OAAA,IAAI,CAAA,EAAA,CAAC;AAC7B,aAAA;iBAAM,IAAI,CAACA,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAClC,YAAY,GAAG,UAAC,KAEf,EAAA;AACG,oBAAA,OAAA,CAACA,UAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAChC,KAAA,CAAA,aAAA,CAAC,gBAAgB,EACb,EAAA,QAAQ,EAAE,KAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAA,CAC3C,IACF,IAAI,CAAA;AALR,iBAKQ,CAAC;AAChB,aAAA;AAAM,iBAAA;gBACH,YAAY,GAAG,UAAC,KAEf,EAAA;oBACG,OAAA,CAACA,UAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAChC,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,wBAAwB,GAAG,IACxC,IAAI,CAAA;AAFR,iBAEQ,CAAC;AAChB,aAAA;AAED,YAAA,OAAO,YAAY,CAAC;SACvB;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACU,YAAA,IAAA,KAKF,IAAI,CAAC,KAAK,EAJV,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,iBAAiB,GAAA,EAAA,CAAA,iBAAA,EACjB,oBAAoB,GAAA,EAAA,CAAA,oBAAA,EACpB,mBAAmB,yBACT,CAAC;AAEf,YAAA,IAAM,cAAc,GAChB,IAAI,CAAC,MAAM;AACX,iBAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB;AAC3B,oBAAA,oBAAkB,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;YAE7D,QACI,6BACI,SAAS,EAAEmB,UAAU,CACjB,qBAAqB,EACrB,6BAA6B,CAChC,EAAA;AAED,gBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACP,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,aAAa,EAAE;AACX,wBAAA;AACI,4BAAA,EAAE,EACE,iBAAiB;AACjB,gCAAA,oBAAkB,CAAC,YAAY;qCAC1B,iBAAiB;4BAC1B,IAAI,EAAE,oBAAoB,KAAK,MAAM;AACxC,yBAAA;AACJ,qBAAA,EACD,eAAe,EACX,IAAI,CAAC,MAAM,GAAG,mBAAoB;AAC9B,0BAAE,mBAAmB;AACrB,0BAAE,IAAI,CAAC,MAAM,EAErB,cAAc,EAAE,cAAc,EAC9B,iBAAiB,EAAE,IAAI,EACvB,oBAAoB,EAAE,KAAK,EAC3B,SAAS,EAAC,qBAAqB,EAC/B,YAAY,EAAC,GAAG,EAChB,QAAQ,EAAC,GAAG,EACd,CAAA,CACA,EACR;SACL;;;AApID,IAAA,MAAA,CAAA,cAAA,CAAA,kBAAA,EAAA,cAAA,EAAA;;;;AAA6B,QAAA,KAAA,EAAA;AACzB,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,iBAAiB,EAAE,MAAM;AACzB,YAAA,oBAAoB,EAAE,KAAK;AAC3B,YAAA,mBAAmB,EAAE,EAAE;AAC1B,SAAA;AAAC,KAAA,CAAA,CAAA;AAGF,IAAA,UAAA,CAAA;QADC,QAAQ;AAWR,KAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAgCR,KAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AA8BR,KAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;IA3FgB,kBAAkB,GAAA,oBAAA,GAAA,UAAA,CAAA;QADtC,QAAQ;AACY,KAAA,EAAA,kBAAkB,CA4ItC,CAAA;IAAD,OAAC,kBAAA,CAAA;AAAA,CA5ID,CAAgD,KAAK,CAAC,SAAS,CA4I9D,CAAA;;;;AChLM,IAAM,UAAU,GAIlB,UAAA,KAAK,EAAA;IACN,QACI,oBAAC,kBAAkB,EAAA,EACf,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,WAAW,EAAE,KAAK,CAAC,WAAW,EAC9B,eAAe,EAAE,KAAK,CAAC,eAAe,EACxC,CAAA,EACJ;AACN,CAAC,CAAC;SAEc,cAAc,CAC1B,YAAqB,EACrB,UAAmB,EACnB,aAAsB,EAAA;IAEtB,IAAI,aAAa,GAAG,IAAI,CAAC;AAEzB,IAAA,IAAI,UAAU,EAAE;AACZ,QAAA,aAAa,IACT,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;;YACiB,GAAG;YACf,aAAa,IACV,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,aAAa,EAAE,MAAM,EAAC,QAAQ,IAClC,UAAU,CACX,KAEJ,UAAU,CACb,CACC,CACT,CAAC;AACL,KAAA;IAED,QACI,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAA;AACzB,QAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;;AAEK,YAAA,YAAY,KACT,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;AAAmC,gBAAA,YAAY,CAAQ,CAC1D;AAED,YAAA,GAAA,CAAA;AACJ,QAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAED,QAAM,CAAC,SAAS,EAAA;;AAE1B,YAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA;AACI,gBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAEA,QAAM,CAAC,eAAe,EAAA;AACjC,oBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,iBAAA,CAAgC,CAC/B;AACL,gBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAEA,QAAM,CAAC,WAAW,EAAA;AAC7B,oBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,aAAA,CAA4B,CAC3B;AACL,gBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAEA,QAAM,CAAC,cAAc,EAAA;AAChC,oBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,gBAAA,CAA+B,CAC9B;AACL,gBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAEA,QAAM,CAAC,WAAW,EAAA;AAC7B,oBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,aAAA,CAA4B,CAC3B;AACL,gBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAEA,QAAM,CAAC,SAAS,EAAA;oBAC3B,KAA8B,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,eAAA,CAAA;AAE7B,oBAAA,qCAAA,CAAA;AACL,gBAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAEA,QAAM,CAAC,OAAO,EAAA;oBACzB,KAAsB,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAA,OAAA,CAAA;AACrB,oBAAA,uBAAA,CAAA,CACJ,CACL;QACH,aAAa,CACZ,EACR;AACN,CAAC;AAED,SAAS,kBAAkB,CACvB,IAAqC,EACrC,MAAe,EAAA;IAEf,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAA,GAAG,EAAI,EAAA,OAAA,GAAG,CAAC,MAAM,KAAK,MAAM,CAArB,EAAqB,CAAC,GAAG,IAAI,CAAC;AACrE,CAAC;AAGD,IAAA,QAAA,kBAAA,UAAA,MAAA,EAAA;IAAsC,SAAkC,CAAA,QAAA,EAAA,MAAA,CAAA,CAAA;AACpE,IAAA,SAAA,QAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;AAMD,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,UAAA,EAAA;;;;AAAmB,YAAA,KAAA,EAAA,CAAC,KAAI,CAAC,KAAK,CAAC,SAAS;AAAC,SAAA,CAAA,CAAA;AAkKzC,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,gCAAA,EAAA;;;;AAAyC,YAAA,KAAA,EAAA,UACrC,GAAoB,EACpB,OAAwC,EACxC,QAAgB,EAAA;AAEhB,gBAAA,IAAM,IAAI,GACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;sBACf,kBAAkB,CAAC,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC;sBAClD,EAAE,CAAC;AAEb,gBAAA,IAAI,CAAClB,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAClB,GAAG,CAAC,IAAI,CAAC;AACL,wBAAA,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC;AAC5B,wBAAA,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC;wBACrB,OAAO,GACH,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACP,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,KAAI,CAAC,KAAK,CAAC,WAAW,EACnC,eAAe,EAAE,KAAI,CAAC,KAAK,CAAC,yBAAyB,EAAA,CACvD,CACL;AACJ,qBAAA,CAAC,CAAC;AACN,iBAAA;AAED,gBAAA,OAAO,GAAG,CAAC;aACd;AAAC,SAAA,CAAA,CAAA;QAlME,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;iBAJgB,QAAQ,CAAA;AAYf,IAAA,MAAA,CAAA,cAAA,CAAI,QAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;AAAZ,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,IAAM,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;iBAC5C,wBAAwB,CAAC,MAAM,CAAC;YAErC,IAAI,wBAAwB,IAAI,CAACA,UAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,EAAE;AAClE,gBAAA,OAAOA,UAAC,CAAC,MAAM,CACX,wBAAwB,EACxB,IAAI,CAAC,8BAA8B,EACnC,EAAE,CACL,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,QAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAf,QAAA,GAAA,EAAA,YAAA;YAAV,IAsBC,KAAA,GAAA,IAAA,CAAA;AArBG,YAAA,IAAM,+BAA+B,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;iBACnD,+BAA+B,CAAC,MAAM,CAAC;AAE5C,YAAA,IACI,+BAA+B;AAC/B,gBAAA,CAACA,UAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAC7C;AACE,gBAAA,OAAOA,UAAC,CAAC,IAAI,CAAC,+BAA+B,CAAC;qBACzC,IAAI,CAAC,wBAAwB,CAAC;AAC9B,qBAAA,GAAG,CAAC,UAAA,IAAI,EAAA,EAAI,QAAC;AACV,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,KAAK,EAAEA,UAAC,CAAC,MAAM,CACX,+BAA+B,CAAC,IAAI,CAAC,EACrC,KAAI,CAAC,8BAA8B,EACnC,EAAE,CACL;iBACJ,EAAC,EAAA,CAAC;AACF,qBAAA,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAACA,UAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAnB,EAAmB,CAAC,CAAC;AACzC,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,QAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YAAV,IA4BC,KAAA,GAAA,IAAA,CAAA;YA3BG,QACI,8BAAM,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAA;gBAC9B,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAG,EAAA,IAAI,CAAC,QAAQ,CAAQ;AAC9D,gBAAA,KAAA,CAAA,aAAA,CAAC,cAAc,EACX,EAAA,SAAS,EAAC,MAAM,EAChB,OAAO,EAAE,YAAA;AACL,wBAAA,OAAA,cAAc,CACV,KAAI,CAAC,KAAK,CAAC,mBAAmB,EAC9B,KAAI,CAAC,KAAK,CAAC,UAAU,EACrB,KAAI,CAAC,KAAK,CAAC,aAAa,CAC3B,CAAA;qBAAA,EAEL,oBAAoB,EAAE,IAAI,EAAA;AAE1B,oBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EACxB,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAA;;wBAE5B,GAAG;wBACN,IAAI,CAAC,KAAK,CAAC,UAAU;AAClB,8BAAE,GAAI,GAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAA;AAC9B,8BAAE,OAAO;wBAAE,GAAG;wBAClB,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,mBAAmB,EAAA,CAAG,CAChC,CACM,CACd,EACT;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,QAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;AAAZ,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,IAAM,SAAS,GAAG,IAAI,CAAC,YAAY;kBAC7B,IAAI,CAAC,eAAe;AAClB,sBAAE,kBAAkB;AACpB,sBAAE,mBAAmB;kBACvB,IAAI,CAAC;AAEX,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,QACI,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAA,CAAI,EAClE;AACL,aAAA;AAED,YAAA,OAAO,IAAI,CAAC;SACf;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,QAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,QACI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,UAAQ,CAAC,YAAY,CAAC,cAAc,EACnE;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,QAAkB,CAAA,SAAA,EAAA,oBAAA,EAAA;AAAtB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO;kBACnB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc;kBACxC,CAAC,CAAC;SACX;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,QAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAAb,QAAA,GAAA,EAAA,YAAA;YAAV,IAiCC,KAAA,GAAA,IAAA,CAAA;YAhCG,OAAO,IAAI,CAAC,YAAY;AACpB,kBAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK,EAAA,EAAK,QAClC,KAAA,CAAA,aAAA,CAAC,KAAK,EACF,EAAA,GAAG,EAAE,IAAI,CAAC,KAAK,EACf,SAAS,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,UAAU,EACN,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,KAAK,EAAE;4BACH,UAAU,EAAE,KAAI,CAAC,cAAc;4BAC/B,KAAK,EAAE,KAAI,CAAC,kBAAkB;AAC9B,4BAAA,OAAO,EAAE,MAAM;AAClB,yBAAA,EAAA;wBAED,KAAC,CAAA,aAAA,CAAA,mBAAmB,IAChB,IAAI,EAAE,IAAI,CAAC,KAAK,EAChB,KAAK,EAAE;AACH,gCAAA,QAAQ,EAAE,QAAQ;AAClB,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,YAAY,EAAE,UAAU;AAC3B,6BAAA,EAAA,CACH,CACC,EAEX,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,EACvB,aAAa,EAAE,KAAI,CAAC,KAAK,CAAC,aAAa,EACvC,UAAU,EAAE,IAAI,CAAC,KAAK,EACtB,aAAa,EAAE,MAAO,GAAA,KAAK,GAAG,GAAA,EAC9B,UAAU,EAAE,IAAI,GAClB,EACL,EAAA,CAAC;kBACF,IAAI,CAAC;SACd;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,QAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;SAC7C;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,QAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAhB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;SACtC;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AACI,gBAAA,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACF,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,UAAU,EAAE,IAAI,CAAC,cAAc,EAC/B,UAAU,EAAE,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EACrD,YAAY,EAAE,IAAI,CAAC,eAAe,EAClC,aAAa,EAAE,MAAM,EACvB,CAAA;AACF,gBAAA,KAAA,CAAA,aAAA,CAAC,QAAQ,EAAC,EAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAA;AACpC,oBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO,IAAI,CAAC,SAAS,CAAQ,CACtB,CACR,EACT;SACL;;;;;;AA8BD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;SAClC;;;AArMD,IAAA,MAAA,CAAA,cAAA,CAAA,QAAA,EAAA,cAAA,EAAA;;;;AAA6B,QAAA,KAAA,EAAA;AACzB,YAAA,cAAc,EAAE,EAAE;AACrB,SAAA;AAAC,KAAA,CAAA,CAAA;AAGF,IAAA,UAAA,CAAA;QADC,UAAU;AAC8B,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAE/B,IAAA,UAAA,CAAA;QAAT,QAAQ;AAaR,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAsBR,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AA4BR,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAcR,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAiCR,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAkDD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAGZ,KAAA,EAAA,QAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;IA1MgB,QAAQ,GAAA,UAAA,GAAA,UAAA,CAAA;QAD5B,QAAQ;AACY,KAAA,EAAA,QAAQ,CA2M5B,CAAA;IAAD,OAAC,QAAA,CAAA;AAAA,CA3MD,CAAsC,KAAK,CAAC,SAAS,CA2MpD,CAAA;;ACtSD,SAAS,0BAA0B,CAC/B,KAAa,EACb,KAAa,EACb,WAA4B,EAAA;IAE5B,OAAO;AACH,QAAA,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,WAAW,CAAC,aAAa;QACrC,QAAQ,EAAE,WAAW,CAAC,WAAW;AACjC,QAAA,OAAO,GACH,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AACI,YAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EAAK,KAAK,CAAM;;AACR,YAAA,WAAW,CAAC,aAAa;YACjC,KAAS,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;;AACH,YAAA,WAAW,CAAC,WAAW;YAC7B,KAAS,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;;AACA,YAAA,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC,aAAa;YAC5D,KAAS,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;;YACK,WAAW,CAAC,WAAW,CAClC,CACV;KACJ,CAAC;AACN,CAAC;AAEM,IAAM,sCAAsC,GAG9C,UAAA,KAAK,EAAA;IACN,IAAM,aAAa,GAAG,KAAK,CAAC,SAAS,IACjC,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;;QACiB,GAAG;AAChB,QAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACI,IAAI,EAAE,kCAAA,GAAmC,KAAK,CAAC,SAAW,EAC1D,MAAM,EAAC,QAAQ,cAGf,CACF,KAEN,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;;QACiB,GAAG;QAChB,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,0BAA0B,EAAE,MAAM,EAAC,QAAQ,EAAA,EAAA,SAAA,CAEhD,CACF,CACT,CAAC;IACF,QACI,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAA;QACzB,KAEI,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA,EAAA,gEAAA,CAAA;AACH,QAAA,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,KACzB,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,IAAA;;AAEI,YAAA,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,EACK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,UAAA,IAAI,EAAI,EAAA,QAC9B,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EACI,KAAK,EAAE;AACH,oBAAA,KAAK,EAAE,2BAA2B,CAAC,IAAI,CAAC;AAC3C,iBAAA,EAAA;AAED,gBAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EACK,0BAA0B,CAAC,IAAI,CAAC,CAC5B,CACR,EACR,EAAA,CAAC,CACD,CACL,CACP;QACA,aAAa,CACZ,EACR;AACN,CAAC,CAAC;AAGF,IAAA,oBAAA,kBAAA,UAAA,MAAA,EAAA;IAAkD,SAGjD,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAA;AACG,IAAA,SAAA,oBAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;AAMD,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,UAAA,EAAA;;;;AAAmB,YAAA,KAAA,EAAA,CAAC,KAAI,CAAC,KAAK,CAAC,SAAS;AAAC,SAAA,CAAA,CAAA;AA4FzC,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,oCAAA,EAAA;;;;mBAA6C,UACzC,GAAoB,EACpB,WAA4B,EAAA;gBAE5B,IAAM,UAAU,GAAG,2BAA2B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACjE,IAAM,UAAU,GAAG,0BAA0B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAEhE,IAAI,UAAU,IAAI,UAAU,EAAE;AAC1B,oBAAA,GAAG,CAAC,IAAI,CACJ,0BAA0B,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAClE,CAAC;AACL,iBAAA;AACD,gBAAA,OAAO,GAAG,CAAC;aACd;AAAC,SAAA,CAAA,CAAA;QAhHE,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;6BAPgB,oBAAoB,CAAA;AAe3B,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,QACI,IAAI,CAAC,KAAK,CAAC,cAAc;AACzB,gBAAA,sBAAoB,CAAC,YAAY,CAAC,cAAc,EAClD;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAkB,CAAA,SAAA,EAAA,oBAAA,EAAA;AAAtB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO;kBACnB,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc;kBACxC,CAAC,CAAC;SACX;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;YACN,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAChE,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;AACxC,gBAAA,OAAO,CAAC,CAAC,MAAM,CACX,WAAW,EACX,IAAI,CAAC,kCAAkC,EACvC,EAAE,CACL,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;AAAZ,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,IAAM,SAAS,GAAG,IAAI,CAAC,YAAY;kBAC7B,IAAI,CAAC,eAAe;AAClB,sBAAE,kBAAkB;AACpB,sBAAE,mBAAmB;kBACvB,IAAI,CAAC;AAEX,YAAA,IAAI,SAAS,EAAE;AACX,gBAAA,QACI,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EAAA,CAAI,EAClE;AACL,aAAA;AACD,YAAA,OAAO,IAAI,CAAC;SACf;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YACN,QACI,8BAAM,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAA;gBAC9B,KAAM,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAG,EAAA,IAAI,CAAC,QAAQ,CAAQ;AAC9D,gBAAA,KAAA,CAAA,aAAA,CAAC,cAAc,EAAA,EACX,SAAS,EAAC,OAAO,EACjB,OAAO,EACH,KAAA,CAAA,aAAA,CAAC,sCAAsC,EAAA,EACnC,WAAW,EAAE,IAAI,CAAC,oBAAoB,EACtC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAA,CAC9C,EAEN,oBAAoB,EAAE,IAAI,EAAA;AAE1B,oBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,EACxB,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAA;;wBAEvB,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,mBAAmB,EAAA,CAAG,CACzC,CACM,CACd,EACT;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;YACN,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAChE,IAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,UAAA,IAAI,EAAI,EAAA,OAAA,IAAI,CAAC,IAAI,CAAT,EAAS,CAAC,CAAC,CAAC;YACxE,OAAO,iBAAiB,IAAI,EAAE,CAAC;SAClC;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAuB,CAAA,SAAA,EAAA,yBAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;YAAV,IAgBC,KAAA,GAAA,IAAA,CAAA;YAZG,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC;AAChE,YAAA,IAAM,iBAAiB,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,UAAA,IAAI,EAAA,EAAI,OAAA,IAAI,CAAC,IAAI,CAAT,EAAS,CAAC,CAAC;AACpE,YAAA,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;AAC3B,iBAAA,GAAG,CAAC,UAAA,IAAI,EAAA,EAAI,QAAC;AACV,gBAAA,KAAK,EAAE,0BAA0B,CAAC,IAAI,CAAC;AACvC,gBAAA,KAAK,EAAE,CAAC,CAAC,MAAM,CACX,iBAAiB,CAAC,IAAI,CAAC,EACvB,KAAI,CAAC,kCAAkC,EACvC,EAAE,CACL;aACJ,EAAC,EAAA,CAAC;AACF,iBAAA,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAnB,EAAmB,CAAC,CAAC;SACzC;;;AAAA,KAAA,CAAA,CAAA;AAiBS,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;SAC7C;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAhB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC;SAClD;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAAb,QAAA,GAAA,EAAA,YAAA;YAAV,IAiCC,KAAA,GAAA,IAAA,CAAA;YAhCG,OAAO,IAAI,CAAC,YAAY;AACpB,kBAAE,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK,EAAA,EAAK,QAC9C,KAAA,CAAA,aAAA,CAAC,KAAK,EACF,EAAA,GAAG,EAAE,IAAI,CAAC,KAAK,EACf,SAAS,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,UAAU,EACN,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EACI,KAAK,EAAE;4BACH,UAAU,EAAE,KAAI,CAAC,cAAc;4BAC/B,KAAK,EAAE,KAAI,CAAC,kBAAkB;AAC9B,4BAAA,OAAO,EAAE,MAAM;AAClB,yBAAA,EAAA;wBAED,KAAC,CAAA,aAAA,CAAA,mBAAmB,IAChB,IAAI,EAAE,IAAI,CAAC,KAAK,EAChB,KAAK,EAAE;AACH,gCAAA,QAAQ,EAAE,QAAQ;AAClB,gCAAA,UAAU,EAAE,QAAQ;AACpB,gCAAA,YAAY,EAAE,UAAU;AAC3B,6BAAA,EAAA,CACH,CACC,EAEX,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAK,EACvB,aAAa,EAAE,KAAI,CAAC,KAAK,CAAC,aAAa,EACvC,UAAU,EAAE,IAAI,CAAC,KAAK,EACtB,aAAa,EAAE,mBAAoB,GAAA,KAAK,GAAG,GAAA,EAC3C,UAAU,EAAE,IAAI,GAClB,EACL,EAAA,CAAC;kBACF,IAAI,CAAC;SACd;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AACI,gBAAA,KAAA,CAAA,aAAA,CAAC,KAAK,EAAA,EACF,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAC3B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,UAAU,EAAE,IAAI,CAAC,cAAc,EAC/B,UAAU,EACN,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,IAAI,CAAC,oBAAoB,EAEzD,YAAY,EAAE,IAAI,CAAC,eAAe,EAClC,aAAa,EAAE,yBAAyB,EAC1C,CAAA;AACF,gBAAA,KAAA,CAAA,aAAA,CAAC,QAAQ,EAAC,EAAA,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAA;AACpC,oBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAO,IAAI,CAAC,SAAS,CAAQ,CACtB,CACR,EACT;SACL;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;SAClC;;;AApLD,IAAA,MAAA,CAAA,cAAA,CAAA,oBAAA,EAAA,cAAA,EAAA;;;;AAA6B,QAAA,KAAA,EAAA;AACzB,YAAA,cAAc,EAAE,EAAE;AACrB,SAAA;AAAC,KAAA,CAAA,CAAA;AAGF,IAAA,UAAA,CAAA;QADC,UAAU;AAC8B,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAE/B,IAAA,UAAA,CAAA;QAAT,QAAQ;AAKR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAWR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAaR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAuBR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAgBR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAiBS,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAiCR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAyBD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAGZ,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;IA5LgB,oBAAoB,GAAA,sBAAA,GAAA,UAAA,CAAA;QADxC,QAAQ;AACY,KAAA,EAAA,oBAAoB,CA6LxC,CAAA;IAAD,OAAC,oBAAA,CAAA;AAAA,CA7LD,CAAkD,KAAK,CAAC,SAAS,CA6LhE,CAAA;;AChQD,IAAA,UAAA,kBAAA,UAAA,MAAA,EAAA;IAAwC,SAAoC,CAAA,UAAA,EAAA,MAAA,CAAA,CAAA;AAWxE,IAAA,SAAA,UAAA,CAAY,KAAsB,EAAA;QAAlC,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;QADG,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,UAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAAjB,QAAA,GAAA,EAAA,YAAA;YACN,IAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;SACrC;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAI,UAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;;AACI,YAAA,OAAA,EAAA,GAAA,EAAA;gBACI,EAAC,CAAA,SAAS,CAAC,cAAc,CAAA,GACrB,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;oBAC3B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,cAAc,CAAC;AAChD,wBAAA,SAAS,IACT,KAAC,CAAA,aAAA,CAAA,YAAY,EACT,EAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EACrC,YAAY,EACR,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,IAAI,EAAE,EAEpD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,EACnC,CAAA,IACF,IAAI;gBACZ,EAAC,CAAA,SAAS,CAAC,MAAM,CAAA,GACb,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;AAC3B,oBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,SAAS,IACtD,KAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EACR,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EACrC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,EACnC,CAAA,IACF,IAAI;AACZ,gBAAA,EAAA,CAAC,SAAS,CAAC,KAAK,CAAA,GAAG,IAAI,CAAC,WAAW,CAC/B,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,KAAK,CAClB;AACD,gBAAA,EAAA,CAAC,SAAS,CAAC,UAAU,CAAA,GAAG,IAAI,CAAC,WAAW,CACpC,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,OAAO,CACpB;gBACD,EAAC,CAAA,SAAS,CAAC,IAAI,CAAA,GACX,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;AAC3B,oBAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,IACpD,KAAA,CAAA,aAAA,CAAC,SAAS,EAAA,EACN,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EACrC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,EACnC,CAAA,IACF,IAAI;gBACZ,EAAC,CAAA,SAAS,CAAC,eAAe,CAAA,GACtB,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;oBAC3B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,CAAC;wBACjD,SAAS,IACT,KAAA,CAAA,aAAA,CAAC,oBAAoB,EAAA,EACjB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EACrC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAA,CACpD,IACF,IAAI;AACd,gBAAA,EAAA,CAAA;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YAAA,IAeC,KAAA,GAAA,IAAA,CAAA;YAdG,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE;AACH,oBAAA,SAAS,EAAE,QAAQ;AACnB,oBAAA,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;AAC/B,oBAAA,QAAQ,EAAE,UAAU;AACvB,iBAAA,EAAA,WAAA,EACS,kBAAkB,EAAA,EAE3B,IAAI,CAAC,KAAK;AACN,iBAAA,MAAO,CAAC,GAAG,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA,EAAA,CAAC;AACzC,iBAAA,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAA,EAAA,CAAC,CAC7C,EACR;SACL;;;;;;eAED,UAAoB,SAAoB,EAAE,SAAoB,EAAA;;AAC1D,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe;gBAC9B,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,SAAS,IACnD,KAAC,CAAA,aAAA,CAAA,QAAQ,EACL,EAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,mBAAmB,QAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,MAAM,EAC9D,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EACrC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC3B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAC/B,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,UAAU,EAAE,SAAS,EACrB,aAAa,EAAE,cAAc,CAAC,SAAS,CAAC,EACxC,yBAAyB,EAAE,IAAI,CAAC,4BAA4B,CACxD,SAAS,CACZ,EACD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EACxC,CAAA,IACF,IAAI,CAAC;SACZ;;;;;;AAED,QAAA,KAAA,EAAA,UAAqC,SAAoB,EAAA;;AACrD,YAAA,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,EAAE;;AAE/B,gBAAA,OAAA,EAAA,GAAA,EAAA;oBACI,EAAC,CAAA,0BAA0B,CAAC,WAAW,CAAG,GAAA;AACtC,wBAAA,IAAI,EAAE,KAAK;AACd,qBAAA;AACH,oBAAA,EAAA,CAAA;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,SAAS,CAAC;AACpB,aAAA;SACJ;;AApID,IAAA,MAAA,CAAA,cAAA,CAAA,UAAA,EAAA,cAAA,EAAA;;;;AAAuD,QAAA,KAAA,EAAA;AACnD,YAAA,MAAM,EAAE;AACJ,gBAAA,SAAS,CAAC,cAAc;AACxB,gBAAA,SAAS,CAAC,MAAM;AAChB,gBAAA,SAAS,CAAC,KAAK;AACf,gBAAA,SAAS,CAAC,IAAI;AACd,gBAAA,SAAS,CAAC,eAAe;AAC5B,aAAA;AACJ,SAAA;AAAC,KAAA,CAAA,CAAA;AAOQ,IAAA,UAAA,CAAA;QAAT,QAAQ;AAGR,KAAA,EAAA,UAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;IAnBgB,UAAU,GAAA,UAAA,CAAA;QAD9B,QAAQ;AACY,KAAA,EAAA,UAAU,CAsI9B,CAAA;IAAD,OAAC,UAAA,CAAA;AAAA,CAtID,CAAwC,KAAK,CAAC,SAAS,CAsItD,CAAA;;ACvJD,IAAM,mBAAmB,GAAG,QAAQ,CAAC,UAAC,KAAgC,EAAA;IAClE,SAAS,2BAA2B,CAAC,aAAqB,EAAA;QACtD,OAAO,KAAK,CAAC,oBAAoB,IAAI,KAAK,CAAC,oBAAoB,CAAC,KAAK;cAC/D,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,aAAa,CAAC;cAC/C,IAAI,CAAC;KACd;IAED,IAAI,KAAK,CAAC,oBAAoB,EAAE;QAC5B,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AACvD,KAAA;IAED,IAAM,wBAAwB,GAAG,2BAA2B,CACxD,KAAK,CAAC,aAAa,CACtB,CAAC;AAEF,IAAA,OAAO,wBAAwB;QAC3B,wBAAwB,CAAC,MAAM,KAAK,UAAU;QAC9C,wBAAwB,CAAC,IAAI,IAC7B,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAC,QAAQ,EAAA,EAAA,kBAAA,CAEnD,IACJ,IAAI,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,IAAM,aAAa,GAAG,UAAC,KAA0B,EAAA;AACrC,IAAA,IAAA,KAAK,GAA2B,KAAK,CAAA,KAAhC,EAAE,MAAM,GAAmB,KAAK,CAAA,MAAxB,EAAE,YAAY,GAAK,KAAK,aAAV,CAAW;AAE9C,IAAA,IAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC,aAAa,GAAG,YAAY,CAAC;;IAGnE,IAAM,UAAU,GAAG,MAAM;AACrB,UAAK,MAAM,CAAC,IAAI,GAAK,IAAA,GAAA,MAAM,CAAC,WAAa;UACvC,aAAa,CAAC;IAEpB,QACI,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAA;AACzB,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;YACK,UAAU;;AAAI,YAAA,KAAK,CAAC,eAAe;;AAAK,YAAA,KAAK,CAAC,aAAa;AAC1D,YAAA,GAAA,CAAA;AACN,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACI,YAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACI,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,EAC7B,IAAI,EAAE,iCAA+B,aAAe,EACpD,MAAM,EAAC,QAAQ,EAGf,EAAA,MAAA,CAAA;AACJ,YAAA,KAAA,CAAA,aAAA,CAAC,mBAAmB,EAAA,EAChB,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAChD,aAAa,EAAE,aAAa,EAAA,CAC9B,CACA,CACJ,EACR;AACN,CAAC;;ACrBD,IAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC,IAAM,MAAM,GAAG,4BAA4B,CAAC;AAC5C,SAAS,aAAa,CAClB,QAAe,EACf,KAAkB,EAClB,CAAa,EACb,CAAa,EAAA;AAFb,IAAA,IAAA,KAAA,KAAA,KAAA,CAAA,EAAA,EAAA,KAAkB,GAAA,EAAA,CAAA,EAAA;AAClB,IAAA,IAAA,CAAA,KAAA,KAAA,CAAA,EAAA,EAAA,CAAa,GAAA,CAAA,CAAA,EAAA;AACb,IAAA,IAAA,CAAA,KAAA,KAAA,CAAA,EAAA,EAAA,CAAa,GAAA,CAAA,CAAA,EAAA;IAEb,IAAM,IAAI,GAAI,QAAQ,CAAC,eAAe,CAClC,MAAM,EACN,MAAM,CACqB,CAAC;AAChC,IAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAA,KAAA,EAAE,CAAC,EAAA,CAAA,EAAE,CAAC,EAAA,CAAA,EAAE,CAAC,CAAC;AAC9B,IAAA,IAAI,QAAQ,EAAE;AACV,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACzB,KAAA;AACD,IAAA,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,SAAkB,EAAA;IACtC,IAAM,KAAK,GAAI,QAAQ,CAAC,eAAe,CACnC,MAAM,EACN,GAAG,CACqB,CAAC;IAC7B,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC;AACjD,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAoDD,IAAA,oBAAA,kBAAA,UAAA,MAAA,EAAA;IAEU,SAAiD,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAA;AAkjBvD,IAAA,SAAA,oBAAA,CAAY,KAAmC,EAAA;QAA/C,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAyEf,IAAA,CAAA;AAtnBW,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,aAAA,EAAA;;;;mBAA+B,IAAI;AAAC,SAAA,CAAA,CAAA;AACpC,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,kBAAA,EAAA;;;;mBAAoC,KAAK;AAAC,SAAA,CAAA,CAAA;AAC1C,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,aAAA,EAAA;;;;;AAA4B,SAAA,CAAA,CAAA;AAExC,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,kBAAA,EAAA;;;;AAA4C,YAAA,KAAA,EAAA,0BAA0B,EAAE;AAAC,SAAA,CAAA,CAAA;AAEzE,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,iBAAA,EAAA;;;;AAAsD,YAAA,KAAA,EAAA,IAAI,iCAAiC,EAAE;AAAC,SAAA,CAAA,CAAA;AAE9F,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,UAAA,EAAA;;;;;AAAsB,SAAA,CAAA,CAAA;AACtB,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,cAAA,EAAA;;;;;AAAqC,SAAA,CAAA,CAAA;QAsiBjC,cAAc,CAiBZ,KAAI,CAAC,CAAC;QAER,KAAI,CAAC,QAAQ,GAAG;AACZ,YAAA,0BAA0B,EAAE,MAAM,CAC9B,UAAC,KAAa,EAAA;AACV,gBAAA,QAAC,KAAI,CAAC,cAAc,CAAC,SAAS,GAAG,aAAa,CAC1C,KAAK,EACL,KAAI,CAAC,QAAQ,EACb,KAAI,CAAC,UAAU,EACf,KAAI,CAAC,gBAAgB,EACrB,KAAI,CAAC,KAAK,CAAC,cAAc,CAC5B,EAAC;AANF,aAME,CACT;AACD,YAAA,oBAAoB,EAAE,MAAM,CACxB,UAAC,KAAa,EAAA;AACV,gBAAA,QAAC,KAAI,CAAC,cAAc,CAAC,SAAS,GAAG,qBAAqB,CAClD,KAAI,CAAC,QAAQ,EACb,KAAK,CACR,EAAC;AAHF,aAGE,CACT;AACD,YAAA,gCAAgC,EAAE,MAAM,CACpC,UAAC,KAAa,EAAA;AACV,gBAAA,QAAC,KAAI,CAAC,cAAc,CAAC,eAAe,GAAG,aAAa,CAChD,KAAK,EACL,KAAI,CAAC,QAAQ,EACb,KAAI,CAAC,gBAAgB,EACrB,KAAI,CAAC,UAAU,EACf,KAAI,CAAC,KAAK,CAAC,cAAc,CAC5B,EAAC;AANF,aAME,CACT;AACD,YAAA,0BAA0B,EAAE,MAAM,CAC9B,UAAC,KAAa,EAAA;AACV,gBAAA,QAAC,KAAI,CAAC,cAAc,CAAC,eAAe,GAAG,qBAAqB,CACxD,KAAI,CAAC,QAAQ,EACb,KAAK,CACR,EAAC;AAHF,aAGE,CACT;AACD,YAAA,kBAAkB,EAAE,YAAA;AAChB,gBAAA,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAChC;AACD,YAAA,kBAAkB,EAAE,YAAA;AAChB,gBAAA,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;aACjC;YACD,kBAAkB,EAAE,MAAM,CAAC,YAAA;gBACvB,KAAI,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC,KAAI,CAAC,cAAc;AACjD,qBAAA,WAAW,CAAC;AACrB,aAAC,CAAC;YACF,gBAAgB,EAAE,MAAM,CAAC,YAAA;AACrB,gBAAA,KAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AAC5B,aAAC,CAAC;YACF,gBAAgB,EAAE,MAAM,CAAC,YAAA;AACrB,gBAAA,KAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC7B,aAAC,CAAC;SACL,CAAC;;KACL;AA3mBS,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB;AAC9B,kBAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW;kBACzC,IAAI,CAAC;SACd;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,CAAC;SAC9D;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAA1B,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC;SAC5D;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,UACI,mBAAwB,EACxB,gBAA2C,EAC3C,KAAc,EAAA;YAEd,IAAM,KAAK,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AACrD,YAAA,IAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACtC,YAAA,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,IACjD,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAC/B,KAAK,EACL,mBAAmB,EACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,KAAK,CACR,KAED,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA;gBACK,KAAK;AAAW,gBAAA,WAAA,EAAA,EAAA,IAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAE,CACvC,CACZ,CAAC;AACF,YAAA,IAAM,KAAK,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAErD,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,WAAA,EAAgB,UAAW,GAAA,KAAK,IAAG,KAAK,GAAG,MAAI,KAAO,GAAG,EAAE,CAAE,EAAA;gBACxD,SAAS;gBACV,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AACN,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;;oBAAkB,KAAK,CAAQ,CAC7B,EACR;SACL;;AAGD,IAAA,MAAA,CAAA,cAAA,CAAc,oBAAM,CAAA,SAAA,EAAA,QAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;YACI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,GAAG,CAClD,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,CAAC,KAAK,CAAP,EAAO,CACf,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,SAAS,CAAC;AACpB,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAc,oBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;YACI,IAAI,SAAS,GAAmB,EAAE,CAAC;;;YAInC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxD,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAC1D,qBAAA,KAAK,CAAC;gBACX,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAC9D,qBAAA,SAAS,CAAC;AACf,gBAAA,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AAC7B,qBAAA,qCAAqC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACrD,gBAAA,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAC7B,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,iBAAiB,CAAC,GAAG,CACxB,CAAC;gBAEF,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;AAC7D,qBAAA,KAAK,CAAC;AACX,gBAAA,IAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AACnC,qBAAA,0BAA0B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,gBAAA,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AAChC,qBAAA,qCAAqC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACrD,SAAS,GAAG,SAAS,CAAC,MAAM,CACxB,IAAI,CAAC,gBAAgB,CACjB,eAAe,EACf,YAAY,EACZ,WAAW,EACX,iBAAiB,CAAC,MAAM,CAC3B,CACJ,CAAC;AACL,aAAA;AAAM,iBAAA,IACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,MAAM,GAAG,CAAC,EAC9D;gBACE,OAAO,IAAI,CAAC,gBAAgB,CACxB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,EACpC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAClD,CAAC;AACL,aAAA;AAED,YAAA,OAAO,SAAS,CAAC;SACpB;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,UACI,mBAA2C,EAC3C,gBAA2C,EAC3C,KAAc,EACd,SAA6B,EAAA;;AAG7B,YAAA,IAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC;AACrD,iBAAA,GAAG,CAAC,UAAA,QAAQ,EAAI,EAAA,OAAA,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAA,EAAA,CAAC;AAC5D,iBAAA,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA;gBACP,OAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AACtC,oBAAA,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AAClC,sBAAE,CAAC;sBACD,CAAC,CAAC,CAAA;AAHR,aAGQ,CACX,CAAC;AAEN,YAAA,IAAM,KAAK,GAAmB,IAAI,CAAC,kBAAkB,CACjD,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,EACL,SAAS,CACZ,CAAC;YACF,IAAM,gBAAgB,GAClB,CAACA,UAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,UAAA,IAAI,EAAA,EAAI,OAAA,CAAC,IAAI,CAAC,KAAM,CAAC,IAAI,CAAA,EAAA,CAAC,CAAC;AAChE,YAAA,IAAI,gBAAgB,EAAE;AAClB,gBAAA,IAAI,CAAC,yBAAyB,CAC1B,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,EAC3C,KAAK,CACR,CAAC;AACL,aAAA;AAED,YAAA,OAAO,KAAK,CAAC;SAChB;;;;;;AAED,QAAA,KAAA,EAAA,UACI,iBAAwB,EACxB,gBAA2C,EAC3C,KAAc,EACd,SAA6B,EAAA;YAJjC,IAgDC,KAAA,GAAA,IAAA,CAAA;YA1CG,IAAM,KAAK,GAAmB,EAAE,CAAC;YACjC,IAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAC3C,iBAAiB,EACjB,gBAAgB,CACnB,CAAC;YACF,IAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC,YAAA,iBAAiB,CAAC,OAAO,CAAC,UAAC,SAAS,EAAE,KAAK,EAAA;gBACvC,IAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AAC3C,gBAAA,IAAI,KAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;oBAC/B,OAAO;AACV,iBAAA;AAED,gBAAA,IAAM,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC9C,gBAAA,IAAM,SAAS,GACX,KAAK,GAAG,eAAe;oBACvB,aAAa,GAAG,uBAAuB,CAAC;AAC5C,gBAAA,IAAM,KAAK,GAAG,KAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;gBAE5D,KAAK,CAAC,IAAI,CAAC;AACP,oBAAA,KAAK,EAAA,KAAA;AACL,oBAAA,KAAK,EAAA,KAAA;AACL,oBAAA,SAAS,EAAA,SAAA;AACT,oBAAA,KAAK,EAAE,aAAa;oBACpB,OAAO,EAAE,KAAI,CAAC,eAAe,CACzB,SAAS,EACT,gBAAgB,EAChB,KAAK,CACR;AACD,oBAAA,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,gBAAgB;0BAC5B,KAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC;AACxC,0BAAE,4BAA4B,CACxB,SAAS,EACT,kCAAkC,EAClC,KAAI,CAAC,KAAK,CAAC,gBAAgB,EAC3B,KAAI,CAAC,KAAK,CAAC,gBAAgB,CAC9B;AACP,oBAAA,KAAK,EAAA,KAAA;AACR,iBAAA,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,KAAK,CAAC;SAChB;;;;;;eAED,UACI,iBAAwB,EACxB,gBAA2C,EAAA;;AAG3C,YAAA,IAAM,QAAQ,GACV,iBAAiB,IAAI,iBAAiB,CAAC,CAAC,CAAC;AACrC,kBAAE,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;kBACzD,CAAC,CAAC;;YAGZ,IAAI,kBAAkB,GAAG,iBAAiB;AACtC,kBAAE,iBAAiB,CAAC,SAAS,CACvB,UAAA,SAAS,EAAA;oBACL,OAAA,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;wBAC9C,QAAQ,CAAA;AADR,iBACQ,CACf;kBACD,CAAC,CAAC,CAAC;AAET,YAAA,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;AAC3B,gBAAA,kBAAkB,GAAG,iBAAiB;sBAChC,iBAAiB,CAAC,MAAM;sBACxB,CAAC,CAAC;AACX,aAAA;AACD,YAAA,OAAO,kBAAkB,CAAC;SAC7B;;;;;;eAED,UACI,gBAAmC,EACnC,KAAqB,EAAA;AAErB,YAAA,IAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAI,EAAA,OAAA,IAAI,CAAC,KAAK,CAAV,EAAU,CAAC,CAAC;YAC7C,IAAM,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,CAAA,KAAA,CAAR,IAAI,EAAQ,MAAM,CAAA,GAAI,IAAI,CAAC,GAAG,OAAR,IAAI,EAAQ,MAAM,CAAC,IAAI,CAAC,CAAC;YACrE,IAAM,cAAc,GAAG,CAAC,CAAC;AACzB,YAAA,KAAK,GAAG,KAAK;AACR,iBAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;AACxC,iBAAA,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,CAAC;iBAChD,IAAI,CAAC,eAAe,CAAC,CAAC;YAC3B,KAAK,CAAC,cAAc,CAAC,CAAC,KAAM,CAAC,IAAI,GAAG,IAAI,CAAC;SAC5C;;;;;;eAED,UACI,iBAAwB,EACxB,gBAA2C,EAAA;YAE3C,IAAI,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,CAC/C,iBAAiB,EACjB,gBAAgB,CACnB,CAAC;YAEF,IAAM,cAAc,GAAG,CAAC,CAAC;YACzB,IAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,YAAA,IAAM,6BAA6B,GAAG,kBAAkB,GAAG,SAAS,CAAC;AACrE,YAAA,IAAM,mCAAmC,GACrC,kBAAkB,GAAG,cAAc,CAAC;YACxC,IAAM,mBAAmB,GACrB,6BAA6B;AAC7B,gBAAA,mCAAmC,CAAC;AAExC,YAAA,OAAO,mBAAmB;AACtB,kBAAE,CAAC;kBACD,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;SACjD;;;;;;AAED,QAAA,KAAA,EAAA,UAA0B,KAAa,EAAA;YACnC,IAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;YAC9C,IAAM,iBAAiB,GACnB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU;AAC1C,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;AACtC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB;AACjC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU;AAC5C,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM;AACxC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C;;gBAED,KAAK;AACD,oBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,aAAa;AACX,wBAAA,CAAC,CAAC;YAEd,OAAO,WAAW,IAAI,iBAAiB,CAAC;SAC3C;;;;;;AAED,QAAA,KAAA,EAAA,UAA4B,iBAAwB,EAAA;AAChD,YAAA,IACI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB;AACjC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM;gBACxC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAC5B;gBACE,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAC1D,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAiB,CAAC,MAAO,CAC7C,CAAC,WAAW,CAAC;gBAEd,IAAM,kBAAkB,GAAG,UAAC,MAAuB,EAAA;AAC/C,oBAAA,OAAA,iBAAiB,CAAC,IAAI,CAAC,UAAA,QAAQ,EAAA;wBAC3B,IAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;AAC1C,wBAAA,QACI,KAAK,IAAI,MAAM,CAAC,eAAe;AAC/B,4BAAA,KAAK,IAAI,MAAM,CAAC,aAAa,EAC/B;AACN,qBAAC,CAAC,CAAA;AANF,iBAME,CAAC;AAEP,gBAAA,OAAO,WAAW,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACjD,aAAA;AAED,YAAA,OAAO,EAAE,CAAC;SACb;;;;;;AAED,QAAA,KAAA,EAAA,UACI,SAAc,EACd,KAAa,EACb,IAAa,EAAA;YAEb,IAAM,QAAQ,GAAG,EAAE,CAAC;YACpB,IAAM,UAAU,GAAG,OAAO,CAAC;;YAE3B,IAAM,IAAI,GAAG,iBAAiB,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;YAC7C,IAAM,UAAU,GAAG,uBAAuB,CACtC,IAAI,EACJ,KAAK,EACL,UAAU,EACV,QAAQ,EACR,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,IAAI,CAAC,aAAa,CACrB,CAAC;YAEF,OAAO;AACH,gBAAA,IAAI,EAAA,IAAA;AACJ,gBAAA,UAAU,EAAA,UAAA;AACV,gBAAA,QAAQ,EAAA,QAAA;AACR,gBAAA,UAAU,EAAA,UAAA;AACV,gBAAA,IAAI,EAAA,IAAA;aACP,CAAC;SACL;;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;YAAV,IA8CC,KAAA,GAAA,IAAA,CAAA;YA7CG,IACI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU;gBAC3C,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;gBACvC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBACnD,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU;gBAC3C,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;AACvC,gBAAA,EACI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB;oBACjC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAC/C;gBACD,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM;AACzC,gBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACvC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C;AACD,gBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACvC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,WAAW;gBACb,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAC5B;AACE,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;AAAM,iBAAA;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAC7C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,WAAW,CAAC,GAAG,CAAC,UAAC,KAAsB,EAAA;oBACrC,IAAM,MAAM,GAAG,KAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBAClD,OAAO;wBACH,UAAU,EAAE,KAAK,CAAC,eAAe;wBACjC,QAAQ,EAAE,KAAK,CAAC,aAAa;AAC7B,wBAAA,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY;wBAChD,KAAK,EAAE,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC;wBAC9C,OAAO,GACH,KAAA,CAAA,aAAA,CAAC,aAAa,EAAA,EACV,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,oBAAoB,EAChB,KAAI,CAAC,KAAK,CAAC,oBAAoB,EAAA,CAErC,CACL;qBACJ,CAAC;AACN,iBAAC,CAAC,CAAC;AACN,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAA1B,QAAA,GAAA,EAAA,YAAA;YAGN,IACI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS;AAC1C,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;AACtC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB;gBACjC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS;AAC5C,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM;AACxC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C;AACD,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,WAAW;gBACb,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAC1B;gBACE,OAAO,0BAA0B,CAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,WAAW,CAChB,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAArB,QAAA,GAAA,EAAA,YAAA;YACN,IACI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS;AAC1C,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;AACtC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EACnD;AACE,gBAAA,OAAOA,UAAC,CAAC,KAAK,CACV,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EACtC,eAAe,CAClB,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;YACI,QACI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM;AACnC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB;AACjC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM;AACxC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C;AACD,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CACtC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAC3C,CAAC,aAAa;;AAEnB,gBAAA,sBAAsB,EACxB;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,QACI,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAA;AACzB,gBAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACI,IAAI,EAAE,kCAAmC,GAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAQ,EAC5E,MAAM,EAAC,QAAQ,EAEd,EAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAClC,CACF,EACR;SACL;;AAES,IAAA,MAAA,CAAA,cAAA,CAAY,oBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO;AACH,gBAAA,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE;aAClC,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;;YADA,IAmEC,KAAA,GAAA,IAAA,CAAA;AAjEG,YAAA,IAAI,WAAW,GAAe,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CACnD,mBAAmB,CACtB,CAAC,CAAC,CAAQ,CAAC;YAEZ,IAAM,UAAU,GAAG,qCAAqC,CAAC;YACzD,IAAM,YAAY,GAAG,EAAE,CAAC;AACxB,YAAA,IAAM,eAAe,GAAG,YAAY,GAAG,EAAE,CAAC;AAC1C,YAAA,IAAM,yBAAyB,GAAG,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAE5D,IAAI,QAAQ,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAe,CAAC;;YAGrE,IAAI,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC7C,YAAA,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;;YAG5B,CAAA,EAAA,GAAA,QAAQ,CAAC,SAAS,EAAC,GAAG,CAAI,KAAA,CAAA,EAAA,EAAA,yBAAyB,CAAE,CAAA;;AAGrD,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;;AAGpC,YAAA,IAAM,UAAU,GAAG,cAAc,CAC7B,eAAgB,GAAA,YAAY,CAAC,YAAY,CAAC,SAAS,GAAG,GAAA,CACzD,CAAC;AACF,YAAA,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AAE5B,YAAA,IAAI,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC/D,YAAA,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACvE,IAAI,WAAW,GAAG,CAAC,CAAC;AAEpB,YAAA,YAAY,CAAC,IAAI,CAAC,UAAC,GAAW,EAAE,KAAkB,EAAA;AAC9C,gBAAA,IAAI,aAAa,GAAG,cAAc,CAC9B,YAAa,GAAA,KAAI,CAAC,WAAW,GAAI,GAAA,GAAA,WAAW,GAAG,GAAA,CAClD,CAAC;gBACF,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEjD,IAAI,cAAc,GAAG,cAAc,CAC/B,cAAA,IAAe,WAAW,GAAG,CAAC,CAAG,GAAA,GAAA,CACpC,CAAC;AACF,gBAAA,IAAI,UAAU,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAClE,gBAAA,IAAI,SAAS,GAAG,aAAa,CACzB,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EACnD,UAAU,EACV,UAAU,GAAG,eAAe,GAAG,YAAY,EAC3C,CAAC,CACJ,CAAC;AACF,gBAAA,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAEjC,gBAAA,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;gBACjD,WAAW,IAAI,EAAE,CAAC;AACtB,aAAC,CAAC,CAAC;;AAGH,YAAA,IAAM,kBAAkB,GAAI,QAA+B,CAAC,OAAO,EAAE,CAAC;AACtE,YAAA,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;gBACb,KAAK,EAAE,kBAAkB,CAAC,KAAK;gBAC/B,MAAM,EAAE,kBAAkB,CAAC,MAAM;AACpC,aAAA,CAAC,CAAC;;YAGH,CAAA,EAAA,GAAA,QAAQ,CAAC,SAAS,EAAC,MAAM,CAAI,KAAA,CAAA,EAAA,EAAA,yBAAyB,CAAE,CAAA;AACxD,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;AAEpC,YAAA,OAAO,QAAQ,CAAC;SACnB;;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC;SAC/C;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAd,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,cAAc,CACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CACjB,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM,GAAA,CAChD,EACD,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAC7B,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAChC,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,cAAc,CACjB,IAAI,CAAC,SAAS,CAAC,MAAM,CACjB,UAAA,CAAC,EAAI,EAAA,OAAA,CAAC,CAAC,SAAS,KAAK,iBAAiB,CAAC,MAAM,GAAA,CAChD,EACD,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAChC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CACnC,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AA8ES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAd,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,SAAS,CAAC;SACzB;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAQ,CAAA,SAAA,EAAA,UAAA,EAAA;AAAZ,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,CAAC,CAAC,CAAC;SAC9D;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SACrD;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAC3D;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAAb,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,aAAa,CAChB,IAAI,CAAC,cAAc,CAAC,SAAS,EAC7B,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,KAAK,CAAC,cAAc,CAC5B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,oBAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;YACN,OAAO,aAAa,CAChB,IAAI,CAAC,cAAc,CAAC,eAAe,EACnC,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,KAAK,CAAC,cAAc,CAC5B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAGD,QAAA,KAAA,EAAA,UAAsB,MAAc,EAAA;AAChC,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAE1B,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC1B,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACpC,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAkC,kBAA4B,EAAA;YAD9D,IAeC,KAAA,GAAA,IAAA,CAAA;AAbG,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE;AACpC,gBAAA,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;AAC1D,aAAA;AAAM,iBAAA;;gBAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CACrC,UAAA,SAAS,EAAA,EAAI,QAAC,KAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,QAAQ,EAAC,EAAA,CAC5D,CAAC;;gBAGF,kBAAkB,CAAC,OAAO,CACtB,UAAA,SAAS,EAAI,EAAA,QAAC,KAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,SAAS,EAA5C,EAA6C,CAC7D,CAAC;AACL,aAAA;SACJ;;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YAAA,IAgHC,KAAA,GAAA,IAAA,CAAA;YA/GG,IACI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU;gBAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EACxC;AACE,gBAAA,QACI,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,KAAK,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,EAClC,GAAG,EAAE,UAAC,GAAmB,IAAK,QAAC,KAAI,CAAC,YAAY,GAAG,GAAG,EAAxB,EAAyB,EACvD,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAC5C,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAA;oBAE5C,KAAC,CAAA,aAAA,CAAA,4BAA4B,EACzB,EAAA,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EACrD,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,sBAAsB,EAClB,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAE5C,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EACpD,4BAA4B,EACxB,IAAI,CAAC,QAAQ,CAAC,gCAAgC,EAElD,sBAAsB,EAClB,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAE5C,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EACpD,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EACpD,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAChD,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EACvC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAC/C,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,EAC3C,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,uBAAuB,EAAE,IAAI,CAAC,uBAAuB,EACrD,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EACjD,CAAA;AACF,oBAAA,KAAA,CAAA,aAAA,CAAC,QAAQ,EAAC,EAAA,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,IAC9C,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAC,CAAA,aAAA,CAAA,yBAAyB,OAAG,CAC5C;AACX,oBAAA,KAAA,CAAA,aAAA,CAAC,YAAY,EAAA,EACT,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EACrC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC9B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,IAAI,EAAE,IAAI,CAAC,aAAa,EACxB,IAAI,EAAE,IAAI,CAAC,SAAS,EACpB,kBAAkB,EACd,IAAI,CAAC,cAAc,GAAG,CAAC;AACnB,8BAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB;AAC/B,8BAAE,SAAS,EAEnB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,UAAU,EAAE,IAAI,CAAC,eAAe,EAChC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EACzC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EACrD,CAAA;AACF,oBAAA,KAAA,CAAA,aAAA,CAAC,UAAU,EAAA,EACP,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,4BAA4B,EACxB,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAE7C,CAAA,CACA,EACR;AACL,aAAA;iBAAM,IACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,UAAU;gBAC/C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,KAAK,SAAS,EAC3D;AACE,gBAAA,QACI,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;oBACI,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,wCAAwC,EAAG,CAAA;;AAClC,oBAAA,IAAI,CAAC,cAAc,CACtC,EACT;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,QACI,IAAI,CAAC,KAAK,CAAC,gBAAgB,KACvB,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,8BAA8B,EAAG,CAAA,CACjD,EACH;AACL,aAAA;SACJ;;AA/yBD,IAAA,MAAA,CAAA,cAAA,CAAA,oBAAA,EAAA,cAAA,EAAA;;;;AAAsE,QAAA,KAAA,EAAA;AAClE,YAAA,kBAAkB,EAAE,CAAC;AACrB,YAAA,cAAc,EAAE,IAAI;AACvB,SAAA;AAAC,KAAA,CAAA,CAAA;AAEU,IAAA,UAAA,CAAA;QAAX,UAAU;AAAqC,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AACpC,IAAA,UAAA,CAAA;QAAX,UAAU;AAA2C,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAC1C,IAAA,UAAA,CAAA;QAAX,UAAU;AAA6B,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAExC,IAAA,UAAA,CAAA;QADC,UAAU;AAC8D,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAO/D,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAiCD,IAAA,UAAA,CAAA;QADC,QAAQ;AASR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AA4CR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAkOS,IAAA,UAAA,CAAA;QAAT,QAAQ;AA8CR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AA2BR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAaR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AA+BS,IAAA,UAAA,CAAA;QAAT,QAAQ;AAIR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAmER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAQR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAQR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AA8ES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAQR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAES,IAAA,UAAA,CAAA;QAAT,QAAQ;AAQR,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAOZ,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAeZ,KAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;IAhsBgB,oBAAoB,GAAA,UAAA,CAAA;QADxC,QAAQ;AACY,KAAA,EAAA,oBAAoB,CAmzBxC,CAAA;IAAD,OAAC,oBAAA,CAAA;AAAA,CAnzBD,CAEU,KAAK,CAAC,SAAS,CAizBxB;;ACr6BM,IAAM,wBAAwB,GAA6C,UAAC,EAIlD,EAAA;AAH7B,IAAA,IAAA,KAAK,WAAA,EACL,SAAS,GAAA,EAAA,CAAA,SAAA,EACT,QAAQ,GAAA,EAAA,CAAA,QAAA,CAAA;AAER,IAAA,IAAM,YAAY,GAAG,2BAA2B,CAAC,KAAK,CAAC,CAAC;AACxD,IAAA,IAAM,cAAc,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;AAE/D,IAAA,OAAO,SAAS;QACZ,SAAS,CAAC,MAAM,GAAG,CAAC;AACpB,QAAA,QAAQ,KAAK,SAAS,CAAC,OAAO,IAC9B,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA;AACK,QAAA,kBAAkB,CAAC,KAAK,EAAE,cAAc,CAAC;0BACrC,KAET,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA;QACK,KAAK;AAAW,QAAA,WAAA,EAAA,EAAA,IAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAE,CACvC,CACZ,CAAC;AACN;;AC/BA,IAAA,uBAAA,kBAAA,YAAA;AAII,IAAA,SAAA,uBAAA,GAAA;AAFA,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,QAAA,EAAA;;;;mBAAmB,UAAU,CAAC,GAAG,CAAoB,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAAC,SAAA,CAAA,CAAA;QAGtE,cAAc,CAAC,IAAI,CAAC,CAAC;KACxB;;;;;AAGD,QAAA,KAAA,EAAA,UAAW,KAAa,EAAA;YADxB,IAeC,KAAA,GAAA,IAAA,CAAA;YAbG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AACzB,gBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAE9C,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;qBACZ,IAAI,CAAC,UAAC,CAAI,EAAA;AACP,oBAAA,OAAA,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;AAAvD,iBAAuD,CAC1D;qBACA,KAAK,CAAC,cAAM,OAAA,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAA3C,EAA2C,CAAC,CAAC;AACjE,aAAA;YAED,IAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAEpC,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;SAC7B;;AAID,IAAA,MAAA,CAAA,cAAA,CAAW,uBAAK,CAAA,SAAA,EAAA,OAAA,EAAA;AAAhB,QAAA,GAAA,EAAA,YAAA;YACI,OAAOA,UAAC,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;SAC5C;;;AAAA,KAAA,CAAA,CAAA;AApBD,IAAA,UAAA,CAAA;QADC,MAAM;AAeN,KAAA,EAAA,uBAAA,CAAA,SAAA,EAAA,KAAA,EAAA,IAAA,CAAA,CAAA;IAOL,OAAC,uBAAA,CAAA;AAAA,CA9BD,EA8BC,CAAA;;AC9BD,IAAA,kBAAA,kBAAA,UAAA,MAAA,EAAA;IAAwC,SAA4B,CAAA,kBAAA,EAAA,MAAA,CAAA,CAAA;AAApE,IAAA,SAAA,kBAAA,GAAA;;KA4BC;;;;;AA3BG,QAAA,KAAA,EAAA,UAAmB,KAAa,EAAA;;;;;AACN,wBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,IAAI,OAAO,CAAM,UAAC,OAAO,EAAE,MAAM,EAAA;;gCAEzD,OAAO;qCACF,IAAI,CACD,oFAAoF,CACvF;qCACA,IAAI,CAAC,MAAM,CAAC;AACZ,qCAAA,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACnB,qCAAA,GAAG,CAAC,UAAC,GAAG,EAAE,GAAG,EAAA;AACV,oCAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE;wCAChB,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,wCAAA,IAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;AAC/B,wCAAA,IAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;wCACzB,IAAM,GAAG,GAAQ,EAAE,CAAC;AACpB,wCAAA,KAAgB,UAAI,EAAJ,MAAA,GAAA,IAAI,EAAJ,EAAI,GAAA,MAAA,CAAA,MAAA,EAAJ,IAAI,EAAE;AAAjB,4CAAA,IAAI,GAAG,GAAA,MAAA,CAAA,EAAA,CAAA,CAAA;4CACR,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1B,yCAAA;wCACD,OAAO,CAAC,GAAG,CAAC,CAAC;AAChB,qCAAA;AAAM,yCAAA;wCACH,MAAM,CAAC,GAAG,CAAC,CAAC;AACf,qCAAA;AACL,iCAAC,CAAC,CAAC;AACX,6BAAC,CAAC,CAAA,CAAA;;AAtBI,4BAAA,aAAa,GAAG,EAsBpB,CAAA,IAAA,EAAA,CAAA;AAEF,4BAAA,OAAA,CAAA,CAAA,aAAO,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;;;;AAC/B,SAAA;;IACL,OAAC,kBAAA,CAAA;AAAD,CA5BA,CAAwC,uBAAuB,CA4B9D,CAAA;;ACxBe,SAAA,wBAAwB,CACpC,YAAoB,EACpB,0BAAgF,EAAA;AAAhF,IAAA,IAAA,0BAAA,KAAA,KAAA,CAAA,EAAA,EAAA,0BAAgF,GAAA,2CAAA,CAAA,EAAA;AAEhF,IAAA,OAAO,OAAO;SACT,GAAG,CAAC,MAAM,CAAC,0BAA0B,EAAE,EAAE,YAAY,EAAA,YAAA,EAAE,CAAC,CAAC;SACzD,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACpC,CAAC;AAED,IAAA,oBAAA,kBAAA,UAAA,MAAA,EAAA;IAA0C,SAA+B,CAAA,oBAAA,EAAA,MAAA,CAAA,CAAA;AACrE,IAAA,SAAA,oBAAA,CAAoB,0BAAmC,EAAA;AAAvD,QAAA,IAAA,KAAA,GACI,iBAAO,IACV,IAAA,CAAA;;;;;AAFmB,YAAA,KAAA,EAAA,0BAAA;;;KAEnB;;;;;AAED,QAAA,KAAA,EAAA,UAAa,aAAqB,EAAA;AAC9B,YAAA,OAAO,wBAAwB,CAC3B,aAAa,EACb,IAAI,CAAC,0BAA0B,CAClC;iBACI,IAAI,CAAC,UAAA,GAAG,EAAA;gBACL,OAAA,OAAO,CAAC,OAAO,CACX,qCAAA,GAAsC,GAAG,CAAC,IAAI,CAAC,MAAQ,CAC1D,CAAA;AAFD,aAEC,CACJ;AACA,iBAAA,KAAK,CAAC,UAAA,CAAC,EAAA,EAAI,OAAA,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAjB,EAAiB,CAAC,CAAC;SACtC;;IACL,OAAC,oBAAA,CAAA;AAAD,CAjBA,CAA0C,uBAAuB,CAiBhE,CAAA;;ACjBD,IAAA,8BAAA,kBAAA,YAAA;IAaI,SACI,8BAAA,CAAA,IAAkC,EAClC,mBAAmC,EACnC,WAA8B,EAC9B,gBAAmC,EACnC,gBAAmC,EACnC,YAA0D,EAAA;AAH1D,QAAA,IAAA,WAAA,KAAA,KAAA,CAAA,EAAA,EAAA,WAA8B,GAAA,EAAA,CAAA,EAAA;AAC9B,QAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAmC,GAAA,EAAA,CAAA,EAAA;AACnC,QAAA,IAAA,gBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,gBAAmC,GAAA,EAAA,CAAA,EAAA;AACnC,QAAA,IAAA,YAAA,KAAA,KAAA,CAAA,EAAA,EAAA,YAA0D,GAAA,EAAA,CAAA,EAAA;AAlBlD,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,aAAA,EAAA;;;;;AAAiC,SAAA,CAAA,CAAA;AACjC,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;;AAAsC,SAAA,CAAA,CAAA;AACtC,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;;AAAsC,SAAA,CAAA,CAAA;AACtC,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,cAAA,EAAA;;;;;AAA6D,SAAA,CAAA,CAAA;;AAGzE,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,MAAA,EAAA;;;;;AAA2C,SAAA,CAAA,CAAA;;;AAI3C,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,qBAAA,EAAA;;;;;AAAyD,SAAA,CAAA,CAAA;QAUrD,cAAc,CAAC,IAAI,CAAC,CAAC;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;AAE/C,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AACzC,QAAA,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;KACpC;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,8BAAwB,CAAA,SAAA,EAAA,0BAAA,EAAA;AAA5B,QAAA,GAAA,EAAA,YAAA;YACN,OAAOA,UAAC,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;SAC9C;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,8BAAO,CAAA,SAAA,EAAA,SAAA,EAAA;AAAlB,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,IAAI,CAAC,IAAI,CAAC;SACpB;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,8BAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;YADA,IAMC,KAAA,GAAA,IAAA,CAAA;AAJG,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;AAC9B;oBACE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,KAAI,CAAC,cAAc,CAACA,UAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAtC,EAAsC,CAAC;AAC/D,kBAAE,IAAI,CAAC,IAAI,CAAC;SACnB;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,8BAAkB,CAAA,SAAA,EAAA,oBAAA,EAAA;AAA7B,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,IAAI,CAAC,YAAY,CAAC;SAC5B;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,8BAAyB,CAAA,SAAA,EAAA,2BAAA,EAAA;AAApC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,uBAAuB,CAC1B,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,WAAW,CACnB,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,8BAA0B,CAAA,SAAA,EAAA,4BAAA,EAAA;AAArC,QAAA,GAAA,EAAA,YAAA;YADA,IAQC,KAAA,GAAA,IAAA,CAAA;AANG,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;AACnC;AACE,oBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,UAAA,CAAC,EAAA;AAC5B,wBAAA,OAAA,KAAI,CAAC,gBAAgB,CAACA,UAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAAxC,qBAAwC,CAC3C;kBACD,EAAE,CAAC;SACZ;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,8BAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;AAA5B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAChD;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,8BAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;AAA/B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAChD;;;AAAA,KAAA,CAAA,CAAA;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC9B,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;AAC9B,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,gBAAA,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AACzB,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAsB,OAAqB,EAAA;AACvC,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;SAC9B;;;;;;AAGD,QAAA,KAAA,EAAA,UAA2B,OAAqB,EAAA;AAC5C,YAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;SACnC;;;;;;AAGD,QAAA,KAAA,EAAA,UAA2B,OAAqB,EAAA;AAC5C,YAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;SACnC;;;;;;AAGD,QAAA,KAAA,EAAA,UAAuB,OAAgD,EAAA;AACnE,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;SAC/B;;;;;;AAED,QAAA,KAAA,EAAA,UAA0B,QAAgB,EAAA;YACtC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;SAClD;;;;;;AAED,QAAA,KAAA,EAAA,UAA6B,QAAgB,EAAA;YACzC,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;SACrD;;;;;;AAED,QAAA,KAAA,EAAA,UAAsB,QAAkB,EAAA;AACpC,YAAA,OAAO,uBAAuB,CAC1B,QAAQ,EACR,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,WAAW,CACnB,CAAC;SACL;;;;;;AAED,QAAA,KAAA,EAAA,UAAwB,QAAkB,EAAA;AACtC,YAAA,OAAO,uBAAuB,CAC1B,QAAQ,EACR,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,WAAW,CACnB,CAAC;SACL;;;;;;AAED,QAAA,KAAA,EAAA,UAA2B,QAAkB,EAAA;AACzC,YAAA,OAAO,uBAAuB,CAC1B,QAAQ,EACR,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,WAAW,CACnB,CAAC;SACL;;;;;;eAGD,UAAmB,MAAkB,EAAE,QAAkB,EAAA;YACrD,IAAI,IAAI,CAAC,mBAAmB,EAAE;;gBAE1B,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AACjE,aAAA;AAAM,iBAAA;;AAEH,gBAAA,QACI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ;oBACvC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAClD;AACL,aAAA;SACJ;;AAtKW,IAAA,UAAA,CAAA;QAAX,UAAU;AAAkC,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AACjC,IAAA,UAAA,CAAA;QAAX,UAAU;AAAuC,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AACtC,IAAA,UAAA,CAAA;QAAX,UAAU;AAAuC,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AACtC,IAAA,UAAA,CAAA;QAAX,UAAU;AAA8D,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AA2B/D,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,SAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAMR,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAOR,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAQR,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,4BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,MAAM;AAKN,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,MAAM;AAKN,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,MAAM;AAKN,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,MAAM;AAGN,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,MAAM;AAGN,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,MAAM;AAGN,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,MAAM;AAGN,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAmCD,IAAA,UAAA,CAAA;QADC,QAAQ;AAYR,KAAA,EAAA,8BAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;IACL,OAAC,8BAAA,CAAA;AAAA,CAxKD,EAwKC;;AC3HD,IAAA,gCAAA,kBAAA,YAAA;AAMI,IAAA,SAAA,gCAAA,CACY,MAAuC,EAC/C,iBAA2C,EAC3C,yBAA2D,EAC3D,YAAiC,EAAA;;;;;AAHzB,YAAA,KAAA,EAAA,MAAA;;AALZ,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,cAAA,EAAA;;;;;AAA+B,SAAA,CAAA,CAAA;AAC/B,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,mBAAA,EAAA;;;;;AAAyC,SAAA,CAAA,CAAA;AACzC,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,2BAAA,EAAA;;;;;AAAyD,SAAA,CAAA,CAAA;AAQrD,QAAA,IAAI,CAAC,iBAAiB;YACjB,iBAAoC;AACrC,gBAAA,qBAAqB,CACjB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,yBAAyB,EAChC,MAAM,CAAC,aAAa,CACvB,CAAC;AACN,QAAA,IAAI,CAAC,yBAAyB;YACzB,yBAAoD;AACrD,gBAAA,6BAA6B,CACzB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,yBAAyB,EAChC,MAAM,CAAC,aAAa,CACvB,CAAC;AACN,QAAA,IAAI,CAAC,YAAY;YACZ,YAA0B;AAC3B,gBAAA,gBAAgB,CACZ,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,yBAAyB,EAChC,MAAM,CAAC,aAAa,CACvB,CAAC;KACT;;;;;AAED,QAAA,KAAA,EAAA,UAAqC,YAAoB,EAAA;;;;;gCACxB,OAAM,CAAA,CAAA,YAAA,OAAO,CAAC,GAAG,CAC1C,MAAM,CACF,IAAI,CAAC,MAAM,CAAC,iBAAiB,IAAI,4BAA4B,EAC7D,EAAE,YAAY,cAAA,EAAE,CACnB,CACJ,CAAA,CAAA;;AALK,4BAAA,UAAU,GAAa,EAK5B,CAAA,IAAA,EAAA,CAAA;AACD,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAA;;;;AAC5D,SAAA;;;;;;AAED,QAAA,KAAA,EAAA,UAA4B,kBAA0B,EAAA;;;;;gCACpB,OAAM,CAAA,CAAA,YAAA,OAAO,CAAC,GAAG,CAC3C,MAAM,CACF,IAAI,CAAC,MAAM,CAAC,oBAAoB;AAC5B,gCAAA,+BAA+B,EACnC,EAAE,kBAAkB,oBAAA,EAAE,CACzB,CACJ,CAAA,CAAA;;AANK,4BAAA,WAAW,GAAa,EAM7B,CAAA,IAAA,EAAA,CAAA;4BACD,OAAO,CAAA,CAAA,aAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;;;;AAC1C,SAAA;;;;;;eAED,UACI,cAAwB,EACxB,MAA+C,EAAA;AAA/C,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAyB,IAAI,CAAC,iBAAiB,CAAA,EAAA;;;;gCAExC,OAAM,CAAA,CAAA,YAAA,MAAM,CAAC,mCAAmC,CAAC;AACpD,gCAAA,cAAc,EAAE,cAAc;AACjC,6BAAA,CAAC,CAAA,CAAA;AAFF,wBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAEL,CAAC,CAAA;;;;AACN,SAAA;;;;;;AAED,QAAA,KAAA,EAAA,UACI,SAA8B,EAC9B,MAAyC,EACzC,qBAAuC,EACvC,MAA+C,EAAA;YAF/C,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAoB,GAAA,CAAA,oBAAoB,CAAC,CAAA,EAAA;AACzC,YAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,qBAAuC,GAAA,OAAA,CAAA,EAAA;AACvC,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAyB,IAAI,CAAC,iBAAiB,CAAA,EAAA;;;;gCAExC,OAAM,CAAA,CAAA,YAAA,+CAA+C,CACxD,SAAS,EACT,MAAM,EACN,qBAAqB,EACrB,MAAM,CACT,CAAA,CAAA;AALD,wBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAKN,CAAC,CAAA;;;;AACL,SAAA;;;;;;AAED,QAAA,KAAA,EAAA,UACI,SAA8B,EAC9B,qBAAuC,EACvC,MAA+C,EAAA;AAD/C,YAAA,IAAA,qBAAA,KAAA,KAAA,CAAA,EAAA,EAAA,qBAAuC,GAAA,OAAA,CAAA,EAAA;AACvC,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAyB,IAAI,CAAC,iBAAiB,CAAA,EAAA;;;;;AAEb,wBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,YAAM,+CAA+C,CACnF,SAAS,EACT,CAAC,iBAAiB,CAAC,EACnB,qBAAqB,EACrB,MAAM,CACT,CAAA,CAAA;;AALK,4BAAA,yBAAyB,GAAG,EAKjC,CAAA,IAAA,EAAA,CAAA;AACD,4BAAA,OAAA,CAAA,CAAA,aAAO,wDAAwD,CAC3D,yBAAyB,CAC5B,CAAC,CAAA;;;;AACL,SAAA;;AAED;;AAEG;;;;;AACH,QAAA,KAAA,EAAA,UACI,UAAkB,EAClB,qBAA6B,EAC7B,cAA+C,EAC/C,MAA+C,EAAA;AAA/C,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAyB,IAAI,CAAC,iBAAiB,CAAA,EAAA;;;AAE/C,oBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,wBAAwB,CAChC,UAAU,EACV,qBAAqB,EACrB,MAAM,CACT,CAAC,KAAK,CAAC,YAAA;;AAEJ,4BAAA,IAAM,UAAU,GAAGA,UAAC,CAAC,KAAK,CACtB,cAAc,EACd,UAAC,CAAoB,EAAA,EAAK,OAAA,CAAC,CAAC,aAAa,CAAf,EAAe,CAC5C,CAAC;4BACF,OAAO,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAC/C,yBAAC,CAAC,CAAC,CAAA;;;AACN,SAAA;;;;;;AAED,QAAA,KAAA,EAAA,UACI,UAAkB,EAClB,qBAA6B,EAC7B,MAA+C,EAAA;AAA/C,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAyB,IAAI,CAAC,iBAAiB,CAAA,EAAA;;;;gCAExC,OAAM,CAAA,CAAA,YAAA,MAAM,CAAC,8CAA8C,CAAC;AAC/D,gCAAA,UAAU,EAAA,UAAA;AACV,gCAAA,qBAAqB,EAAA,qBAAA;AACxB,6BAAA,CAAC,CAAA,CAAA;AAHF,wBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAGL,CAAC,CAAA;;;;AACN,SAAA;;;;;;eAED,UACI,aAAqC,EACrC,MAA+C,EAAA;AAA/C,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAyB,IAAI,CAAC,iBAAiB,CAAA,EAAA;;;;gCAExC,OAAM,CAAA,CAAA,YAAA,MAAM,CAAC,0CAA0C,CAAC;gCAC3D,aAAa,EAAE,MAAM,CAAC,MAAM;;AAExB,gCAAA;AACI,oCAAA,OAAO,EAAE,EAAE;AACX,oCAAA,WAAW,EAAE,EAAE;AACf,oCAAA,UAAU,EAAE,EAAE;AACd,oCAAA,aAAa,EAAE,EAAE;AACpB,iCAAA,EACD,aAAa,CAChB;AACJ,6BAAA,CAAC,CAAA,CAAA;AAXF,wBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,SAWL,CAAC,CAAA;;;;AACN,SAAA;;;;;;eAED,UACI,SAAiB,EACjB,MAA+C,EAAA;AAA/C,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAyB,IAAI,CAAC,iBAAiB,CAAA,EAAA;AAE/C,YAAA,IAAI,SAAS,EAAE;gBACX,OAAO,MAAM,CAAC,sCAAsC,CAAC;AACjD,oBAAA,mBAAmB,EAAE,SAAS;AACjC,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9B,aAAA;SACJ;;;;;;AAED,QAAA,KAAA,EAAA,UACI,WAAmB,EACnB,QAAkB,EAClB,MAA+C,EAAA;AAA/C,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAyB,IAAI,CAAC,iBAAiB,CAAA,EAAA;;;;;;AAE3C,4BAAA,IAAA,CAAA,WAAW,EAAX,OAAW,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;4BAEmB,OAAM,CAAA,CAAA,YAAA,OAAO,CAAC,GAAG,CAC3C,MAAM,CACF,iFAAA,GAAkF,QAAQ,CAAC,IAAI,CAC3F,GAAG,CACJ,EACH,EAAE,gBAAgB,EAAE,WAAW,EAAE,CACpC,CACJ,CAAA,CAAA;;AAPK,4BAAA,WAAW,GAAa,EAO7B,CAAA,IAAA,EAAA,CAAA;4BAEK,WAAW,GAAuB,IAAI,CAAC,KAAK,CAC9C,WAAW,CAAC,IAAI,CACnB,CAAC;4BACF,OAAO,CAAA,CAAA,aAAA,WAAW,CAAC,QAAQ,CAAC,CAAA;AAE5B,wBAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAA;;;;AAElC,SAAA;;;;;;eAED,UACI,SAAiB,EACjB,MAA+D,EAAA;AAA/D,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAiC,IAAI,CAAC,yBAAyB,CAAA,EAAA;AAE/D,YAAA,IAAI,SAAS,EAAE;gBACX,OAAO,MAAM,CAAC,uCAAuC,CAAC;AAClD,oBAAA,YAAY,EAAE,SAAS;AAC1B,iBAAA,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9B,aAAA;SACJ;;;;;;eAED,UACI,SAAqB,EACrB,MAA+D,EAAA;;AAA/D,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAiC,IAAI,CAAC,yBAAyB,CAAA,EAAA;AAI/D,YAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxB,gBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAC9B,aAAA;AAED,YAAA,IAAM,gBAAgB,GAAsB,sBAAsB,CAC9D,SAAS,CACZ,CAAC;YACF,OAAO,MAAM,CAAC,2CAA2C,CAAC;AACtD,gBAAA,gBAAgB,EAAE,gBAAgB;AACrC,aAAA,CAAC,CAAC;SACN;;;;;;AAED,QAAA,KAAA,EAAA,UACI,MAAqC,EAAA;AAArC,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAoB,IAAI,CAAC,YAAY,CAAA,EAAA;AAErC,YAAA,OAAO,MAAM,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;SACtD;;;;;;AAED,QAAA,KAAA,EAAA,UACI,MAAqC,EAAA;AAArC,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAoB,IAAI,CAAC,YAAY,CAAA,EAAA;AAErC,YAAA,OAAO,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;SACvC;;;;;;eAED,UACI,SAAqB,EACrB,cAA2D,EAC3D,YAA4C,EAC5C,eAA+C,EAC/C,aAA8B,EAC9B,MAAqC,EAAA;AAArC,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAoB,IAAI,CAAC,YAAY,CAAA,EAAA;;;;oBAErC,IAAI,cAAc,YAAY,KAAK,EAAE;wBACjC,OAAO,CAAA,CAAA,aAAA,IAAI,KAAK,EAAE,CAAC,CAAA;AACtB,qBAAA;AAAM,yBAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,wBAAA,OAAA,CAAA,CAAA,aAAO,mBAAmB,CAAC,CAAA;AAC9B,qBAAA;oBAEK,gBAAgB,GAAGA,UAAC,CAAC,MAAM,CAC7B,SAAS,EACT,UAAA,CAAC,EAAA;wBACG,OAAA,CAAC,CAAC,CAAC,YAAY;AACX,4BAAA,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE;gCACxB,qBAAqB,CAAC,MAAM;AACpC,4BAAA,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAA;AAHpC,qBAGoC,CAC3C,CAAC;AAEF,oBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,eAAe,CACvB,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,aAAa,CAChB,CAAC,CAAA;;;AACL,SAAA;;;;;;eAED,UACI,aAAyB,EACzB,YAA4C,EAC5C,eAA+C,EAC/C,MAAqC,EACrC,aAA8B,EAAA;AAD9B,YAAA,IAAA,MAAA,KAAA,KAAA,CAAA,EAAA,EAAA,MAAA,GAAoB,IAAI,CAAC,YAAY,CAAA,EAAA;;;;;;4BAG/B,qBAAqB,GAA2CA,UAAC,CAAC,MAAM,CAC1EA,UAAC,CAAC,GAAG,CACD,aAAa,CAAC,MAAM,CAChB,UAAA,QAAQ,EAAI,EAAA,OAAA,QAAQ,CAAC,YAAY,KAAK,QAAQ,CAAA,EAAA,CACjD,EACD,UAAC,QAAkB,EAAA;AACf,gCAAA,OAAO,0BAA0B,CAC7B,eAAe,CAAC,QAAQ,CAAC,EACzB,YAAY,CAAC,QAAQ,CAAC,EACtB,QAAQ,CAAC,aAAa,EACtB,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,eAAe,EACxB,QAAQ,CAAC,aAAa,EACtB,aAAa,CAChB,CAAC;AACN,6BAAC,CACJ,EACD,IAAI,CACP,CAAC;AAEI,4BAAA,uBAAuB,GAAqCA,UAAC,CAAC,MAAM,CACtEA,UAAC,CAAC,GAAG,CACD,aAAa,CAAC,MAAM,CAChB,UAAA,QAAQ,EAAA;;AACJ,gCAAA,OAAA,CAAA,CAAA,EAAA,GAAA,QAAQ,CAAC,YAAY,0CAAE,WAAW,EAAA;oCAClC,qBAAqB,CAAC,MAAM,CAAA;6BAAA,CACnC,EACD,UAAC,QAAkB,EAAA;AACf,gCAAA,OAAO,sCAAsC;;gCAEzC,QAAQ,CAAC,iBAAiB,EAC1B,YAAY,CAAC,QAAQ,CAAC,EACtB,aAAa,CAChB,CAAC;AACN,6BAAC,CACJ,EACD,IAAI,CACP,CAAC;AAGE,4BAAA,IAAA,EAAA,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAA,EAAlC,OAAkC,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAC5B,4BAAA,EAAA,GAAA,EAAE,CAAA;;gCACF,OAAM,CAAA,CAAA,YAAA,MAAM,CAAC,+CAA+C,CAAC;AACzD,gCAAA,IAAI,EAAE,qBAAqB;AAC9B,6BAAA,CAAC,CAAA,CAAA;;AAFF,4BAAA,EAAA,GAAA,SAEE,CAAA;;;AALN,4BAAA,mBAAmB,GAKb,EAAA,CAAA;AAGR,4BAAA,IAAA,EAAA,uBAAuB,CAAC,MAAM,KAAK,CAAC,CAAA,EAApC,OAAoC,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAC9B,4BAAA,EAAA,GAAA,EAAE,CAAA;;gCACF,OAAM,CAAA,CAAA,YAAA,MAAM,CAAC,yCAAyC,CAAC;AACnD,gCAAA,IAAI,EAAE,uBAAuB;AAChC,6BAAA,CAAC,CAAA,CAAA;;AAFF,4BAAA,EAAA,GAAA,SAEE,CAAA;;;AALN,4BAAA,4BAA4B,GAKtB,EAAA,CAAA;4BAEZ,OAAO,CAAA,CAAA,aAAA;;oCAEH,YAAY,EAAEA,UAAC,CAAC,KAAK,CACjB,mBAAmB,CAAC,MAAM,CAAC,4BAA4B,CAAC,EACxD,UAAA,SAAS,EAAI,EAAA,OAAA,SAAS,CAAC,KAAK,CAAC,EAAE,CAAlB,EAAkB,CAClC;iCACJ,CAAC,CAAA;;;;AACL,SAAA;;IACL,OAAC,gCAAA,CAAA;AAAD,CAAC,EAAA;;AC1WD,IAAA,kCAAA,kBAAA,YAAA;IAiBI,SACc,kCAAA,CAAA,kBAA0D,EAC1D,UAA4C,EAC5C,mBAAmD,EACnD,sBAAsD,EACtD,sBAET,EAAA;;;;;AANS,YAAA,KAAA,EAAA,kBAAA;;;;;;AACA,YAAA,KAAA,EAAA,UAAA;;;;;;AACA,YAAA,KAAA,EAAA,mBAAA;;;;;;AACA,YAAA,KAAA,EAAA,sBAAA;;;;;;AACA,YAAA,KAAA,EAAA,sBAAA;;KAGV;AAxBJ,IAAA,MAAA,CAAA,cAAA,CAAc,kCAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;AAAlC,QAAA,GAAA,EAAA,YAAA;;AAGI,YAAA,OAAA,QAAA,EAAA,EAAA,GAAA,EAAA,EAAA,EAAA,CACK,cAAc,CAAC,QAAQ,CAAG,GAAA,IAAI,CAAC,mBAAmB,EAAA,EAAA,CAClD,cAAc,CAAC,MAAM,CAAG,GAAA,IAAI,CAAC,iBAAiB,KAC9C,cAAc,CAAC,OAAO,CAAA,GAAG,IAAI,CAAC,kBAAkB,EAChD,EAAA,CAAA,cAAc,CAAC,QAAQ,CAAA,GAAG,IAAI,CAAC,mBAAmB,EAClD,EAAA,CAAA,cAAc,CAAC,mBAAmB,IAAG,IAAI;iBACrC,4BAA4B,EAAA,EAAA,CAChC,cAAc,CAAC,eAAe,IAAG,IAAI,CAAC,yBAAyB,EAC/D,EAAA,CAAA,cAAc,CAAC,cAAc,CAAA,GAAG,IAAI,CAAC,wBAAwB,OAC3D,IAAI,CAAC,sBAAsB,CAChC,CAAA;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;eAaD,UAAmB,MAAkB,EAAE,QAAkB,EAAA;YACrD,IAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAE3D,OAAO,CAAC,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SACxD;;;;;;eAGD,UAA8B,MAAsB,EAAE,QAAkB,EAAA;AACpE,YAAA,OAAO,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SACvD;;;;;;eAGD,UAA4B,MAAoB,EAAE,QAAkB,EAAA;;AAEhE,YAAA,QACI,CAAC,MAAM,CAAC,MAAM;AACd,gBAAA,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM;AACvB,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,KAAK;AACvC,gBAAA,mBAAmB,CACf,QAAQ,EACR,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,sBAAsB,CAC9B,EACH;SACL;;;;;;eAGD,UAA6B,MAAqB,EAAE,QAAkB,EAAA;;AAElE,YAAA,QACI,CAAC,MAAM,CAAC,MAAM;AACd,gBAAA,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM;AAC/B,gBAAA,SAAS,CACL,QAAQ,EACR,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAC9B,oBAAoB,CACvB,EACH;SACL;;;;;;eAGD,UAA8B,MAAsB,EAAE,QAAkB,EAAA;AACpE,YAAA,OAAO,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SACvD;;;;;;eAGD,UACI,MAA+B,EAC/B,QAAkB,EAAA;AAElB,YAAA,OAAO,mCAAmC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SAChE;;;;;;eAGD,UACI,MAA4B,EAC5B,QAAkB,EAAA;AAElB,YAAA,OAAO,gCAAgC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SAC7D;;;;;;eAGD,UACI,MAA2B,EAC3B,QAAkB,EAAA;AAElB,YAAA,OAAO,+BAA+B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;SAC5D;;AApED,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,kCAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,kCAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAcR,KAAA,EAAA,kCAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAYR,KAAA,EAAA,kCAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,kCAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAMR,KAAA,EAAA,kCAAA,CAAA,SAAA,EAAA,8BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAMR,KAAA,EAAA,kCAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAMR,KAAA,EAAA,kCAAA,CAAA,SAAA,EAAA,0BAAA,EAAA,IAAA,CAAA,CAAA;IACL,OAAC,kCAAA,CAAA;AAAA,CAjGD,EAiGC;;ACxBD,IAAA,0BAAA,kBAAA,YAAA;AAmBI,IAAA,SAAA,0BAAA,CACW,IAAU,EACP,MAAwC,EACxC,YAAuB,EAC1B,eAA0C,EAAA;QAJrD,IAUC,KAAA,GAAA,IAAA,CAAA;;;;;AATU,YAAA,KAAA,EAAA,IAAA;;;;;;AACG,YAAA,KAAA,EAAA,MAAA;;;;;;AACA,YAAA,KAAA,EAAA,YAAA;;;;;;AACH,YAAA,KAAA,EAAA,eAAA;;AArBX,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,gBAAA,EAAA;;;;;AAA2D,SAAA,CAAA,CAAA;AAG3D,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,qBAAA,EAAA;;;;mBAAkD,SAAS;AAAC,SAAA,CAAA,CAAA;AA0B5D,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,kBAAA,EAAA;;;;AAA6D,YAAA,KAAA,EAAA,UAAU,CACnE;gBACI,KAAK,EAAE,cAAM,OAAA;AACT,oBAAA,KAAI,CAAC,cAAc;AACnB,oBAAA,KAAI,CAAC,mBAAmB;AACxB,oBAAA,KAAI,CAAC,0BAA0B;AAClC,iBAAA,CAAA,EAAA;AACD,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;AAEE,wBAAA,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM;AACzD,8BAAE,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,YAAY;8BAC5C,SAAS,CAAC;wBACV,kBAAkB,GACpB,IAAI,CAAC,kBAAkB;4BACvB,IAAI,CAAC,cAAc,CAAC,MAAM;4BAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAC3B,UAAA,UAAU,EAAA;AACN,gCAAA,OAAA,UAAU,CAAC,YAAY,KAAK,KAAI,CAAC,kBAAkB,CAAA;AAAnD,6BAAmD,CAC1D;8BACK,IAAI,CAAC,kBAAkB;8BACvB,SAAS,CAAC;AAEpB,wBAAA,IAAI,kBAAkB,EAAE;4BACpB,gBAAgB,GAAG,kBAAkB,CAAC;AACzC,yBAAA;AAAM,6BAAA,IAAI,IAAI,CAAC,MAAM,CAAC,mCAAmC,EAAE;AACxD,4BAAA,IACI,IAAI,CAAC,0BAA0B,CAAC,MAAM;AACtC,gCAAA,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gCACjD,qBAAqB;gCACrB,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,QAAQ,CAC5C,qBAAqB,CACxB,EACH;gCACE,gBAAgB,GAAG,IAAI,CAAC,0BAA0B;qCAC7C,MAAM,CAAC,CAAC,CAAC,CAAC;AAClB,6BAAA;AAAM,iCAAA;gCACH,gBAAgB,GAAG,qBAAqB,CAAC;AAC5C,6BAAA;AACJ,yBAAA;AAAM,6BAAA;4BACH,gBAAgB,GAAG,qBAAqB,CAAC;AAC5C,yBAAA;AAED,wBAAA,OAAA,CAAA,CAAA,aAAO,gBAAgB,CAAC,CAAA;;AAC3B,iBAAA,CAAA,CAAA,EAAA;AACJ,aAAA,EACD,SAAS,CACZ;AAAC,SAAA,CAAA,CAAA;AAyBF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,cAAA,EAAA;;;;;AAAyC,SAAA,CAAA,CAAA;AAkBzC,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,oBAAA,EAAA;;;;AAA0D,YAAA,KAAA,EAAA,qBAAqB,EAAE;AAAC,SAAA,CAAA,CAAA;AAwGlF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,wCAAA,EAAA;;;;;AAEE,SAAA,CAAA,CAAA;AA0GF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,cAAA,EAAA;;;;AAA+D,YAAA,KAAA,EAAA,UAAU,CACrE;AACI,gBAAA,KAAK,EAAE,YAAA;AACH,oBAAA,IAAI,KAAI,CAAC,MAAM,CAAC,mCAAmC,EAAE;wBACjD,OAAO;AACH,4BAAA,KAAI,CAAC,mBAAmB;AACxB,4BAAA,KAAI,CAAC,yBAAyB;yBACjC,CAAC;AACL,qBAAA;AAAM,yBAAA;AACH,wBAAA,OAAO,CAAC,KAAI,CAAC,mBAAmB,CAAC,CAAC;AACrC,qBAAA;iBACJ;AACD,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;wBACJ,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,SAAS,CAAC,CAAA;;AACzB,iBAAA,CAAA,CAAA,EAAA;AACJ,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,aAAA,EAAA;;;;AAA4C,YAAA,KAAA,EAAA,UAAU,CAClD;AACI,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;;;AAGJ,gCAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,EAAE;AACvD,oCAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;AACb,iCAAA;AAIgB,gCAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAC3D,IAAI,CAAC,IAAI,CAAC,YAAY,CACzB,CAAA,CAAA;;AAJK,gCAAA,SAAS,GAEE,EAEhB,CAAA,IAAA,EAAA,CAAA;AAED,gCAAA,IAAIA,UAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACtB,oCAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;AACvB,iCAAA;AAAM,qCAAA;AACH,oCAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,CAAA;AACpB,iCAAA;;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;;iBAER;AACJ,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,WAAA,EAAA;;;;AAAsD,YAAA,KAAA,EAAA,UAAU,CAC5D;gBACI,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,WAAW,CAAC,CAAA,EAAA;AAC/B,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;AACJ,wBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AACzB,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,WAAW,CAAC,cAAc,CAClC,IAAI,CAAC,WAAW,CAAC,MAAM,CAC1B,CAAC,CAAA;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;AACb,yBAAA;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;;iBAER;AACJ,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,gBAAA,EAAA;;;;AAAiE,YAAA,KAAA,EAAA,UAAU,CACvE;gBACI,KAAK,EAAE,cAAM,OAAA;AACT,oBAAA,KAAI,CAAC,mBAAmB;AACxB,oBAAA,KAAI,CAAC,4BAA4B;AACpC,iBAAA,CAAA,EAAA;AACD,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;AACJ,wBAAA,IACI,IAAI,CAAC,mBAAmB,CAAC,MAAM;AAC/B,4BAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW;4BAC3C,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EACxD;AACM,4BAAA,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM;AAC7C,iCAAA,WAAW,CAAC;AACjB,4BAAA,IACI,IAAI,CAAC,MAAM,CAAC,mCAAmC;gCAC/C,IAAI,CAAC,4BAA4B,CAAC,MAAM;gCACxC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EACrD;;gCAEE,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAC1B,CAAC,YAAY,CAAC,EACdA,UAAC,CAAC,OAAO,CACL,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,GAAG,CACxC,UAAC,YAAoB,EAAA;AACjB,oCAAA,OAAA,KAAI,CAAC,yBAAyB,CAC1B,YAAY,CACf,CAAC,WAAW,CAAA;iCAAA,CACpB,CACJ,CACJ,CAAC;AACL,6BAAA;4BACD,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,WAAW,CAAC,mBAAmB,CACvC,YAAY,CAAC,GAAG,CAAC,UAAC,CAAkB,EAAA,EAAK,OAAA,CAAC,CAAC,YAAY,CAAd,EAAc,CAAC,CAC3D,CAAC,CAAA;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,CAAA;AACpB,yBAAA;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;;iBAER;AACJ,aAAA,EACD,SAAS,CACZ;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,qBAAA,EAAA;;;;AAEI,YAAA,KAAA,EAAA,UAAU,CACV;gBACI,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,uBAAuB,CAAC,CAAA,EAAA;AAC3C,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;wBACJ,IAAI,IAAI,CAAC,IAAI,EAAE;4BACX,OAAO,CAAA,CAAA,aAAA,IAAI,CAAC,WAAW,CAAC,oCAAoC,CACxD,IAAI,CAAC,IAAI,CAAC,cAAc,EACxB,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,uBAAuB,CAAC,MAAM,CACtC,CAAC,CAAA;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,CAAA;AACpB,yBAAA;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;AACL,oBAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;iBACzD;AACJ,aAAA,EACD,SAAS,CACZ;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,gBAAA,EAAA;;;;AAEI,YAAA,KAAA,EAAA,UAAU,CACV;gBACI,KAAK,EAAE,cAAM,OAAA;AACT,oBAAA,KAAI,CAAC,uBAAuB;AAC5B,oBAAA,KAAI,CAAC,mBAAmB;AAC3B,iBAAA,CAAA,EAAA;AACD,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;AACJ,wBAAA,OAAA,CAAA,CAAA,aAAOA,UAAC,CAAC,OAAO,CACZA,UAAC,CAAC,OAAO,CACL,IAAI,CAAC,uBAAuB,CAAC,MAAM,EACnC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EACjC,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,CAAC,CAAC,YAAY,CAAA,EAAA,CAC3B,CACJ,CAAC,CAAA;;AACL,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;AACL,oBAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;iBACpD;AACJ,aAAA,EACD,SAAS,CACZ;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,yBAAA,EAAA;;;;AAEI,YAAA,KAAA,EAAA,UAAU,CACV;AACI,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;wBACJ,IAAI,IAAI,CAAC,IAAI,EAAE;AACX,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,WAAW,CAAC,sCAAsC,CAC1D,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAC9C,CAAC,CAAA;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAA,CAAA,CAAA,aAAO,SAAS,CAAC,CAAA;AACpB,yBAAA;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;AACL,oBAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;iBACtD;AACJ,aAAA,EACD,SAAS,CACZ;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,8BAAA,EAAA;;;;AAEI,YAAA,KAAA,EAAA,UAAU,CACV;AACI,gBAAA,KAAK,EAAE,YAAA,EAAM,OAAA,CAAC,KAAI,CAAC,cAAc,EAAE,KAAI,CAAC,mBAAmB,CAAC,GAAA;AAC5D,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;AACJ,wBAAA,IACI,IAAI,CAAC,cAAc,CAAC,MAAM;AAC1B,4BAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EACjC;;;AAGE,4BAAA,OAAA,CAAA,CAAA,aAAOA,UAAC,CAAC,OAAO,CACZ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAC1B,UAAC,EAAqB,EAAA;AAClB,oCAAA,OAAA,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,YAAY,CAAA;iCAAA,CAC1C,CACJ,CAAC,CAAA;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;AACb,yBAAA;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;AACL,oBAAA,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;iBACjE;AACJ,aAAA,EACD,SAAS,CACZ;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,4BAAA,EAAA;;;;AAEI,YAAA,KAAA,EAAA,UAAU,CACV;gBACI,KAAK,EAAE,cAAM,OAAA;AACT,oBAAA,KAAI,CAAC,yBAAyB;AAC9B,oBAAA,KAAI,CAAC,cAAc;AACnB,oBAAA,KAAI,CAAC,4BAA4B;AACjC,oBAAA,KAAI,CAAC,mBAAmB;AAC3B,iBAAA,CAAA,EAAA;AACD,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;AACJ,wBAAA,IACI,IAAI,CAAC,yBAAyB,CAAC,MAAM;4BACrC,IAAI,CAAC,cAAc,CAAC,MAAM;4BAC1B,IAAI,CAAC,4BAA4B,CAAC,MAAM;4BACxC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EACrD;4BAGQ,WAAW,GAAaA,UAAC,CAAC,IAAI,CAChC,EAAE,CAAC,MAAM,CAAC,KAAK,CACX,EAAE,EACF,sBAAsB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAC3C,UAAC,EAAmB,EAAA;gCAChB,IAAM,iBAAiB,GAAG,KAAI;AACzB,qCAAA,yBAAyB,CAAC,MAAM;sCAC/B,KAAI,CAAC,yBAAyB,CAAC,MAAM,CACjC,qBAAqB,CAAC,EAAE,CAAC,CAC5B;sCACD,SAAS,CAAC;AAEhB,gCAAA,IACI,iBAAiB;oCACjB,CAACA,UAAC,CAAC,OAAO,CACN,iBAAiB,CAAC,uBAAuB,CAC5C,EACH;oCACE,OAAO,iBAAiB,CAAC,uBAAuB;yCAC3C,GAAG,CAAC,UAAA,EAAE,EAAI,EAAA,OAAA,EAAE,CAAC,aAAa,CAAhB,EAAgB,CAAC;yCAC3B,MAAM,CAAC,UAAC,YAAoB,EAAA;wCACzB,OAAA,KAAI,CAAC,4BAA4B,CAAC,MAAO,CAAC,QAAQ,CAC9C,YAAY,CACf,CAAA;AAFD,qCAEC,CACJ,CAAC;AACT,iCAAA;AAAM,qCAAA;AACH,oCAAA,OAAO,EAAE,CAAC;AACb,iCAAA;6BACJ,CACJ,CACJ,CACJ,CAAC;;4BAEF,OAAO,CAAA,CAAA,aAAA,WAAW,CAAC,MAAM,CACrB,UAAA,CAAC,EAAA,EAAI,OAAA,KAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA,EAAA,CAChD,CAAC,CAAA;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;AACb,yBAAA;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;AACL,oBAAA,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;iBAC/D;AACJ,aAAA,EACD,SAAS,CACZ;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,SAAA,EAAA;;;;AAAiE,YAAA,KAAA,EAAA,UAAU,CACvE;AACI,gBAAA,KAAK,EAAE,YAAA;oBACH,IAAM,QAAQ,GAAG,EAAE,CAAC;oBAEpB,IAAI,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;AAC7C,wBAAA,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,cAAc,CAAC,CAAC;AACtC,qBAAA;oBACD,IAAI,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;AAC3C,wBAAA,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,SAAS,CAAC,CAAC;AACjC,qBAAA;AAED,oBAAA,OAAO,QAAQ,CAAC;iBACnB;AACD,gBAAA,MAAM,EAAE,YAAA;oBACJ,IAAM,IAAI,GAAoC,EAAE,CAAC;oBAEjD,IACI,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC;AAC3C,wBAAA,KAAI,CAAC,cAAc,CAAC,MAAM,EAC5B;AACE,wBAAA,IAAI,CAAC,IAAI,CAAT,KAAA,CAAA,IAAI,EACG,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAC7B,0BAA0B,CAC7B,CACH,CAAA;AACL,qBAAA;oBAED,IACI,KAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC;AACzC,wBAAA,KAAI,CAAC,SAAS,CAAC,MAAM,EACvB;AACE,wBAAA,IAAI,CAAC,IAAI,CAAT,KAAA,CAAA,IAAI,EAAS,KAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAE,CAAA;AAC9D,qBAAA;AAED,oBAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;iBAChC;AACD,gBAAA,OAAO,EAAE,YAAA;;iBAER;aACJ,CACJ;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,gBAAA,EAAA;;;;AAAyD,YAAA,KAAA,EAAA,UAAU,CAC/D;gBACI,KAAK,EAAE,cAAM,OAAA;AACT,oBAAA,KAAI,CAAC,YAAY;AACjB,oBAAA,KAAI,CAAC,gBAAgB;AACrB,oBAAA,KAAI,CAAC,cAAc;AACtB,iBAAA,CAAA,EAAA;AACD,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;AAGJ,wBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;4BACxB,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAC7C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAC/B,CAAC;4BACF,SAAS,GAAG,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC;AACrC,yBAAA;AAED,wBAAA,IAAI,SAAS,EAAE;;;;;;AAMX,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAC,SAAS,EAAE;AACpD,oCAAA,eAAe,CAAC,GAAG;AACtB,iCAAA,CAAC,CAAC,CAAA;AACN,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;AACb,yBAAA;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;;iBAER;AACJ,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,qBAAA,EAAA;;;;AAA+D,YAAA,KAAA,EAAA,UAAU,CACrE;gBACI,KAAK,EAAE,cAAM,OAAA;AACT,oBAAA,KAAI,CAAC,YAAY;AACjB,oBAAA,KAAI,CAAC,gBAAgB;AACrB,oBAAA,KAAI,CAAC,cAAc;AACtB,iBAAA,CAAA,EAAA;AACD,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;gCAEE,IAAI,GAAsB,EAAE,CAAC;AAEnC,gCAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;oCACxB,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAC7C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAC/B,CAAC;oCACF,SAAS,GAAG,UAAU,KAAV,IAAA,IAAA,UAAU,uBAAV,UAAU,CAAE,SAAS,CAAC;AACrC,iCAAA;AAEG,gCAAA,IAAA,CAAA,SAAS,EAAT,OAAS,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AAGe,gCAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAC/D,SAAS,EACT,CAAC,eAAe,CAAC,QAAQ,CAAC,CAC7B,CAAA,CAAA;;AAHK,gCAAA,eAAe,GAAG,EAGvB,CAAA,IAAA,EAAA,CAAA;AACD,gCAAA,eAAe,CAAC,OAAO,CAAC,UAAA,cAAc,EAAA;AAClC,oCAAA,IAAI,eAAe,GAAG,sCAAsC,CACxD,cAAc,CACjB,CAAC;AACF,oCAAA,IAAI,eAAe,EAAE;AACjB,wCAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC9B,qCAAA;AACL,iCAAC,CAAC,CAAC;AACH,gCAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,CAAA;AAEZ,4BAAA,KAAA,CAAA,EAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;;;AAEjB,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;;iBAER;AACJ,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,WAAA,EAAA;;;;AAA2C,YAAA,KAAA,EAAA,UAAU,CACjD;AACI,gBAAA,KAAK,EAAE,YAAA,EAAM,OAAA,CAAC,KAAI,CAAC,YAAY,EAAE,KAAI,CAAC,gBAAgB,CAAC,GAAA;AACvD,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;AACJ,wBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;AAC9B,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAC/B,CAAC,CAAA;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;AACb,yBAAA;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;;iBAER;AACJ,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,0BAAA,EAAA;;;;AAEI,YAAA,KAAA,EAAA,UAAU,CACV;gBACI,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,OAAO,CAAC,CAAA,EAAA;AAC3B,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;AACJ,wBAAA,OAAA,CAAA,CAAA,aAAA,IAAI,CAAC,OAAO,CAAC,MAAM;kCACb,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;kCAC3C,EAAE,CAAA,CAAA;;AAAA,iBAAA,CAAA,CAAA,EAAA;AACf,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,iCAAA,EAAA;;;;AAOI,YAAA,KAAA,EAAA,UAAU,CACV;gBACI,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,OAAO,CAAC,CAAA,EAAA;AAC3B,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;AACJ,wBAAA,OAAA,CAAA,CAAA,aAAA,IAAI,CAAC,OAAO,CAAC,MAAM;kCACb,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;kCAClD,EAAE,CAAA,CAAA;;AAAA,iBAAA,CAAA,CAAA,EAAA;AACf,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,oBAAA,EAAA;;;;AAAsD,YAAA,KAAA,EAAA,UAAU,CAC5D;AACI,gBAAA,KAAK,EAAE,YAAA,EAAM,OAAA,CAAC,KAAI,CAAC,YAAY,EAAE,KAAI,CAAC,gBAAgB,CAAC,GAAA;AACvD,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;AACJ,wBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;;AAE9B,4BAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAC1C,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAC/B,CAAC,CAAA;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;AACb,yBAAA;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;;iBAER;AACJ,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,qCAAA,EAAA;;;;AAEK,YAAA,KAAA,EAAA,UAAU,CACX;gBACI,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,kBAAkB,CAAC,CAAA,EAAA;AACtC,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;AACJ,wBAAA,OAAA,CAAA,CAAA,aAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM;kCACxB,gCAAgC,CAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,CACjC;kCACD,EAAE,CAAA,CAAA;;AAAA,iBAAA,CAAA,CAAA,EAAA;AACf,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;;AAGF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,aAAA,EAAA;;;;AAA0D,YAAA,KAAA,EAAA,UAAU,CAAC;gBACjE,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA;AAChC,gBAAA,MAAM,EAAE,YAAA;oBACJ,OAAO,KAAI,CAAC,WAAW,CAAC,2BAA2B,CAAC,KAAI,CAAC,SAAS,CAAC,CAAC;iBACvE;aACJ,CAAC;AAAC,SAAA,CAAA,CAAA;AAEH,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,oBAAA,EAAA;;;;AAEI,YAAA,KAAA,EAAA,UAAU,CAAC;gBACX,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,WAAW,CAAC,CAAA,EAAA;AAC/B,gBAAA,MAAM,EAAE,YAAA,EAAM,OAAA,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC,GAAA;aACrE,CAAC;AAAC,SAAA,CAAA,CAAA;AAeH,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,mBAAA,EAAA;;;;AAAgE,YAAA,KAAA,EAAA,UAAU,CACtE;gBACI,MAAM,EAAE,YAAM,EAAA,OAAA,KAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,CAAA,EAAA;AAC1D,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,YAAA,EAAA;;;;AAA+C,YAAA,KAAA,EAAA,UAAU,CACrD;gBACI,MAAM,EAAE,YAAM,EAAA,OAAA,KAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAA,EAAA;AAChD,gBAAA,OAAO,EAAE,YAAA,EAAM,OAAA,mBAAmB,GAAA;AACrC,aAAA,EACD,mBAAmB,CACtB;AAAC,SAAA,CAAA,CAAA;AASF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,sBAAA,EAAA;;;;AAEK,YAAA,KAAA,EAAA,UAAU,CACX;gBACI,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAA,EAAA;AACrC,gBAAA,MAAM,EAAE,YAAA;AACJ,oBAAA,OAAA,OAAO,CAAC,OAAO,CACXA,UAAC,CAAC,MAAM,CACJ,KAAI,CAAC,iBAAiB,CAAC,MAAM,EAC7B,UACI,GAAwC,EACxC,IAAgB,EAAA;AAEhB,wBAAA,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,EAAE;AAC9B,4BAAA,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;AACjC,yBAAA;AACD,wBAAA,OAAO,GAAG,CAAC;qBACd,EACD,EAAE,CACL,CACJ,CAAA;iBAAA;AACR,aAAA,EACD,EAAE,CACL;AAAC,SAAA,CAAA,CAAA;AAEF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,YAAA,EAAA;;;;AAAwD,YAAA,KAAA,EAAA,UAAU,CAC9D;AACI,gBAAA,KAAK,EAAE,YAAA,EAAM,OAAA,CAAC,KAAI,CAAC,YAAY,EAAE,KAAI,CAAC,oBAAoB,CAAC,GAAA;AAC3D,gBAAA,MAAM,EAAE,YAAA;AACJ,oBAAA,OAAA,KAAI,CAAC,MAAM,CAAC,YAAY;0BAClB,KAAI,CAAC,WAAW,CAAC,eAAe,CAC5B,KAAI,CAAC,SAAS,EACd,KAAI,CAAC,oBAAoB,CAAC,MAAO,EACjC,KAAI,CAAC,mBAAmB,EACxB,KAAI,CAAC,sBAAsB,CAC9B;AACH,0BAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;iBAAA;AAC9C,gBAAA,OAAO,EAAE,YAAA;;iBAER;AACJ,aAAA,EACD,mBAAmB,CACtB;AAAC,SAAA,CAAA,CAAA;AAoBF,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,YAAA,EAAA;;;;AAAgE,YAAA,KAAA,EAAA,UAAU,CAAC;gBACvE,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA;AAChC,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;AACJ,wBAAA,OAAA,CAAA,CAAA,aAAA,IAAI,CAAC,MAAM,CAAC,WAAW;kCACjB,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC;kCAC/C,EAAE,CAAA,CAAA;;AAAA,iBAAA,CAAA,CAAA,EAAA;AACZ,gBAAA,OAAO,EAAE,YAAA;;iBAER;aACJ,CAAC;AAAC,SAAA,CAAA,CAAA;AAEH,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,eAAA,EAAA;;;;AAAyB,YAAA,KAAA,EAAA,UAAU,CAAiC;AAChE,gBAAA,KAAK,EAAE,YAAA,EAAM,OAAA,CAAC,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,YAAY,CAAC,GAAA;AACjD,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;wBACJ,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;AACnD,4BAAA,OAAA,CAAA,CAAA,aAAO,kBAAkB,CACrB,IAAI,CAAC,UAAU,CAAC,MAAyB,EACzC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE,CACjC,CAAC,CAAA;AACL,yBAAA;AAAM,6BAAA;AACH,4BAAA,OAAA,CAAA,CAAA,aAAO,EAAE,CAAC,CAAA;AACb,yBAAA;;AACJ,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;;iBAER;aACJ,CAAC;AAAC,SAAA,CAAA,CAAA;AAEH,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,2BAAA,EAAA;;;;AAEI,YAAA,KAAA,EAAA,UAAU,CAAC;AACX,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;qCACJ,CAACA,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAA/B,OAA+B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACzB,gCAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,WAAW,CAAC,+CAA+C,CAClE,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,qBAAqB,CAC7B,CAAA,CAAA;;AAJD,gCAAA,EAAA,GAAA,SAIC,CAAA;;;AACD,gCAAA,EAAA,GAAA,SAAS,CAAA;;oCANf,OAMe,CAAA,CAAA,aAAA,EAAA,CAAA,CAAA;;;AAAA,iBAAA,CAAA,CAAA,EAAA;AACnB,gBAAA,OAAO,EAAE,YAAA;;iBAER;aACJ,CAAC;AAAC,SAAA,CAAA,CAAA;AAEH,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,iCAAA,EAAA;;;;AAEI,YAAA,KAAA,EAAA,UAAU,CAAC;gBACX,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,YAAY,CAAC,CAAA,EAAA;AAChC,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;;;qCACJ,CAACA,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,EAA/B,OAA+B,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA;AACzB,gCAAA,OAAA,CAAA,CAAA,YAAM,IAAI,CAAC,WAAW,CAAC,qDAAqD,CACxE,IAAI,CAAC,YAAY,EAAE,EACnB,IAAI,CAAC,qBAAqB,CAC7B,CAAA,CAAA;;AAHD,gCAAA,EAAA,GAAA,SAGC,CAAA;;;AACD,gCAAA,EAAA,GAAA,SAAS,CAAA;;oCALf,OAKe,CAAA,CAAA,aAAA,EAAA,CAAA,CAAA;;;AAAA,iBAAA,CAAA,CAAA,EAAA;AACnB,gBAAA,OAAO,EAAE,YAAA;;iBAER;aACJ,CAAC;AAAC,SAAA,CAAA,CAAA;AAqCH,QAAA,MAAA,CAAA,cAAA,CAAA,IAAA,EAAA,yBAAA,EAAA;;;;AAAiE,YAAA,KAAA,EAAA,UAAU,CACvE;gBACI,KAAK,EAAE,cAAM,OAAA,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAA,EAAA;AACpC,gBAAA,MAAM,EAAE,YAAA,EAAA,OAAA,SAAA,CAAA,KAAA,EAAA,KAAA,CAAA,EAAA,KAAA,CAAA,EAAA,YAAA;;;AACE,wBAAA,2BAA2B,GAC7B,IAAI,CAAC,WAAW,KAAK,MAAM;AACvB,8BAAE,4CAA6C,GAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAgC,gCAAA;8BACzG,wCAAsC,IAAI,CAAC,gBAAgB,CAAC,MAAM,mCAAgC,CAAC;AAC7G,wBAAA,OAAA,CAAA,CAAA,aAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM;AAC/B,kCAAE,GAAG,CAAC,2BAA2B,CAAC;kCAChC,SAAS,CAAC,CAAA;;AACnB,iBAAA,CAAA,CAAA,EAAA;AACD,gBAAA,OAAO,EAAE,YAAA;;iBAER;aACJ,CACJ;AAAC,SAAA,CAAA,CAAA;QAt/BE,cAAc,CAGZ,IAAI,CAAC,CAAC;KACX;AAlBS,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAkB,CAAA,SAAA,EAAA,oBAAA,EAAA;;;;;AAAtB,QAAA,GAAA,EAAA,YAAA;YACN,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,gBAAA,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;AACjC,aAAA;AAAM,iBAAA;gBACH,OAAO,IAAI,CAAC,mBAAmB,CAAC;AACnC,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;;;;;AA8DD,QAAA,KAAA,EAAA,UAA6B,UAA8B,EAAA;AACvD,YAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC;SACzC;;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAqB,CAAA,SAAA,EAAA,uBAAA,EAAA;AAAhC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,IAAI,OAAO,CAAC;SACvD;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAArB,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SACtD;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;YACI,OAAOA,UAAC,CAAC,IAAI,CACT,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC,MAAM,CACrC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CACrC,CACJ,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAMD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;YACI,IAAI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC9B,aAAA;AACD,YAAA,OAAO,IAAI,8BAA8B,CACrC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,MAAM,CAAC,WAAW,EACvB,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,CAC3B,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAKD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAApB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IACI,IAAI,CAAC,mBAAmB,CAAC,SAAS;AAClC,iBAAC,IAAI,CAAC,MAAM,CAAC,mCAAmC;AAC5C,qBAAC,IAAI,CAAC,0BAA0B,CAAC,SAAS;AACtC,wBAAA,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;AAC7C,oBAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EACzC;AACE,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;AAAM,iBAAA,IACH,IAAI,CAAC,MAAM,CAAC,mCAAmC;gBAC/C,IAAI,CAAC,gBAAgB,CAAC,MAAM;gBAC5B,IAAI,CAAC,yBAAyB,CAAC,MAAM;gBACrC,CAACA,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EACnD;gBACE,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACnE,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC9B,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;;;;;AAGD,QAAA,KAAA,EAAA,UACI,SAAc,EACd,YAAoB,EACpB,yBAEC,EAAA;;YAGD,OAAO,0BAA0B,CAC7B,SAAS,EACT,YAAY,EACZ,yBAAyB,CAC5B,CAAC;SACL;;;;;;AAED,QAAA,KAAA,EAAA,UAA6B,YAAoB,EAAA;;;;AAI7C,YAAA,IAAI,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE;AACvC,gBAAA,OAAO,IAAI,CAAC,mCAAmC,CAC3C,IAAI,CAAC,YAAY,EAAE,EACnB,YAAY,EACZ,IAAI,CAAC,yBAAyB,CAAC,MAAM,CACxC,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;AAC9B,aAAA;SACJ;;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,QACI,IAAI,CAAC,MAAM,CAAC,aAAa;gBACzB,IAAI,kCAAkC,CAClC,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,MAAM,CAAC,sBAAsB,CACrC,EACH;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAtB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,QACI,IAAI,CAAC,MAAM,CAAC,WAAW;iBACtB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;AAC9C,gBAAA,IAAI,gCAAgC,CAAC;AACjC,oBAAA,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;AAC1C,oBAAA,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBAChC,yBAAyB,EAAE,IAAI,CAAC,MAAM;yBACjC,yBAAyB;AAC9B,oBAAA,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;AAC3C,iBAAA,CAAC,EACJ;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;AAA9B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,+BAA+B,CAClCA,UAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAC/C,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAA0B,CAAA,SAAA,EAAA,4BAAA,EAAA;AAArC,QAAA,GAAA,EAAA,YAAA;AAII,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,GAAG,CAAC,UAAA,WAAW,EAAI,EAAA,QAAC;gBAChE,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,SAAS,EAAE,+BAA+B,CACtCA,UAAC,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAC9B;aACJ,EAAC,EAAA,CAAC,CAAC;SACP;;;AAAA,KAAA,CAAA,CAAA;AAOD,IAAA,MAAA,CAAA,cAAA,CAAc,0BAAmC,CAAA,SAAA,EAAA,qCAAA,EAAA;AAAjD,QAAA,GAAA,EAAA,YAAA;YACI,IAAI,IAAI,CAAC,sCAAsC,EAAE;AAC7C,gBAAA,OAAO,IAAI,CAAC,sCAAsC,EAAE,CAAC;AACxD,aAAA;YACD,IAAM,qCAAqC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,CAC3E,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,mBAAmB,CAAA,EAAA,CACrD,CAAC;;;AAIF,YAAA,IAAM,kBAAkB,GAAG,gBAAgB,CACvC,IAAI,CAAC,SAAS,CAAC,OAAO,EACtB,qCAAqC,EACrC,IAAI,CAAC,SAAS,CAAC,WAAW,CAC7B,CAAC;AAEF,YAAA,OAAO,4BAA4B,CAAC,kBAAkB,CAAC,CAAC;SAC3D;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAiC,CAAA,SAAA,EAAA,mCAAA,EAAA;AAA5C,QAAA,GAAA,EAAA,YAAA;YADA,IAgBC,KAAA,GAAA,IAAA,CAAA;YAZG,IAAM,GAAG,GAA4C,EAAE,CAAC;YAExD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,OAAO,CACzD,UAAA,iBAAiB,EAAA;gBACb,IAAM,CAAC,GAAG,KAAI,CAAC,mCAAmC,CAC9C,iBAAiB,CACpB,CAAC;gBACF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AACjC,aAAC,CACJ,CAAC;AAEF,YAAA,OAAO,GAAG,CAAC;SACd;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAA8B,CAAA,SAAA,EAAA,gCAAA,EAAA;AAAzC,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;SACxE;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAqC,CAAA,SAAA,EAAA,uCAAA,EAAA;AAAhD,QAAA,GAAA,EAAA,YAAA;YADA,IAYC,KAAA,GAAA,IAAA,CAAA;YAPG,OAAO,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,UAAA,gBAAgB,EAAI,EAAA,QAAC;gBAC5D,KAAK,EAAE,gBAAgB,CAAC,KAAK;AAC7B,gBAAA,MAAM,EAAE,KAAI,CAAC,8BAA8B,CACvC,gBAAgB,CAAC,SAAS,EAC1B,gBAAgB,CAAC,KAAK,CACzB;aACJ,EAAC,EAAA,CAAC,CAAC;SACP;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAyB,CAAA,SAAA,EAAA,2BAAA,EAAA;AAApC,QAAA,GAAA,EAAA,YAAA;YAGI,OAAOA,UAAC,CAAC,KAAK,CACV,IAAI,CAAC,cAAc,CAAC,MAAM,EAC1B,UAAC,UAA6B,EAAA,EAAK,OAAA,UAAU,CAAC,YAAY,CAAvB,EAAuB,CAC7D,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;eAED,UACI,mBAEC,EACD,KAAc,EAAA;YAJlB,IAkBC,KAAA,GAAA,IAAA,CAAA;YAZG,IAAM,GAAG,GAA8B,EAAE,CAAC;YAE1C,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG,EAAA;gBACxC,IAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;;AAEnC,gBAAA,IAAM,SAAS,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAChD,gBAAA,IAAI,SAAS,EAAE;AACX,oBAAA,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAC/D,iBAAA;AACL,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,GAAG,CAAC;SACd;;;;;;eAED,UAA4B,SAAc,EAAE,KAAc,EAAA;;;AAGtD,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB;AAC/B,kBAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAChE,kBAAE,SAAS,CAAC,MAAM,CAAC;SAC1B;;;;;;eAED,UACI,SAAc,EACd,gBAAkD,EAAA;AAElD,YAAA,OAAO,SAAS;iBACX,GAAG,CAAC,UAAA,CAAC,EAAI,EAAA,OAAA,gBAAgB,CAAC,CAAC,CAAC,CAAnB,EAAmB,CAAC;AAC7B,iBAAA,MAAM,CAAC,UAAC,GAAG,EAAE,KAAK,EAAA,EAAK,OAAA,GAAG,GAAG,KAAK,CAAX,EAAW,CAAC,CAAC;SAC5C;;AAsfD,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAkB,CAAA,SAAA,EAAA,oBAAA,EAAA;AAAtB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE;AAChC,gBAAA,OAAO,wBAAwB,CAC3B,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAC9B,oBAAoB,CACvB,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAkBD,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAyB,CAAA,SAAA,EAAA,2BAAA,EAAA;AAA7B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM;AACzB,kBAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc;kBACrC,sCAAsC,CAAC;SAChD;;;AAAA,KAAA,CAAA,CAAA;AA+CD,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IACI,IAAI,CAAC,UAAU,CAAC,MAAM;gBACtB,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,YAAY,KAAK,CAAC,EAC5C;gBACE,OAAO,mCAAmC,CACtC,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,UAAU,CAAC,MAAM,EACtB,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,sBAAsB,EAC3B,4BAA4B,CAC/B,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AA+DD,IAAA,MAAA,CAAA,cAAA,CAAI,0BAAuB,CAAA,SAAA,EAAA,yBAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;YADA,IAgBC,KAAA,GAAA,IAAA,CAAA;AAdG,YAAA,IACI,IAAI,CAAC,yBAAyB,CAAC,MAAM;gBACrC,IAAI,CAAC,0BAA0B,CAAC,MAAM;AACtC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,EACrC;AACE,gBAAA,OAAOA,UAAC,CAAC,SAAS,CACd,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,CAAS,IAAK,OAAA;oBACtD,CAAC;AACD,oBAAA,KAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;iBAChC,CAHyD,EAGzD,CAAC,CACL,CAAC;AACL,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,EAAE,CAAC;AACb,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;;;;;AAGD,QAAA,KAAA,EAAA,UAA8B,QAAW,EAAA;AACrC,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY;kBACzB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC;kBAClC,EAAE,CAAC;SACZ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAiC,QAAW,EAAA;;AAExC,YAAA,QACI,IAAI,CAAC,IAAI,CAAC,YAAY;iBACrB,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;AAC7C,gBAAA,CAAC,EACH;SACL;;AAsBD,IAAA,MAAA,CAAA,cAAA,CAAW,0BAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAtB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC;SAC5C;;;AAAA,KAAA,CAAA,CAAA;AAhhCD,IAAA,UAAA,CAAA;QADC,UAAU;AACiD,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAMlD,IAAA,UAAA,CAAA;QAAT,QAAQ;AAMR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AAmED,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,uBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,YAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAOR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,IAAA,CAAA,CAAA;AAMD,IAAA,UAAA,CAAA;QAFC,MAAM;QACN,QAAQ;AAaR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAKD,IAAA,UAAA,CAAA;QADC,QAAQ;AAoBR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,OAAO;AAcP,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,qCAAA,EAAA,IAAA,CAAA,CAAA;AAkBD,IAAA,UAAA,CAAA;QADC,QAAQ;AAYR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAaR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAWR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,4BAAA,EAAA,IAAA,CAAA,CAAA;AAOD,IAAA,UAAA,CAAA;QADC,QAAQ;AAkBR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,qCAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAgBR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,mCAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,gCAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAYR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,uCAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAQR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AA2hBD,IAAA,UAAA,CAAA;QADC,QAAQ;AAWR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,oBAAA,EAAA,IAAA,CAAA,CAAA;AAkBD,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,2BAAA,EAAA,IAAA,CAAA,CAAA;AA+CD,IAAA,UAAA,CAAA;QADC,QAAQ;AAgBR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,sBAAA,EAAA,IAAA,CAAA,CAAA;AA+DD,IAAA,UAAA,CAAA;QADC,QAAQ;AAgBR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,yBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,qBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAQR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;AAsBD,IAAA,UAAA,CAAA;QAFC,QAAQ;AAIR,KAAA,EAAA,0BAAA,CAAA,SAAA,EAAA,aAAA,EAAA,IAAA,CAAA,CAAA;IACL,OAAC,0BAAA,CAAA;AAAA,CAthCD,EAshCC;;ACznCD,IAAI,cAAyC,CAAC;SAE9B,wBAAwB,GAAA;IACpC,IAAI,CAAC,cAAc,EAAE;AACjB,QAAA,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC;AACxC,KAAA;AAED,IAAA,OAAO,cAAc,CAAC;AAC1B;;;;ACOA,IAAA,0BAAA,kBAAA,UAAA,MAAA,EAAA;IAAwD,SAEvD,CAAA,0BAAA,EAAA,MAAA,CAAA,CAAA;AAFD,IAAA,SAAA,0BAAA,GAAA;;KAgCC;;;;;AA7BG,QAAA,KAAA,EAAA,YAAA;YAAA,IA4BC,KAAA,GAAA,IAAA,CAAA;AA3BG,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,QAAQ,EAAA,IAAA,EACV,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,EAAA,EAAI,QACvB,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAEkB,QAAM,CAAC,mBAAmB,EAAA;AACpD,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;AAAO,oBAAA,CAAC,CAAC,KAAK;AAAU,oBAAA,IAAA,CAAA;AACxB,gBAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA;oBACK,kBAAkB,CACf,CAAC,CAAC,IAAI,EACN,KAAI,CAAC,KAAK,CAAC,cAAc,CAC5B;AAEE,oBAAA,GAAA,CAAA;AACN,gBAAA,CAAC,CAAC,WAAW,KACV,KAAA,CAAA,aAAA,CAAC,cAAc,EACX,EAAA,SAAS,EAAC,OAAO,EACjB,OAAO,EAAE,kCAAO,CAAC,CAAC,WAAW,CAAQ,EAAA;oBAErC,KACI,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,mBAAmB,EAC7B,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EACjC,CAAA,CACW,CACpB,CACC,IACT,CAAC,CACW,EACnB;SACL;;IACL,OAAC,0BAAA,CAAA;AAAD,CAAC,CAhCuD,KAAK,CAAC,SAAS,CAgCtE,CAAA;;;;AClBD,IAAA,kBAAA,kBAAA,UAAA,MAAA,EAAA;IAAgD,SAG/C,CAAA,kBAAA,EAAA,MAAA,CAAA,CAAA;AAHD,IAAA,SAAA,kBAAA,GAAA;;KAkKC;;;;;AA9JG,QAAA,KAAA,EAAA,YAAA;AACU,YAAA,IAAA,EAUF,GAAA,IAAI,CAAC,KAAK,EATV,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,mBAAmB,GAAA,EAAA,CAAA,mBAAA,EACnB,sCAAsC,4CAAA,EACtC,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,yBAAyB,GAAA,EAAA,CAAA,yBAAA,EACzB,4BAA4B,kCAAA,EAC5B,0BAA0B,GAAA,EAAA,CAAA,0BAAA,EAC1B,yBAAyB,GAAA,EAAA,CAAA,yBAAA,EACzB,uBAAuB,6BACb,CAAC;AAEf,YAAA,IAAM,qBAAqB,GACvB,mBAAmB,CAAC,MAAM;AAC1B,gBAAA,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC;YAE5C,IAAI,CAAC,YAAY,EAAE;AACf,gBAAA,OAAO,iCAAQ,CAAC;AACnB,aAAA;AAAM,iBAAA,IAAI,sCAAsC,EAAE;AAC/C,gBAAA,IAAM,SAAS,GACX,4BAA4B,CAAC,SAAS;AACtC,oBAAA,0BAA0B,CAAC,SAAS;oBACpC,mBAAmB,CAAC,SAAS,CAAC;AAClC,gBAAA,IAAM,YAAY,GACd,yBAAyB,CAAC,MAAM;oBAChC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;oBACxD,qBAAqB;AACrB,oBAAA,0BAA0B,CAAC,MAAM;AACjC,oBAAA,0BAA0B,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;gBAEjD,QACI,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,OAAO,EAAEA,QAAM,CAAC,QAAQ,CAAC,EAAA;AAC/C,oBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAChC,oBAAA,CAAC,SAAS;wBACP,YAAY;AACZ,wBAAA,IAAI,CAAC,sBAAsB,CACvB,gBAAgB,IAAI,qBAAsB,EAC1C,0BAA0B,CAAC,MAAO,EAClC,qBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,CAC1B,CACH,EACR;AACL,aAAA;AAAM,iBAAA;;AAEH,gBAAA,IAAM,SAAS,GACX,4BAA4B,CAAC,SAAS;oBACtC,mBAAmB,CAAC,SAAS,CAAC;AAClC,gBAAA,IAAM,YAAY,GACd,4BAA4B,CAAC,MAAM;AACnC,oBAAA,4BAA4B,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;AAC9C,oBAAA,qBAAqB,CAAC;gBAC1B,QACI,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,OAAO,EAAEA,QAAM,CAAC,QAAQ,CAAC,EAAA;AAC/C,oBAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;AAChC,oBAAA,CAAC,SAAS;wBACP,YAAY;AACZ,wBAAA,IAAI,CAAC,sBAAsB,CACvB,gBAAgB,IAAI,qBAAuB,EAC3C,4BAA4B,CAAC,MAAQ,EACrC,qBAAuB,EACvB,yBAAyB,CAC5B,CACH,EACR;AACL,aAAA;SACJ;;;;;;eAED,UACI,gBAAwB,EACxB,cAAwB,EACxB,mBAA2B,EAC3B,yBAEC,EACD,uBAAgE,EAAA;YAPpE,IAuDC,KAAA,GAAA,IAAA,CAAA;YA9CG,IAAM,kBAAkB,GACpB,yBAAyB,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC;AAC7D,YAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;gBACI,KAAC,CAAA,aAAA,CAAA,MAAM,EACH,EAAA,KAAK,EAAE;AACH,wBAAA,KAAK,EAAE,kBAAkB;AACrB,8BAAE,kBAAkB;AACpB,8BAAE,gBAAgB;AACtB,wBAAA,KAAK,EAAE,gBAAgB;qBAC1B,EACD,SAAS,EAAE,KAAK;;;AAGhB,oBAAA,aAAa,EAAE,KAAK,EACpB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,GAAG,CAC7C,UAAC,CAAS,EAAA;wBACN,IAAM,MAAM,GACR,yBAAyB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;wBAC/C,IAAM,YAAY,GACd,yBAAyB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;wBAC9C,IAAM,MAAM,GAAG,yBAAyB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBACnD,IAAM,aAAa,GACf,uBAAuB;4BACvB,uBAAuB,CAAC,CAAC,CAAC;AAC1B,4BAAA,uBAAuB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AACtC,wBAAA,IAAM,KAAK,GAAG,EAAA,IACV,YAAY,GAAM,YAAY,GAAA,KAAK,GAAG,EAAE,CAAA,GACzC,CAAC,GAAI,GAAA,IAAA,MAAM,GAAG,GAAI,GAAA,MAAM,MAAG,GAAG,EAAE,CAAA,GAAA,GAAA,IAC/B,MAAM,GAAG,GAAA,GAAI,MAAM,GAAe,eAAA,GAAG,EAAE,WAEvC,aAAa;8BACP,GAAI,GAAA,aAAa,GAAa,aAAA;AAChC,8BAAE,EAAE,CACR,GAAA,GAAA,IAAA,CAAC,KAAK,mBAAmB,GAAG,YAAY,GAAG,EAAE,CAAE,CAAC;wBACpD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AACtC,qBAAC,CACJ,EACD,QAAQ,EAAE,UAAC,MAAW,EAAA;wBAClB,IAAI,MAAM,CAAC,KAAK,EAAE;4BACd,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrC,yBAAA;qBACJ,EAAA,CACH,CACA,EACR;SACL;;;;;;AAED,QAAA,KAAA,EAAA,UAAwB,WAAqB,EAAA;YACnC,IAAA,EAAA,GAAqD,IAAI,CAAC,KAAK,EAA7D,mBAAmB,GAAA,EAAA,CAAA,mBAAA,EAAE,yBAAyB,GAAA,EAAA,CAAA,yBAAe,CAAC;;;;;;AAOtE,YAAA,WAAW,GAAGlB,UAAC,CAAC,OAAO,CACnB,WAAW,EACX;AACI,gBAAA,UAAA,CAAC,EAAA;oBACG,OAAA,mBAAmB,CAAC,MAAM;AAC1B,wBAAA,CAAC,KAAK,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAA;iBAAA;AACjD,gBAAA,UAAA,CAAC,EAAA;oBACG,OAAA,yBAAyB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;iBAAA;gBAC/D,UAAA,CAAC,EAAI,EAAA,OAAA,yBAAyB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAA,EAAA;AAC/C,gBAAA,UAAA,CAAC,EAAA,EAAI,OAAA,CAAC,GAAA;aACT,EACD,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAClC,CAAC;AACF,YAAA,OAAO,WAAW,CAAC;SACtB;;;;;;AAED,QAAA,KAAA,EAAA,UAAyB,SAAkB,EAAA;AACvC,YAAA,OAAO,SAAS;AACZ,kBAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,KACvB,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,8BAA8B,GAAG,CACjD;kBACD,IAAI,CAAC;SACd;;IAjKgB,kBAAkB,GAAA,UAAA,CAAA;QADtC,QAAQ;AACY,KAAA,EAAA,kBAAkB,CAkKtC,CAAA;IAAD,OAAC,kBAAA,CAAA;AAAA,CAlKD,CAAgD,KAAK,CAAC,SAAS,CAkK9D,CAAA;;;;AChKD,IAAM,eAAe,GAA8C,UAAC,EAQnE,EAAA;AAPG,IAAA,IAAA,SAAS,eAAA,EACT,YAAY,kBAAA,EACZ,mBAAmB,yBAAA,EACnB,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,yBAAyB,GAAA,EAAA,CAAA,yBAAA,EACzB,4BAA4B,GAAA,EAAA,CAAA,4BAAA,CAAA;IAE5B,IAAM,qBAAqB,GACvB,mBAAmB,CAAC,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC;AAC1E,IAAA,IAAM,UAAU,GACZ,gBAAgB,IAAI,gBAAgB,KAAK,qBAAqB;UACvD,mBAAmB,CAAC,MAA4B;AACnD,UAAE,yBAAyB,CAAC,gBAAiB,CAAC,CAAC;AACvD,IAAA,IAAM,YAAY,GAAG,UAAU,IAAI,UAAU,CAAC,YAAY,CAAC;AAC3D,IAAA,IAAM,MAAM,GAAG,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC;AAE/C,IAAA,IAAM,MAAM,GAAG,YAAY,IACvB,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,WAAW,CAAC,WAAY,GAAA,YAAc,CAAC,EAAE,MAAM,EAAC,QAAQ,EAAA,EAC5D,YAAY,CACb,KAEJ,GAAG,CACN,CAAC;IACF,IAAM,OAAO,GAAG,YAAY;UACtB,gBAAgB,KACZ,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACI,IAAI,EAAE,MAAM,CAAC,4BAA6B,EAAE;AACxC,gBAAA,YAAY,EAAE,gBAAgB;AACjC,aAAA,CAAC,EACF,MAAM,EAAC,QAAQ,EAEd,EAAA,gBAAgB,CACjB,CACP;UACD,qBAAqB;;AAEjB,QAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACI,IAAI,EAAE,MAAM,CAAC,4BAA6B,EAAE;AACxC,gBAAA,YAAY,EAAE,qBAAqB;aACtC,CAAC,EACF,MAAM,EAAC,QAAQ,IAEd,qBAAqB,CACtB,CACP,CAAC;IACR,IAAM,IAAI,GAAG,MAAM,IACf,KACI,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,WAAW,CAAC;AACd,YAAA,QAAQ,EAAE,sBAAsB;AAChC,YAAA,KAAK,EAAE;AACH,gBAAA,OAAO,EAAE,MAAM;AACf,gBAAA,IAAI,EAAE,MAAM;AACf,aAAA;AACJ,SAAA,CAAC,EACF,MAAM,EAAC,QAAQ,IAEd,MAAM,CACP,KAEJ,GAAG,CACN,CAAC;IAEF,IAAM,OAAO,GAAG,SAAS,IACrB,KACI,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,IAAI,EAAE,kCAAA,GAAmC,SAAW,EACpD,MAAM,EAAC,QAAQ,EAEd,EAAA,SAAS,CACV,KAEJ,GAAG,CACN,CAAC;IAEF,IAAM,sBAAsB,IACxB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACI,QAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EAAgB,0BAA0B,EAAA,EAAE,MAAM,CAAQ,EACzD,KAAK;QACL,OAAO;QACR,KAAM,CAAA,aAAA,CAAA,IAAA,EAAA,IAAA,CAAA;AACN,QAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EAAgB,wBAAwB,EAAA,EAAE,IAAI,CAAQ,EACrD,KAAK;AACN,QAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EAAgB,2BAA2B,EAAE,EAAA,OAAO,CAAQ,CAC1D,CACT,CAAC;IAEF,IAAM,eAAe,IACjB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACI,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACI,YAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EAAgB,mBAAmB,EAAA;gBAC9B,UAAU;AACV,gBAAA,MAAM,CACJ,CACL;AACN,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;YACI,KAAsB,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,WAAA,CAAA;AACrB,YAAA,OAAO,CACN;AACN,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACI,YAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EAAgB,iBAAiB,EAAA;gBAC5B,QAAQ;AACR,gBAAA,IAAI,CACF,CACL;AACN,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACI,YAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAA,WAAA,EAAgB,oBAAoB,EAAA;gBAC/B,WAAW;AACX,gBAAA,OAAO,CACL,CACL,CACJ,CACT,CAAC;IACF,OAAO,YAAY,GAAG,sBAAsB,GAAG,eAAe,CAAC;AACnE,CAAC,CAAC;AAGF,IAAA,WAAA,kBAAA,UAAA,MAAA,EAAA;IAAyC,SAAqC,CAAA,WAAA,EAAA,MAAA,CAAA,CAAA;AAA9E,IAAA,SAAA,WAAA,GAAA;;KAqDC;;;;;AA9CG,QAAA,KAAA,EAAA,YAAA;AACU,YAAA,IAAA,KAaF,IAAI,CAAC,KAAK,EAZV,cAAc,oBAAA,EACd,YAAY,GAAA,EAAA,CAAA,YAAA,EACZ,sCAAsC,GAAA,EAAA,CAAA,sCAAA,EACtC,mBAAmB,GAAA,EAAA,CAAA,mBAAA,EACnB,gBAAgB,GAAA,EAAA,CAAA,gBAAA,EAChB,yBAAyB,GAAA,EAAA,CAAA,yBAAA,EACzB,0BAA0B,GAAA,EAAA,CAAA,0BAAA,EAC1B,4BAA4B,GAAA,EAAA,CAAA,4BAAA,EAC5B,yBAAyB,GAAA,EAAA,CAAA,yBAAA,EACzB,uBAAuB,6BAAA,EACvB,kBAAkB,wBAAA,EAClB,gBAAgB,sBACN,CAAC;YAEf,QACI,6BACI,SAAS,EACL,IAAI,CAAC,KAAK,CAAC,YAAY;sBACjB,MAAM,CAAC,kBAAkB;sBACzB,MAAM,CAAC,WAAW,EAAA;AAG3B,gBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,KACrB,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAE,MAAM,CAAC,UAAU,EAAG,EAAA,cAAc,CAAM,CAC1D;gBACD,KAAC,CAAA,aAAA,CAAA,kBAAkB,IACf,YAAY,EAAE,YAAY,EAC1B,sCAAsC,EAClC,sCAAsC,EAE1C,gBAAgB,EAAE,gBAAgB,EAClC,yBAAyB,EAAE,yBAAyB,EACpD,mBAAmB,EAAE,mBAAmB,EACxC,4BAA4B,EAAE,4BAA4B,EAC1D,0BAA0B,EAAE,0BAA0B,EACtD,yBAAyB,EAAE,yBAAyB,EACpD,uBAAuB,EAAE,uBAAuB,EAChD,QAAQ,EAAE,kBAAkB,EAC5B,gBAAgB,EAAE,gBAAgB,EACpC,CAAA;gBACF,KAAC,CAAA,aAAA,CAAA,eAAe,eAAK,IAAI,CAAC,KAAK,CAAI,CAAA,CACjC,EACR;SACL;;AAnDD,IAAA,MAAA,CAAA,cAAA,CAAA,WAAA,EAAA,cAAA,EAAA;;;;AAAwD,QAAA,KAAA,EAAA;AACpD,YAAA,4BAA4B,EACxB,iFAAiF;AACrF,YAAA,YAAY,EAAE,KAAK;AACtB,SAAA;AAAC,KAAA,CAAA,CAAA;IALe,WAAW,GAAA,UAAA,CAAA;QAD/B,QAAQ;AACY,KAAA,EAAA,WAAW,CAqD/B,CAAA;IAAD,OAAC,WAAA,CAAA;AAAA,CArDD,CAAyC,KAAK,CAAC,SAAS,CAqDvD,CAAA;;AC/FK,SAAU,8BAA8B,CAAC,KAA0B,EAAA;IACrE,OAAO,IAAI,0BAA0B,CACjC;QACI,YAAY,EAAE,KAAK,CAAC,YAAY;AAChC,QAAA,cAAc,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAW,GAAG,EAAE;KAC5D,EACD;QACI,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,qBAAqB,EAAE,KAAK,CAAC,qBAAqB;QAClD,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,mCAAmC,EAC/B,KAAK,CAAC,mCAAmC;QAC7C,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,yBAAyB,EAAE,KAAK,CAAC,yBAAyB;QAC1D,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;QACpD,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,YAAY,EAAE,KAAK,CAAC,YAAY;AACnC,KAAA,EACD,YAAM,EAAA,QAAC,KAAK,CAAC,IAAI,IAAI,EAAE,EAAe,EAAA,CACzC,CAAC;AACN,CAAC;AAED,IAAA,cAAA,kBAAA,UAAA,MAAA,EAAA;IAEU,SAAsB,CAAA,cAAA,EAAA,MAAA,CAAA,CAAA;AAY5B,IAAA,SAAA,cAAA,CAAY,KAAU,EAAA;QAAtB,IACI,KAAA,GAAA,MAAA,CAAA,IAAA,CAAA,IAAA,EAAM,KAAK,CAAC,IAEf,IAAA,CAAA;AAGD,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,kBAAA,EAAA;;;;;AAAsD,SAAA,CAAA,CAAA;AAGtD,QAAA,MAAA,CAAA,cAAA,CAAA,KAAA,EAAA,mBAAA,EAAA;;;;;AAAgD,SAAA,CAAA,CAAA;QAP5C,cAAc,CAAC,KAAI,CAAC,CAAC;;KACxB;AASD,IAAA,MAAA,CAAA,cAAA,CAAc,cAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;YACI,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACxB,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC;AACvE,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,GAAG,CAAC;AACd,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAc,cAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAA7B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;AAC5B,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,eAAgB,CAAC;AACtC,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACxB,oBAAA,IAAI,CAAC,gBAAgB,GAAG,0BAA0B,EAAE,CAAC;AACxD,iBAAA;gBAED,OAAO,IAAI,CAAC,gBAAgB,CAAC;AAChC,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;;AAEI,YAAA,OAAO,EAAE,CAAC;SACb;;AAES,IAAA,MAAA,CAAA,cAAA,CAAI,cAAe,CAAA,SAAA,EAAA,iBAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACN,YAAA,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;SACpC;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAkB,CAAA,SAAA,EAAA,oBAAA,EAAA;AAAhC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;SACxC;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;AAAlC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;SAC1C;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAqB,CAAA,SAAA,EAAA,uBAAA,EAAA;AAAnC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC;SAC3C;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAsB,CAAA,SAAA,EAAA,wBAAA,EAAA;AAApC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;SAC5C;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAsB,CAAA,SAAA,EAAA,wBAAA,EAAA;AAApC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;SAC5C;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAyB,CAAA,SAAA,EAAA,2BAAA,EAAA;AAAvC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC;SAC/C;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAyB,CAAA,SAAA,EAAA,2BAAA,EAAA;AAAvC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC;SAC/C;;;AAAA,KAAA,CAAA,CAAA;AAGD,IAAA,MAAA,CAAA,cAAA,CAAc,cAAK,CAAA,SAAA,EAAA,OAAA,EAAA;AAAnB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK;AACnB,kBAAE,IAAI,CAAC,KAAK,CAAC,KAAM;AACnB,kBAAE,8BAA8B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpD;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAA0B,CAAA,SAAA,EAAA,4BAAA,EAAA;AAAxC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,0BAA0B;AACxC,kBAAE,IAAI,CAAC,KAAK,CAAC,0BAA2B;AACxC,kBAAE,IAAI,iCAAiC,EAAE,CAAC;SACjD;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW;AACzB,kBAAE,IAAI,CAAC,KAAK,CAAC,WAAY;AACzB,kBAAE,IAAI,kBAAkB,EAAE,CAAC;SAClC;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAoB,CAAA,SAAA,EAAA,sBAAA,EAAA;AAAlC,QAAA,GAAA,EAAA,YAAA;;AAEI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAoB;AAClC,kBAAE,IAAI,CAAC,KAAK,CAAC,oBAAqB;kBAChC,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;SACzE;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa;AAC3B,kBAAE,IAAI,CAAC,KAAK,CAAC,aAAc;kBACzB,wBAAwB,EAAE,CAAC;SACpC;;AAGD,IAAA,MAAA,CAAA,cAAA,CAAc,cAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAClC;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;AAA/B,QAAA,GAAA,EAAA,YAAA;;;;;;;;;;;;;AAcI,YAAA,OAAO,SAAS,CAAC;SACpB;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAsB,CAAA,SAAA,EAAA,wBAAA,EAAA;AAApC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC1B,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAc,CAAC;AACpC,aAAA;AAAM,iBAAA;gBACH,IAAI,OAAO,GAEL,wBAAwB,CAAC;AAC/B,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;AACjC,oBAAA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAqB,CAAC;AAC9C,iBAAA;AAED,gBAAA,QACI,KAAA,CAAA,aAAA,CAAC,oBAAoB,EAAA,EACjB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAC/B,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAChD,qBAAqB,EACjB,IAAI,CAAC,KAAK,CAAC,kCAAkC,EAEjD,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,wBAAwB,EACpD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAC1C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,yBAAyB,EACrB,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAExC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EACjD,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,EACjC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACvC,+BAA+B,EAC3B,IAAI,CAAC,KAAK,CAAC,+BAA+B,EAE9C,yBAAyB,EACrB,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAExC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EACnD,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAA,CAC9B,EACJ;AACL,aAAA;SACJ;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAA1B,QAAA,GAAA,EAAA,YAAA;YACI,QACI,oBAAC,oBAAoB,EAAA,EACjB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,cAAc,EAAE,IAAI,CAAC,0BAA0B,EAC/C,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,EAC/C,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACnC,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EACzB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAC7C,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EACjD,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,wBAAwB,EACzD,gBAAgB,EACZ,IAAI,CAAC,KAAK,CAAC,oBAAoB;AAC/B,oBAAA,IAAI,CAAC,UAAU;AACf,oBAAA,IAAI,CAAC,gBAAgB;sBACf,IAAI,CAAC,gBAAgB;AACvB,sBAAE,SAAS,EAEnB,eAAe,EAAE,IAAI,CAAC,eAAe,EACrC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAC/C,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAC3D,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,EAC3C,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,sBAAsB,EACrD,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,qBAAqB,EACnD,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EACnC,cAAc,EAAE,IAAI,CAAC,kBAAkB,EACvC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,EAC7C,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,EAC/C,kBAAkB,EAAE,IAAI,CAAC,yBAAyB,EAClD,qBAAqB,EAAE,IAAI,CAAC,yBAAyB,EACrD,qBAAqB,EAAE,IAAI,CAAC,yBAAyB,EACrD,wBAAwB,EACpB,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAE3C,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,4BAA4B,EACxB,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAA,CAE7C,EACJ;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAc,CAAA,SAAA,EAAA,gBAAA,EAAA;AAA5B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;SACpC;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAW,CAAA,SAAA,EAAA,aAAA,EAAA;AAAzB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,QACI,KAAA,CAAA,aAAA,CAAC,WAAW,EAAA,EACR,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAC9C,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EACtC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,EACjD,sCAAsC,EAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,sCAAsC,EAEvD,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAC/D,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EACnD,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,2BAA2B,EACxD,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAiB,CAAC,MAAM,EACrD,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAC/D,0BAA0B,EACtB,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAEzC,4BAA4B,EACxB,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAE3C,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAC3D,4BAA4B,EACxB,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAE3C,kBAAkB,EAAE,IAAI,CAAC,sBAAsB,EAC/C,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,EAAA,CACvC,EACJ;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;SACnC;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;YACI,OAAO,IAAI,CAAC,aAAa,IACrB,oBAAC,0BAA0B,EAAA,EAAC,KAAK,EAAE,IAAI,CAAC,aAAc,EAAA,CAAI,IAC1D,IAAI,CAAC;SACZ;;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;AAAjC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACxC;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAU,CAAA,SAAA,EAAA,YAAA,EAAA;AAAxB,QAAA,GAAA,EAAA,YAAA;YACI,QACI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;gBAChD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAC7C;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAA0B,CAAA,SAAA,EAAA,4BAAA,EAAA;AAAxC,QAAA,GAAA,EAAA,YAAA;;AAEI,YAAA,OAAO,KAAK,CAAC;SAChB;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;AAA9B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YACvC,IAAM,SAAS,GACX,SAAS,CAAC,0BAA0B,CAAC,MAAM,GAAG,CAAC;kBACzC,SAAS,CAAC,0BAA0B;AACtC,kBAAE,SAAS,CAAC,kBAAkB,CAAC;AACvC,YAAA,IAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;YAElC,QACI,oBAAC,gBAAgB,EAAA,EACb,UAAU,EAAE,UAAA,GAAW,SAAS,CAAC,MAAM,GAAA,MAAA,GAAO,OAAO,CAAC,MAAM,GAAa,aAAA,EACzE,YAAY,EAAE,IAAI,CAAC,YAAY,EACjC,CAAA,EACJ;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAa,CAAA,SAAA,EAAA,eAAA,EAAA;AAA3B,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,KAAO,CAAA,aAAA,CAAA,MAAA,EAAA,IAAA,EAAA,IAAI,CAAC,sBAAsB,CAAQ,CAAC;SACrD;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAiB,CAAA,SAAA,EAAA,mBAAA,EAAA;AAA/B,QAAA,GAAA,EAAA,YAAA;;AAEI,YAAA,OAAO,IAAI,CAAC;SACf;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAmB,CAAA,SAAA,EAAA,qBAAA,EAAA;AAAjC,QAAA,GAAA,EAAA,YAAA;;AAEI,YAAA,OAAO,IAAI,CAAC;SACf;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAY,CAAA,SAAA,EAAA,cAAA,EAAA;AAA1B,QAAA,GAAA,EAAA,YAAA;;AAEI,YAAA,OAAO,IAAI,CAAC;SACf;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAyB,CAAA,SAAA,EAAA,2BAAA,EAAA;AAAvC,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC;SAC9C;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAS,CAAA,SAAA,EAAA,WAAA,EAAA;AAAvB,QAAA,GAAA,EAAA,YAAA;AACI,YAAA,QACI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS;AACjC,gBAAA,IAAI,CAAC,yBAAyB;AAC9B,gBAAA,IAAI,CAAC,0BAA0B;AAC/B,iBAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;oBAC1B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAC5C;SACL;;;AAAA,KAAA,CAAA,CAAA;AAED,IAAA,MAAA,CAAA,cAAA,CAAc,cAAgB,CAAA,SAAA,EAAA,kBAAA,EAAA;AAA9B,QAAA,GAAA,EAAA,YAAA;YACI,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAoB,IAClC,IAAI,CAAC,KAAK,CAAC,oBAAqB,KAEhC,KAAG,CAAA,aAAA,CAAA,GAAA,EAAA,EAAA,SAAS,EAAC,8BAA8B,EAAG,CAAA,CACjD,CAAC;SACL;;;AAAA,KAAA,CAAA,CAAA;;;;;AAED,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,OAAO,IAAI,CAAC,SAAS,IACjB,IAAI,CAAC,gBAAgB,KAErB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,IAAA;AACI,gBAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAA;oBAC3B,KACI,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,EAAA;AAE7B,wBAAA,IAAI,CAAC,YAAY;wBACjB,IAAI,CAAC,iBAAiB,CACrB;oBACN,KAAK,CAAA,aAAA,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,0BAA0B,EAAA;AACpC,wBAAA,IAAI,CAAC,WAAW;AAChB,wBAAA,IAAI,CAAC,mBAAmB;AACxB,wBAAA,IAAI,CAAC,mBAAmB;wBACxB,IAAI,CAAC,YAAY,CAChB,CACJ;AACL,gBAAA,IAAI,CAAC,aAAa,CACjB,CACT,CAAC;SACL;;;;;;AAGD,QAAA,KAAA,EAAA,UAAiC,YAAoB,EAAA;AACjD,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE;AAClC,gBAAA,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;AAClD,aAAA;;AAED,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE;AAC/B,gBAAA,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AAC/C,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,UAAwB,MAAc,EAAA;AAClC,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;AAC1B,gBAAA,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACpC,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;AACnC,aAAA;SACJ;;;;;;AAGD,QAAA,KAAA,EAAA,YAAA;AACI,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;AAC7C,YAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC;SAChD;;AA5YD,IAAA,MAAA,CAAA,cAAA,CAAA,cAAA,EAAA,cAAA,EAAA;;;;AAA2D,QAAA,KAAA,EAAA;AACvD,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,sCAAsC,EAAE,KAAK;AAC7C,YAAA,sBAAsB,EAAE,KAAK;AAC7B,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,mCAAmC,EAAE,KAAK;AAC1C,YAAA,yBAAyB,EAAE,IAAI;AAClC,SAAA;AAAC,KAAA,CAAA,CAAA;AAQF,IAAA,UAAA,CAAA;QADC,UAAU;AAC2C,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,kBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGtD,IAAA,UAAA,CAAA;QADC,UAAU;AACqC,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,mBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAGhD,IAAA,UAAA,CAAA;QADC,QAAQ;AAOR,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,WAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;QADC,QAAQ;AAWR,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AAOS,IAAA,UAAA,CAAA;QAAT,QAAQ;AAER,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,iBAAA,EAAA,IAAA,CAAA,CAAA;AA+BD,IAAA,UAAA,CAAA;QADC,QAAQ;AAKR,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,OAAA,EAAA,IAAA,CAAA,CAAA;AA4BD,IAAA,UAAA,CAAA;QADC,QAAQ;AAGR,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAgQD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AASZ,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,wBAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAOZ,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,eAAA,EAAA,IAAA,CAAA,CAAA;AAGD,IAAA,UAAA,CAAA;AADC,QAAA,MAAM,CAAC,KAAK;AAKZ,KAAA,EAAA,cAAA,CAAA,SAAA,EAAA,cAAA,EAAA,IAAA,CAAA,CAAA;IACL,OAAC,cAAA,CAAA;AAAA,CAhZD,CAEU,KAAK,CAAC,SAAS,CA8YxB;;;;"}
|