monaco-editor-core 0.55.1 → 0.56.0-dev-20251122

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 (430) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +29 -8
  18. package/esm/vs/base/browser/dom.js +31 -34
  19. package/esm/vs/base/browser/dom.js.map +1 -1
  20. package/esm/vs/base/browser/dompurify/dompurify.js +0 -1
  21. package/esm/vs/base/browser/keyboardEvent.js +3 -3
  22. package/esm/vs/base/browser/keyboardEvent.js.map +1 -1
  23. package/esm/vs/base/browser/markdownRenderer.js +5 -2
  24. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  25. package/esm/vs/base/browser/pixelRatio.js +5 -5
  26. package/esm/vs/base/browser/pixelRatio.js.map +1 -1
  27. package/esm/vs/base/browser/trustedTypes.js +1 -1
  28. package/esm/vs/base/browser/trustedTypes.js.map +1 -1
  29. package/esm/vs/base/browser/ui/actionbar/actionbar.js +3 -0
  30. package/esm/vs/base/browser/ui/actionbar/actionbar.js.map +1 -1
  31. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  32. package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js +7 -0
  33. package/esm/vs/base/browser/ui/dropdown/dropdownActionViewItem.js.map +1 -1
  34. package/esm/vs/base/browser/ui/hover/hoverWidget.css +0 -13
  35. package/esm/vs/base/browser/ui/inputbox/inputBox.js +7 -0
  36. package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
  37. package/esm/vs/base/browser/ui/keybindingLabel/keybindingLabel.css +4 -2
  38. package/esm/vs/base/browser/ui/list/listView.js +7 -2
  39. package/esm/vs/base/browser/ui/list/listView.js.map +1 -1
  40. package/esm/vs/base/browser/ui/list/rowCache.js +1 -4
  41. package/esm/vs/base/browser/ui/list/rowCache.js.map +1 -1
  42. package/esm/vs/base/browser/ui/menu/menu.js +14 -12
  43. package/esm/vs/base/browser/ui/menu/menu.js.map +1 -1
  44. package/esm/vs/base/browser/ui/selectBox/selectBox.js +4 -0
  45. package/esm/vs/base/browser/ui/selectBox/selectBox.js.map +1 -1
  46. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.css +12 -32
  47. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js +8 -18
  48. package/esm/vs/base/browser/ui/selectBox/selectBoxCustom.js.map +1 -1
  49. package/esm/vs/base/browser/ui/toolbar/toolbar.js +41 -14
  50. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  51. package/esm/vs/base/browser/ui/tree/abstractTree.js +11 -0
  52. package/esm/vs/base/browser/ui/tree/abstractTree.js.map +1 -1
  53. package/esm/vs/base/browser/ui/tree/asyncDataTree.js +1 -0
  54. package/esm/vs/base/browser/ui/tree/asyncDataTree.js.map +1 -1
  55. package/esm/vs/base/browser/ui/tree/compressedObjectTreeModel.js.map +1 -1
  56. package/esm/vs/base/browser/ui/tree/dataTree.js.map +1 -1
  57. package/esm/vs/base/browser/ui/tree/indexTreeModel.js.map +1 -1
  58. package/esm/vs/base/browser/ui/tree/objectTree.js.map +1 -1
  59. package/esm/vs/base/browser/ui/tree/objectTreeModel.js.map +1 -1
  60. package/esm/vs/base/browser/ui/tree/tree.js.map +1 -1
  61. package/esm/vs/base/common/arrays.js +10 -0
  62. package/esm/vs/base/common/arrays.js.map +1 -1
  63. package/esm/vs/base/common/async.js +34 -0
  64. package/esm/vs/base/common/async.js.map +1 -1
  65. package/esm/vs/base/common/buffer.js +1 -1
  66. package/esm/vs/base/common/buffer.js.map +1 -1
  67. package/esm/vs/base/common/cancellation.js.map +1 -1
  68. package/esm/vs/base/common/codiconsLibrary.js +3 -0
  69. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  70. package/esm/vs/base/common/collections.js.map +1 -1
  71. package/esm/vs/base/common/equals.js.map +1 -1
  72. package/esm/vs/base/common/event.js +32 -15
  73. package/esm/vs/base/common/event.js.map +1 -1
  74. package/esm/vs/base/common/filters.js +22 -3
  75. package/esm/vs/base/common/filters.js.map +1 -1
  76. package/esm/vs/base/common/hotReload.js +2 -2
  77. package/esm/vs/base/common/hotReload.js.map +1 -1
  78. package/esm/vs/base/common/iterator.js +1 -1
  79. package/esm/vs/base/common/iterator.js.map +1 -1
  80. package/esm/vs/base/common/keyCodes.js +7 -6
  81. package/esm/vs/base/common/keyCodes.js.map +1 -1
  82. package/esm/vs/base/common/linkedList.js.map +1 -1
  83. package/esm/vs/base/common/map.js +8 -5
  84. package/esm/vs/base/common/map.js.map +1 -1
  85. package/esm/vs/base/common/marked/marked.js +0 -1
  86. package/esm/vs/base/common/network.js +26 -1
  87. package/esm/vs/base/common/network.js.map +1 -1
  88. package/esm/vs/base/common/normalization.js +19 -6
  89. package/esm/vs/base/common/normalization.js.map +1 -1
  90. package/esm/vs/base/common/observableInternal/debugLocation.js +1 -2
  91. package/esm/vs/base/common/observableInternal/debugLocation.js.map +1 -1
  92. package/esm/vs/base/common/observableInternal/debugName.js +0 -1
  93. package/esm/vs/base/common/observableInternal/debugName.js.map +1 -1
  94. package/esm/vs/base/common/observableInternal/index.js +4 -4
  95. package/esm/vs/base/common/observableInternal/index.js.map +1 -1
  96. package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js +38 -10
  97. package/esm/vs/base/common/observableInternal/logging/debugGetDependencyGraph.js.map +1 -1
  98. package/esm/vs/base/common/observableInternal/observables/baseObservable.js +3 -3
  99. package/esm/vs/base/common/observableInternal/observables/baseObservable.js.map +1 -1
  100. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +1 -4
  101. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
  102. package/esm/vs/base/common/observableInternal/utils/utils.js +46 -5
  103. package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
  104. package/esm/vs/base/common/path.js +1 -0
  105. package/esm/vs/base/common/path.js.map +1 -1
  106. package/esm/vs/base/common/strings.js +27 -19
  107. package/esm/vs/base/common/strings.js.map +1 -1
  108. package/esm/vs/base/common/worker/webWorker.js +10 -7
  109. package/esm/vs/base/common/worker/webWorker.js.map +1 -1
  110. package/esm/vs/editor/browser/config/elementSizeObserver.js +5 -5
  111. package/esm/vs/editor/browser/config/elementSizeObserver.js.map +1 -1
  112. package/esm/vs/editor/browser/config/fontMeasurements.js.map +1 -1
  113. package/esm/vs/editor/browser/config/migrateOptions.js +6 -0
  114. package/esm/vs/editor/browser/config/migrateOptions.js.map +1 -1
  115. package/esm/vs/editor/browser/config/tabFocus.js +4 -2
  116. package/esm/vs/editor/browser/config/tabFocus.js.map +1 -1
  117. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +8 -0
  118. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  119. package/esm/vs/editor/browser/coreCommands.js +1 -2
  120. package/esm/vs/editor/browser/coreCommands.js.map +1 -1
  121. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  122. package/esm/vs/editor/browser/observableCodeEditor.js +32 -1
  123. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  124. package/esm/vs/editor/browser/services/contribution.js +9 -0
  125. package/esm/vs/editor/browser/services/contribution.js.map +1 -0
  126. package/esm/vs/editor/browser/services/editorWorkerService.js +27 -14
  127. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  128. package/esm/vs/editor/browser/services/openerService.js +5 -1
  129. package/esm/vs/editor/browser/services/openerService.js.map +1 -1
  130. package/esm/vs/editor/browser/view/domLineBreaksComputer.js +1 -1
  131. package/esm/vs/editor/browser/view/domLineBreaksComputer.js.map +1 -1
  132. package/esm/vs/editor/browser/view/renderingContext.js +1 -1
  133. package/esm/vs/editor/browser/view/renderingContext.js.map +1 -1
  134. package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js +10 -3
  135. package/esm/vs/editor/browser/viewParts/currentLineHighlight/currentLineHighlight.js.map +1 -1
  136. package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js +3 -4
  137. package/esm/vs/editor/browser/viewParts/glyphMargin/glyphMargin.js.map +1 -1
  138. package/esm/vs/editor/browser/viewParts/minimap/minimap.js +1 -1
  139. package/esm/vs/editor/browser/viewParts/minimap/minimap.js.map +1 -1
  140. package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js +1 -1
  141. package/esm/vs/editor/browser/viewParts/overlayWidgets/overlayWidgets.js.map +1 -1
  142. package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js +4 -2
  143. package/esm/vs/editor/browser/viewParts/overviewRuler/overviewRuler.js.map +1 -1
  144. package/esm/vs/editor/browser/viewParts/rulers/rulers.js +1 -3
  145. package/esm/vs/editor/browser/viewParts/rulers/rulers.js.map +1 -1
  146. package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js +1 -1
  147. package/esm/vs/editor/browser/viewParts/scrollDecoration/scrollDecoration.js.map +1 -1
  148. package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js +2 -1
  149. package/esm/vs/editor/browser/viewParts/viewLines/domReadingContext.js.map +1 -1
  150. package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js +6 -18
  151. package/esm/vs/editor/browser/viewParts/viewLines/viewLines.js.map +1 -1
  152. package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js +0 -7
  153. package/esm/vs/editor/browser/viewParts/whitespace/whitespace.js.map +1 -1
  154. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +7 -2
  155. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  156. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +1 -0
  157. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js.map +1 -1
  158. package/esm/vs/editor/common/commands/replaceCommand.js +2 -2
  159. package/esm/vs/editor/common/commands/replaceCommand.js.map +1 -1
  160. package/esm/vs/editor/common/config/editorOptions.js +374 -360
  161. package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
  162. package/esm/vs/editor/common/core/2d/rect.js +7 -0
  163. package/esm/vs/editor/common/core/2d/rect.js.map +1 -1
  164. package/esm/vs/editor/common/core/2d/size.js +20 -0
  165. package/esm/vs/editor/common/core/2d/size.js.map +1 -0
  166. package/esm/vs/editor/common/core/editorColorRegistry.js +69 -68
  167. package/esm/vs/editor/common/core/editorColorRegistry.js.map +1 -1
  168. package/esm/vs/editor/common/core/ranges/offsetRange.js +9 -0
  169. package/esm/vs/editor/common/core/ranges/offsetRange.js.map +1 -1
  170. package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
  171. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  172. package/esm/vs/editor/common/editorContextKeys.js +47 -47
  173. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  174. package/esm/vs/editor/common/languages.js +56 -56
  175. package/esm/vs/editor/common/languages.js.map +1 -1
  176. package/esm/vs/editor/common/model/editStack.js +1 -1
  177. package/esm/vs/editor/common/services/languagesAssociations.js +6 -8
  178. package/esm/vs/editor/common/services/languagesAssociations.js.map +1 -1
  179. package/esm/vs/editor/common/standaloneStrings.js +11 -10
  180. package/esm/vs/editor/common/standaloneStrings.js.map +1 -1
  181. package/esm/vs/editor/common/textModelEditSource.js +1 -1
  182. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  183. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  184. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  185. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  186. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  187. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  188. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  189. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  190. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  191. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  192. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  193. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  194. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  195. package/esm/vs/editor/contrib/codelens/browser/codelens.js.map +1 -1
  196. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  197. package/esm/vs/editor/contrib/codelens/browser/codelensController.js.map +1 -1
  198. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  199. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  200. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
  201. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  202. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  203. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  204. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  205. package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js +14 -0
  206. package/esm/vs/editor/contrib/diffEditorBreadcrumbs/browser/contribution.js.map +1 -1
  207. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  208. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  209. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  210. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  211. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  212. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  213. package/esm/vs/editor/contrib/find/browser/findController.js +17 -17
  214. package/esm/vs/editor/contrib/find/browser/findController.js.map +1 -1
  215. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  216. package/esm/vs/editor/contrib/find/browser/findWidgetSearchHistory.js.map +1 -1
  217. package/esm/vs/editor/contrib/find/browser/replaceWidgetHistory.js.map +1 -1
  218. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
  219. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  220. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  221. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  222. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  223. package/esm/vs/editor/contrib/format/browser/format.js +21 -6
  224. package/esm/vs/editor/contrib/format/browser/format.js.map +1 -1
  225. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  226. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  227. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  228. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  229. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  230. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  231. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  232. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  233. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  234. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  235. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  236. package/esm/vs/editor/contrib/hover/browser/contentHoverController.js +5 -10
  237. package/esm/vs/editor/contrib/hover/browser/contentHoverController.js.map +1 -1
  238. package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js +11 -6
  239. package/esm/vs/editor/contrib/hover/browser/glyphHoverController.js.map +1 -1
  240. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  241. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  242. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  243. package/esm/vs/editor/contrib/hover/browser/hoverUtils.js +24 -0
  244. package/esm/vs/editor/contrib/hover/browser/hoverUtils.js.map +1 -1
  245. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  246. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  247. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  248. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  249. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  250. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +20 -20
  251. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
  252. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +18 -16
  253. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  254. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  255. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  256. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +42 -37
  257. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  258. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +3 -3
  259. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +1 -1
  260. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +8 -8
  261. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  262. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +54 -43
  263. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  264. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +12 -12
  265. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  266. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +74 -48
  267. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  268. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +8 -36
  269. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
  270. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js +10 -11
  271. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsNewUsers.js.map +1 -1
  272. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +105 -119
  273. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  274. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
  275. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +8 -36
  276. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
  277. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js +95 -0
  278. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/debugVisualization.js.map +1 -0
  279. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +17 -9
  280. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
  281. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +428 -0
  282. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -0
  283. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +290 -0
  284. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -0
  285. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  286. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js +103 -0
  287. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/flexBoxLayout.js.map +1 -0
  288. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js +32 -0
  289. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/towersLayout.js.map +1 -0
  290. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +44 -11
  291. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  292. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +10 -0
  293. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +181 -0
  294. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -0
  295. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  296. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  297. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -31
  298. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  299. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  300. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  301. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  302. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  303. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  304. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  305. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  306. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  307. package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js +2 -2
  308. package/esm/vs/editor/contrib/quickAccess/browser/editorNavigationQuickAccess.js.map +1 -1
  309. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +18 -13
  310. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
  311. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  312. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  313. package/esm/vs/editor/contrib/rename/browser/rename.js +12 -12
  314. package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
  315. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  316. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  317. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  318. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  319. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  320. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -1
  321. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
  322. package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
  323. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  324. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  325. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  326. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  327. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  328. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  329. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  330. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  331. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  332. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +29 -29
  333. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js.map +1 -1
  334. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  335. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  336. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +4 -4
  337. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js.map +1 -1
  338. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
  339. package/esm/vs/editor/editor.all.js +1 -0
  340. package/esm/vs/editor/editor.all.js.map +1 -1
  341. package/esm/vs/editor/editor.api.d.ts +9 -5
  342. package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js +22 -2
  343. package/esm/vs/editor/standalone/browser/quickAccess/standaloneGotoLineQuickAccess.js.map +1 -1
  344. package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js +39 -0
  345. package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js.map +1 -0
  346. package/esm/vs/editor/standalone/browser/standaloneEditor.js +2 -1
  347. package/esm/vs/editor/standalone/browser/standaloneEditor.js.map +1 -1
  348. package/esm/vs/editor/standalone/browser/standaloneServices.js +3 -21
  349. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  350. package/esm/vs/editor/standalone/browser/standaloneWebWorker.js +4 -4
  351. package/esm/vs/editor/standalone/browser/standaloneWebWorker.js.map +1 -1
  352. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  353. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  354. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  355. package/esm/vs/platform/actionWidget/browser/actionWidget.css +7 -0
  356. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  357. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +7 -9
  358. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js.map +1 -1
  359. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  360. package/esm/vs/platform/actions/common/actions.js +2 -0
  361. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  362. package/esm/vs/platform/actions/common/menuService.js +2 -2
  363. package/esm/vs/platform/configuration/common/configuration.js +5 -4
  364. package/esm/vs/platform/configuration/common/configuration.js.map +1 -1
  365. package/esm/vs/platform/configuration/common/configurationModels.js +21 -10
  366. package/esm/vs/platform/configuration/common/configurationModels.js.map +1 -1
  367. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  368. package/esm/vs/platform/configuration/common/configurationRegistry.js.map +1 -1
  369. package/esm/vs/platform/configuration/common/configurations.js.map +1 -1
  370. package/esm/vs/platform/contextkey/browser/contextKeyService.js +3 -3
  371. package/esm/vs/platform/contextkey/browser/contextKeyService.js.map +1 -1
  372. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  373. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  374. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  375. package/esm/vs/platform/contextview/browser/contextViewService.js.map +1 -1
  376. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  377. package/esm/vs/platform/hover/browser/hoverService.js +17 -8
  378. package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
  379. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  380. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  381. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  382. package/esm/vs/platform/list/browser/listService.js +27 -27
  383. package/esm/vs/platform/list/browser/listService.js.map +1 -1
  384. package/esm/vs/platform/markers/common/markerService.js +2 -2
  385. package/esm/vs/platform/markers/common/markers.js +6 -6
  386. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +51 -39
  387. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js.map +1 -1
  388. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  389. package/esm/vs/platform/quickinput/browser/media/quickInput.css +9 -3
  390. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  391. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  392. package/esm/vs/platform/quickinput/browser/quickInputController.js +35 -14
  393. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  394. package/esm/vs/platform/quickinput/browser/quickInputList.js +4 -1
  395. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  396. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  397. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  398. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +78 -39
  399. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
  400. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +21 -8
  401. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
  402. package/esm/vs/platform/telemetry/common/gdprTypings.js.map +1 -1
  403. package/esm/vs/platform/telemetry/common/telemetry.js.map +1 -1
  404. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  405. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  406. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  407. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  408. package/esm/vs/platform/theme/common/colors/editorColors.js.map +1 -1
  409. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  410. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  411. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  412. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  413. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  414. package/esm/vs/platform/theme/common/colors/miscColors.js.map +1 -1
  415. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  416. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  417. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  418. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  419. package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js +12 -0
  420. package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js.map +1 -0
  421. package/esm/vs/platform/webWorker/browser/webWorkerService.js +7 -0
  422. package/esm/vs/platform/webWorker/browser/webWorkerService.js.map +1 -0
  423. package/esm/vs/{base/browser/webWorkerFactory.js → platform/webWorker/browser/webWorkerServiceImpl.js} +47 -66
  424. package/esm/vs/platform/webWorker/browser/webWorkerServiceImpl.js.map +1 -0
  425. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  426. package/monaco.d.ts +9 -5
  427. package/package.json +2 -2
  428. package/esm/vs/base/browser/webWorkerFactory.js.map +0 -1
  429. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js +0 -82
  430. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineCompletionsView.js.map +0 -1
@@ -17,18 +17,18 @@ export class ConfigurationModel {
17
17
  static createEmptyModel(logService) {
18
18
  return new ConfigurationModel({}, [], [], undefined, logService);
19
19
  }
20
- constructor(_contents, _keys, _overrides, raw, logService) {
20
+ constructor(_contents, _keys, _overrides, _raw, logService) {
21
21
  this._contents = _contents;
22
22
  this._keys = _keys;
23
23
  this._overrides = _overrides;
24
- this.raw = raw;
24
+ this._raw = _raw;
25
25
  this.logService = logService;
26
26
  this.overrideConfigurations = new Map();
27
27
  }
28
28
  get rawConfiguration() {
29
29
  if (!this._rawConfiguration) {
30
- if (this.raw) {
31
- const rawConfigurationModels = (Array.isArray(this.raw) ? this.raw : [this.raw]).map(raw => {
30
+ if (this._raw) {
31
+ const rawConfigurationModels = (Array.isArray(this._raw) ? this._raw : [this._raw]).map(raw => {
32
32
  if (raw instanceof ConfigurationModel) {
33
33
  return raw;
34
34
  }
@@ -54,6 +54,15 @@ export class ConfigurationModel {
54
54
  get keys() {
55
55
  return this._keys;
56
56
  }
57
+ get raw() {
58
+ if (!this._raw) {
59
+ return undefined;
60
+ }
61
+ if (Array.isArray(this._raw) && this._raw.every(raw => raw instanceof ConfigurationModel)) {
62
+ return undefined;
63
+ }
64
+ return this._raw;
65
+ }
57
66
  isEmpty() {
58
67
  return this._keys.length === 0 && Object.keys(this._contents).length === 0 && this._overrides.length === 0;
59
68
  }
@@ -102,9 +111,9 @@ export class ConfigurationModel {
102
111
  const contents = objects.deepClone(this.contents);
103
112
  const overrides = objects.deepClone(this.overrides);
104
113
  const keys = [...this.keys];
105
- const raws = this.raw ? Array.isArray(this.raw) ? [...this.raw] : [this.raw] : [this];
114
+ const raws = this._raw ? Array.isArray(this._raw) ? [...this._raw] : [this._raw] : [this];
106
115
  for (const other of others) {
107
- raws.push(...(other.raw ? Array.isArray(other.raw) ? other.raw : [other.raw] : [other]));
116
+ raws.push(...(other._raw ? Array.isArray(other._raw) ? other._raw : [other._raw] : [other]));
108
117
  if (other.isEmpty()) {
109
118
  continue;
110
119
  }
@@ -217,11 +226,12 @@ export class ConfigurationModel {
217
226
  this.keys.push(key);
218
227
  }
219
228
  if (OVERRIDE_PROPERTY_REGEX.test(key)) {
229
+ const overrideContents = this.contents[key];
220
230
  const identifiers = overrideIdentifiersFromKey(key);
221
231
  const override = {
222
232
  identifiers,
223
- keys: Object.keys(this.contents[key]),
224
- contents: toValuesTree(this.contents[key], message => this.logService.error(message)),
233
+ keys: Object.keys(overrideContents),
234
+ contents: toValuesTree(overrideContents, message => this.logService.error(message)),
225
235
  };
226
236
  const index = this.overrides.findIndex(o => arrays.equals(o.identifiers, identifiers));
227
237
  if (index !== -1) {
@@ -315,8 +325,9 @@ export class ConfigurationModelParser {
315
325
  for (const key of Object.keys(raw)) {
316
326
  if (OVERRIDE_PROPERTY_REGEX.test(key)) {
317
327
  const overrideRaw = {};
318
- for (const keyInOverrideRaw in raw[key]) {
319
- overrideRaw[keyInOverrideRaw] = raw[key][keyInOverrideRaw];
328
+ const rawKey = raw[key];
329
+ for (const keyInOverrideRaw in rawKey) {
330
+ overrideRaw[keyInOverrideRaw] = rawKey[keyInOverrideRaw];
320
331
  }
321
332
  overrides.push({
322
333
  identifiers: overrideIdentifiersFromKey(key),
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/configuration/common/configurationModels.ts","vs/platform/configuration/common/configurationModels.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG,OAAO,KAAK,MAAM,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,OAAO,MAAM,iCAAiC,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,+BAA+B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAiB,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAuB,qBAAqB,EAAoM,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrU,OAAO,EAAsB,UAAU,EAAwD,0BAA0B,EAAE,uBAAuB,EAA0C,MAAM,4BAA4B,CAAC;AAE/N,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAG7D,SAAS,MAAM,CAAI,IAAO;IACzB,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAID,MAAM,OAAO,kBAAkB;IAE9B,MAAM,CAAC,gBAAgB,CAAC,UAAuB;QAC9C,OAAO,IAAI,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAClE,CAAC;IAID,YACkB,SAAc,EACd,KAAe,EACf,UAAwB,EAChC,GAAoG,EAC5F,UAAuB;QAJvB,cAAS,GAAT,SAAS,CAAK;QACd,UAAK,GAAL,KAAK,CAAU;QACf,eAAU,GAAV,UAAU,CAAc;QAChC,QAAG,GAAH,GAAG,CAAiG;QAC5F,eAAU,GAAV,UAAU,CAAa;QAPxB,2BAAsB,GAAG,IAAI,GAAG,EAA8B,CAAC;IAShF,CAAC;IAGD,IAAI,gBAAgB;QACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,sBAAsB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAC1F,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;wBACvC,OAAO,GAAG,CAAC;oBACZ,CAAC;oBACD,MAAM,MAAM,GAAG,IAAI,wBAAwB,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;oBACjE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACrB,OAAO,MAAM,CAAC,kBAAkB,CAAC;gBAClC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,iBAAiB,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;YACpK,CAAC;iBAAM,CAAC;gBACP,yBAAyB;gBACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC/B,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAC/B,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,IAAI,CAAC,SAAS,CAAC;IACvB,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,OAAO;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IAC5G,CAAC;IAED,QAAQ,CAAI,OAA2B;QACtC,OAAO,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAM,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IACrF,CAAC;IAED,OAAO,CAAI,OAA2B,EAAE,kBAAkC;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACN,IAAI,KAAK;gBACR,OAAO,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAI,OAAO,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,QAAQ;gBACX,OAAO,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAI,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACxH,CAAC;YACD,IAAI,MAAM;gBACT,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAI,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAI,OAAO,CAAC,CAAC,CAAC;YAC1J,CAAC;YACD,IAAI,SAAS;gBACZ,MAAM,SAAS,GAA4D,EAAE,CAAC;gBAC9E,KAAK,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;oBAC/E,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAI,OAAO,CAAC,CAAC;oBAC1G,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBACzB,SAAS,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;oBACxC,CAAC;gBACF,CAAC;gBACD,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACzD,CAAC;SACD,CAAC;IACH,CAAC;IAED,gBAAgB,CAAI,OAA2B,EAAE,kBAA0B;QAC1E,MAAM,gBAAgB,GAAG,IAAI,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,CAAC;QAClF,OAAO,gBAAgB;YACtB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAM,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB;YACpF,CAAC,CAAC,SAAS,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,UAAkB;QAC1B,IAAI,0BAA0B,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7E,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACjC,0BAA0B,GAAG,IAAI,CAAC,gCAAgC,CAAC,UAAU,CAAC,CAAC;YAC/E,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,EAAE,0BAA0B,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,0BAA0B,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,GAAG,MAA4B;QACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEtF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzF,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACrB,SAAS;YACV,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE7C,KAAK,MAAM,aAAa,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC7C,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;gBAClG,IAAI,QAAQ,EAAE,CAAC;oBACd,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC9D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;oBAC1C,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAChD,CAAC;qBAAM,CAAC;oBACP,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;gBAClD,CAAC;YACF,CAAC;YACD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;oBAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpK,CAAC;IAEO,gCAAgC,CAAC,UAAkB;QAC1D,MAAM,gBAAgB,GAAG,IAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,CAAC;QAE1E,IAAI,CAAC,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,EAAE,CAAC;YACxG,+CAA+C;YAC/C,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,QAAQ,GAAQ,EAAE,CAAC;QACzB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAEtG,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAErD,0FAA0F;YAC1F,IAAI,sBAAsB,EAAE,CAAC;gBAC5B,yGAAyG;gBACzG,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,OAAO,sBAAsB,KAAK,QAAQ,EAAE,CAAC;oBACtF,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBACnD,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACP,cAAc,GAAG,sBAAsB,CAAC;gBACzC,CAAC;YACF,CAAC;YAED,QAAQ,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAChG,CAAC;IAEO,aAAa,CAAC,MAAW,EAAE,MAAW;QAC7C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;gBACnB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAChE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC7C,SAAS;gBACV,CAAC;YACF,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;IACF,CAAC;IAEO,+BAA+B,CAAC,UAAkB;QACzD,IAAI,yBAAyB,GAAkC,IAAI,CAAC;QACpE,IAAI,QAAQ,GAAkC,IAAI,CAAC;QACnD,MAAM,aAAa,GAAG,CAAC,eAAoB,EAAE,EAAE;YAC9C,IAAI,eAAe,EAAE,CAAC;gBACrB,IAAI,QAAQ,EAAE,CAAC;oBACd,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACP,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;QACF,CAAC,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvC,IAAI,QAAQ,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;gBACjF,yBAAyB,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC/C,CAAC;iBAAM,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC;QACF,CAAC;QACD,uEAAuE;QACvE,aAAa,CAAC,yBAAyB,CAAC,CAAC;QACzC,OAAO,QAAQ,CAAC;IACjB,CAAC;IAED,MAAM;QACL,OAAO;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;SACf,CAAC;IACH,CAAC;IAEM,QAAQ,CAAC,GAAW,EAAE,KAAU;QACtC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAEM,WAAW,CAAC,GAAW;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YAClB,OAAO;QACR,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3B,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACxC,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxH,CAAC;IACF,CAAC;IAEO,WAAW,CAAC,GAAW,EAAE,KAAU,EAAE,GAAY;QACxD,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,GAAG,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,IAAI,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,WAAW,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG;gBAChB,WAAW;gBACX,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACrC,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aACrF,CAAC;YACF,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;YACvF,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACF,CAAC;IACF,CAAC;CACD;AAUD,MAAM,OAAO,wBAAwB;IAMpC,YACoB,KAAa,EACb,UAAuB;QADvB,UAAK,GAAL,KAAK,CAAQ;QACb,eAAU,GAAV,UAAU,CAAa;QANnC,SAAI,GAAQ,IAAI,CAAC;QACjB,wBAAmB,GAA8B,IAAI,CAAC;QACtD,8BAAyB,GAAa,EAAE,CAAC;IAK7C,CAAC;IAEL,IAAI,kBAAkB;QACrB,OAAO,IAAI,CAAC,mBAAmB,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzF,CAAC;IAEM,QAAQ,CAAC,GAAQ,EAAE,OAAmC;QAC5D,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACvG,IAAI,CAAC,mBAAmB,GAAG,IAAI,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,yBAAyB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACnK,IAAI,CAAC,yBAAyB,GAAG,UAAU,IAAI,EAAE,CAAC;IACnD,CAAC;IAES,UAAU,CAAC,GAAQ,EAAE,OAAmC;QACjE,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAyB,UAAU,CAAC,aAAa,CAAC,CAAC;QAC/E,MAAM,uBAAuB,GAAG,QAAQ,CAAC,0BAA0B,EAAE,CAAC;QACtE,MAAM,+BAA+B,GAAG,QAAQ,CAAC,kCAAkC,EAAE,CAAC;QACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3G,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACnB,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5H,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QACjI,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IAC9H,CAAC;IAEO,MAAM,CAAC,UAAe,EAAE,uBAAkF,EAAE,+BAA0F,EAAE,0BAAmC,EAAE,OAAmC;QACvR,IAAI,qBAAqB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,cAAc,IAAI,CAAC,OAAO,EAAE,gBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC7G,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,qBAAqB,EAAE,CAAC;QACnE,CAAC;QACD,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,0BAA0B,EAAE,CAAC;gBACrE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,uBAAuB,EAAE,+BAA+B,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACtH,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;gBACtB,qBAAqB,GAAG,qBAAqB,IAAI,MAAM,CAAC,qBAAqB,CAAC;gBAC9E,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACP,MAAM,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;gBACpD,IAAI,cAAc,EAAE,UAAU,EAAE,CAAC;oBAChC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC;gBACD,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,cAAc,EAAE,+BAA+B,EAAE,OAAO,CAAC,EAAE,CAAC;oBACvF,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC5B,CAAC;qBAAM,CAAC;oBACP,qBAAqB,GAAG,IAAI,CAAC;gBAC9B,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACnD,CAAC;IAEO,aAAa,CAAC,GAAW,EAAE,cAAwD,EAAE,+BAA0F,EAAE,OAAkC;QAC1N,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,OAAO,CAAC,cAAc,IAAI,cAAc,EAAE,UAAU,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,OAAO,CAAC,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,cAAc,IAAI,+BAA+B,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,kCAA0B,CAAC,CAAC,CAAC,SAAS,CAAC;QAClH,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEO,WAAW,CAAC,GAAQ,EAAE,gBAA2C;QACxE,MAAM,SAAS,GAAiB,EAAE,CAAC;QACnC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,WAAW,GAAQ,EAAE,CAAC;gBAC5B,KAAK,MAAM,gBAAgB,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzC,WAAW,CAAC,gBAAgB,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;gBAC5D,CAAC;gBACD,SAAS,CAAC,IAAI,CAAC;oBACd,WAAW,EAAE,0BAA0B,CAAC,GAAG,CAAC;oBAC5C,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;oBAC9B,QAAQ,EAAE,YAAY,CAAC,WAAW,EAAE,gBAAgB,CAAC;iBACrD,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;CAED;AAED,MAAM,yBAAyB;IAE9B,YACkB,GAAW,EACX,SAAkC,EAClC,MAAqB,EAC7B,mBAAyC,EACjC,oBAAwC,EACxC,mBAAmD,EACnD,wBAAwD,EACxD,iBAAqC,EACrC,sBAA0C,EAC1C,uBAA2C,EAC3C,sBAAsD,EACtD,wBAAwD,EACxD,wBAA4C;QAZ5C,QAAG,GAAH,GAAG,CAAQ;QACX,cAAS,GAAT,SAAS,CAAyB;QAClC,WAAM,GAAN,MAAM,CAAe;QAC7B,wBAAmB,GAAnB,mBAAmB,CAAsB;QACjC,yBAAoB,GAApB,oBAAoB,CAAoB;QACxC,wBAAmB,GAAnB,mBAAmB,CAAgC;QACnD,6BAAwB,GAAxB,wBAAwB,CAAgC;QACxD,sBAAiB,GAAjB,iBAAiB,CAAoB;QACrC,2BAAsB,GAAtB,sBAAsB,CAAoB;QAC1C,4BAAuB,GAAvB,uBAAuB,CAAoB;QAC3C,2BAAsB,GAAtB,sBAAsB,CAAgC;QACtD,6BAAwB,GAAxB,wBAAwB,CAAgC;QACxD,6BAAwB,GAAxB,wBAAwB,CAAoB;IAE9D,CAAC;IAEO,cAAc,CAAC,YAAiD;QACvE,OAAO,YAAY,EAAE,KAAK,KAAK,SAAS,IAAI,YAAY,EAAE,QAAQ,KAAK,SAAS,IAAI,YAAY,EAAE,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IACtJ,CAAC;IAGD,IAAY,gBAAgB;QAC3B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACzG,CAAC;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;CAED;AAED,MAAM,OAAO,aAAa;IAKzB,YACS,qBAAyC,EACzC,oBAAwC,EACxC,yBAA6C,EAC7C,uBAA2C,EAC3C,wBAA4C,EAC5C,uBAA2C,EAC3C,qBAAsD,EACtD,oBAAwC,EACxC,8BAA+D,EACtD,UAAuB;QAThC,0BAAqB,GAArB,qBAAqB,CAAoB;QACzC,yBAAoB,GAApB,oBAAoB,CAAoB;QACxC,8BAAyB,GAAzB,yBAAyB,CAAoB;QAC7C,4BAAuB,GAAvB,uBAAuB,CAAoB;QAC3C,6BAAwB,GAAxB,wBAAwB,CAAoB;QAC5C,4BAAuB,GAAvB,uBAAuB,CAAoB;QAC3C,0BAAqB,GAArB,qBAAqB,CAAiC;QACtD,yBAAoB,GAApB,oBAAoB,CAAoB;QACxC,mCAA8B,GAA9B,8BAA8B,CAAiC;QACtD,eAAU,GAAV,UAAU,CAAa;QAbjC,wCAAmC,GAA8B,IAAI,CAAC;QACtE,uCAAkC,GAAG,IAAI,WAAW,EAAsB,CAAC;QA+E3E,uBAAkB,GAA8B,IAAI,CAAC;IAjE7D,CAAC;IAED,QAAQ,CAAC,OAA2B,EAAE,SAAkC,EAAE,SAAgC;QACzG,MAAM,6BAA6B,GAAG,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5G,OAAO,6BAA6B,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED,WAAW,CAAC,GAAW,EAAE,KAAU,EAAE,YAA2C,EAAE;QACjF,IAAI,mBAAmD,CAAC;QACxD,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACxB,mBAAmB,GAAG,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClF,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC1B,mBAAmB,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3E,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;YAClF,CAAC;QACF,CAAC;aAAM,CAAC;YACP,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACjD,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACP,mBAAmB,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC;QACjD,CAAC;IACF,CAAC;IAED,OAAO,CAAI,GAAW,EAAE,SAAkC,EAAE,SAAgC;QAC3F,MAAM,6BAA6B,GAAG,IAAI,CAAC,iCAAiC,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACxG,MAAM,wBAAwB,GAAG,IAAI,CAAC,sCAAsC,CAAC,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC5G,MAAM,wBAAwB,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAC3K,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9C,KAAK,MAAM,QAAQ,IAAI,6BAA6B,CAAC,SAAS,EAAE,CAAC;YAChE,KAAK,MAAM,kBAAkB,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;gBACvD,IAAI,6BAA6B,CAAC,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC3F,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBAC7C,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,IAAI,yBAAyB,CACnC,GAAG,EACH,SAAS,EACT,6BAA6B,CAAC,QAAQ,CAAI,GAAG,CAAC,EAC9C,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC,SAAS,EAC/D,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAC3E,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,EACnF,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,uBAAuB,EAC5B,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,EACpD,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,EAC/D,wBAAwB,CACxB,CAAC;IAEH,CAAC;IAED,IAAI,wBAAwB;QAC3B,OAAO,IAAI,CAAC,yBAAyB,CAAC;IACvC,CAAC;IAGD,IAAI,iBAAiB;QACpB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC7C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,uBAAuB,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACP,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;gBACjF,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9H,CAAC;QACF,CAAC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;IAChC,CAAC;IAED,IAAI,sBAAsB;QACzB,OAAO,IAAI,CAAC,uBAAuB,CAAC;IACrC,CAAC;IAED,IAAI,uBAAuB;QAC1B,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACtC,CAAC;IAEO,iCAAiC,CAAC,OAA2B,EAAE,SAAkC,EAAE,SAAgC;QAC1I,IAAI,kBAAkB,GAAG,IAAI,CAAC,4CAA4C,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACjG,IAAI,SAAS,CAAC,kBAAkB,EAAE,CAAC;YAClC,kBAAkB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,SAAS,EAAE,CAAC;YACvG,mBAAmB;YACnB,kBAAkB,GAAG,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAChD,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;gBAClD,kBAAkB,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3E,CAAC;QACF,CAAC;QACD,OAAO,kBAAkB,CAAC;IAC3B,CAAC;IAEO,4CAA4C,CAAC,EAAE,QAAQ,EAA2B,EAAE,SAAgC;QAC3H,IAAI,wBAAwB,GAAG,IAAI,CAAC,qCAAqC,EAAE,CAAC;QAE5E,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE,CAAC;gBACV,wBAAwB,GAAG,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,wBAAwB,CAAC;YAC1G,CAAC;YACD,MAAM,8BAA8B,GAAG,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACzF,IAAI,8BAA8B,EAAE,CAAC;gBACpC,wBAAwB,GAAG,wBAAwB,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC3F,CAAC;QACF,CAAC;QAED,OAAO,wBAAwB,CAAC;IACjC,CAAC;IAEO,qCAAqC;QAC5C,IAAI,CAAC,IAAI,CAAC,mCAAmC,EAAE,CAAC;YAC/C,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC7L,CAAC;QACD,OAAO,IAAI,CAAC,mCAAmC,CAAC;IACjD,CAAC;IAEO,kCAAkC,CAAC,MAAW;QACrD,IAAI,+BAA+B,GAAG,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1F,IAAI,CAAC,+BAA+B,EAAE,CAAC;YACtC,MAAM,iCAAiC,GAAG,IAAI,CAAC,qCAAqC,EAAE,CAAC;YACvF,MAAM,mBAAmB,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnE,IAAI,mBAAmB,EAAE,CAAC;gBACzB,+BAA+B,GAAG,iCAAiC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBAC/F,IAAI,CAAC,kCAAkC,CAAC,GAAG,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;YACtF,CAAC;iBAAM,CAAC;gBACP,+BAA+B,GAAG,iCAAiC,CAAC;YACrE,CAAC;QACF,CAAC;QACD,OAAO,+BAA+B,CAAC;IACxC,CAAC;IAEO,sCAAsC,CAAC,QAAgC,EAAE,SAAgC;QAChH,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,IAAI,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC;QACF,CAAC;QACD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM;QACL,OAAO;YACN,QAAQ,EAAE;gBACT,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,QAAQ;gBAC7C,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS;gBAC/C,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI;aACrC;YACD,MAAM,EAAE;gBACP,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,QAAQ;gBAC5C,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,SAAS;gBAC9C,IAAI,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI;aACpC;YACD,WAAW,EAAE;gBACZ,QAAQ,EAAE,IAAI,CAAC,wBAAwB,CAAC,QAAQ;gBAChD,SAAS,EAAE,IAAI,CAAC,wBAAwB,CAAC,SAAS;gBAClD,IAAI,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI;gBACxC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG;aACrG;YACD,SAAS,EAAE;gBACV,QAAQ,EAAE,IAAI,CAAC,sBAAsB,CAAC,QAAQ;gBAC9C,SAAS,EAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS;gBAChD,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI;gBACtC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG;aACjG;YACD,UAAU,EAAE;gBACX,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ;gBAC/C,SAAS,EAAE,IAAI,CAAC,uBAAuB,CAAC,SAAS;gBACjD,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI;gBACvC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG;aACnG;YACD,SAAS,EAAE;gBACV,QAAQ,EAAE,IAAI,CAAC,uBAAuB,CAAC,QAAQ;gBAC/C,SAAS,EAAE,IAAI,CAAC,uBAAuB,CAAC,SAAS;gBACjD,IAAI,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI;aACvC;YACD,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAyC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;gBACjH,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;gBAC9E,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACrD,OAAO,MAAM,CAAC;YACf,CAAC,EAAE,EAAE,CAAC;SACN,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,IAAwB,EAAE,UAAuB;QAC7D,MAAM,oBAAoB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACrF,MAAM,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAClF,MAAM,wBAAwB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC5F,MAAM,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACxF,MAAM,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1F,MAAM,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACxF,MAAM,OAAO,GAAoC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACtF,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;YACrF,OAAO,MAAM,CAAC;QACf,CAAC,EAAE,IAAI,WAAW,EAAsB,CAAC,CAAC;QAC1C,OAAO,IAAI,aAAa,CACvB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,OAAO,EACP,kBAAkB,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAC/C,IAAI,WAAW,EAAsB,EACrC,UAAU,CACV,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,uBAAuB,CAAC,KAA0B,EAAE,UAAuB;QACzF,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACnG,CAAC;CAED;AAED,MAAM,OAAO,wBAAwB;IAUpC,YACU,MAA4B,EACpB,QAAyE,EACzE,oBAAmC,EACnC,gBAAuC,EACvC,UAAuB;QAJ/B,WAAM,GAAN,MAAM,CAAsB;QACpB,aAAQ,GAAR,QAAQ,CAAiE;QACzE,yBAAoB,GAApB,oBAAoB,CAAe;QACnC,qBAAgB,GAAhB,gBAAgB,CAAuB;QACvC,eAAU,GAAV,UAAU,CAAa;QAbxB,YAAO,GAAG,IAAI,CAAC;QACf,iBAAY,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1C,iBAAY,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAGzC,iBAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QA0BlC,2BAAsB,GAA8B,SAAS,CAAC;QAhBrE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACF,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,IAAI,CAAC,iBAAiB,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9C,CAAC;IACF,CAAC;IAGD,IAAI,qBAAqB;QACxB,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnD,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC;IACpC,CAAC;IAED,oBAAoB,CAAC,OAAe,EAAE,SAAmC;QACxE,wFAAwF;QACxF,qEAAqE;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACb,0BAA0B;YAC1B,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,IAAI,GAAG,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACpD,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY,IAAI,IAAI,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9D,oCAAoC;YACpC,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1I,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7F,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC;CACD","file":"configurationModels.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as arrays from '../../../base/common/arrays.js';\nimport { IStringDictionary } from '../../../base/common/collections.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport * as objects from '../../../base/common/objects.js';\nimport * as types from '../../../base/common/types.js';\nimport { URI, UriComponents } from '../../../base/common/uri.js';\nimport { addToValueTree, ConfigurationTarget, getConfigurationValue, IConfigurationChange, IConfigurationChangeEvent, IConfigurationData, IConfigurationModel, IConfigurationOverrides, IConfigurationUpdateOverrides, IConfigurationValue, IInspectValue, IOverrides, removeFromValueTree, toValuesTree } from './configuration.js';\nimport { ConfigurationScope, Extensions, IConfigurationPropertySchema, IConfigurationRegistry, overrideIdentifiersFromKey, OVERRIDE_PROPERTY_REGEX, IRegisteredConfigurationPropertySchema } from './configurationRegistry.js';\nimport { ILogService } from '../../log/common/log.js';\nimport { Registry } from '../../registry/common/platform.js';\nimport { Workspace } from '../../workspace/common/workspace.js';\n\nfunction freeze<T>(data: T): T {\n\treturn Object.isFrozen(data) ? data : objects.deepFreeze(data);\n}\n\ntype InspectValue<V> = IInspectValue<V> & { merged?: V };\n\nexport class ConfigurationModel implements IConfigurationModel {\n\n\tstatic createEmptyModel(logService: ILogService): ConfigurationModel {\n\t\treturn new ConfigurationModel({}, [], [], undefined, logService);\n\t}\n\n\tprivate readonly overrideConfigurations = new Map<string, ConfigurationModel>();\n\n\tconstructor(\n\t\tprivate readonly _contents: any,\n\t\tprivate readonly _keys: string[],\n\t\tprivate readonly _overrides: IOverrides[],\n\t\treadonly raw: IStringDictionary<any> | ReadonlyArray<IStringDictionary<any> | ConfigurationModel> | undefined,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t}\n\n\tprivate _rawConfiguration: ConfigurationModel | undefined;\n\tget rawConfiguration(): ConfigurationModel {\n\t\tif (!this._rawConfiguration) {\n\t\t\tif (this.raw) {\n\t\t\t\tconst rawConfigurationModels = (Array.isArray(this.raw) ? this.raw : [this.raw]).map(raw => {\n\t\t\t\t\tif (raw instanceof ConfigurationModel) {\n\t\t\t\t\t\treturn raw;\n\t\t\t\t\t}\n\t\t\t\t\tconst parser = new ConfigurationModelParser('', this.logService);\n\t\t\t\t\tparser.parseRaw(raw);\n\t\t\t\t\treturn parser.configurationModel;\n\t\t\t\t});\n\t\t\t\tthis._rawConfiguration = rawConfigurationModels.reduce((previous, current) => current === previous ? current : previous.merge(current), rawConfigurationModels[0]);\n\t\t\t} else {\n\t\t\t\t// raw is same as current\n\t\t\t\tthis._rawConfiguration = this;\n\t\t\t}\n\t\t}\n\t\treturn this._rawConfiguration;\n\t}\n\n\tget contents(): any {\n\t\treturn this._contents;\n\t}\n\n\tget overrides(): IOverrides[] {\n\t\treturn this._overrides;\n\t}\n\n\tget keys(): string[] {\n\t\treturn this._keys;\n\t}\n\n\tisEmpty(): boolean {\n\t\treturn this._keys.length === 0 && Object.keys(this._contents).length === 0 && this._overrides.length === 0;\n\t}\n\n\tgetValue<V>(section: string | undefined): V {\n\t\treturn section ? getConfigurationValue<any>(this.contents, section) : this.contents;\n\t}\n\n\tinspect<V>(section: string | undefined, overrideIdentifier?: string | null): InspectValue<V> {\n\t\tconst that = this;\n\t\treturn {\n\t\t\tget value() {\n\t\t\t\treturn freeze(that.rawConfiguration.getValue<V>(section));\n\t\t\t},\n\t\t\tget override() {\n\t\t\t\treturn overrideIdentifier ? freeze(that.rawConfiguration.getOverrideValue<V>(section, overrideIdentifier)) : undefined;\n\t\t\t},\n\t\t\tget merged() {\n\t\t\t\treturn freeze(overrideIdentifier ? that.rawConfiguration.override(overrideIdentifier).getValue<V>(section) : that.rawConfiguration.getValue<V>(section));\n\t\t\t},\n\t\t\tget overrides() {\n\t\t\t\tconst overrides: { readonly identifiers: string[]; readonly value: V }[] = [];\n\t\t\t\tfor (const { contents, identifiers, keys } of that.rawConfiguration.overrides) {\n\t\t\t\t\tconst value = new ConfigurationModel(contents, keys, [], undefined, that.logService).getValue<V>(section);\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\toverrides.push({ identifiers, value });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn overrides.length ? freeze(overrides) : undefined;\n\t\t\t}\n\t\t};\n\t}\n\n\tgetOverrideValue<V>(section: string | undefined, overrideIdentifier: string): V | undefined {\n\t\tconst overrideContents = this.getContentsForOverrideIdentifer(overrideIdentifier);\n\t\treturn overrideContents\n\t\t\t? section ? getConfigurationValue<any>(overrideContents, section) : overrideContents\n\t\t\t: undefined;\n\t}\n\n\toverride(identifier: string): ConfigurationModel {\n\t\tlet overrideConfigurationModel = this.overrideConfigurations.get(identifier);\n\t\tif (!overrideConfigurationModel) {\n\t\t\toverrideConfigurationModel = this.createOverrideConfigurationModel(identifier);\n\t\t\tthis.overrideConfigurations.set(identifier, overrideConfigurationModel);\n\t\t}\n\t\treturn overrideConfigurationModel;\n\t}\n\n\tmerge(...others: ConfigurationModel[]): ConfigurationModel {\n\t\tconst contents = objects.deepClone(this.contents);\n\t\tconst overrides = objects.deepClone(this.overrides);\n\t\tconst keys = [...this.keys];\n\t\tconst raws = this.raw ? Array.isArray(this.raw) ? [...this.raw] : [this.raw] : [this];\n\n\t\tfor (const other of others) {\n\t\t\traws.push(...(other.raw ? Array.isArray(other.raw) ? other.raw : [other.raw] : [other]));\n\t\t\tif (other.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.mergeContents(contents, other.contents);\n\n\t\t\tfor (const otherOverride of other.overrides) {\n\t\t\t\tconst [override] = overrides.filter(o => arrays.equals(o.identifiers, otherOverride.identifiers));\n\t\t\t\tif (override) {\n\t\t\t\t\tthis.mergeContents(override.contents, otherOverride.contents);\n\t\t\t\t\toverride.keys.push(...otherOverride.keys);\n\t\t\t\t\toverride.keys = arrays.distinct(override.keys);\n\t\t\t\t} else {\n\t\t\t\t\toverrides.push(objects.deepClone(otherOverride));\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const key of other.keys) {\n\t\t\t\tif (keys.indexOf(key) === -1) {\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new ConfigurationModel(contents, keys, overrides, !raws.length || raws.every(raw => raw instanceof ConfigurationModel) ? undefined : raws, this.logService);\n\t}\n\n\tprivate createOverrideConfigurationModel(identifier: string): ConfigurationModel {\n\t\tconst overrideContents = this.getContentsForOverrideIdentifer(identifier);\n\n\t\tif (!overrideContents || typeof overrideContents !== 'object' || !Object.keys(overrideContents).length) {\n\t\t\t// If there are no valid overrides, return self\n\t\t\treturn this;\n\t\t}\n\n\t\tconst contents: any = {};\n\t\tfor (const key of arrays.distinct([...Object.keys(this.contents), ...Object.keys(overrideContents)])) {\n\n\t\t\tlet contentsForKey = this.contents[key];\n\t\t\tconst overrideContentsForKey = overrideContents[key];\n\n\t\t\t// If there are override contents for the key, clone and merge otherwise use base contents\n\t\t\tif (overrideContentsForKey) {\n\t\t\t\t// Clone and merge only if base contents and override contents are of type object otherwise just override\n\t\t\t\tif (typeof contentsForKey === 'object' && typeof overrideContentsForKey === 'object') {\n\t\t\t\t\tcontentsForKey = objects.deepClone(contentsForKey);\n\t\t\t\t\tthis.mergeContents(contentsForKey, overrideContentsForKey);\n\t\t\t\t} else {\n\t\t\t\t\tcontentsForKey = overrideContentsForKey;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontents[key] = contentsForKey;\n\t\t}\n\n\t\treturn new ConfigurationModel(contents, this.keys, this.overrides, undefined, this.logService);\n\t}\n\n\tprivate mergeContents(source: any, target: any): void {\n\t\tfor (const key of Object.keys(target)) {\n\t\t\tif (key in source) {\n\t\t\t\tif (types.isObject(source[key]) && types.isObject(target[key])) {\n\t\t\t\t\tthis.mergeContents(source[key], target[key]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource[key] = objects.deepClone(target[key]);\n\t\t}\n\t}\n\n\tprivate getContentsForOverrideIdentifer(identifier: string): any {\n\t\tlet contentsForIdentifierOnly: IStringDictionary<any> | null = null;\n\t\tlet contents: IStringDictionary<any> | null = null;\n\t\tconst mergeContents = (contentsToMerge: any) => {\n\t\t\tif (contentsToMerge) {\n\t\t\t\tif (contents) {\n\t\t\t\t\tthis.mergeContents(contents, contentsToMerge);\n\t\t\t\t} else {\n\t\t\t\t\tcontents = objects.deepClone(contentsToMerge);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tfor (const override of this.overrides) {\n\t\t\tif (override.identifiers.length === 1 && override.identifiers[0] === identifier) {\n\t\t\t\tcontentsForIdentifierOnly = override.contents;\n\t\t\t} else if (override.identifiers.includes(identifier)) {\n\t\t\t\tmergeContents(override.contents);\n\t\t\t}\n\t\t}\n\t\t// Merge contents of the identifier only at the end to take precedence.\n\t\tmergeContents(contentsForIdentifierOnly);\n\t\treturn contents;\n\t}\n\n\ttoJSON(): IConfigurationModel {\n\t\treturn {\n\t\t\tcontents: this.contents,\n\t\t\toverrides: this.overrides,\n\t\t\tkeys: this.keys\n\t\t};\n\t}\n\n\tpublic setValue(key: string, value: any): void {\n\t\tthis.updateValue(key, value, false);\n\t}\n\n\tpublic removeValue(key: string): void {\n\t\tconst index = this.keys.indexOf(key);\n\t\tif (index === -1) {\n\t\t\treturn;\n\t\t}\n\t\tthis.keys.splice(index, 1);\n\t\tremoveFromValueTree(this.contents, key);\n\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\tthis.overrides.splice(this.overrides.findIndex(o => arrays.equals(o.identifiers, overrideIdentifiersFromKey(key))), 1);\n\t\t}\n\t}\n\n\tprivate updateValue(key: string, value: any, add: boolean): void {\n\t\taddToValueTree(this.contents, key, value, e => this.logService.error(e));\n\t\tadd = add || this.keys.indexOf(key) === -1;\n\t\tif (add) {\n\t\t\tthis.keys.push(key);\n\t\t}\n\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\tconst identifiers = overrideIdentifiersFromKey(key);\n\t\t\tconst override = {\n\t\t\t\tidentifiers,\n\t\t\t\tkeys: Object.keys(this.contents[key]),\n\t\t\t\tcontents: toValuesTree(this.contents[key], message => this.logService.error(message)),\n\t\t\t};\n\t\t\tconst index = this.overrides.findIndex(o => arrays.equals(o.identifiers, identifiers));\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.overrides[index] = override;\n\t\t\t} else {\n\t\t\t\tthis.overrides.push(override);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport interface ConfigurationParseOptions {\n\tskipUnregistered?: boolean;\n\tscopes?: ConfigurationScope[];\n\tskipRestricted?: boolean;\n\tinclude?: string[];\n\texclude?: string[];\n}\n\nexport class ConfigurationModelParser {\n\n\tprivate _raw: any = null;\n\tprivate _configurationModel: ConfigurationModel | null = null;\n\tprivate _restrictedConfigurations: string[] = [];\n\n\tconstructor(\n\t\tprotected readonly _name: string,\n\t\tprotected readonly logService: ILogService\n\t) { }\n\n\tget configurationModel(): ConfigurationModel {\n\t\treturn this._configurationModel || ConfigurationModel.createEmptyModel(this.logService);\n\t}\n\n\tpublic parseRaw(raw: any, options?: ConfigurationParseOptions): void {\n\t\tthis._raw = raw;\n\t\tconst { contents, keys, overrides, restricted, hasExcludedProperties } = this.doParseRaw(raw, options);\n\t\tthis._configurationModel = new ConfigurationModel(contents, keys, overrides, hasExcludedProperties ? [raw] : undefined /* raw has not changed */, this.logService);\n\t\tthis._restrictedConfigurations = restricted || [];\n\t}\n\n\tprotected doParseRaw(raw: any, options?: ConfigurationParseOptions): IConfigurationModel & { restricted?: string[]; hasExcludedProperties?: boolean } {\n\t\tconst registry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);\n\t\tconst configurationProperties = registry.getConfigurationProperties();\n\t\tconst excludedConfigurationProperties = registry.getExcludedConfigurationProperties();\n\t\tconst filtered = this.filter(raw, configurationProperties, excludedConfigurationProperties, true, options);\n\t\traw = filtered.raw;\n\t\tconst contents = toValuesTree(raw, message => this.logService.error(`Conflict in settings file ${this._name}: ${message}`));\n\t\tconst keys = Object.keys(raw);\n\t\tconst overrides = this.toOverrides(raw, message => this.logService.error(`Conflict in settings file ${this._name}: ${message}`));\n\t\treturn { contents, keys, overrides, restricted: filtered.restricted, hasExcludedProperties: filtered.hasExcludedProperties };\n\t}\n\n\tprivate filter(properties: any, configurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, excludedConfigurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, filterOverriddenProperties: boolean, options?: ConfigurationParseOptions): { raw: {}; restricted: string[]; hasExcludedProperties: boolean } {\n\t\tlet hasExcludedProperties = false;\n\t\tif (!options?.scopes && !options?.skipRestricted && !options?.skipUnregistered && !options?.exclude?.length) {\n\t\t\treturn { raw: properties, restricted: [], hasExcludedProperties };\n\t\t}\n\t\tconst raw: any = {};\n\t\tconst restricted: string[] = [];\n\t\tfor (const key in properties) {\n\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key) && filterOverriddenProperties) {\n\t\t\t\tconst result = this.filter(properties[key], configurationProperties, excludedConfigurationProperties, false, options);\n\t\t\t\traw[key] = result.raw;\n\t\t\t\thasExcludedProperties = hasExcludedProperties || result.hasExcludedProperties;\n\t\t\t\trestricted.push(...result.restricted);\n\t\t\t} else {\n\t\t\t\tconst propertySchema = configurationProperties[key];\n\t\t\t\tif (propertySchema?.restricted) {\n\t\t\t\t\trestricted.push(key);\n\t\t\t\t}\n\t\t\t\tif (this.shouldInclude(key, propertySchema, excludedConfigurationProperties, options)) {\n\t\t\t\t\traw[key] = properties[key];\n\t\t\t\t} else {\n\t\t\t\t\thasExcludedProperties = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn { raw, restricted, hasExcludedProperties };\n\t}\n\n\tprivate shouldInclude(key: string, propertySchema: IConfigurationPropertySchema | undefined, excludedConfigurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, options: ConfigurationParseOptions): boolean {\n\t\tif (options.exclude?.includes(key)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (options.include?.includes(key)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (options.skipRestricted && propertySchema?.restricted) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (options.skipUnregistered && !propertySchema) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst schema = propertySchema ?? excludedConfigurationProperties[key];\n\t\tconst scope = schema ? typeof schema.scope !== 'undefined' ? schema.scope : ConfigurationScope.WINDOW : undefined;\n\t\tif (scope === undefined || options.scopes === undefined) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn options.scopes.includes(scope);\n\t}\n\n\tprivate toOverrides(raw: any, conflictReporter: (message: string) => void): IOverrides[] {\n\t\tconst overrides: IOverrides[] = [];\n\t\tfor (const key of Object.keys(raw)) {\n\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\t\tconst overrideRaw: any = {};\n\t\t\t\tfor (const keyInOverrideRaw in raw[key]) {\n\t\t\t\t\toverrideRaw[keyInOverrideRaw] = raw[key][keyInOverrideRaw];\n\t\t\t\t}\n\t\t\t\toverrides.push({\n\t\t\t\t\tidentifiers: overrideIdentifiersFromKey(key),\n\t\t\t\t\tkeys: Object.keys(overrideRaw),\n\t\t\t\t\tcontents: toValuesTree(overrideRaw, conflictReporter)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn overrides;\n\t}\n\n}\n\nclass ConfigurationInspectValue<V> implements IConfigurationValue<V> {\n\n\tconstructor(\n\t\tprivate readonly key: string,\n\t\tprivate readonly overrides: IConfigurationOverrides,\n\t\tprivate readonly _value: V | undefined,\n\t\treadonly overrideIdentifiers: string[] | undefined,\n\t\tprivate readonly defaultConfiguration: ConfigurationModel,\n\t\tprivate readonly policyConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly applicationConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly userConfiguration: ConfigurationModel,\n\t\tprivate readonly localUserConfiguration: ConfigurationModel,\n\t\tprivate readonly remoteUserConfiguration: ConfigurationModel,\n\t\tprivate readonly workspaceConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly folderConfigurationModel: ConfigurationModel | undefined,\n\t\tprivate readonly memoryConfigurationModel: ConfigurationModel\n\t) {\n\t}\n\n\tprivate toInspectValue(inspectValue: IInspectValue<V> | undefined | null): IInspectValue<V> | undefined {\n\t\treturn inspectValue?.value !== undefined || inspectValue?.override !== undefined || inspectValue?.overrides !== undefined ? inspectValue : undefined;\n\t}\n\n\tprivate _userInspectValue: InspectValue<V> | undefined;\n\tprivate get userInspectValue(): InspectValue<V> {\n\t\tif (!this._userInspectValue) {\n\t\t\tthis._userInspectValue = this.userConfiguration.inspect<V>(this.key, this.overrides.overrideIdentifier);\n\t\t}\n\t\treturn this._userInspectValue;\n\t}\n\n\tget user(): IInspectValue<V> | undefined {\n\t\treturn this.toInspectValue(this.userInspectValue);\n\t}\n\n}\n\nexport class Configuration {\n\n\tprivate _workspaceConsolidatedConfiguration: ConfigurationModel | null = null;\n\tprivate _foldersConsolidatedConfigurations = new ResourceMap<ConfigurationModel>();\n\n\tconstructor(\n\t\tprivate _defaultConfiguration: ConfigurationModel,\n\t\tprivate _policyConfiguration: ConfigurationModel,\n\t\tprivate _applicationConfiguration: ConfigurationModel,\n\t\tprivate _localUserConfiguration: ConfigurationModel,\n\t\tprivate _remoteUserConfiguration: ConfigurationModel,\n\t\tprivate _workspaceConfiguration: ConfigurationModel,\n\t\tprivate _folderConfigurations: ResourceMap<ConfigurationModel>,\n\t\tprivate _memoryConfiguration: ConfigurationModel,\n\t\tprivate _memoryConfigurationByResource: ResourceMap<ConfigurationModel>,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t}\n\n\tgetValue(section: string | undefined, overrides: IConfigurationOverrides, workspace: Workspace | undefined): any {\n\t\tconst consolidateConfigurationModel = this.getConsolidatedConfigurationModel(section, overrides, workspace);\n\t\treturn consolidateConfigurationModel.getValue(section);\n\t}\n\n\tupdateValue(key: string, value: any, overrides: IConfigurationUpdateOverrides = {}): void {\n\t\tlet memoryConfiguration: ConfigurationModel | undefined;\n\t\tif (overrides.resource) {\n\t\t\tmemoryConfiguration = this._memoryConfigurationByResource.get(overrides.resource);\n\t\t\tif (!memoryConfiguration) {\n\t\t\t\tmemoryConfiguration = ConfigurationModel.createEmptyModel(this.logService);\n\t\t\t\tthis._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);\n\t\t\t}\n\t\t} else {\n\t\t\tmemoryConfiguration = this._memoryConfiguration;\n\t\t}\n\n\t\tif (value === undefined) {\n\t\t\tmemoryConfiguration.removeValue(key);\n\t\t} else {\n\t\t\tmemoryConfiguration.setValue(key, value);\n\t\t}\n\n\t\tif (!overrides.resource) {\n\t\t\tthis._workspaceConsolidatedConfiguration = null;\n\t\t}\n\t}\n\n\tinspect<C>(key: string, overrides: IConfigurationOverrides, workspace: Workspace | undefined): IConfigurationValue<C> {\n\t\tconst consolidateConfigurationModel = this.getConsolidatedConfigurationModel(key, overrides, workspace);\n\t\tconst folderConfigurationModel = this.getFolderConfigurationModelForResource(overrides.resource, workspace);\n\t\tconst memoryConfigurationModel = overrides.resource ? this._memoryConfigurationByResource.get(overrides.resource) || this._memoryConfiguration : this._memoryConfiguration;\n\t\tconst overrideIdentifiers = new Set<string>();\n\t\tfor (const override of consolidateConfigurationModel.overrides) {\n\t\t\tfor (const overrideIdentifier of override.identifiers) {\n\t\t\t\tif (consolidateConfigurationModel.getOverrideValue(key, overrideIdentifier) !== undefined) {\n\t\t\t\t\toverrideIdentifiers.add(overrideIdentifier);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new ConfigurationInspectValue<C>(\n\t\t\tkey,\n\t\t\toverrides,\n\t\t\tconsolidateConfigurationModel.getValue<C>(key),\n\t\t\toverrideIdentifiers.size ? [...overrideIdentifiers] : undefined,\n\t\t\tthis._defaultConfiguration,\n\t\t\tthis._policyConfiguration.isEmpty() ? undefined : this._policyConfiguration,\n\t\t\tthis.applicationConfiguration.isEmpty() ? undefined : this.applicationConfiguration,\n\t\t\tthis.userConfiguration,\n\t\t\tthis.localUserConfiguration,\n\t\t\tthis.remoteUserConfiguration,\n\t\t\tworkspace ? this._workspaceConfiguration : undefined,\n\t\t\tfolderConfigurationModel ? folderConfigurationModel : undefined,\n\t\t\tmemoryConfigurationModel\n\t\t);\n\n\t}\n\n\tget applicationConfiguration(): ConfigurationModel {\n\t\treturn this._applicationConfiguration;\n\t}\n\n\tprivate _userConfiguration: ConfigurationModel | null = null;\n\tget userConfiguration(): ConfigurationModel {\n\t\tif (!this._userConfiguration) {\n\t\t\tif (this._remoteUserConfiguration.isEmpty()) {\n\t\t\t\tthis._userConfiguration = this._localUserConfiguration;\n\t\t\t} else {\n\t\t\t\tconst merged = this._localUserConfiguration.merge(this._remoteUserConfiguration);\n\t\t\t\tthis._userConfiguration = new ConfigurationModel(merged.contents, merged.keys, merged.overrides, undefined, this.logService);\n\t\t\t}\n\t\t}\n\t\treturn this._userConfiguration;\n\t}\n\n\tget localUserConfiguration(): ConfigurationModel {\n\t\treturn this._localUserConfiguration;\n\t}\n\n\tget remoteUserConfiguration(): ConfigurationModel {\n\t\treturn this._remoteUserConfiguration;\n\t}\n\n\tprivate getConsolidatedConfigurationModel(section: string | undefined, overrides: IConfigurationOverrides, workspace: Workspace | undefined): ConfigurationModel {\n\t\tlet configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, workspace);\n\t\tif (overrides.overrideIdentifier) {\n\t\t\tconfigurationModel = configurationModel.override(overrides.overrideIdentifier);\n\t\t}\n\t\tif (!this._policyConfiguration.isEmpty() && this._policyConfiguration.getValue(section) !== undefined) {\n\t\t\t// clone by merging\n\t\t\tconfigurationModel = configurationModel.merge();\n\t\t\tfor (const key of this._policyConfiguration.keys) {\n\t\t\t\tconfigurationModel.setValue(key, this._policyConfiguration.getValue(key));\n\t\t\t}\n\t\t}\n\t\treturn configurationModel;\n\t}\n\n\tprivate getConsolidatedConfigurationModelForResource({ resource }: IConfigurationOverrides, workspace: Workspace | undefined): ConfigurationModel {\n\t\tlet consolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\n\n\t\tif (workspace && resource) {\n\t\t\tconst root = workspace.getFolder(resource);\n\t\t\tif (root) {\n\t\t\t\tconsolidateConfiguration = this.getFolderConsolidatedConfiguration(root.uri) || consolidateConfiguration;\n\t\t\t}\n\t\t\tconst memoryConfigurationForResource = this._memoryConfigurationByResource.get(resource);\n\t\t\tif (memoryConfigurationForResource) {\n\t\t\t\tconsolidateConfiguration = consolidateConfiguration.merge(memoryConfigurationForResource);\n\t\t\t}\n\t\t}\n\n\t\treturn consolidateConfiguration;\n\t}\n\n\tprivate getWorkspaceConsolidatedConfiguration(): ConfigurationModel {\n\t\tif (!this._workspaceConsolidatedConfiguration) {\n\t\t\tthis._workspaceConsolidatedConfiguration = this._defaultConfiguration.merge(this.applicationConfiguration, this.userConfiguration, this._workspaceConfiguration, this._memoryConfiguration);\n\t\t}\n\t\treturn this._workspaceConsolidatedConfiguration;\n\t}\n\n\tprivate getFolderConsolidatedConfiguration(folder: URI): ConfigurationModel {\n\t\tlet folderConsolidatedConfiguration = this._foldersConsolidatedConfigurations.get(folder);\n\t\tif (!folderConsolidatedConfiguration) {\n\t\t\tconst workspaceConsolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\n\t\t\tconst folderConfiguration = this._folderConfigurations.get(folder);\n\t\t\tif (folderConfiguration) {\n\t\t\t\tfolderConsolidatedConfiguration = workspaceConsolidateConfiguration.merge(folderConfiguration);\n\t\t\t\tthis._foldersConsolidatedConfigurations.set(folder, folderConsolidatedConfiguration);\n\t\t\t} else {\n\t\t\t\tfolderConsolidatedConfiguration = workspaceConsolidateConfiguration;\n\t\t\t}\n\t\t}\n\t\treturn folderConsolidatedConfiguration;\n\t}\n\n\tprivate getFolderConfigurationModelForResource(resource: URI | null | undefined, workspace: Workspace | undefined): ConfigurationModel | undefined {\n\t\tif (workspace && resource) {\n\t\t\tconst root = workspace.getFolder(resource);\n\t\t\tif (root) {\n\t\t\t\treturn this._folderConfigurations.get(root.uri);\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\ttoData(): IConfigurationData {\n\t\treturn {\n\t\t\tdefaults: {\n\t\t\t\tcontents: this._defaultConfiguration.contents,\n\t\t\t\toverrides: this._defaultConfiguration.overrides,\n\t\t\t\tkeys: this._defaultConfiguration.keys,\n\t\t\t},\n\t\t\tpolicy: {\n\t\t\t\tcontents: this._policyConfiguration.contents,\n\t\t\t\toverrides: this._policyConfiguration.overrides,\n\t\t\t\tkeys: this._policyConfiguration.keys\n\t\t\t},\n\t\t\tapplication: {\n\t\t\t\tcontents: this.applicationConfiguration.contents,\n\t\t\t\toverrides: this.applicationConfiguration.overrides,\n\t\t\t\tkeys: this.applicationConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.applicationConfiguration.raw) ? undefined : this.applicationConfiguration.raw\n\t\t\t},\n\t\t\tuserLocal: {\n\t\t\t\tcontents: this.localUserConfiguration.contents,\n\t\t\t\toverrides: this.localUserConfiguration.overrides,\n\t\t\t\tkeys: this.localUserConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.localUserConfiguration.raw) ? undefined : this.localUserConfiguration.raw\n\t\t\t},\n\t\t\tuserRemote: {\n\t\t\t\tcontents: this.remoteUserConfiguration.contents,\n\t\t\t\toverrides: this.remoteUserConfiguration.overrides,\n\t\t\t\tkeys: this.remoteUserConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.remoteUserConfiguration.raw) ? undefined : this.remoteUserConfiguration.raw\n\t\t\t},\n\t\t\tworkspace: {\n\t\t\t\tcontents: this._workspaceConfiguration.contents,\n\t\t\t\toverrides: this._workspaceConfiguration.overrides,\n\t\t\t\tkeys: this._workspaceConfiguration.keys\n\t\t\t},\n\t\t\tfolders: [...this._folderConfigurations.keys()].reduce<[UriComponents, IConfigurationModel][]>((result, folder) => {\n\t\t\t\tconst { contents, overrides, keys } = this._folderConfigurations.get(folder)!;\n\t\t\t\tresult.push([folder, { contents, overrides, keys }]);\n\t\t\t\treturn result;\n\t\t\t}, [])\n\t\t};\n\t}\n\n\tstatic parse(data: IConfigurationData, logService: ILogService): Configuration {\n\t\tconst defaultConfiguration = this.parseConfigurationModel(data.defaults, logService);\n\t\tconst policyConfiguration = this.parseConfigurationModel(data.policy, logService);\n\t\tconst applicationConfiguration = this.parseConfigurationModel(data.application, logService);\n\t\tconst userLocalConfiguration = this.parseConfigurationModel(data.userLocal, logService);\n\t\tconst userRemoteConfiguration = this.parseConfigurationModel(data.userRemote, logService);\n\t\tconst workspaceConfiguration = this.parseConfigurationModel(data.workspace, logService);\n\t\tconst folders: ResourceMap<ConfigurationModel> = data.folders.reduce((result, value) => {\n\t\t\tresult.set(URI.revive(value[0]), this.parseConfigurationModel(value[1], logService));\n\t\t\treturn result;\n\t\t}, new ResourceMap<ConfigurationModel>());\n\t\treturn new Configuration(\n\t\t\tdefaultConfiguration,\n\t\t\tpolicyConfiguration,\n\t\t\tapplicationConfiguration,\n\t\t\tuserLocalConfiguration,\n\t\t\tuserRemoteConfiguration,\n\t\t\tworkspaceConfiguration,\n\t\t\tfolders,\n\t\t\tConfigurationModel.createEmptyModel(logService),\n\t\t\tnew ResourceMap<ConfigurationModel>(),\n\t\t\tlogService\n\t\t);\n\t}\n\n\tprivate static parseConfigurationModel(model: IConfigurationModel, logService: ILogService): ConfigurationModel {\n\t\treturn new ConfigurationModel(model.contents, model.keys, model.overrides, model.raw, logService);\n\t}\n\n}\n\nexport class ConfigurationChangeEvent implements IConfigurationChangeEvent {\n\n\tprivate readonly _marker = '\\n';\n\tprivate readonly _markerCode1 = this._marker.charCodeAt(0);\n\tprivate readonly _markerCode2 = '.'.charCodeAt(0);\n\tprivate readonly _affectsConfigStr: string;\n\n\treadonly affectedKeys = new Set<string>();\n\tsource!: ConfigurationTarget;\n\n\tconstructor(\n\t\treadonly change: IConfigurationChange,\n\t\tprivate readonly previous: { workspace?: Workspace; data: IConfigurationData } | undefined,\n\t\tprivate readonly currentConfiguraiton: Configuration,\n\t\tprivate readonly currentWorkspace: Workspace | undefined,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t\tfor (const key of change.keys) {\n\t\t\tthis.affectedKeys.add(key);\n\t\t}\n\t\tfor (const [, keys] of change.overrides) {\n\t\t\tfor (const key of keys) {\n\t\t\t\tthis.affectedKeys.add(key);\n\t\t\t}\n\t\t}\n\n\t\t// Example: '\\nfoo.bar\\nabc.def\\n'\n\t\tthis._affectsConfigStr = this._marker;\n\t\tfor (const key of this.affectedKeys) {\n\t\t\tthis._affectsConfigStr += key + this._marker;\n\t\t}\n\t}\n\n\tprivate _previousConfiguration: Configuration | undefined = undefined;\n\tget previousConfiguration(): Configuration | undefined {\n\t\tif (!this._previousConfiguration && this.previous) {\n\t\t\tthis._previousConfiguration = Configuration.parse(this.previous.data, this.logService);\n\t\t}\n\t\treturn this._previousConfiguration;\n\t}\n\n\taffectsConfiguration(section: string, overrides?: IConfigurationOverrides): boolean {\n\t\t// we have one large string with all keys that have changed. we pad (marker) the section\n\t\t// and check that either find it padded or before a segment character\n\t\tconst needle = this._marker + section;\n\t\tconst idx = this._affectsConfigStr.indexOf(needle);\n\t\tif (idx < 0) {\n\t\t\t// NOT: (marker + section)\n\t\t\treturn false;\n\t\t}\n\t\tconst pos = idx + needle.length;\n\t\tif (pos >= this._affectsConfigStr.length) {\n\t\t\treturn false;\n\t\t}\n\t\tconst code = this._affectsConfigStr.charCodeAt(pos);\n\t\tif (code !== this._markerCode1 && code !== this._markerCode2) {\n\t\t\t// NOT: section + (marker | segment)\n\t\t\treturn false;\n\t\t}\n\t\tif (overrides) {\n\t\t\tconst value1 = this.previousConfiguration ? this.previousConfiguration.getValue(section, overrides, this.previous?.workspace) : undefined;\n\t\t\tconst value2 = this.currentConfiguraiton.getValue(section, overrides, this.currentWorkspace);\n\t\t\treturn !objects.equals(value1, value2);\n\t\t}\n\t\treturn true;\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as arrays from '../../../base/common/arrays.js';\nimport { IStringDictionary } from '../../../base/common/collections.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport * as objects from '../../../base/common/objects.js';\nimport * as types from '../../../base/common/types.js';\nimport { URI, UriComponents } from '../../../base/common/uri.js';\nimport { addToValueTree, ConfigurationTarget, getConfigurationValue, IConfigurationChange, IConfigurationChangeEvent, IConfigurationData, IConfigurationModel, IConfigurationOverrides, IConfigurationUpdateOverrides, IConfigurationValue, IInspectValue, IOverrides, removeFromValueTree, toValuesTree } from './configuration.js';\nimport { ConfigurationScope, Extensions, IConfigurationPropertySchema, IConfigurationRegistry, overrideIdentifiersFromKey, OVERRIDE_PROPERTY_REGEX, IRegisteredConfigurationPropertySchema } from './configurationRegistry.js';\nimport { ILogService } from '../../log/common/log.js';\nimport { Registry } from '../../registry/common/platform.js';\nimport { Workspace } from '../../workspace/common/workspace.js';\n\nfunction freeze<T>(data: T): T {\n\treturn Object.isFrozen(data) ? data : objects.deepFreeze(data);\n}\n\ntype InspectValue<V> = IInspectValue<V> & { merged?: V };\n\nexport class ConfigurationModel implements IConfigurationModel {\n\n\tstatic createEmptyModel(logService: ILogService): ConfigurationModel {\n\t\treturn new ConfigurationModel({}, [], [], undefined, logService);\n\t}\n\n\tprivate readonly overrideConfigurations = new Map<string, ConfigurationModel>();\n\n\tconstructor(\n\t\tprivate readonly _contents: any,\n\t\tprivate readonly _keys: string[],\n\t\tprivate readonly _overrides: IOverrides[],\n\t\treadonly raw: IStringDictionary<any> | ReadonlyArray<IStringDictionary<any> | ConfigurationModel> | undefined,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t}\n\n\tprivate _rawConfiguration: ConfigurationModel | undefined;\n\tget rawConfiguration(): ConfigurationModel {\n\t\tif (!this._rawConfiguration) {\n\t\t\tif (this.raw) {\n\t\t\t\tconst rawConfigurationModels = (Array.isArray(this.raw) ? this.raw : [this.raw]).map(raw => {\n\t\t\t\t\tif (raw instanceof ConfigurationModel) {\n\t\t\t\t\t\treturn raw;\n\t\t\t\t\t}\n\t\t\t\t\tconst parser = new ConfigurationModelParser('', this.logService);\n\t\t\t\t\tparser.parseRaw(raw);\n\t\t\t\t\treturn parser.configurationModel;\n\t\t\t\t});\n\t\t\t\tthis._rawConfiguration = rawConfigurationModels.reduce((previous, current) => current === previous ? current : previous.merge(current), rawConfigurationModels[0]);\n\t\t\t} else {\n\t\t\t\t// raw is same as current\n\t\t\t\tthis._rawConfiguration = this;\n\t\t\t}\n\t\t}\n\t\treturn this._rawConfiguration;\n\t}\n\n\tget contents(): any {\n\t\treturn this._contents;\n\t}\n\n\tget overrides(): IOverrides[] {\n\t\treturn this._overrides;\n\t}\n\n\tget keys(): string[] {\n\t\treturn this._keys;\n\t}\n\n\tisEmpty(): boolean {\n\t\treturn this._keys.length === 0 && Object.keys(this._contents).length === 0 && this._overrides.length === 0;\n\t}\n\n\tgetValue<V>(section: string | undefined): V {\n\t\treturn section ? getConfigurationValue<any>(this.contents, section) : this.contents;\n\t}\n\n\tinspect<V>(section: string | undefined, overrideIdentifier?: string | null): InspectValue<V> {\n\t\tconst that = this;\n\t\treturn {\n\t\t\tget value() {\n\t\t\t\treturn freeze(that.rawConfiguration.getValue<V>(section));\n\t\t\t},\n\t\t\tget override() {\n\t\t\t\treturn overrideIdentifier ? freeze(that.rawConfiguration.getOverrideValue<V>(section, overrideIdentifier)) : undefined;\n\t\t\t},\n\t\t\tget merged() {\n\t\t\t\treturn freeze(overrideIdentifier ? that.rawConfiguration.override(overrideIdentifier).getValue<V>(section) : that.rawConfiguration.getValue<V>(section));\n\t\t\t},\n\t\t\tget overrides() {\n\t\t\t\tconst overrides: { readonly identifiers: string[]; readonly value: V }[] = [];\n\t\t\t\tfor (const { contents, identifiers, keys } of that.rawConfiguration.overrides) {\n\t\t\t\t\tconst value = new ConfigurationModel(contents, keys, [], undefined, that.logService).getValue<V>(section);\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\toverrides.push({ identifiers, value });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn overrides.length ? freeze(overrides) : undefined;\n\t\t\t}\n\t\t};\n\t}\n\n\tgetOverrideValue<V>(section: string | undefined, overrideIdentifier: string): V | undefined {\n\t\tconst overrideContents = this.getContentsForOverrideIdentifer(overrideIdentifier);\n\t\treturn overrideContents\n\t\t\t? section ? getConfigurationValue<any>(overrideContents, section) : overrideContents\n\t\t\t: undefined;\n\t}\n\n\toverride(identifier: string): ConfigurationModel {\n\t\tlet overrideConfigurationModel = this.overrideConfigurations.get(identifier);\n\t\tif (!overrideConfigurationModel) {\n\t\t\toverrideConfigurationModel = this.createOverrideConfigurationModel(identifier);\n\t\t\tthis.overrideConfigurations.set(identifier, overrideConfigurationModel);\n\t\t}\n\t\treturn overrideConfigurationModel;\n\t}\n\n\tmerge(...others: ConfigurationModel[]): ConfigurationModel {\n\t\tconst contents = objects.deepClone(this.contents);\n\t\tconst overrides = objects.deepClone(this.overrides);\n\t\tconst keys = [...this.keys];\n\t\tconst raws = this.raw ? Array.isArray(this.raw) ? [...this.raw] : [this.raw] : [this];\n\n\t\tfor (const other of others) {\n\t\t\traws.push(...(other.raw ? Array.isArray(other.raw) ? other.raw : [other.raw] : [other]));\n\t\t\tif (other.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.mergeContents(contents, other.contents);\n\n\t\t\tfor (const otherOverride of other.overrides) {\n\t\t\t\tconst [override] = overrides.filter(o => arrays.equals(o.identifiers, otherOverride.identifiers));\n\t\t\t\tif (override) {\n\t\t\t\t\tthis.mergeContents(override.contents, otherOverride.contents);\n\t\t\t\t\toverride.keys.push(...otherOverride.keys);\n\t\t\t\t\toverride.keys = arrays.distinct(override.keys);\n\t\t\t\t} else {\n\t\t\t\t\toverrides.push(objects.deepClone(otherOverride));\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const key of other.keys) {\n\t\t\t\tif (keys.indexOf(key) === -1) {\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new ConfigurationModel(contents, keys, overrides, !raws.length || raws.every(raw => raw instanceof ConfigurationModel) ? undefined : raws, this.logService);\n\t}\n\n\tprivate createOverrideConfigurationModel(identifier: string): ConfigurationModel {\n\t\tconst overrideContents = this.getContentsForOverrideIdentifer(identifier);\n\n\t\tif (!overrideContents || typeof overrideContents !== 'object' || !Object.keys(overrideContents).length) {\n\t\t\t// If there are no valid overrides, return self\n\t\t\treturn this;\n\t\t}\n\n\t\tconst contents: any = {};\n\t\tfor (const key of arrays.distinct([...Object.keys(this.contents), ...Object.keys(overrideContents)])) {\n\n\t\t\tlet contentsForKey = this.contents[key];\n\t\t\tconst overrideContentsForKey = overrideContents[key];\n\n\t\t\t// If there are override contents for the key, clone and merge otherwise use base contents\n\t\t\tif (overrideContentsForKey) {\n\t\t\t\t// Clone and merge only if base contents and override contents are of type object otherwise just override\n\t\t\t\tif (typeof contentsForKey === 'object' && typeof overrideContentsForKey === 'object') {\n\t\t\t\t\tcontentsForKey = objects.deepClone(contentsForKey);\n\t\t\t\t\tthis.mergeContents(contentsForKey, overrideContentsForKey);\n\t\t\t\t} else {\n\t\t\t\t\tcontentsForKey = overrideContentsForKey;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontents[key] = contentsForKey;\n\t\t}\n\n\t\treturn new ConfigurationModel(contents, this.keys, this.overrides, undefined, this.logService);\n\t}\n\n\tprivate mergeContents(source: any, target: any): void {\n\t\tfor (const key of Object.keys(target)) {\n\t\t\tif (key in source) {\n\t\t\t\tif (types.isObject(source[key]) && types.isObject(target[key])) {\n\t\t\t\t\tthis.mergeContents(source[key], target[key]);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource[key] = objects.deepClone(target[key]);\n\t\t}\n\t}\n\n\tprivate getContentsForOverrideIdentifer(identifier: string): any {\n\t\tlet contentsForIdentifierOnly: IStringDictionary<any> | null = null;\n\t\tlet contents: IStringDictionary<any> | null = null;\n\t\tconst mergeContents = (contentsToMerge: any) => {\n\t\t\tif (contentsToMerge) {\n\t\t\t\tif (contents) {\n\t\t\t\t\tthis.mergeContents(contents, contentsToMerge);\n\t\t\t\t} else {\n\t\t\t\t\tcontents = objects.deepClone(contentsToMerge);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tfor (const override of this.overrides) {\n\t\t\tif (override.identifiers.length === 1 && override.identifiers[0] === identifier) {\n\t\t\t\tcontentsForIdentifierOnly = override.contents;\n\t\t\t} else if (override.identifiers.includes(identifier)) {\n\t\t\t\tmergeContents(override.contents);\n\t\t\t}\n\t\t}\n\t\t// Merge contents of the identifier only at the end to take precedence.\n\t\tmergeContents(contentsForIdentifierOnly);\n\t\treturn contents;\n\t}\n\n\ttoJSON(): IConfigurationModel {\n\t\treturn {\n\t\t\tcontents: this.contents,\n\t\t\toverrides: this.overrides,\n\t\t\tkeys: this.keys\n\t\t};\n\t}\n\n\tpublic setValue(key: string, value: any): void {\n\t\tthis.updateValue(key, value, false);\n\t}\n\n\tpublic removeValue(key: string): void {\n\t\tconst index = this.keys.indexOf(key);\n\t\tif (index === -1) {\n\t\t\treturn;\n\t\t}\n\t\tthis.keys.splice(index, 1);\n\t\tremoveFromValueTree(this.contents, key);\n\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\tthis.overrides.splice(this.overrides.findIndex(o => arrays.equals(o.identifiers, overrideIdentifiersFromKey(key))), 1);\n\t\t}\n\t}\n\n\tprivate updateValue(key: string, value: any, add: boolean): void {\n\t\taddToValueTree(this.contents, key, value, e => this.logService.error(e));\n\t\tadd = add || this.keys.indexOf(key) === -1;\n\t\tif (add) {\n\t\t\tthis.keys.push(key);\n\t\t}\n\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\tconst identifiers = overrideIdentifiersFromKey(key);\n\t\t\tconst override = {\n\t\t\t\tidentifiers,\n\t\t\t\tkeys: Object.keys(this.contents[key]),\n\t\t\t\tcontents: toValuesTree(this.contents[key], message => this.logService.error(message)),\n\t\t\t};\n\t\t\tconst index = this.overrides.findIndex(o => arrays.equals(o.identifiers, identifiers));\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.overrides[index] = override;\n\t\t\t} else {\n\t\t\t\tthis.overrides.push(override);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport interface ConfigurationParseOptions {\n\tskipUnregistered?: boolean;\n\tscopes?: ConfigurationScope[];\n\tskipRestricted?: boolean;\n\tinclude?: string[];\n\texclude?: string[];\n}\n\nexport class ConfigurationModelParser {\n\n\tprivate _raw: any = null;\n\tprivate _configurationModel: ConfigurationModel | null = null;\n\tprivate _restrictedConfigurations: string[] = [];\n\n\tconstructor(\n\t\tprotected readonly _name: string,\n\t\tprotected readonly logService: ILogService\n\t) { }\n\n\tget configurationModel(): ConfigurationModel {\n\t\treturn this._configurationModel || ConfigurationModel.createEmptyModel(this.logService);\n\t}\n\n\tpublic parseRaw(raw: any, options?: ConfigurationParseOptions): void {\n\t\tthis._raw = raw;\n\t\tconst { contents, keys, overrides, restricted, hasExcludedProperties } = this.doParseRaw(raw, options);\n\t\tthis._configurationModel = new ConfigurationModel(contents, keys, overrides, hasExcludedProperties ? [raw] : undefined /* raw has not changed */, this.logService);\n\t\tthis._restrictedConfigurations = restricted || [];\n\t}\n\n\tprotected doParseRaw(raw: any, options?: ConfigurationParseOptions): IConfigurationModel & { restricted?: string[]; hasExcludedProperties?: boolean } {\n\t\tconst registry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);\n\t\tconst configurationProperties = registry.getConfigurationProperties();\n\t\tconst excludedConfigurationProperties = registry.getExcludedConfigurationProperties();\n\t\tconst filtered = this.filter(raw, configurationProperties, excludedConfigurationProperties, true, options);\n\t\traw = filtered.raw;\n\t\tconst contents = toValuesTree(raw, message => this.logService.error(`Conflict in settings file ${this._name}: ${message}`));\n\t\tconst keys = Object.keys(raw);\n\t\tconst overrides = this.toOverrides(raw, message => this.logService.error(`Conflict in settings file ${this._name}: ${message}`));\n\t\treturn { contents, keys, overrides, restricted: filtered.restricted, hasExcludedProperties: filtered.hasExcludedProperties };\n\t}\n\n\tprivate filter(properties: any, configurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, excludedConfigurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, filterOverriddenProperties: boolean, options?: ConfigurationParseOptions): { raw: {}; restricted: string[]; hasExcludedProperties: boolean } {\n\t\tlet hasExcludedProperties = false;\n\t\tif (!options?.scopes && !options?.skipRestricted && !options?.skipUnregistered && !options?.exclude?.length) {\n\t\t\treturn { raw: properties, restricted: [], hasExcludedProperties };\n\t\t}\n\t\tconst raw: any = {};\n\t\tconst restricted: string[] = [];\n\t\tfor (const key in properties) {\n\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key) && filterOverriddenProperties) {\n\t\t\t\tconst result = this.filter(properties[key], configurationProperties, excludedConfigurationProperties, false, options);\n\t\t\t\traw[key] = result.raw;\n\t\t\t\thasExcludedProperties = hasExcludedProperties || result.hasExcludedProperties;\n\t\t\t\trestricted.push(...result.restricted);\n\t\t\t} else {\n\t\t\t\tconst propertySchema = configurationProperties[key];\n\t\t\t\tif (propertySchema?.restricted) {\n\t\t\t\t\trestricted.push(key);\n\t\t\t\t}\n\t\t\t\tif (this.shouldInclude(key, propertySchema, excludedConfigurationProperties, options)) {\n\t\t\t\t\traw[key] = properties[key];\n\t\t\t\t} else {\n\t\t\t\t\thasExcludedProperties = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn { raw, restricted, hasExcludedProperties };\n\t}\n\n\tprivate shouldInclude(key: string, propertySchema: IConfigurationPropertySchema | undefined, excludedConfigurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, options: ConfigurationParseOptions): boolean {\n\t\tif (options.exclude?.includes(key)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (options.include?.includes(key)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (options.skipRestricted && propertySchema?.restricted) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (options.skipUnregistered && !propertySchema) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst schema = propertySchema ?? excludedConfigurationProperties[key];\n\t\tconst scope = schema ? typeof schema.scope !== 'undefined' ? schema.scope : ConfigurationScope.WINDOW : undefined;\n\t\tif (scope === undefined || options.scopes === undefined) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn options.scopes.includes(scope);\n\t}\n\n\tprivate toOverrides(raw: any, conflictReporter: (message: string) => void): IOverrides[] {\n\t\tconst overrides: IOverrides[] = [];\n\t\tfor (const key of Object.keys(raw)) {\n\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\t\tconst overrideRaw: any = {};\n\t\t\t\tfor (const keyInOverrideRaw in raw[key]) {\n\t\t\t\t\toverrideRaw[keyInOverrideRaw] = raw[key][keyInOverrideRaw];\n\t\t\t\t}\n\t\t\t\toverrides.push({\n\t\t\t\t\tidentifiers: overrideIdentifiersFromKey(key),\n\t\t\t\t\tkeys: Object.keys(overrideRaw),\n\t\t\t\t\tcontents: toValuesTree(overrideRaw, conflictReporter)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn overrides;\n\t}\n\n}\n\nclass ConfigurationInspectValue<V> implements IConfigurationValue<V> {\n\n\tconstructor(\n\t\tprivate readonly key: string,\n\t\tprivate readonly overrides: IConfigurationOverrides,\n\t\tprivate readonly _value: V | undefined,\n\t\treadonly overrideIdentifiers: string[] | undefined,\n\t\tprivate readonly defaultConfiguration: ConfigurationModel,\n\t\tprivate readonly policyConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly applicationConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly userConfiguration: ConfigurationModel,\n\t\tprivate readonly localUserConfiguration: ConfigurationModel,\n\t\tprivate readonly remoteUserConfiguration: ConfigurationModel,\n\t\tprivate readonly workspaceConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly folderConfigurationModel: ConfigurationModel | undefined,\n\t\tprivate readonly memoryConfigurationModel: ConfigurationModel\n\t) {\n\t}\n\n\tprivate toInspectValue(inspectValue: IInspectValue<V> | undefined | null): IInspectValue<V> | undefined {\n\t\treturn inspectValue?.value !== undefined || inspectValue?.override !== undefined || inspectValue?.overrides !== undefined ? inspectValue : undefined;\n\t}\n\n\tprivate _userInspectValue: InspectValue<V> | undefined;\n\tprivate get userInspectValue(): InspectValue<V> {\n\t\tif (!this._userInspectValue) {\n\t\t\tthis._userInspectValue = this.userConfiguration.inspect<V>(this.key, this.overrides.overrideIdentifier);\n\t\t}\n\t\treturn this._userInspectValue;\n\t}\n\n\tget user(): IInspectValue<V> | undefined {\n\t\treturn this.toInspectValue(this.userInspectValue);\n\t}\n\n}\n\nexport class Configuration {\n\n\tprivate _workspaceConsolidatedConfiguration: ConfigurationModel | null = null;\n\tprivate _foldersConsolidatedConfigurations = new ResourceMap<ConfigurationModel>();\n\n\tconstructor(\n\t\tprivate _defaultConfiguration: ConfigurationModel,\n\t\tprivate _policyConfiguration: ConfigurationModel,\n\t\tprivate _applicationConfiguration: ConfigurationModel,\n\t\tprivate _localUserConfiguration: ConfigurationModel,\n\t\tprivate _remoteUserConfiguration: ConfigurationModel,\n\t\tprivate _workspaceConfiguration: ConfigurationModel,\n\t\tprivate _folderConfigurations: ResourceMap<ConfigurationModel>,\n\t\tprivate _memoryConfiguration: ConfigurationModel,\n\t\tprivate _memoryConfigurationByResource: ResourceMap<ConfigurationModel>,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t}\n\n\tgetValue(section: string | undefined, overrides: IConfigurationOverrides, workspace: Workspace | undefined): any {\n\t\tconst consolidateConfigurationModel = this.getConsolidatedConfigurationModel(section, overrides, workspace);\n\t\treturn consolidateConfigurationModel.getValue(section);\n\t}\n\n\tupdateValue(key: string, value: any, overrides: IConfigurationUpdateOverrides = {}): void {\n\t\tlet memoryConfiguration: ConfigurationModel | undefined;\n\t\tif (overrides.resource) {\n\t\t\tmemoryConfiguration = this._memoryConfigurationByResource.get(overrides.resource);\n\t\t\tif (!memoryConfiguration) {\n\t\t\t\tmemoryConfiguration = ConfigurationModel.createEmptyModel(this.logService);\n\t\t\t\tthis._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);\n\t\t\t}\n\t\t} else {\n\t\t\tmemoryConfiguration = this._memoryConfiguration;\n\t\t}\n\n\t\tif (value === undefined) {\n\t\t\tmemoryConfiguration.removeValue(key);\n\t\t} else {\n\t\t\tmemoryConfiguration.setValue(key, value);\n\t\t}\n\n\t\tif (!overrides.resource) {\n\t\t\tthis._workspaceConsolidatedConfiguration = null;\n\t\t}\n\t}\n\n\tinspect<C>(key: string, overrides: IConfigurationOverrides, workspace: Workspace | undefined): IConfigurationValue<C> {\n\t\tconst consolidateConfigurationModel = this.getConsolidatedConfigurationModel(key, overrides, workspace);\n\t\tconst folderConfigurationModel = this.getFolderConfigurationModelForResource(overrides.resource, workspace);\n\t\tconst memoryConfigurationModel = overrides.resource ? this._memoryConfigurationByResource.get(overrides.resource) || this._memoryConfiguration : this._memoryConfiguration;\n\t\tconst overrideIdentifiers = new Set<string>();\n\t\tfor (const override of consolidateConfigurationModel.overrides) {\n\t\t\tfor (const overrideIdentifier of override.identifiers) {\n\t\t\t\tif (consolidateConfigurationModel.getOverrideValue(key, overrideIdentifier) !== undefined) {\n\t\t\t\t\toverrideIdentifiers.add(overrideIdentifier);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new ConfigurationInspectValue<C>(\n\t\t\tkey,\n\t\t\toverrides,\n\t\t\tconsolidateConfigurationModel.getValue<C>(key),\n\t\t\toverrideIdentifiers.size ? [...overrideIdentifiers] : undefined,\n\t\t\tthis._defaultConfiguration,\n\t\t\tthis._policyConfiguration.isEmpty() ? undefined : this._policyConfiguration,\n\t\t\tthis.applicationConfiguration.isEmpty() ? undefined : this.applicationConfiguration,\n\t\t\tthis.userConfiguration,\n\t\t\tthis.localUserConfiguration,\n\t\t\tthis.remoteUserConfiguration,\n\t\t\tworkspace ? this._workspaceConfiguration : undefined,\n\t\t\tfolderConfigurationModel ? folderConfigurationModel : undefined,\n\t\t\tmemoryConfigurationModel\n\t\t);\n\n\t}\n\n\tget applicationConfiguration(): ConfigurationModel {\n\t\treturn this._applicationConfiguration;\n\t}\n\n\tprivate _userConfiguration: ConfigurationModel | null = null;\n\tget userConfiguration(): ConfigurationModel {\n\t\tif (!this._userConfiguration) {\n\t\t\tif (this._remoteUserConfiguration.isEmpty()) {\n\t\t\t\tthis._userConfiguration = this._localUserConfiguration;\n\t\t\t} else {\n\t\t\t\tconst merged = this._localUserConfiguration.merge(this._remoteUserConfiguration);\n\t\t\t\tthis._userConfiguration = new ConfigurationModel(merged.contents, merged.keys, merged.overrides, undefined, this.logService);\n\t\t\t}\n\t\t}\n\t\treturn this._userConfiguration;\n\t}\n\n\tget localUserConfiguration(): ConfigurationModel {\n\t\treturn this._localUserConfiguration;\n\t}\n\n\tget remoteUserConfiguration(): ConfigurationModel {\n\t\treturn this._remoteUserConfiguration;\n\t}\n\n\tprivate getConsolidatedConfigurationModel(section: string | undefined, overrides: IConfigurationOverrides, workspace: Workspace | undefined): ConfigurationModel {\n\t\tlet configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, workspace);\n\t\tif (overrides.overrideIdentifier) {\n\t\t\tconfigurationModel = configurationModel.override(overrides.overrideIdentifier);\n\t\t}\n\t\tif (!this._policyConfiguration.isEmpty() && this._policyConfiguration.getValue(section) !== undefined) {\n\t\t\t// clone by merging\n\t\t\tconfigurationModel = configurationModel.merge();\n\t\t\tfor (const key of this._policyConfiguration.keys) {\n\t\t\t\tconfigurationModel.setValue(key, this._policyConfiguration.getValue(key));\n\t\t\t}\n\t\t}\n\t\treturn configurationModel;\n\t}\n\n\tprivate getConsolidatedConfigurationModelForResource({ resource }: IConfigurationOverrides, workspace: Workspace | undefined): ConfigurationModel {\n\t\tlet consolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\n\n\t\tif (workspace && resource) {\n\t\t\tconst root = workspace.getFolder(resource);\n\t\t\tif (root) {\n\t\t\t\tconsolidateConfiguration = this.getFolderConsolidatedConfiguration(root.uri) || consolidateConfiguration;\n\t\t\t}\n\t\t\tconst memoryConfigurationForResource = this._memoryConfigurationByResource.get(resource);\n\t\t\tif (memoryConfigurationForResource) {\n\t\t\t\tconsolidateConfiguration = consolidateConfiguration.merge(memoryConfigurationForResource);\n\t\t\t}\n\t\t}\n\n\t\treturn consolidateConfiguration;\n\t}\n\n\tprivate getWorkspaceConsolidatedConfiguration(): ConfigurationModel {\n\t\tif (!this._workspaceConsolidatedConfiguration) {\n\t\t\tthis._workspaceConsolidatedConfiguration = this._defaultConfiguration.merge(this.applicationConfiguration, this.userConfiguration, this._workspaceConfiguration, this._memoryConfiguration);\n\t\t}\n\t\treturn this._workspaceConsolidatedConfiguration;\n\t}\n\n\tprivate getFolderConsolidatedConfiguration(folder: URI): ConfigurationModel {\n\t\tlet folderConsolidatedConfiguration = this._foldersConsolidatedConfigurations.get(folder);\n\t\tif (!folderConsolidatedConfiguration) {\n\t\t\tconst workspaceConsolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\n\t\t\tconst folderConfiguration = this._folderConfigurations.get(folder);\n\t\t\tif (folderConfiguration) {\n\t\t\t\tfolderConsolidatedConfiguration = workspaceConsolidateConfiguration.merge(folderConfiguration);\n\t\t\t\tthis._foldersConsolidatedConfigurations.set(folder, folderConsolidatedConfiguration);\n\t\t\t} else {\n\t\t\t\tfolderConsolidatedConfiguration = workspaceConsolidateConfiguration;\n\t\t\t}\n\t\t}\n\t\treturn folderConsolidatedConfiguration;\n\t}\n\n\tprivate getFolderConfigurationModelForResource(resource: URI | null | undefined, workspace: Workspace | undefined): ConfigurationModel | undefined {\n\t\tif (workspace && resource) {\n\t\t\tconst root = workspace.getFolder(resource);\n\t\t\tif (root) {\n\t\t\t\treturn this._folderConfigurations.get(root.uri);\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\ttoData(): IConfigurationData {\n\t\treturn {\n\t\t\tdefaults: {\n\t\t\t\tcontents: this._defaultConfiguration.contents,\n\t\t\t\toverrides: this._defaultConfiguration.overrides,\n\t\t\t\tkeys: this._defaultConfiguration.keys,\n\t\t\t},\n\t\t\tpolicy: {\n\t\t\t\tcontents: this._policyConfiguration.contents,\n\t\t\t\toverrides: this._policyConfiguration.overrides,\n\t\t\t\tkeys: this._policyConfiguration.keys\n\t\t\t},\n\t\t\tapplication: {\n\t\t\t\tcontents: this.applicationConfiguration.contents,\n\t\t\t\toverrides: this.applicationConfiguration.overrides,\n\t\t\t\tkeys: this.applicationConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.applicationConfiguration.raw) ? undefined : this.applicationConfiguration.raw\n\t\t\t},\n\t\t\tuserLocal: {\n\t\t\t\tcontents: this.localUserConfiguration.contents,\n\t\t\t\toverrides: this.localUserConfiguration.overrides,\n\t\t\t\tkeys: this.localUserConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.localUserConfiguration.raw) ? undefined : this.localUserConfiguration.raw\n\t\t\t},\n\t\t\tuserRemote: {\n\t\t\t\tcontents: this.remoteUserConfiguration.contents,\n\t\t\t\toverrides: this.remoteUserConfiguration.overrides,\n\t\t\t\tkeys: this.remoteUserConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.remoteUserConfiguration.raw) ? undefined : this.remoteUserConfiguration.raw\n\t\t\t},\n\t\t\tworkspace: {\n\t\t\t\tcontents: this._workspaceConfiguration.contents,\n\t\t\t\toverrides: this._workspaceConfiguration.overrides,\n\t\t\t\tkeys: this._workspaceConfiguration.keys\n\t\t\t},\n\t\t\tfolders: [...this._folderConfigurations.keys()].reduce<[UriComponents, IConfigurationModel][]>((result, folder) => {\n\t\t\t\tconst { contents, overrides, keys } = this._folderConfigurations.get(folder)!;\n\t\t\t\tresult.push([folder, { contents, overrides, keys }]);\n\t\t\t\treturn result;\n\t\t\t}, [])\n\t\t};\n\t}\n\n\tstatic parse(data: IConfigurationData, logService: ILogService): Configuration {\n\t\tconst defaultConfiguration = this.parseConfigurationModel(data.defaults, logService);\n\t\tconst policyConfiguration = this.parseConfigurationModel(data.policy, logService);\n\t\tconst applicationConfiguration = this.parseConfigurationModel(data.application, logService);\n\t\tconst userLocalConfiguration = this.parseConfigurationModel(data.userLocal, logService);\n\t\tconst userRemoteConfiguration = this.parseConfigurationModel(data.userRemote, logService);\n\t\tconst workspaceConfiguration = this.parseConfigurationModel(data.workspace, logService);\n\t\tconst folders: ResourceMap<ConfigurationModel> = data.folders.reduce((result, value) => {\n\t\t\tresult.set(URI.revive(value[0]), this.parseConfigurationModel(value[1], logService));\n\t\t\treturn result;\n\t\t}, new ResourceMap<ConfigurationModel>());\n\t\treturn new Configuration(\n\t\t\tdefaultConfiguration,\n\t\t\tpolicyConfiguration,\n\t\t\tapplicationConfiguration,\n\t\t\tuserLocalConfiguration,\n\t\t\tuserRemoteConfiguration,\n\t\t\tworkspaceConfiguration,\n\t\t\tfolders,\n\t\t\tConfigurationModel.createEmptyModel(logService),\n\t\t\tnew ResourceMap<ConfigurationModel>(),\n\t\t\tlogService\n\t\t);\n\t}\n\n\tprivate static parseConfigurationModel(model: IConfigurationModel, logService: ILogService): ConfigurationModel {\n\t\treturn new ConfigurationModel(model.contents, model.keys, model.overrides, model.raw, logService);\n\t}\n\n}\n\nexport class ConfigurationChangeEvent implements IConfigurationChangeEvent {\n\n\tprivate readonly _marker = '\\n';\n\tprivate readonly _markerCode1 = this._marker.charCodeAt(0);\n\tprivate readonly _markerCode2 = '.'.charCodeAt(0);\n\tprivate readonly _affectsConfigStr: string;\n\n\treadonly affectedKeys = new Set<string>();\n\tsource!: ConfigurationTarget;\n\n\tconstructor(\n\t\treadonly change: IConfigurationChange,\n\t\tprivate readonly previous: { workspace?: Workspace; data: IConfigurationData } | undefined,\n\t\tprivate readonly currentConfiguraiton: Configuration,\n\t\tprivate readonly currentWorkspace: Workspace | undefined,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t\tfor (const key of change.keys) {\n\t\t\tthis.affectedKeys.add(key);\n\t\t}\n\t\tfor (const [, keys] of change.overrides) {\n\t\t\tfor (const key of keys) {\n\t\t\t\tthis.affectedKeys.add(key);\n\t\t\t}\n\t\t}\n\n\t\t// Example: '\\nfoo.bar\\nabc.def\\n'\n\t\tthis._affectsConfigStr = this._marker;\n\t\tfor (const key of this.affectedKeys) {\n\t\t\tthis._affectsConfigStr += key + this._marker;\n\t\t}\n\t}\n\n\tprivate _previousConfiguration: Configuration | undefined = undefined;\n\tget previousConfiguration(): Configuration | undefined {\n\t\tif (!this._previousConfiguration && this.previous) {\n\t\t\tthis._previousConfiguration = Configuration.parse(this.previous.data, this.logService);\n\t\t}\n\t\treturn this._previousConfiguration;\n\t}\n\n\taffectsConfiguration(section: string, overrides?: IConfigurationOverrides): boolean {\n\t\t// we have one large string with all keys that have changed. we pad (marker) the section\n\t\t// and check that either find it padded or before a segment character\n\t\tconst needle = this._marker + section;\n\t\tconst idx = this._affectsConfigStr.indexOf(needle);\n\t\tif (idx < 0) {\n\t\t\t// NOT: (marker + section)\n\t\t\treturn false;\n\t\t}\n\t\tconst pos = idx + needle.length;\n\t\tif (pos >= this._affectsConfigStr.length) {\n\t\t\treturn false;\n\t\t}\n\t\tconst code = this._affectsConfigStr.charCodeAt(pos);\n\t\tif (code !== this._markerCode1 && code !== this._markerCode2) {\n\t\t\t// NOT: section + (marker | segment)\n\t\t\treturn false;\n\t\t}\n\t\tif (overrides) {\n\t\t\tconst value1 = this.previousConfiguration ? this.previousConfiguration.getValue(section, overrides, this.previous?.workspace) : undefined;\n\t\t\tconst value2 = this.currentConfiguraiton.getValue(section, overrides, this.currentWorkspace);\n\t\t\treturn !objects.equals(value1, value2);\n\t\t}\n\t\treturn true;\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/platform/configuration/common/configurationModels.ts","vs/platform/configuration/common/configurationModels.ts"],"names":[],"mappings":"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","file":"configurationModels.js","sourceRoot":"file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as arrays from '../../../base/common/arrays.js';\nimport { IStringDictionary } from '../../../base/common/collections.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport * as objects from '../../../base/common/objects.js';\nimport * as types from '../../../base/common/types.js';\nimport { URI, UriComponents } from '../../../base/common/uri.js';\nimport { addToValueTree, ConfigurationTarget, getConfigurationValue, IConfigurationChange, IConfigurationChangeEvent, IConfigurationData, IConfigurationModel, IConfigurationOverrides, IConfigurationUpdateOverrides, IConfigurationValue, IInspectValue, IOverrides, removeFromValueTree, toValuesTree } from './configuration.js';\nimport { ConfigurationScope, Extensions, IConfigurationPropertySchema, IConfigurationRegistry, overrideIdentifiersFromKey, OVERRIDE_PROPERTY_REGEX, IRegisteredConfigurationPropertySchema } from './configurationRegistry.js';\nimport { ILogService } from '../../log/common/log.js';\nimport { Registry } from '../../registry/common/platform.js';\nimport { Workspace } from '../../workspace/common/workspace.js';\n\nfunction freeze<T>(data: T): T {\n\treturn Object.isFrozen(data) ? data : objects.deepFreeze(data);\n}\n\ntype InspectValue<V> = IInspectValue<V> & { merged?: V };\n\nexport class ConfigurationModel implements IConfigurationModel {\n\n\tstatic createEmptyModel(logService: ILogService): ConfigurationModel {\n\t\treturn new ConfigurationModel({}, [], [], undefined, logService);\n\t}\n\n\tprivate readonly overrideConfigurations = new Map<string, ConfigurationModel>();\n\n\tconstructor(\n\t\tprivate readonly _contents: IStringDictionary<unknown>,\n\t\tprivate readonly _keys: string[],\n\t\tprivate readonly _overrides: IOverrides[],\n\t\tprivate readonly _raw: IStringDictionary<unknown> | ReadonlyArray<IStringDictionary<unknown> | ConfigurationModel> | undefined,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t}\n\n\tprivate _rawConfiguration: ConfigurationModel | undefined;\n\tget rawConfiguration(): ConfigurationModel {\n\t\tif (!this._rawConfiguration) {\n\t\t\tif (this._raw) {\n\t\t\t\tconst rawConfigurationModels = (Array.isArray(this._raw) ? this._raw : [this._raw]).map(raw => {\n\t\t\t\t\tif (raw instanceof ConfigurationModel) {\n\t\t\t\t\t\treturn raw;\n\t\t\t\t\t}\n\t\t\t\t\tconst parser = new ConfigurationModelParser('', this.logService);\n\t\t\t\t\tparser.parseRaw(raw);\n\t\t\t\t\treturn parser.configurationModel;\n\t\t\t\t});\n\t\t\t\tthis._rawConfiguration = rawConfigurationModels.reduce((previous, current) => current === previous ? current : previous.merge(current), rawConfigurationModels[0]);\n\t\t\t} else {\n\t\t\t\t// raw is same as current\n\t\t\t\tthis._rawConfiguration = this;\n\t\t\t}\n\t\t}\n\t\treturn this._rawConfiguration;\n\t}\n\n\tget contents(): IStringDictionary<unknown> {\n\t\treturn this._contents;\n\t}\n\n\tget overrides(): IOverrides[] {\n\t\treturn this._overrides;\n\t}\n\n\tget keys(): string[] {\n\t\treturn this._keys;\n\t}\n\n\tget raw(): IStringDictionary<unknown> | IStringDictionary<unknown>[] | undefined {\n\t\tif (!this._raw) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (Array.isArray(this._raw) && this._raw.every(raw => raw instanceof ConfigurationModel)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this._raw as IStringDictionary<unknown> | IStringDictionary<unknown>[];\n\t}\n\n\tisEmpty(): boolean {\n\t\treturn this._keys.length === 0 && Object.keys(this._contents).length === 0 && this._overrides.length === 0;\n\t}\n\n\tgetValue<V>(section: string | undefined): V | undefined {\n\t\treturn section ? getConfigurationValue<V>(this.contents, section) : this.contents as V;\n\t}\n\n\tinspect<V>(section: string | undefined, overrideIdentifier?: string | null): InspectValue<V> {\n\t\tconst that = this;\n\t\treturn {\n\t\t\tget value() {\n\t\t\t\treturn freeze(that.rawConfiguration.getValue<V>(section));\n\t\t\t},\n\t\t\tget override() {\n\t\t\t\treturn overrideIdentifier ? freeze(that.rawConfiguration.getOverrideValue<V>(section, overrideIdentifier)) : undefined;\n\t\t\t},\n\t\t\tget merged() {\n\t\t\t\treturn freeze(overrideIdentifier ? that.rawConfiguration.override(overrideIdentifier).getValue<V>(section) : that.rawConfiguration.getValue<V>(section));\n\t\t\t},\n\t\t\tget overrides() {\n\t\t\t\tconst overrides: { readonly identifiers: string[]; readonly value: V }[] = [];\n\t\t\t\tfor (const { contents, identifiers, keys } of that.rawConfiguration.overrides) {\n\t\t\t\t\tconst value = new ConfigurationModel(contents, keys, [], undefined, that.logService).getValue<V>(section);\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\toverrides.push({ identifiers, value });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn overrides.length ? freeze(overrides) : undefined;\n\t\t\t}\n\t\t};\n\t}\n\n\tgetOverrideValue<V>(section: string | undefined, overrideIdentifier: string): V | undefined {\n\t\tconst overrideContents = this.getContentsForOverrideIdentifer(overrideIdentifier);\n\t\treturn overrideContents\n\t\t\t? section ? getConfigurationValue<V>(overrideContents, section) : overrideContents as V\n\t\t\t: undefined;\n\t}\n\n\toverride(identifier: string): ConfigurationModel {\n\t\tlet overrideConfigurationModel = this.overrideConfigurations.get(identifier);\n\t\tif (!overrideConfigurationModel) {\n\t\t\toverrideConfigurationModel = this.createOverrideConfigurationModel(identifier);\n\t\t\tthis.overrideConfigurations.set(identifier, overrideConfigurationModel);\n\t\t}\n\t\treturn overrideConfigurationModel;\n\t}\n\n\tmerge(...others: ConfigurationModel[]): ConfigurationModel {\n\t\tconst contents = objects.deepClone(this.contents);\n\t\tconst overrides = objects.deepClone(this.overrides);\n\t\tconst keys = [...this.keys];\n\t\tconst raws = this._raw ? Array.isArray(this._raw) ? [...this._raw] : [this._raw] : [this];\n\n\t\tfor (const other of others) {\n\t\t\traws.push(...(other._raw ? Array.isArray(other._raw) ? other._raw : [other._raw] : [other]));\n\t\t\tif (other.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.mergeContents(contents, other.contents);\n\n\t\t\tfor (const otherOverride of other.overrides) {\n\t\t\t\tconst [override] = overrides.filter(o => arrays.equals(o.identifiers, otherOverride.identifiers));\n\t\t\t\tif (override) {\n\t\t\t\t\tthis.mergeContents(override.contents, otherOverride.contents);\n\t\t\t\t\toverride.keys.push(...otherOverride.keys);\n\t\t\t\t\toverride.keys = arrays.distinct(override.keys);\n\t\t\t\t} else {\n\t\t\t\t\toverrides.push(objects.deepClone(otherOverride));\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const key of other.keys) {\n\t\t\t\tif (keys.indexOf(key) === -1) {\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new ConfigurationModel(contents, keys, overrides, !raws.length || raws.every(raw => raw instanceof ConfigurationModel) ? undefined : raws, this.logService);\n\t}\n\n\tprivate createOverrideConfigurationModel(identifier: string): ConfigurationModel {\n\t\tconst overrideContents = this.getContentsForOverrideIdentifer(identifier);\n\n\t\tif (!overrideContents || typeof overrideContents !== 'object' || !Object.keys(overrideContents).length) {\n\t\t\t// If there are no valid overrides, return self\n\t\t\treturn this;\n\t\t}\n\n\t\tconst contents: IStringDictionary<unknown> = {};\n\t\tfor (const key of arrays.distinct([...Object.keys(this.contents), ...Object.keys(overrideContents)])) {\n\n\t\t\tlet contentsForKey = this.contents[key];\n\t\t\tconst overrideContentsForKey = overrideContents[key];\n\n\t\t\t// If there are override contents for the key, clone and merge otherwise use base contents\n\t\t\tif (overrideContentsForKey) {\n\t\t\t\t// Clone and merge only if base contents and override contents are of type object otherwise just override\n\t\t\t\tif (typeof contentsForKey === 'object' && typeof overrideContentsForKey === 'object') {\n\t\t\t\t\tcontentsForKey = objects.deepClone(contentsForKey);\n\t\t\t\t\tthis.mergeContents(contentsForKey as IStringDictionary<unknown>, overrideContentsForKey as IStringDictionary<unknown>);\n\t\t\t\t} else {\n\t\t\t\t\tcontentsForKey = overrideContentsForKey;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontents[key] = contentsForKey;\n\t\t}\n\n\t\treturn new ConfigurationModel(contents, this.keys, this.overrides, undefined, this.logService);\n\t}\n\n\tprivate mergeContents(source: IStringDictionary<unknown>, target: IStringDictionary<unknown>): void {\n\t\tfor (const key of Object.keys(target)) {\n\t\t\tif (key in source) {\n\t\t\t\tif (types.isObject(source[key]) && types.isObject(target[key])) {\n\t\t\t\t\tthis.mergeContents(source[key] as IStringDictionary<unknown>, target[key] as IStringDictionary<unknown>);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource[key] = objects.deepClone(target[key]);\n\t\t}\n\t}\n\n\tprivate getContentsForOverrideIdentifer(identifier: string): IStringDictionary<unknown> | null {\n\t\tlet contentsForIdentifierOnly: IStringDictionary<unknown> | null = null;\n\t\tlet contents: IStringDictionary<unknown> | null = null;\n\t\tconst mergeContents = (contentsToMerge: IStringDictionary<unknown> | null) => {\n\t\t\tif (contentsToMerge) {\n\t\t\t\tif (contents) {\n\t\t\t\t\tthis.mergeContents(contents, contentsToMerge);\n\t\t\t\t} else {\n\t\t\t\t\tcontents = objects.deepClone(contentsToMerge);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tfor (const override of this.overrides) {\n\t\t\tif (override.identifiers.length === 1 && override.identifiers[0] === identifier) {\n\t\t\t\tcontentsForIdentifierOnly = override.contents;\n\t\t\t} else if (override.identifiers.includes(identifier)) {\n\t\t\t\tmergeContents(override.contents);\n\t\t\t}\n\t\t}\n\t\t// Merge contents of the identifier only at the end to take precedence.\n\t\tmergeContents(contentsForIdentifierOnly);\n\t\treturn contents;\n\t}\n\n\ttoJSON(): IConfigurationModel {\n\t\treturn {\n\t\t\tcontents: this.contents,\n\t\t\toverrides: this.overrides,\n\t\t\tkeys: this.keys\n\t\t};\n\t}\n\n\tpublic setValue(key: string, value: unknown): void {\n\t\tthis.updateValue(key, value, false);\n\t}\n\n\tpublic removeValue(key: string): void {\n\t\tconst index = this.keys.indexOf(key);\n\t\tif (index === -1) {\n\t\t\treturn;\n\t\t}\n\t\tthis.keys.splice(index, 1);\n\t\tremoveFromValueTree(this.contents, key);\n\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\tthis.overrides.splice(this.overrides.findIndex(o => arrays.equals(o.identifiers, overrideIdentifiersFromKey(key))), 1);\n\t\t}\n\t}\n\n\tprivate updateValue(key: string, value: unknown, add: boolean): void {\n\t\taddToValueTree(this.contents, key, value, e => this.logService.error(e));\n\t\tadd = add || this.keys.indexOf(key) === -1;\n\t\tif (add) {\n\t\t\tthis.keys.push(key);\n\t\t}\n\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\tconst overrideContents = this.contents[key] as IStringDictionary<unknown>;\n\t\t\tconst identifiers = overrideIdentifiersFromKey(key);\n\t\t\tconst override = {\n\t\t\t\tidentifiers,\n\t\t\t\tkeys: Object.keys(overrideContents),\n\t\t\t\tcontents: toValuesTree(overrideContents, message => this.logService.error(message)),\n\t\t\t};\n\t\t\tconst index = this.overrides.findIndex(o => arrays.equals(o.identifiers, identifiers));\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.overrides[index] = override;\n\t\t\t} else {\n\t\t\t\tthis.overrides.push(override);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport interface ConfigurationParseOptions {\n\tskipUnregistered?: boolean;\n\tscopes?: ConfigurationScope[];\n\tskipRestricted?: boolean;\n\tinclude?: string[];\n\texclude?: string[];\n}\n\nexport class ConfigurationModelParser {\n\n\tprivate _raw: IStringDictionary<unknown> | null = null;\n\tprivate _configurationModel: ConfigurationModel | null = null;\n\tprivate _restrictedConfigurations: string[] = [];\n\n\tconstructor(\n\t\tprotected readonly _name: string,\n\t\tprotected readonly logService: ILogService\n\t) { }\n\n\tget configurationModel(): ConfigurationModel {\n\t\treturn this._configurationModel || ConfigurationModel.createEmptyModel(this.logService);\n\t}\n\n\tpublic parseRaw(raw: IStringDictionary<unknown>, options?: ConfigurationParseOptions): void {\n\t\tthis._raw = raw;\n\t\tconst { contents, keys, overrides, restricted, hasExcludedProperties } = this.doParseRaw(raw, options);\n\t\tthis._configurationModel = new ConfigurationModel(contents, keys, overrides, hasExcludedProperties ? [raw] : undefined /* raw has not changed */, this.logService);\n\t\tthis._restrictedConfigurations = restricted || [];\n\t}\n\n\tprotected doParseRaw(raw: IStringDictionary<unknown>, options?: ConfigurationParseOptions): IConfigurationModel & { restricted?: string[]; hasExcludedProperties?: boolean } {\n\t\tconst registry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);\n\t\tconst configurationProperties = registry.getConfigurationProperties();\n\t\tconst excludedConfigurationProperties = registry.getExcludedConfigurationProperties();\n\t\tconst filtered = this.filter(raw, configurationProperties, excludedConfigurationProperties, true, options);\n\t\traw = filtered.raw;\n\t\tconst contents = toValuesTree(raw, message => this.logService.error(`Conflict in settings file ${this._name}: ${message}`));\n\t\tconst keys = Object.keys(raw);\n\t\tconst overrides = this.toOverrides(raw, message => this.logService.error(`Conflict in settings file ${this._name}: ${message}`));\n\t\treturn { contents, keys, overrides, restricted: filtered.restricted, hasExcludedProperties: filtered.hasExcludedProperties };\n\t}\n\n\tprivate filter(properties: IStringDictionary<unknown>, configurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, excludedConfigurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, filterOverriddenProperties: boolean, options?: ConfigurationParseOptions): { raw: IStringDictionary<unknown>; restricted: string[]; hasExcludedProperties: boolean } {\n\t\tlet hasExcludedProperties = false;\n\t\tif (!options?.scopes && !options?.skipRestricted && !options?.skipUnregistered && !options?.exclude?.length) {\n\t\t\treturn { raw: properties, restricted: [], hasExcludedProperties };\n\t\t}\n\t\tconst raw: IStringDictionary<unknown> = {};\n\t\tconst restricted: string[] = [];\n\t\tfor (const key in properties) {\n\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key) && filterOverriddenProperties) {\n\t\t\t\tconst result = this.filter(properties[key] as IStringDictionary<unknown>, configurationProperties, excludedConfigurationProperties, false, options);\n\t\t\t\traw[key] = result.raw;\n\t\t\t\thasExcludedProperties = hasExcludedProperties || result.hasExcludedProperties;\n\t\t\t\trestricted.push(...result.restricted);\n\t\t\t} else {\n\t\t\t\tconst propertySchema = configurationProperties[key];\n\t\t\t\tif (propertySchema?.restricted) {\n\t\t\t\t\trestricted.push(key);\n\t\t\t\t}\n\t\t\t\tif (this.shouldInclude(key, propertySchema, excludedConfigurationProperties, options)) {\n\t\t\t\t\traw[key] = properties[key];\n\t\t\t\t} else {\n\t\t\t\t\thasExcludedProperties = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn { raw, restricted, hasExcludedProperties };\n\t}\n\n\tprivate shouldInclude(key: string, propertySchema: IConfigurationPropertySchema | undefined, excludedConfigurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, options: ConfigurationParseOptions): boolean {\n\t\tif (options.exclude?.includes(key)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (options.include?.includes(key)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (options.skipRestricted && propertySchema?.restricted) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (options.skipUnregistered && !propertySchema) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst schema = propertySchema ?? excludedConfigurationProperties[key];\n\t\tconst scope = schema ? typeof schema.scope !== 'undefined' ? schema.scope : ConfigurationScope.WINDOW : undefined;\n\t\tif (scope === undefined || options.scopes === undefined) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn options.scopes.includes(scope);\n\t}\n\n\tprivate toOverrides(raw: IStringDictionary<unknown>, conflictReporter: (message: string) => void): IOverrides[] {\n\t\tconst overrides: IOverrides[] = [];\n\t\tfor (const key of Object.keys(raw)) {\n\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\t\tconst overrideRaw: IStringDictionary<unknown> = {};\n\t\t\t\tconst rawKey = raw[key] as IStringDictionary<unknown>;\n\t\t\t\tfor (const keyInOverrideRaw in rawKey) {\n\t\t\t\t\toverrideRaw[keyInOverrideRaw] = rawKey[keyInOverrideRaw];\n\t\t\t\t}\n\t\t\t\toverrides.push({\n\t\t\t\t\tidentifiers: overrideIdentifiersFromKey(key),\n\t\t\t\t\tkeys: Object.keys(overrideRaw),\n\t\t\t\t\tcontents: toValuesTree(overrideRaw, conflictReporter)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn overrides;\n\t}\n\n}\n\nclass ConfigurationInspectValue<V> implements IConfigurationValue<V> {\n\n\tconstructor(\n\t\tprivate readonly key: string,\n\t\tprivate readonly overrides: IConfigurationOverrides,\n\t\tprivate readonly _value: V | undefined,\n\t\treadonly overrideIdentifiers: string[] | undefined,\n\t\tprivate readonly defaultConfiguration: ConfigurationModel,\n\t\tprivate readonly policyConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly applicationConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly userConfiguration: ConfigurationModel,\n\t\tprivate readonly localUserConfiguration: ConfigurationModel,\n\t\tprivate readonly remoteUserConfiguration: ConfigurationModel,\n\t\tprivate readonly workspaceConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly folderConfigurationModel: ConfigurationModel | undefined,\n\t\tprivate readonly memoryConfigurationModel: ConfigurationModel\n\t) {\n\t}\n\n\tprivate toInspectValue(inspectValue: IInspectValue<V> | undefined | null): IInspectValue<V> | undefined {\n\t\treturn inspectValue?.value !== undefined || inspectValue?.override !== undefined || inspectValue?.overrides !== undefined ? inspectValue : undefined;\n\t}\n\n\tprivate _userInspectValue: InspectValue<V> | undefined;\n\tprivate get userInspectValue(): InspectValue<V> {\n\t\tif (!this._userInspectValue) {\n\t\t\tthis._userInspectValue = this.userConfiguration.inspect<V>(this.key, this.overrides.overrideIdentifier);\n\t\t}\n\t\treturn this._userInspectValue;\n\t}\n\n\tget user(): IInspectValue<V> | undefined {\n\t\treturn this.toInspectValue(this.userInspectValue);\n\t}\n\n}\n\nexport class Configuration {\n\n\tprivate _workspaceConsolidatedConfiguration: ConfigurationModel | null = null;\n\tprivate _foldersConsolidatedConfigurations = new ResourceMap<ConfigurationModel>();\n\n\tconstructor(\n\t\tprivate _defaultConfiguration: ConfigurationModel,\n\t\tprivate _policyConfiguration: ConfigurationModel,\n\t\tprivate _applicationConfiguration: ConfigurationModel,\n\t\tprivate _localUserConfiguration: ConfigurationModel,\n\t\tprivate _remoteUserConfiguration: ConfigurationModel,\n\t\tprivate _workspaceConfiguration: ConfigurationModel,\n\t\tprivate _folderConfigurations: ResourceMap<ConfigurationModel>,\n\t\tprivate _memoryConfiguration: ConfigurationModel,\n\t\tprivate _memoryConfigurationByResource: ResourceMap<ConfigurationModel>,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t}\n\n\tgetValue(section: string | undefined, overrides: IConfigurationOverrides, workspace: Workspace | undefined): unknown {\n\t\tconst consolidateConfigurationModel = this.getConsolidatedConfigurationModel(section, overrides, workspace);\n\t\treturn consolidateConfigurationModel.getValue(section);\n\t}\n\n\tupdateValue(key: string, value: unknown, overrides: IConfigurationUpdateOverrides = {}): void {\n\t\tlet memoryConfiguration: ConfigurationModel | undefined;\n\t\tif (overrides.resource) {\n\t\t\tmemoryConfiguration = this._memoryConfigurationByResource.get(overrides.resource);\n\t\t\tif (!memoryConfiguration) {\n\t\t\t\tmemoryConfiguration = ConfigurationModel.createEmptyModel(this.logService);\n\t\t\t\tthis._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);\n\t\t\t}\n\t\t} else {\n\t\t\tmemoryConfiguration = this._memoryConfiguration;\n\t\t}\n\n\t\tif (value === undefined) {\n\t\t\tmemoryConfiguration.removeValue(key);\n\t\t} else {\n\t\t\tmemoryConfiguration.setValue(key, value);\n\t\t}\n\n\t\tif (!overrides.resource) {\n\t\t\tthis._workspaceConsolidatedConfiguration = null;\n\t\t}\n\t}\n\n\tinspect<C>(key: string, overrides: IConfigurationOverrides, workspace: Workspace | undefined): IConfigurationValue<C> {\n\t\tconst consolidateConfigurationModel = this.getConsolidatedConfigurationModel(key, overrides, workspace);\n\t\tconst folderConfigurationModel = this.getFolderConfigurationModelForResource(overrides.resource, workspace);\n\t\tconst memoryConfigurationModel = overrides.resource ? this._memoryConfigurationByResource.get(overrides.resource) || this._memoryConfiguration : this._memoryConfiguration;\n\t\tconst overrideIdentifiers = new Set<string>();\n\t\tfor (const override of consolidateConfigurationModel.overrides) {\n\t\t\tfor (const overrideIdentifier of override.identifiers) {\n\t\t\t\tif (consolidateConfigurationModel.getOverrideValue(key, overrideIdentifier) !== undefined) {\n\t\t\t\t\toverrideIdentifiers.add(overrideIdentifier);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new ConfigurationInspectValue<C>(\n\t\t\tkey,\n\t\t\toverrides,\n\t\t\tconsolidateConfigurationModel.getValue<C>(key),\n\t\t\toverrideIdentifiers.size ? [...overrideIdentifiers] : undefined,\n\t\t\tthis._defaultConfiguration,\n\t\t\tthis._policyConfiguration.isEmpty() ? undefined : this._policyConfiguration,\n\t\t\tthis.applicationConfiguration.isEmpty() ? undefined : this.applicationConfiguration,\n\t\t\tthis.userConfiguration,\n\t\t\tthis.localUserConfiguration,\n\t\t\tthis.remoteUserConfiguration,\n\t\t\tworkspace ? this._workspaceConfiguration : undefined,\n\t\t\tfolderConfigurationModel ? folderConfigurationModel : undefined,\n\t\t\tmemoryConfigurationModel\n\t\t);\n\n\t}\n\n\tget applicationConfiguration(): ConfigurationModel {\n\t\treturn this._applicationConfiguration;\n\t}\n\n\tprivate _userConfiguration: ConfigurationModel | null = null;\n\tget userConfiguration(): ConfigurationModel {\n\t\tif (!this._userConfiguration) {\n\t\t\tif (this._remoteUserConfiguration.isEmpty()) {\n\t\t\t\tthis._userConfiguration = this._localUserConfiguration;\n\t\t\t} else {\n\t\t\t\tconst merged = this._localUserConfiguration.merge(this._remoteUserConfiguration);\n\t\t\t\tthis._userConfiguration = new ConfigurationModel(merged.contents, merged.keys, merged.overrides, undefined, this.logService);\n\t\t\t}\n\t\t}\n\t\treturn this._userConfiguration;\n\t}\n\n\tget localUserConfiguration(): ConfigurationModel {\n\t\treturn this._localUserConfiguration;\n\t}\n\n\tget remoteUserConfiguration(): ConfigurationModel {\n\t\treturn this._remoteUserConfiguration;\n\t}\n\n\tprivate getConsolidatedConfigurationModel(section: string | undefined, overrides: IConfigurationOverrides, workspace: Workspace | undefined): ConfigurationModel {\n\t\tlet configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, workspace);\n\t\tif (overrides.overrideIdentifier) {\n\t\t\tconfigurationModel = configurationModel.override(overrides.overrideIdentifier);\n\t\t}\n\t\tif (!this._policyConfiguration.isEmpty() && this._policyConfiguration.getValue(section) !== undefined) {\n\t\t\t// clone by merging\n\t\t\tconfigurationModel = configurationModel.merge();\n\t\t\tfor (const key of this._policyConfiguration.keys) {\n\t\t\t\tconfigurationModel.setValue(key, this._policyConfiguration.getValue(key));\n\t\t\t}\n\t\t}\n\t\treturn configurationModel;\n\t}\n\n\tprivate getConsolidatedConfigurationModelForResource({ resource }: IConfigurationOverrides, workspace: Workspace | undefined): ConfigurationModel {\n\t\tlet consolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\n\n\t\tif (workspace && resource) {\n\t\t\tconst root = workspace.getFolder(resource);\n\t\t\tif (root) {\n\t\t\t\tconsolidateConfiguration = this.getFolderConsolidatedConfiguration(root.uri) || consolidateConfiguration;\n\t\t\t}\n\t\t\tconst memoryConfigurationForResource = this._memoryConfigurationByResource.get(resource);\n\t\t\tif (memoryConfigurationForResource) {\n\t\t\t\tconsolidateConfiguration = consolidateConfiguration.merge(memoryConfigurationForResource);\n\t\t\t}\n\t\t}\n\n\t\treturn consolidateConfiguration;\n\t}\n\n\tprivate getWorkspaceConsolidatedConfiguration(): ConfigurationModel {\n\t\tif (!this._workspaceConsolidatedConfiguration) {\n\t\t\tthis._workspaceConsolidatedConfiguration = this._defaultConfiguration.merge(this.applicationConfiguration, this.userConfiguration, this._workspaceConfiguration, this._memoryConfiguration);\n\t\t}\n\t\treturn this._workspaceConsolidatedConfiguration;\n\t}\n\n\tprivate getFolderConsolidatedConfiguration(folder: URI): ConfigurationModel {\n\t\tlet folderConsolidatedConfiguration = this._foldersConsolidatedConfigurations.get(folder);\n\t\tif (!folderConsolidatedConfiguration) {\n\t\t\tconst workspaceConsolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\n\t\t\tconst folderConfiguration = this._folderConfigurations.get(folder);\n\t\t\tif (folderConfiguration) {\n\t\t\t\tfolderConsolidatedConfiguration = workspaceConsolidateConfiguration.merge(folderConfiguration);\n\t\t\t\tthis._foldersConsolidatedConfigurations.set(folder, folderConsolidatedConfiguration);\n\t\t\t} else {\n\t\t\t\tfolderConsolidatedConfiguration = workspaceConsolidateConfiguration;\n\t\t\t}\n\t\t}\n\t\treturn folderConsolidatedConfiguration;\n\t}\n\n\tprivate getFolderConfigurationModelForResource(resource: URI | null | undefined, workspace: Workspace | undefined): ConfigurationModel | undefined {\n\t\tif (workspace && resource) {\n\t\t\tconst root = workspace.getFolder(resource);\n\t\t\tif (root) {\n\t\t\t\treturn this._folderConfigurations.get(root.uri);\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\ttoData(): IConfigurationData {\n\t\treturn {\n\t\t\tdefaults: {\n\t\t\t\tcontents: this._defaultConfiguration.contents,\n\t\t\t\toverrides: this._defaultConfiguration.overrides,\n\t\t\t\tkeys: this._defaultConfiguration.keys,\n\t\t\t},\n\t\t\tpolicy: {\n\t\t\t\tcontents: this._policyConfiguration.contents,\n\t\t\t\toverrides: this._policyConfiguration.overrides,\n\t\t\t\tkeys: this._policyConfiguration.keys\n\t\t\t},\n\t\t\tapplication: {\n\t\t\t\tcontents: this.applicationConfiguration.contents,\n\t\t\t\toverrides: this.applicationConfiguration.overrides,\n\t\t\t\tkeys: this.applicationConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.applicationConfiguration.raw) ? undefined : this.applicationConfiguration.raw\n\t\t\t},\n\t\t\tuserLocal: {\n\t\t\t\tcontents: this.localUserConfiguration.contents,\n\t\t\t\toverrides: this.localUserConfiguration.overrides,\n\t\t\t\tkeys: this.localUserConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.localUserConfiguration.raw) ? undefined : this.localUserConfiguration.raw\n\t\t\t},\n\t\t\tuserRemote: {\n\t\t\t\tcontents: this.remoteUserConfiguration.contents,\n\t\t\t\toverrides: this.remoteUserConfiguration.overrides,\n\t\t\t\tkeys: this.remoteUserConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.remoteUserConfiguration.raw) ? undefined : this.remoteUserConfiguration.raw\n\t\t\t},\n\t\t\tworkspace: {\n\t\t\t\tcontents: this._workspaceConfiguration.contents,\n\t\t\t\toverrides: this._workspaceConfiguration.overrides,\n\t\t\t\tkeys: this._workspaceConfiguration.keys\n\t\t\t},\n\t\t\tfolders: [...this._folderConfigurations.keys()].reduce<[UriComponents, IConfigurationModel][]>((result, folder) => {\n\t\t\t\tconst { contents, overrides, keys } = this._folderConfigurations.get(folder)!;\n\t\t\t\tresult.push([folder, { contents, overrides, keys }]);\n\t\t\t\treturn result;\n\t\t\t}, [])\n\t\t};\n\t}\n\n\tstatic parse(data: IConfigurationData, logService: ILogService): Configuration {\n\t\tconst defaultConfiguration = this.parseConfigurationModel(data.defaults, logService);\n\t\tconst policyConfiguration = this.parseConfigurationModel(data.policy, logService);\n\t\tconst applicationConfiguration = this.parseConfigurationModel(data.application, logService);\n\t\tconst userLocalConfiguration = this.parseConfigurationModel(data.userLocal, logService);\n\t\tconst userRemoteConfiguration = this.parseConfigurationModel(data.userRemote, logService);\n\t\tconst workspaceConfiguration = this.parseConfigurationModel(data.workspace, logService);\n\t\tconst folders: ResourceMap<ConfigurationModel> = data.folders.reduce((result, value) => {\n\t\t\tresult.set(URI.revive(value[0]), this.parseConfigurationModel(value[1], logService));\n\t\t\treturn result;\n\t\t}, new ResourceMap<ConfigurationModel>());\n\t\treturn new Configuration(\n\t\t\tdefaultConfiguration,\n\t\t\tpolicyConfiguration,\n\t\t\tapplicationConfiguration,\n\t\t\tuserLocalConfiguration,\n\t\t\tuserRemoteConfiguration,\n\t\t\tworkspaceConfiguration,\n\t\t\tfolders,\n\t\t\tConfigurationModel.createEmptyModel(logService),\n\t\t\tnew ResourceMap<ConfigurationModel>(),\n\t\t\tlogService\n\t\t);\n\t}\n\n\tprivate static parseConfigurationModel(model: IConfigurationModel, logService: ILogService): ConfigurationModel {\n\t\treturn new ConfigurationModel(model.contents, model.keys, model.overrides, model.raw, logService);\n\t}\n\n}\n\nexport class ConfigurationChangeEvent implements IConfigurationChangeEvent {\n\n\tprivate readonly _marker = '\\n';\n\tprivate readonly _markerCode1 = this._marker.charCodeAt(0);\n\tprivate readonly _markerCode2 = '.'.charCodeAt(0);\n\tprivate readonly _affectsConfigStr: string;\n\n\treadonly affectedKeys = new Set<string>();\n\tsource!: ConfigurationTarget;\n\n\tconstructor(\n\t\treadonly change: IConfigurationChange,\n\t\tprivate readonly previous: { workspace?: Workspace; data: IConfigurationData } | undefined,\n\t\tprivate readonly currentConfiguraiton: Configuration,\n\t\tprivate readonly currentWorkspace: Workspace | undefined,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t\tfor (const key of change.keys) {\n\t\t\tthis.affectedKeys.add(key);\n\t\t}\n\t\tfor (const [, keys] of change.overrides) {\n\t\t\tfor (const key of keys) {\n\t\t\t\tthis.affectedKeys.add(key);\n\t\t\t}\n\t\t}\n\n\t\t// Example: '\\nfoo.bar\\nabc.def\\n'\n\t\tthis._affectsConfigStr = this._marker;\n\t\tfor (const key of this.affectedKeys) {\n\t\t\tthis._affectsConfigStr += key + this._marker;\n\t\t}\n\t}\n\n\tprivate _previousConfiguration: Configuration | undefined = undefined;\n\tget previousConfiguration(): Configuration | undefined {\n\t\tif (!this._previousConfiguration && this.previous) {\n\t\t\tthis._previousConfiguration = Configuration.parse(this.previous.data, this.logService);\n\t\t}\n\t\treturn this._previousConfiguration;\n\t}\n\n\taffectsConfiguration(section: string, overrides?: IConfigurationOverrides): boolean {\n\t\t// we have one large string with all keys that have changed. we pad (marker) the section\n\t\t// and check that either find it padded or before a segment character\n\t\tconst needle = this._marker + section;\n\t\tconst idx = this._affectsConfigStr.indexOf(needle);\n\t\tif (idx < 0) {\n\t\t\t// NOT: (marker + section)\n\t\t\treturn false;\n\t\t}\n\t\tconst pos = idx + needle.length;\n\t\tif (pos >= this._affectsConfigStr.length) {\n\t\t\treturn false;\n\t\t}\n\t\tconst code = this._affectsConfigStr.charCodeAt(pos);\n\t\tif (code !== this._markerCode1 && code !== this._markerCode2) {\n\t\t\t// NOT: section + (marker | segment)\n\t\t\treturn false;\n\t\t}\n\t\tif (overrides) {\n\t\t\tconst value1 = this.previousConfiguration ? this.previousConfiguration.getValue(section, overrides, this.previous?.workspace) : undefined;\n\t\t\tconst value2 = this.currentConfiguraiton.getValue(section, overrides, this.currentWorkspace);\n\t\t\treturn !objects.equals(value1, value2);\n\t\t}\n\t\treturn true;\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as arrays from '../../../base/common/arrays.js';\nimport { IStringDictionary } from '../../../base/common/collections.js';\nimport { ResourceMap } from '../../../base/common/map.js';\nimport * as objects from '../../../base/common/objects.js';\nimport * as types from '../../../base/common/types.js';\nimport { URI, UriComponents } from '../../../base/common/uri.js';\nimport { addToValueTree, ConfigurationTarget, getConfigurationValue, IConfigurationChange, IConfigurationChangeEvent, IConfigurationData, IConfigurationModel, IConfigurationOverrides, IConfigurationUpdateOverrides, IConfigurationValue, IInspectValue, IOverrides, removeFromValueTree, toValuesTree } from './configuration.js';\nimport { ConfigurationScope, Extensions, IConfigurationPropertySchema, IConfigurationRegistry, overrideIdentifiersFromKey, OVERRIDE_PROPERTY_REGEX, IRegisteredConfigurationPropertySchema } from './configurationRegistry.js';\nimport { ILogService } from '../../log/common/log.js';\nimport { Registry } from '../../registry/common/platform.js';\nimport { Workspace } from '../../workspace/common/workspace.js';\n\nfunction freeze<T>(data: T): T {\n\treturn Object.isFrozen(data) ? data : objects.deepFreeze(data);\n}\n\ntype InspectValue<V> = IInspectValue<V> & { merged?: V };\n\nexport class ConfigurationModel implements IConfigurationModel {\n\n\tstatic createEmptyModel(logService: ILogService): ConfigurationModel {\n\t\treturn new ConfigurationModel({}, [], [], undefined, logService);\n\t}\n\n\tprivate readonly overrideConfigurations = new Map<string, ConfigurationModel>();\n\n\tconstructor(\n\t\tprivate readonly _contents: IStringDictionary<unknown>,\n\t\tprivate readonly _keys: string[],\n\t\tprivate readonly _overrides: IOverrides[],\n\t\tprivate readonly _raw: IStringDictionary<unknown> | ReadonlyArray<IStringDictionary<unknown> | ConfigurationModel> | undefined,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t}\n\n\tprivate _rawConfiguration: ConfigurationModel | undefined;\n\tget rawConfiguration(): ConfigurationModel {\n\t\tif (!this._rawConfiguration) {\n\t\t\tif (this._raw) {\n\t\t\t\tconst rawConfigurationModels = (Array.isArray(this._raw) ? this._raw : [this._raw]).map(raw => {\n\t\t\t\t\tif (raw instanceof ConfigurationModel) {\n\t\t\t\t\t\treturn raw;\n\t\t\t\t\t}\n\t\t\t\t\tconst parser = new ConfigurationModelParser('', this.logService);\n\t\t\t\t\tparser.parseRaw(raw);\n\t\t\t\t\treturn parser.configurationModel;\n\t\t\t\t});\n\t\t\t\tthis._rawConfiguration = rawConfigurationModels.reduce((previous, current) => current === previous ? current : previous.merge(current), rawConfigurationModels[0]);\n\t\t\t} else {\n\t\t\t\t// raw is same as current\n\t\t\t\tthis._rawConfiguration = this;\n\t\t\t}\n\t\t}\n\t\treturn this._rawConfiguration;\n\t}\n\n\tget contents(): IStringDictionary<unknown> {\n\t\treturn this._contents;\n\t}\n\n\tget overrides(): IOverrides[] {\n\t\treturn this._overrides;\n\t}\n\n\tget keys(): string[] {\n\t\treturn this._keys;\n\t}\n\n\tget raw(): IStringDictionary<unknown> | IStringDictionary<unknown>[] | undefined {\n\t\tif (!this._raw) {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (Array.isArray(this._raw) && this._raw.every(raw => raw instanceof ConfigurationModel)) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn this._raw as IStringDictionary<unknown> | IStringDictionary<unknown>[];\n\t}\n\n\tisEmpty(): boolean {\n\t\treturn this._keys.length === 0 && Object.keys(this._contents).length === 0 && this._overrides.length === 0;\n\t}\n\n\tgetValue<V>(section: string | undefined): V | undefined {\n\t\treturn section ? getConfigurationValue<V>(this.contents, section) : this.contents as V;\n\t}\n\n\tinspect<V>(section: string | undefined, overrideIdentifier?: string | null): InspectValue<V> {\n\t\tconst that = this;\n\t\treturn {\n\t\t\tget value() {\n\t\t\t\treturn freeze(that.rawConfiguration.getValue<V>(section));\n\t\t\t},\n\t\t\tget override() {\n\t\t\t\treturn overrideIdentifier ? freeze(that.rawConfiguration.getOverrideValue<V>(section, overrideIdentifier)) : undefined;\n\t\t\t},\n\t\t\tget merged() {\n\t\t\t\treturn freeze(overrideIdentifier ? that.rawConfiguration.override(overrideIdentifier).getValue<V>(section) : that.rawConfiguration.getValue<V>(section));\n\t\t\t},\n\t\t\tget overrides() {\n\t\t\t\tconst overrides: { readonly identifiers: string[]; readonly value: V }[] = [];\n\t\t\t\tfor (const { contents, identifiers, keys } of that.rawConfiguration.overrides) {\n\t\t\t\t\tconst value = new ConfigurationModel(contents, keys, [], undefined, that.logService).getValue<V>(section);\n\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\toverrides.push({ identifiers, value });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn overrides.length ? freeze(overrides) : undefined;\n\t\t\t}\n\t\t};\n\t}\n\n\tgetOverrideValue<V>(section: string | undefined, overrideIdentifier: string): V | undefined {\n\t\tconst overrideContents = this.getContentsForOverrideIdentifer(overrideIdentifier);\n\t\treturn overrideContents\n\t\t\t? section ? getConfigurationValue<V>(overrideContents, section) : overrideContents as V\n\t\t\t: undefined;\n\t}\n\n\toverride(identifier: string): ConfigurationModel {\n\t\tlet overrideConfigurationModel = this.overrideConfigurations.get(identifier);\n\t\tif (!overrideConfigurationModel) {\n\t\t\toverrideConfigurationModel = this.createOverrideConfigurationModel(identifier);\n\t\t\tthis.overrideConfigurations.set(identifier, overrideConfigurationModel);\n\t\t}\n\t\treturn overrideConfigurationModel;\n\t}\n\n\tmerge(...others: ConfigurationModel[]): ConfigurationModel {\n\t\tconst contents = objects.deepClone(this.contents);\n\t\tconst overrides = objects.deepClone(this.overrides);\n\t\tconst keys = [...this.keys];\n\t\tconst raws = this._raw ? Array.isArray(this._raw) ? [...this._raw] : [this._raw] : [this];\n\n\t\tfor (const other of others) {\n\t\t\traws.push(...(other._raw ? Array.isArray(other._raw) ? other._raw : [other._raw] : [other]));\n\t\t\tif (other.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.mergeContents(contents, other.contents);\n\n\t\t\tfor (const otherOverride of other.overrides) {\n\t\t\t\tconst [override] = overrides.filter(o => arrays.equals(o.identifiers, otherOverride.identifiers));\n\t\t\t\tif (override) {\n\t\t\t\t\tthis.mergeContents(override.contents, otherOverride.contents);\n\t\t\t\t\toverride.keys.push(...otherOverride.keys);\n\t\t\t\t\toverride.keys = arrays.distinct(override.keys);\n\t\t\t\t} else {\n\t\t\t\t\toverrides.push(objects.deepClone(otherOverride));\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (const key of other.keys) {\n\t\t\t\tif (keys.indexOf(key) === -1) {\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn new ConfigurationModel(contents, keys, overrides, !raws.length || raws.every(raw => raw instanceof ConfigurationModel) ? undefined : raws, this.logService);\n\t}\n\n\tprivate createOverrideConfigurationModel(identifier: string): ConfigurationModel {\n\t\tconst overrideContents = this.getContentsForOverrideIdentifer(identifier);\n\n\t\tif (!overrideContents || typeof overrideContents !== 'object' || !Object.keys(overrideContents).length) {\n\t\t\t// If there are no valid overrides, return self\n\t\t\treturn this;\n\t\t}\n\n\t\tconst contents: IStringDictionary<unknown> = {};\n\t\tfor (const key of arrays.distinct([...Object.keys(this.contents), ...Object.keys(overrideContents)])) {\n\n\t\t\tlet contentsForKey = this.contents[key];\n\t\t\tconst overrideContentsForKey = overrideContents[key];\n\n\t\t\t// If there are override contents for the key, clone and merge otherwise use base contents\n\t\t\tif (overrideContentsForKey) {\n\t\t\t\t// Clone and merge only if base contents and override contents are of type object otherwise just override\n\t\t\t\tif (typeof contentsForKey === 'object' && typeof overrideContentsForKey === 'object') {\n\t\t\t\t\tcontentsForKey = objects.deepClone(contentsForKey);\n\t\t\t\t\tthis.mergeContents(contentsForKey as IStringDictionary<unknown>, overrideContentsForKey as IStringDictionary<unknown>);\n\t\t\t\t} else {\n\t\t\t\t\tcontentsForKey = overrideContentsForKey;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcontents[key] = contentsForKey;\n\t\t}\n\n\t\treturn new ConfigurationModel(contents, this.keys, this.overrides, undefined, this.logService);\n\t}\n\n\tprivate mergeContents(source: IStringDictionary<unknown>, target: IStringDictionary<unknown>): void {\n\t\tfor (const key of Object.keys(target)) {\n\t\t\tif (key in source) {\n\t\t\t\tif (types.isObject(source[key]) && types.isObject(target[key])) {\n\t\t\t\t\tthis.mergeContents(source[key] as IStringDictionary<unknown>, target[key] as IStringDictionary<unknown>);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource[key] = objects.deepClone(target[key]);\n\t\t}\n\t}\n\n\tprivate getContentsForOverrideIdentifer(identifier: string): IStringDictionary<unknown> | null {\n\t\tlet contentsForIdentifierOnly: IStringDictionary<unknown> | null = null;\n\t\tlet contents: IStringDictionary<unknown> | null = null;\n\t\tconst mergeContents = (contentsToMerge: IStringDictionary<unknown> | null) => {\n\t\t\tif (contentsToMerge) {\n\t\t\t\tif (contents) {\n\t\t\t\t\tthis.mergeContents(contents, contentsToMerge);\n\t\t\t\t} else {\n\t\t\t\t\tcontents = objects.deepClone(contentsToMerge);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tfor (const override of this.overrides) {\n\t\t\tif (override.identifiers.length === 1 && override.identifiers[0] === identifier) {\n\t\t\t\tcontentsForIdentifierOnly = override.contents;\n\t\t\t} else if (override.identifiers.includes(identifier)) {\n\t\t\t\tmergeContents(override.contents);\n\t\t\t}\n\t\t}\n\t\t// Merge contents of the identifier only at the end to take precedence.\n\t\tmergeContents(contentsForIdentifierOnly);\n\t\treturn contents;\n\t}\n\n\ttoJSON(): IConfigurationModel {\n\t\treturn {\n\t\t\tcontents: this.contents,\n\t\t\toverrides: this.overrides,\n\t\t\tkeys: this.keys\n\t\t};\n\t}\n\n\tpublic setValue(key: string, value: unknown): void {\n\t\tthis.updateValue(key, value, false);\n\t}\n\n\tpublic removeValue(key: string): void {\n\t\tconst index = this.keys.indexOf(key);\n\t\tif (index === -1) {\n\t\t\treturn;\n\t\t}\n\t\tthis.keys.splice(index, 1);\n\t\tremoveFromValueTree(this.contents, key);\n\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\tthis.overrides.splice(this.overrides.findIndex(o => arrays.equals(o.identifiers, overrideIdentifiersFromKey(key))), 1);\n\t\t}\n\t}\n\n\tprivate updateValue(key: string, value: unknown, add: boolean): void {\n\t\taddToValueTree(this.contents, key, value, e => this.logService.error(e));\n\t\tadd = add || this.keys.indexOf(key) === -1;\n\t\tif (add) {\n\t\t\tthis.keys.push(key);\n\t\t}\n\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\tconst overrideContents = this.contents[key] as IStringDictionary<unknown>;\n\t\t\tconst identifiers = overrideIdentifiersFromKey(key);\n\t\t\tconst override = {\n\t\t\t\tidentifiers,\n\t\t\t\tkeys: Object.keys(overrideContents),\n\t\t\t\tcontents: toValuesTree(overrideContents, message => this.logService.error(message)),\n\t\t\t};\n\t\t\tconst index = this.overrides.findIndex(o => arrays.equals(o.identifiers, identifiers));\n\t\t\tif (index !== -1) {\n\t\t\t\tthis.overrides[index] = override;\n\t\t\t} else {\n\t\t\t\tthis.overrides.push(override);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport interface ConfigurationParseOptions {\n\tskipUnregistered?: boolean;\n\tscopes?: ConfigurationScope[];\n\tskipRestricted?: boolean;\n\tinclude?: string[];\n\texclude?: string[];\n}\n\nexport class ConfigurationModelParser {\n\n\tprivate _raw: IStringDictionary<unknown> | null = null;\n\tprivate _configurationModel: ConfigurationModel | null = null;\n\tprivate _restrictedConfigurations: string[] = [];\n\n\tconstructor(\n\t\tprotected readonly _name: string,\n\t\tprotected readonly logService: ILogService\n\t) { }\n\n\tget configurationModel(): ConfigurationModel {\n\t\treturn this._configurationModel || ConfigurationModel.createEmptyModel(this.logService);\n\t}\n\n\tpublic parseRaw(raw: IStringDictionary<unknown>, options?: ConfigurationParseOptions): void {\n\t\tthis._raw = raw;\n\t\tconst { contents, keys, overrides, restricted, hasExcludedProperties } = this.doParseRaw(raw, options);\n\t\tthis._configurationModel = new ConfigurationModel(contents, keys, overrides, hasExcludedProperties ? [raw] : undefined /* raw has not changed */, this.logService);\n\t\tthis._restrictedConfigurations = restricted || [];\n\t}\n\n\tprotected doParseRaw(raw: IStringDictionary<unknown>, options?: ConfigurationParseOptions): IConfigurationModel & { restricted?: string[]; hasExcludedProperties?: boolean } {\n\t\tconst registry = Registry.as<IConfigurationRegistry>(Extensions.Configuration);\n\t\tconst configurationProperties = registry.getConfigurationProperties();\n\t\tconst excludedConfigurationProperties = registry.getExcludedConfigurationProperties();\n\t\tconst filtered = this.filter(raw, configurationProperties, excludedConfigurationProperties, true, options);\n\t\traw = filtered.raw;\n\t\tconst contents = toValuesTree(raw, message => this.logService.error(`Conflict in settings file ${this._name}: ${message}`));\n\t\tconst keys = Object.keys(raw);\n\t\tconst overrides = this.toOverrides(raw, message => this.logService.error(`Conflict in settings file ${this._name}: ${message}`));\n\t\treturn { contents, keys, overrides, restricted: filtered.restricted, hasExcludedProperties: filtered.hasExcludedProperties };\n\t}\n\n\tprivate filter(properties: IStringDictionary<unknown>, configurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, excludedConfigurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, filterOverriddenProperties: boolean, options?: ConfigurationParseOptions): { raw: IStringDictionary<unknown>; restricted: string[]; hasExcludedProperties: boolean } {\n\t\tlet hasExcludedProperties = false;\n\t\tif (!options?.scopes && !options?.skipRestricted && !options?.skipUnregistered && !options?.exclude?.length) {\n\t\t\treturn { raw: properties, restricted: [], hasExcludedProperties };\n\t\t}\n\t\tconst raw: IStringDictionary<unknown> = {};\n\t\tconst restricted: string[] = [];\n\t\tfor (const key in properties) {\n\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key) && filterOverriddenProperties) {\n\t\t\t\tconst result = this.filter(properties[key] as IStringDictionary<unknown>, configurationProperties, excludedConfigurationProperties, false, options);\n\t\t\t\traw[key] = result.raw;\n\t\t\t\thasExcludedProperties = hasExcludedProperties || result.hasExcludedProperties;\n\t\t\t\trestricted.push(...result.restricted);\n\t\t\t} else {\n\t\t\t\tconst propertySchema = configurationProperties[key];\n\t\t\t\tif (propertySchema?.restricted) {\n\t\t\t\t\trestricted.push(key);\n\t\t\t\t}\n\t\t\t\tif (this.shouldInclude(key, propertySchema, excludedConfigurationProperties, options)) {\n\t\t\t\t\traw[key] = properties[key];\n\t\t\t\t} else {\n\t\t\t\t\thasExcludedProperties = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn { raw, restricted, hasExcludedProperties };\n\t}\n\n\tprivate shouldInclude(key: string, propertySchema: IConfigurationPropertySchema | undefined, excludedConfigurationProperties: IStringDictionary<IRegisteredConfigurationPropertySchema>, options: ConfigurationParseOptions): boolean {\n\t\tif (options.exclude?.includes(key)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (options.include?.includes(key)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (options.skipRestricted && propertySchema?.restricted) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (options.skipUnregistered && !propertySchema) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst schema = propertySchema ?? excludedConfigurationProperties[key];\n\t\tconst scope = schema ? typeof schema.scope !== 'undefined' ? schema.scope : ConfigurationScope.WINDOW : undefined;\n\t\tif (scope === undefined || options.scopes === undefined) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn options.scopes.includes(scope);\n\t}\n\n\tprivate toOverrides(raw: IStringDictionary<unknown>, conflictReporter: (message: string) => void): IOverrides[] {\n\t\tconst overrides: IOverrides[] = [];\n\t\tfor (const key of Object.keys(raw)) {\n\t\t\tif (OVERRIDE_PROPERTY_REGEX.test(key)) {\n\t\t\t\tconst overrideRaw: IStringDictionary<unknown> = {};\n\t\t\t\tconst rawKey = raw[key] as IStringDictionary<unknown>;\n\t\t\t\tfor (const keyInOverrideRaw in rawKey) {\n\t\t\t\t\toverrideRaw[keyInOverrideRaw] = rawKey[keyInOverrideRaw];\n\t\t\t\t}\n\t\t\t\toverrides.push({\n\t\t\t\t\tidentifiers: overrideIdentifiersFromKey(key),\n\t\t\t\t\tkeys: Object.keys(overrideRaw),\n\t\t\t\t\tcontents: toValuesTree(overrideRaw, conflictReporter)\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\treturn overrides;\n\t}\n\n}\n\nclass ConfigurationInspectValue<V> implements IConfigurationValue<V> {\n\n\tconstructor(\n\t\tprivate readonly key: string,\n\t\tprivate readonly overrides: IConfigurationOverrides,\n\t\tprivate readonly _value: V | undefined,\n\t\treadonly overrideIdentifiers: string[] | undefined,\n\t\tprivate readonly defaultConfiguration: ConfigurationModel,\n\t\tprivate readonly policyConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly applicationConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly userConfiguration: ConfigurationModel,\n\t\tprivate readonly localUserConfiguration: ConfigurationModel,\n\t\tprivate readonly remoteUserConfiguration: ConfigurationModel,\n\t\tprivate readonly workspaceConfiguration: ConfigurationModel | undefined,\n\t\tprivate readonly folderConfigurationModel: ConfigurationModel | undefined,\n\t\tprivate readonly memoryConfigurationModel: ConfigurationModel\n\t) {\n\t}\n\n\tprivate toInspectValue(inspectValue: IInspectValue<V> | undefined | null): IInspectValue<V> | undefined {\n\t\treturn inspectValue?.value !== undefined || inspectValue?.override !== undefined || inspectValue?.overrides !== undefined ? inspectValue : undefined;\n\t}\n\n\tprivate _userInspectValue: InspectValue<V> | undefined;\n\tprivate get userInspectValue(): InspectValue<V> {\n\t\tif (!this._userInspectValue) {\n\t\t\tthis._userInspectValue = this.userConfiguration.inspect<V>(this.key, this.overrides.overrideIdentifier);\n\t\t}\n\t\treturn this._userInspectValue;\n\t}\n\n\tget user(): IInspectValue<V> | undefined {\n\t\treturn this.toInspectValue(this.userInspectValue);\n\t}\n\n}\n\nexport class Configuration {\n\n\tprivate _workspaceConsolidatedConfiguration: ConfigurationModel | null = null;\n\tprivate _foldersConsolidatedConfigurations = new ResourceMap<ConfigurationModel>();\n\n\tconstructor(\n\t\tprivate _defaultConfiguration: ConfigurationModel,\n\t\tprivate _policyConfiguration: ConfigurationModel,\n\t\tprivate _applicationConfiguration: ConfigurationModel,\n\t\tprivate _localUserConfiguration: ConfigurationModel,\n\t\tprivate _remoteUserConfiguration: ConfigurationModel,\n\t\tprivate _workspaceConfiguration: ConfigurationModel,\n\t\tprivate _folderConfigurations: ResourceMap<ConfigurationModel>,\n\t\tprivate _memoryConfiguration: ConfigurationModel,\n\t\tprivate _memoryConfigurationByResource: ResourceMap<ConfigurationModel>,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t}\n\n\tgetValue(section: string | undefined, overrides: IConfigurationOverrides, workspace: Workspace | undefined): unknown {\n\t\tconst consolidateConfigurationModel = this.getConsolidatedConfigurationModel(section, overrides, workspace);\n\t\treturn consolidateConfigurationModel.getValue(section);\n\t}\n\n\tupdateValue(key: string, value: unknown, overrides: IConfigurationUpdateOverrides = {}): void {\n\t\tlet memoryConfiguration: ConfigurationModel | undefined;\n\t\tif (overrides.resource) {\n\t\t\tmemoryConfiguration = this._memoryConfigurationByResource.get(overrides.resource);\n\t\t\tif (!memoryConfiguration) {\n\t\t\t\tmemoryConfiguration = ConfigurationModel.createEmptyModel(this.logService);\n\t\t\t\tthis._memoryConfigurationByResource.set(overrides.resource, memoryConfiguration);\n\t\t\t}\n\t\t} else {\n\t\t\tmemoryConfiguration = this._memoryConfiguration;\n\t\t}\n\n\t\tif (value === undefined) {\n\t\t\tmemoryConfiguration.removeValue(key);\n\t\t} else {\n\t\t\tmemoryConfiguration.setValue(key, value);\n\t\t}\n\n\t\tif (!overrides.resource) {\n\t\t\tthis._workspaceConsolidatedConfiguration = null;\n\t\t}\n\t}\n\n\tinspect<C>(key: string, overrides: IConfigurationOverrides, workspace: Workspace | undefined): IConfigurationValue<C> {\n\t\tconst consolidateConfigurationModel = this.getConsolidatedConfigurationModel(key, overrides, workspace);\n\t\tconst folderConfigurationModel = this.getFolderConfigurationModelForResource(overrides.resource, workspace);\n\t\tconst memoryConfigurationModel = overrides.resource ? this._memoryConfigurationByResource.get(overrides.resource) || this._memoryConfiguration : this._memoryConfiguration;\n\t\tconst overrideIdentifiers = new Set<string>();\n\t\tfor (const override of consolidateConfigurationModel.overrides) {\n\t\t\tfor (const overrideIdentifier of override.identifiers) {\n\t\t\t\tif (consolidateConfigurationModel.getOverrideValue(key, overrideIdentifier) !== undefined) {\n\t\t\t\t\toverrideIdentifiers.add(overrideIdentifier);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn new ConfigurationInspectValue<C>(\n\t\t\tkey,\n\t\t\toverrides,\n\t\t\tconsolidateConfigurationModel.getValue<C>(key),\n\t\t\toverrideIdentifiers.size ? [...overrideIdentifiers] : undefined,\n\t\t\tthis._defaultConfiguration,\n\t\t\tthis._policyConfiguration.isEmpty() ? undefined : this._policyConfiguration,\n\t\t\tthis.applicationConfiguration.isEmpty() ? undefined : this.applicationConfiguration,\n\t\t\tthis.userConfiguration,\n\t\t\tthis.localUserConfiguration,\n\t\t\tthis.remoteUserConfiguration,\n\t\t\tworkspace ? this._workspaceConfiguration : undefined,\n\t\t\tfolderConfigurationModel ? folderConfigurationModel : undefined,\n\t\t\tmemoryConfigurationModel\n\t\t);\n\n\t}\n\n\tget applicationConfiguration(): ConfigurationModel {\n\t\treturn this._applicationConfiguration;\n\t}\n\n\tprivate _userConfiguration: ConfigurationModel | null = null;\n\tget userConfiguration(): ConfigurationModel {\n\t\tif (!this._userConfiguration) {\n\t\t\tif (this._remoteUserConfiguration.isEmpty()) {\n\t\t\t\tthis._userConfiguration = this._localUserConfiguration;\n\t\t\t} else {\n\t\t\t\tconst merged = this._localUserConfiguration.merge(this._remoteUserConfiguration);\n\t\t\t\tthis._userConfiguration = new ConfigurationModel(merged.contents, merged.keys, merged.overrides, undefined, this.logService);\n\t\t\t}\n\t\t}\n\t\treturn this._userConfiguration;\n\t}\n\n\tget localUserConfiguration(): ConfigurationModel {\n\t\treturn this._localUserConfiguration;\n\t}\n\n\tget remoteUserConfiguration(): ConfigurationModel {\n\t\treturn this._remoteUserConfiguration;\n\t}\n\n\tprivate getConsolidatedConfigurationModel(section: string | undefined, overrides: IConfigurationOverrides, workspace: Workspace | undefined): ConfigurationModel {\n\t\tlet configurationModel = this.getConsolidatedConfigurationModelForResource(overrides, workspace);\n\t\tif (overrides.overrideIdentifier) {\n\t\t\tconfigurationModel = configurationModel.override(overrides.overrideIdentifier);\n\t\t}\n\t\tif (!this._policyConfiguration.isEmpty() && this._policyConfiguration.getValue(section) !== undefined) {\n\t\t\t// clone by merging\n\t\t\tconfigurationModel = configurationModel.merge();\n\t\t\tfor (const key of this._policyConfiguration.keys) {\n\t\t\t\tconfigurationModel.setValue(key, this._policyConfiguration.getValue(key));\n\t\t\t}\n\t\t}\n\t\treturn configurationModel;\n\t}\n\n\tprivate getConsolidatedConfigurationModelForResource({ resource }: IConfigurationOverrides, workspace: Workspace | undefined): ConfigurationModel {\n\t\tlet consolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\n\n\t\tif (workspace && resource) {\n\t\t\tconst root = workspace.getFolder(resource);\n\t\t\tif (root) {\n\t\t\t\tconsolidateConfiguration = this.getFolderConsolidatedConfiguration(root.uri) || consolidateConfiguration;\n\t\t\t}\n\t\t\tconst memoryConfigurationForResource = this._memoryConfigurationByResource.get(resource);\n\t\t\tif (memoryConfigurationForResource) {\n\t\t\t\tconsolidateConfiguration = consolidateConfiguration.merge(memoryConfigurationForResource);\n\t\t\t}\n\t\t}\n\n\t\treturn consolidateConfiguration;\n\t}\n\n\tprivate getWorkspaceConsolidatedConfiguration(): ConfigurationModel {\n\t\tif (!this._workspaceConsolidatedConfiguration) {\n\t\t\tthis._workspaceConsolidatedConfiguration = this._defaultConfiguration.merge(this.applicationConfiguration, this.userConfiguration, this._workspaceConfiguration, this._memoryConfiguration);\n\t\t}\n\t\treturn this._workspaceConsolidatedConfiguration;\n\t}\n\n\tprivate getFolderConsolidatedConfiguration(folder: URI): ConfigurationModel {\n\t\tlet folderConsolidatedConfiguration = this._foldersConsolidatedConfigurations.get(folder);\n\t\tif (!folderConsolidatedConfiguration) {\n\t\t\tconst workspaceConsolidateConfiguration = this.getWorkspaceConsolidatedConfiguration();\n\t\t\tconst folderConfiguration = this._folderConfigurations.get(folder);\n\t\t\tif (folderConfiguration) {\n\t\t\t\tfolderConsolidatedConfiguration = workspaceConsolidateConfiguration.merge(folderConfiguration);\n\t\t\t\tthis._foldersConsolidatedConfigurations.set(folder, folderConsolidatedConfiguration);\n\t\t\t} else {\n\t\t\t\tfolderConsolidatedConfiguration = workspaceConsolidateConfiguration;\n\t\t\t}\n\t\t}\n\t\treturn folderConsolidatedConfiguration;\n\t}\n\n\tprivate getFolderConfigurationModelForResource(resource: URI | null | undefined, workspace: Workspace | undefined): ConfigurationModel | undefined {\n\t\tif (workspace && resource) {\n\t\t\tconst root = workspace.getFolder(resource);\n\t\t\tif (root) {\n\t\t\t\treturn this._folderConfigurations.get(root.uri);\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\ttoData(): IConfigurationData {\n\t\treturn {\n\t\t\tdefaults: {\n\t\t\t\tcontents: this._defaultConfiguration.contents,\n\t\t\t\toverrides: this._defaultConfiguration.overrides,\n\t\t\t\tkeys: this._defaultConfiguration.keys,\n\t\t\t},\n\t\t\tpolicy: {\n\t\t\t\tcontents: this._policyConfiguration.contents,\n\t\t\t\toverrides: this._policyConfiguration.overrides,\n\t\t\t\tkeys: this._policyConfiguration.keys\n\t\t\t},\n\t\t\tapplication: {\n\t\t\t\tcontents: this.applicationConfiguration.contents,\n\t\t\t\toverrides: this.applicationConfiguration.overrides,\n\t\t\t\tkeys: this.applicationConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.applicationConfiguration.raw) ? undefined : this.applicationConfiguration.raw\n\t\t\t},\n\t\t\tuserLocal: {\n\t\t\t\tcontents: this.localUserConfiguration.contents,\n\t\t\t\toverrides: this.localUserConfiguration.overrides,\n\t\t\t\tkeys: this.localUserConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.localUserConfiguration.raw) ? undefined : this.localUserConfiguration.raw\n\t\t\t},\n\t\t\tuserRemote: {\n\t\t\t\tcontents: this.remoteUserConfiguration.contents,\n\t\t\t\toverrides: this.remoteUserConfiguration.overrides,\n\t\t\t\tkeys: this.remoteUserConfiguration.keys,\n\t\t\t\traw: Array.isArray(this.remoteUserConfiguration.raw) ? undefined : this.remoteUserConfiguration.raw\n\t\t\t},\n\t\t\tworkspace: {\n\t\t\t\tcontents: this._workspaceConfiguration.contents,\n\t\t\t\toverrides: this._workspaceConfiguration.overrides,\n\t\t\t\tkeys: this._workspaceConfiguration.keys\n\t\t\t},\n\t\t\tfolders: [...this._folderConfigurations.keys()].reduce<[UriComponents, IConfigurationModel][]>((result, folder) => {\n\t\t\t\tconst { contents, overrides, keys } = this._folderConfigurations.get(folder)!;\n\t\t\t\tresult.push([folder, { contents, overrides, keys }]);\n\t\t\t\treturn result;\n\t\t\t}, [])\n\t\t};\n\t}\n\n\tstatic parse(data: IConfigurationData, logService: ILogService): Configuration {\n\t\tconst defaultConfiguration = this.parseConfigurationModel(data.defaults, logService);\n\t\tconst policyConfiguration = this.parseConfigurationModel(data.policy, logService);\n\t\tconst applicationConfiguration = this.parseConfigurationModel(data.application, logService);\n\t\tconst userLocalConfiguration = this.parseConfigurationModel(data.userLocal, logService);\n\t\tconst userRemoteConfiguration = this.parseConfigurationModel(data.userRemote, logService);\n\t\tconst workspaceConfiguration = this.parseConfigurationModel(data.workspace, logService);\n\t\tconst folders: ResourceMap<ConfigurationModel> = data.folders.reduce((result, value) => {\n\t\t\tresult.set(URI.revive(value[0]), this.parseConfigurationModel(value[1], logService));\n\t\t\treturn result;\n\t\t}, new ResourceMap<ConfigurationModel>());\n\t\treturn new Configuration(\n\t\t\tdefaultConfiguration,\n\t\t\tpolicyConfiguration,\n\t\t\tapplicationConfiguration,\n\t\t\tuserLocalConfiguration,\n\t\t\tuserRemoteConfiguration,\n\t\t\tworkspaceConfiguration,\n\t\t\tfolders,\n\t\t\tConfigurationModel.createEmptyModel(logService),\n\t\t\tnew ResourceMap<ConfigurationModel>(),\n\t\t\tlogService\n\t\t);\n\t}\n\n\tprivate static parseConfigurationModel(model: IConfigurationModel, logService: ILogService): ConfigurationModel {\n\t\treturn new ConfigurationModel(model.contents, model.keys, model.overrides, model.raw, logService);\n\t}\n\n}\n\nexport class ConfigurationChangeEvent implements IConfigurationChangeEvent {\n\n\tprivate readonly _marker = '\\n';\n\tprivate readonly _markerCode1 = this._marker.charCodeAt(0);\n\tprivate readonly _markerCode2 = '.'.charCodeAt(0);\n\tprivate readonly _affectsConfigStr: string;\n\n\treadonly affectedKeys = new Set<string>();\n\tsource!: ConfigurationTarget;\n\n\tconstructor(\n\t\treadonly change: IConfigurationChange,\n\t\tprivate readonly previous: { workspace?: Workspace; data: IConfigurationData } | undefined,\n\t\tprivate readonly currentConfiguraiton: Configuration,\n\t\tprivate readonly currentWorkspace: Workspace | undefined,\n\t\tprivate readonly logService: ILogService\n\t) {\n\t\tfor (const key of change.keys) {\n\t\t\tthis.affectedKeys.add(key);\n\t\t}\n\t\tfor (const [, keys] of change.overrides) {\n\t\t\tfor (const key of keys) {\n\t\t\t\tthis.affectedKeys.add(key);\n\t\t\t}\n\t\t}\n\n\t\t// Example: '\\nfoo.bar\\nabc.def\\n'\n\t\tthis._affectsConfigStr = this._marker;\n\t\tfor (const key of this.affectedKeys) {\n\t\t\tthis._affectsConfigStr += key + this._marker;\n\t\t}\n\t}\n\n\tprivate _previousConfiguration: Configuration | undefined = undefined;\n\tget previousConfiguration(): Configuration | undefined {\n\t\tif (!this._previousConfiguration && this.previous) {\n\t\t\tthis._previousConfiguration = Configuration.parse(this.previous.data, this.logService);\n\t\t}\n\t\treturn this._previousConfiguration;\n\t}\n\n\taffectsConfiguration(section: string, overrides?: IConfigurationOverrides): boolean {\n\t\t// we have one large string with all keys that have changed. we pad (marker) the section\n\t\t// and check that either find it padded or before a segment character\n\t\tconst needle = this._marker + section;\n\t\tconst idx = this._affectsConfigStr.indexOf(needle);\n\t\tif (idx < 0) {\n\t\t\t// NOT: (marker + section)\n\t\t\treturn false;\n\t\t}\n\t\tconst pos = idx + needle.length;\n\t\tif (pos >= this._affectsConfigStr.length) {\n\t\t\treturn false;\n\t\t}\n\t\tconst code = this._affectsConfigStr.charCodeAt(pos);\n\t\tif (code !== this._markerCode1 && code !== this._markerCode2) {\n\t\t\t// NOT: section + (marker | segment)\n\t\t\treturn false;\n\t\t}\n\t\tif (overrides) {\n\t\t\tconst value1 = this.previousConfiguration ? this.previousConfiguration.getValue(section, overrides, this.previous?.workspace) : undefined;\n\t\t\tconst value2 = this.currentConfiguraiton.getValue(section, overrides, this.currentWorkspace);\n\t\t\treturn !objects.equals(value1, value2);\n\t\t}\n\t\treturn true;\n\t}\n}\n"]}
@@ -33,7 +33,7 @@ class ConfigurationRegistry extends Disposable {
33
33
  this.configurationDefaultsOverrides = new Map();
34
34
  this.defaultLanguageConfigurationOverridesNode = {
35
35
  id: 'defaultOverrides',
36
- title: nls.localize(1664, "Default Language Configuration Overrides"),
36
+ title: nls.localize(1671, "Default Language Configuration Overrides"),
37
37
  properties: {}
38
38
  };
39
39
  this.configurationContributors = [this.defaultLanguageConfigurationOverridesNode];
@@ -114,7 +114,7 @@ class ConfigurationRegistry extends Disposable {
114
114
  },
115
115
  type: 'object',
116
116
  default: newDefaultOverride.value,
117
- description: nls.localize(1665, "Configure settings to be overridden for {0}.", getLanguageTagSettingPlainKey(key)),
117
+ description: nls.localize(1672, "Configure settings to be overridden for {0}.", getLanguageTagSettingPlainKey(key)),
118
118
  $ref: resourceLanguageSettingsSchemaId,
119
119
  defaultDefaultValue: newDefaultOverride.value,
120
120
  source,
@@ -321,8 +321,8 @@ class ConfigurationRegistry extends Disposable {
321
321
  const overrideIdentifierProperty = `[${overrideIdentifier}]`;
322
322
  const resourceLanguagePropertiesSchema = {
323
323
  type: 'object',
324
- description: nls.localize(1666, "Configure editor settings to be overridden for a language."),
325
- errorMessage: nls.localize(1667, "This setting does not support per-language configuration."),
324
+ description: nls.localize(1673, "Configure editor settings to be overridden for a language."),
325
+ errorMessage: nls.localize(1674, "This setting does not support per-language configuration."),
326
326
  $ref: resourceLanguageSettingsSchemaId,
327
327
  };
328
328
  this.updatePropertyDefaultValue(overrideIdentifierProperty, resourceLanguagePropertiesSchema);
@@ -338,8 +338,8 @@ class ConfigurationRegistry extends Disposable {
338
338
  registerOverridePropertyPatternKey() {
339
339
  const resourceLanguagePropertiesSchema = {
340
340
  type: 'object',
341
- description: nls.localize(1668, "Configure editor settings to be overridden for a language."),
342
- errorMessage: nls.localize(1669, "This setting does not support per-language configuration."),
341
+ description: nls.localize(1675, "Configure editor settings to be overridden for a language."),
342
+ errorMessage: nls.localize(1676, "This setting does not support per-language configuration."),
343
343
  $ref: resourceLanguageSettingsSchemaId,
344
344
  };
345
345
  allSettings.patternProperties[OVERRIDE_PROPERTY_PATTERN] = resourceLanguagePropertiesSchema;
@@ -412,16 +412,16 @@ const configurationRegistry = new ConfigurationRegistry();
412
412
  Registry.add(Extensions.Configuration, configurationRegistry);
413
413
  export function validateProperty(property, schema, extensionId) {
414
414
  if (!property.trim()) {
415
- return nls.localize(1670, "Cannot register an empty property");
415
+ return nls.localize(1677, "Cannot register an empty property");
416
416
  }
417
417
  if (OVERRIDE_PROPERTY_REGEX.test(property)) {
418
- return nls.localize(1671, "Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.", property);
418
+ return nls.localize(1678, "Cannot register '{0}'. This matches property pattern '\\\\[.*\\\\]$' for describing language specific editor settings. Use 'configurationDefaults' contribution.", property);
419
419
  }
420
420
  if (configurationRegistry.getConfigurationProperties()[property] !== undefined && (!extensionId || !EXTENSION_UNIFICATION_EXTENSION_IDS.has(extensionId.toLowerCase()))) {
421
- return nls.localize(1672, "Cannot register '{0}'. This property is already registered.", property);
421
+ return nls.localize(1679, "Cannot register '{0}'. This property is already registered.", property);
422
422
  }
423
423
  if (schema.policy?.name && configurationRegistry.getPolicyConfigurations().get(schema.policy?.name) !== undefined) {
424
- return nls.localize(1673, "Cannot register '{0}'. The associated policy {1} is already registered with {2}.", property, schema.policy?.name, configurationRegistry.getPolicyConfigurations().get(schema.policy?.name));
424
+ return nls.localize(1680, "Cannot register '{0}'. The associated policy {1} is already registered with {2}.", property, schema.policy?.name, configurationRegistry.getPolicyConfigurations().get(schema.policy?.name));
425
425
  }
426
426
  return null;
427
427
  }