protvista-uniprot 2.13.2 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/es/__spec__/filter-config.spec.d.ts +1 -0
  2. package/dist/es/__spec__/filter-config.spec.js +123 -0
  3. package/dist/es/__spec__/filter-config.spec.js.map +1 -0
  4. package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.d.ts +47 -0
  5. package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.js +75 -0
  6. package/dist/es/adapters/__tests__/__mocks__/uniprotkb-entry-data.js.map +1 -0
  7. package/dist/es/adapters/__tests__/structure-adapter.spec.d.ts +1 -0
  8. package/dist/es/adapters/__tests__/structure-adapter.spec.js +14 -0
  9. package/dist/es/adapters/__tests__/structure-adapter.spec.js.map +1 -0
  10. package/dist/es/adapters/alphafold-confidence-adapter.d.ts +8 -0
  11. package/dist/es/{protvista-alphafold-confidence.js → adapters/alphafold-confidence-adapter.js} +4 -3
  12. package/dist/es/adapters/alphafold-confidence-adapter.js.map +1 -0
  13. package/dist/es/adapters/alphamissense-heatmap-adapter.d.ts +8 -0
  14. package/dist/es/{protvista-alphamissense-heatmap.js → adapters/alphamissense-heatmap-adapter.js} +4 -3
  15. package/dist/es/adapters/alphamissense-heatmap-adapter.js.map +1 -0
  16. package/dist/es/adapters/alphamissense-pathogenicity-adapter.d.ts +10 -0
  17. package/dist/es/{protvista-alphamissense-pathogenicity.js → adapters/alphamissense-pathogenicity-adapter.js} +3 -2
  18. package/dist/es/adapters/alphamissense-pathogenicity-adapter.js.map +1 -0
  19. package/dist/es/adapters/config/evidence.d.ts +14 -0
  20. package/dist/es/adapters/config/evidence.js +101 -0
  21. package/dist/es/adapters/config/evidence.js.map +1 -0
  22. package/dist/es/adapters/feature-adapter.d.ts +2 -0
  23. package/dist/es/adapters/feature-adapter.js +18 -0
  24. package/dist/es/adapters/feature-adapter.js.map +1 -0
  25. package/dist/es/adapters/interpro-adapter.d.ts +2 -0
  26. package/dist/es/adapters/interpro-adapter.js +60 -0
  27. package/dist/es/adapters/interpro-adapter.js.map +1 -0
  28. package/dist/es/adapters/proteomics-adapter.d.ts +2 -0
  29. package/dist/es/adapters/proteomics-adapter.js +66 -0
  30. package/dist/es/adapters/proteomics-adapter.js.map +1 -0
  31. package/dist/es/{protvista-ptm-exchange.d.ts → adapters/ptm-exchange-adapter.d.ts} +2 -2
  32. package/dist/es/{protvista-ptm-exchange.js → adapters/ptm-exchange-adapter.js} +3 -2
  33. package/dist/es/adapters/ptm-exchange-adapter.js.map +1 -0
  34. package/dist/es/adapters/structure-adapter.d.ts +4 -0
  35. package/dist/es/adapters/structure-adapter.js +89 -0
  36. package/dist/es/adapters/structure-adapter.js.map +1 -0
  37. package/dist/es/adapters/types/alphafold.js +2 -0
  38. package/dist/es/adapters/types/alphafold.js.map +1 -0
  39. package/dist/es/adapters/variation-adapter.d.ts +7 -0
  40. package/dist/es/adapters/variation-adapter.js +31 -0
  41. package/dist/es/adapters/variation-adapter.js.map +1 -0
  42. package/dist/es/{protvista-variation-graph-adapter.d.ts → adapters/variation-graph-adapter.d.ts} +2 -1
  43. package/dist/es/{protvista-variation-graph-adapter.js → adapters/variation-graph-adapter.js} +12 -5
  44. package/dist/es/adapters/variation-graph-adapter.js.map +1 -0
  45. package/dist/es/config.json +54 -54
  46. package/dist/es/filter-config.d.ts +24 -0
  47. package/dist/es/{filterConfig.js → filter-config.js} +1 -1
  48. package/dist/es/filter-config.js.map +1 -0
  49. package/dist/es/index.d.ts +5 -10
  50. package/dist/es/index.js +5 -15
  51. package/dist/es/index.js.map +1 -1
  52. package/dist/es/protvista-uniprot-structure.js +15 -9
  53. package/dist/es/protvista-uniprot-structure.js.map +1 -1
  54. package/dist/es/protvista-uniprot.d.ts +1 -100
  55. package/dist/es/protvista-uniprot.js +46 -60
  56. package/dist/es/protvista-uniprot.js.map +1 -1
  57. package/dist/es/styles/protvista-styles.js +2 -1
  58. package/dist/es/styles/protvista-styles.js.map +1 -1
  59. package/dist/es/tooltips/featureTooltip.d.ts +4 -0
  60. package/dist/es/tooltips/featureTooltip.js +160 -0
  61. package/dist/es/tooltips/featureTooltip.js.map +1 -0
  62. package/dist/es/tooltips/structureTooltip.d.ts +2 -0
  63. package/dist/es/tooltips/structureTooltip.js +15 -0
  64. package/dist/es/tooltips/structureTooltip.js.map +1 -0
  65. package/dist/es/tooltips/variationTooltip.d.ts +3 -0
  66. package/dist/es/tooltips/variationTooltip.js +82 -0
  67. package/dist/es/tooltips/variationTooltip.js.map +1 -0
  68. package/dist/es/utils.d.ts +3 -0
  69. package/dist/es/utils.js +28 -0
  70. package/dist/es/utils.js.map +1 -0
  71. package/dist/protvista-uniprot.js +166 -155
  72. package/dist/protvista-uniprot.js.map +1 -1
  73. package/package.json +25 -30
  74. package/src/__spec__/filter-config.spec.ts +143 -0
  75. package/src/adapters/__tests__/__mocks__/uniprotkb-entry-data.ts +76 -0
  76. package/src/adapters/__tests__/__snapshots__/structure-adapter.spec.ts.snap +157 -0
  77. package/src/adapters/__tests__/structure-adapter.spec.ts +19 -0
  78. package/src/{protvista-alphafold-confidence.ts → adapters/alphafold-confidence-adapter.ts} +5 -3
  79. package/src/{protvista-alphamissense-heatmap.ts → adapters/alphamissense-heatmap-adapter.ts} +8 -4
  80. package/src/{protvista-alphamissense-pathogenicity.ts → adapters/alphamissense-pathogenicity-adapter.ts} +4 -2
  81. package/src/adapters/config/evidence.ts +105 -0
  82. package/src/adapters/feature-adapter.ts +19 -0
  83. package/src/adapters/interpro-adapter.ts +71 -0
  84. package/src/adapters/proteomics-adapter.ts +76 -0
  85. package/src/{protvista-ptm-exchange.ts → adapters/ptm-exchange-adapter.ts} +3 -1
  86. package/src/adapters/structure-adapter.ts +105 -0
  87. package/src/adapters/variation-adapter.ts +44 -0
  88. package/src/{protvista-variation-graph-adapter.ts → adapters/variation-graph-adapter.ts} +25 -18
  89. package/src/config.json +54 -54
  90. package/src/{filterConfig.ts → filter-config.ts} +17 -12
  91. package/src/index.ts +5 -20
  92. package/src/protvista-uniprot-structure.ts +6 -14
  93. package/src/protvista-uniprot.ts +66 -96
  94. package/src/styles/protvista-styles.ts +2 -1
  95. package/src/tooltips/featureTooltip.ts +223 -0
  96. package/src/tooltips/structureTooltip.ts +20 -0
  97. package/src/tooltips/variationTooltip.ts +139 -0
  98. package/src/utils.ts +37 -0
  99. package/dist/es/commonTypes.js +0 -2
  100. package/dist/es/commonTypes.js.map +0 -1
  101. package/dist/es/filterConfig.d.ts +0 -20
  102. package/dist/es/filterConfig.js.map +0 -1
  103. package/dist/es/loadComponents.d.ts +0 -2
  104. package/dist/es/loadComponents.js +0 -7
  105. package/dist/es/loadComponents.js.map +0 -1
  106. package/dist/es/protvista-alphafold-confidence.d.ts +0 -9
  107. package/dist/es/protvista-alphafold-confidence.js.map +0 -1
  108. package/dist/es/protvista-alphamissense-heatmap.d.ts +0 -8
  109. package/dist/es/protvista-alphamissense-heatmap.js.map +0 -1
  110. package/dist/es/protvista-alphamissense-pathogenicity.d.ts +0 -10
  111. package/dist/es/protvista-alphamissense-pathogenicity.js.map +0 -1
  112. package/dist/es/protvista-ptm-exchange.js.map +0 -1
  113. package/dist/es/protvista-variation-graph-adapter.js.map +0 -1
  114. package/src/loadComponents.ts +0 -10
  115. package/src/types/nightingale-components.d.ts +0 -13
  116. package/src/types/nightingale-sequence-heatmap.d.ts +0 -1
  117. package/src/types/protvista-feature-adapter.d.ts +0 -1
  118. package/src/types/protvista-interpro-adapter.d.ts +0 -1
  119. package/src/types/protvista-proteomics-adapter.d.ts +0 -1
  120. package/src/types/protvista-structure-adapter.d.ts +0 -1
  121. package/src/types/protvista-structure.d.ts +0 -1
  122. package/src/types/protvista-variation.d.ts +0 -15
  123. /package/dist/es/{commonTypes.d.ts → adapters/types/alphafold.d.ts} +0 -0
  124. /package/src/{commonTypes.ts → adapters/types/alphafold.ts} +0 -0
@@ -0,0 +1,82 @@
1
+ import groupBy from 'lodash-es/groupBy';
2
+ import { formatXrefs, getEvidenceFromCodes } from './featureTooltip';
3
+ const getDiseaseAssociations = (associations) => associations === null || associations === void 0 ? void 0 : associations.map((association) => `
4
+ <h4>Disease association</h4><p>${association.name}</p>
5
+ ${association.description
6
+ ? `<>${association.description}</p>`
7
+ : ''}
8
+ ${association.dbReferences
9
+ ? `<h5>Cross-references</h5>${formatXrefs(association.dbReferences)}`
10
+ : ''}
11
+ ${getEvidenceFromCodes(association.evidences)}
12
+ `).join('');
13
+ const getDescriptions = (descriptions) => `<hr/><h5>Description</h5>${descriptions
14
+ .map((description) => `<p>${description.value}</p>`)
15
+ .join('')}
16
+ `;
17
+ const getPopulationFrequencies = (popFrequencies) => `<hr/><h5>Population frequencies</h5>${popFrequencies
18
+ .map((freq) => `<p>${freq.frequency} - ${freq.populationName} (${freq.source})</p>`)
19
+ .join('')}`;
20
+ const getEnsemblCovidLinks = (variant) => {
21
+ const shouldGenerateLink = variant.locations.some((location) => location.source === 'EnsemblViruses');
22
+ if (shouldGenerateLink) {
23
+ const xref = variant.xrefs.find((xref) => xref.name === 'ENA');
24
+ return xref.id
25
+ ? `<h5>Ensembl COVID-19</h5>
26
+ <p>
27
+ <a href="https://covid-19.ensembl.org/Sars_cov_2/Variation/Explore?v=${xref.id}" target="_blank" rel="noopener noreferrer">${xref.id}</a>
28
+ </p>`
29
+ : '';
30
+ }
31
+ return '';
32
+ };
33
+ const getPredictions = (predictions) => {
34
+ const groupedPredictions = groupBy(predictions, 'predAlgorithmNameType');
35
+ const counts = Object.keys(groupedPredictions).map((key) => {
36
+ const valueGroups = groupBy(groupedPredictions[key], 'predictionValType');
37
+ return {
38
+ algorithm: key,
39
+ values: Object.keys(valueGroups).map((valKey) => ({
40
+ name: valKey,
41
+ count: valueGroups[valKey].length,
42
+ })),
43
+ };
44
+ });
45
+ return counts
46
+ .map((countItem) => `<h6>${countItem.algorithm}</h6><ul class="no-bullet">${countItem.values
47
+ .map((countValue) => `<li>${countValue.name}</li>`)
48
+ .join('')}</ul>`)
49
+ .join('');
50
+ };
51
+ const formatTooltip = (variant) => {
52
+ var _a;
53
+ return `
54
+ <h5>Variant</h5><p>${variant.wildType} > ${variant.alternativeSequence || ''}</p>
55
+ ${variant.populationFrequencies
56
+ ? getPopulationFrequencies(variant.populationFrequencies)
57
+ : ''}
58
+ ${variant.consequenceType
59
+ ? `<h5>Consequence</h5><p>${variant.consequenceType}</p>`
60
+ : ``}
61
+ ${variant.somaticStatus
62
+ ? `<h5>Somatic</h5><p>${variant.somaticStatus === 0 ? 'No' : 'Yes'}</p>`
63
+ : ``}
64
+ ${((_a = variant.genomicLocation) === null || _a === void 0 ? void 0 : _a.length)
65
+ ? `<h5>Location</h5><p>${variant.genomicLocation.join(', ')}</p>`
66
+ : ``}
67
+ ${variant.ftId
68
+ ? `<h5>Feature ID</h5><p>${variant.ftId}</p>`
69
+ : ``}
70
+ ${variant.descriptions
71
+ ? getDescriptions(variant.descriptions)
72
+ : ''}
73
+ ${variant.association
74
+ ? getDiseaseAssociations(variant.association)
75
+ : ''}
76
+ ${variant.predictions ? getPredictions(variant.predictions) : ''}
77
+ ${getEnsemblCovidLinks(variant)}
78
+
79
+ `;
80
+ };
81
+ export default formatTooltip;
82
+ //# sourceMappingURL=variationTooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variationTooltip.js","sourceRoot":"","sources":["../../../src/tooltips/variationTooltip.ts"],"names":[],"mappings":"AAOA,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAErE,MAAM,sBAAsB,GAAG,CAAC,YAA2B,EAAU,EAAE,CACrE,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CACR,GAAG,CACH,CAAC,WAAW,EAAE,EAAE,CAAC;+CACwB,WAAW,CAAC,IAAI;gBAE/C,WAAW,CAAC,WAAW;IACrB,CAAC,CAAC,KAAK,WAAW,CAAC,WAAW,MAAM;IACpC,CAAC,CAAC,EACN;gBAEE,WAAW,CAAC,YAAY;IACtB,CAAC,CAAC,4BAA4B,WAAW,CACrC,WAAW,CAAC,YAAY,CACzB,EAAE;IACL,CAAC,CAAC,EACN;gBACE,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC;WAChD,EAEN,IAAI,CAAC,EAAE,CAAC,CAAC;AAEd,MAAM,eAAe,GAAG,CAAC,YAA2B,EAAU,EAAE,CAC9D,4BAA4B,YAAY;KACrC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,MAAM,WAAW,CAAC,KAAK,MAAM,CAAC;KACnD,IAAI,CAAC,EAAE,CAAC;GACV,CAAC;AAEJ,MAAM,wBAAwB,GAAG,CAC/B,cAAqC,EAC7B,EAAE,CACV,uCAAuC,cAAc;KAClD,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,MAAM,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,MAAM,OAAO,CACvE;KACA,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;AAEhB,MAAM,oBAAoB,GAAG,CAAC,OAAgB,EAAU,EAAE;IACxD,MAAM,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAC/C,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,KAAK,gBAAgB,CACnD,CAAC;IACF,IAAI,kBAAkB,EAAE;QACtB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,EAAE;YACZ,CAAC,CAAC;;iFAEyE,IAAI,CAAC,EAAE,+CAA+C,IAAI,CAAC,EAAE;aACjI;YACP,CAAC,CAAC,EAAE,CAAC;KACR;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,WAAyB,EAAU,EAAE;IAC3D,MAAM,kBAAkB,GAAG,OAAO,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACzD,MAAM,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC1E,OAAO;YACL,SAAS,EAAE,GAAG;YACd,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAChD,IAAI,EAAE,MAAM;gBACZ,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM;aAClC,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,MAAM;SACV,GAAG,CACF,CAAC,SAAS,EAAE,EAAE,CACZ,OAAO,SAAS,CAAC,SAAS,8BAA8B,SAAS,CAAC,MAAM;SACrE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,UAAU,CAAC,IAAI,OAAO,CAAC;SAClD,IAAI,CAAC,EAAE,CAAC,OAAO,CACrB;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,OAAgB,EAAU,EAAE;;IACjD,OAAA;qCACmC,OAAO,CAAC,QAAQ,MACjD,OAAO,CAAC,mBAAmB,IAAI,EACjC;kBAEgB,OAAO,CAAC,qBAAqB;QAC3B,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACzD,CAAC,CAAC,EACN;kBAEE,OAAO,CAAC,eAAe;QACrB,CAAC,CAAC,0BAA0B,OAAO,CAAC,eAAe,MAAM;QACzD,CAAC,CAAC,EACN;kBAEE,OAAO,CAAC,aAAa;QACnB,CAAC,CAAC,sBACE,OAAO,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KACvC,MAAM;QACR,CAAC,CAAC,EACN;kBAEE,CAAA,MAAA,OAAO,CAAC,eAAe,0CAAE,MAAM;QAC7B,CAAC,CAAC,uBAAuB,OAAO,CAAC,eAAe,CAAC,IAAI,CACjD,IAAI,CACL,MAAM;QACT,CAAC,CAAC,EACN;kBAEE,OAAO,CAAC,IAAI;QACV,CAAC,CAAC,yBAAyB,OAAO,CAAC,IAAI,MAAM;QAC7C,CAAC,CAAC,EACN;kBAEE,OAAO,CAAC,YAAY;QAClB,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC;QACvC,CAAC,CAAC,EACN;kBAEE,OAAO,CAAC,WAAW;QACjB,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC;QAC7C,CAAC,CAAC,EACN;kBAEE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAC9D;kBACE,oBAAoB,CAAC,OAAO,CAAC;;SAEtC,CAAA;CAAA,CAAC;AAEV,eAAe,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const renameProperties: (features: any) => any;
2
+ export declare const loadComponent: (name: string, elementConstructor: CustomElementConstructor) => void;
3
+ export declare const fetchAll: (urls: string[], getUrl?: any) => Promise<any>;
@@ -0,0 +1,28 @@
1
+ export const renameProperties = (features) => features.map((ft) => ({
2
+ ...ft,
3
+ start: ft.begin || undefined,
4
+ }));
5
+ export const loadComponent = (name, elementConstructor) => {
6
+ if (!customElements.get(name)) {
7
+ customElements.define(name, elementConstructor);
8
+ }
9
+ };
10
+ // Returns an object of the form url => payload json
11
+ // getUrl optional function modifies url string
12
+ export const fetchAll = async (urls, getUrl = null) => Object.fromEntries(await Promise.all(urls.map(async (url) => {
13
+ try {
14
+ const response = await fetch(getUrl ? getUrl(url) : url);
15
+ if (!response.ok) {
16
+ // TODO handle this better based on error code
17
+ // Fail silently for now
18
+ console.warn(`HTTP error status: ${response.status} at ${url}`);
19
+ return [url, null];
20
+ }
21
+ return [url, await response.json()];
22
+ }
23
+ catch (error) {
24
+ console.warn(`Failed to fetch or parse JSON from ${url}:`, error);
25
+ return [url, null]; // or handle error data as needed
26
+ }
27
+ })));
28
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAC3C,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACpB,GAAG,EAAE;IACL,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,SAAS;CAC7B,CAAC,CAAC,CAAC;AAEN,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAY,EACZ,kBAA4C,EAC5C,EAAE;IACF,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC7B,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;KACjD;AACH,CAAC,CAAC;AAEF,oDAAoD;AACpD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAc,EAAE,MAAM,GAAG,IAAI,EAAE,EAAE,CAC9D,MAAM,CAAC,WAAW,CAChB,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACrB,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,8CAA8C;YAC9C,wBAAwB;YACxB,OAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACpB;QACD,OAAO,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;KACrC;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,iCAAiC;KACtD;AACH,CAAC,CAAC,CACH,CACF,CAAC"}