texlive[65737] Build/source/utils: asy 2.84 sources

commits+karl at tug.org commits+karl at tug.org
Sun Feb 5 19:19:00 CET 2023


Revision: 65737
          http://tug.org/svn/texlive?view=revision&revision=65737
Author:   karl
Date:     2023-02-05 19:18:59 +0100 (Sun, 05 Feb 2023)
Log Message:
-----------
asy 2.84 sources

Modified Paths:
--------------
    trunk/Build/source/utils/README
    trunk/Build/source/utils/asymptote/ChangeLog
    trunk/Build/source/utils/asymptote/GL/glew.c
    trunk/Build/source/utils/asymptote/GUI/Window1.py
    trunk/Build/source/utils/asymptote/GUI/requirements.txt
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-arrow-back.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-arrow-forward.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-camera.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-close.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-color-palette.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-delete.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-done.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-expand.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-folder-open.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-hand.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-locate.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-radio-button-off.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-radio-button-on.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/android-refresh.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/arrow-move.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/arrow-resize.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/brush.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/check.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/chevron-with-circle-left.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/chevron-with-circle-right.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/circle.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/close-round.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/code.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/edit.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/eye.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/grid.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/magnifying-glass.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/plus-round.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/redo.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/save.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/social-python.svg
    trunk/Build/source/utils/asymptote/GUI/res/icons/undo.svg
    trunk/Build/source/utils/asymptote/GUI/xasy2asy.py
    trunk/Build/source/utils/asymptote/GUI/xasyBezierInterface.py
    trunk/Build/source/utils/asymptote/GUI/xasyFile.py
    trunk/Build/source/utils/asymptote/LspCpp/CMakeLists.txt
    trunk/Build/source/utils/asymptote/LspCpp/LICENSE
    trunk/Build/source/utils/asymptote/LspCpp/README.md
    trunk/Build/source/utils/asymptote/LspCpp/examples/StdIOClientExample.cpp
    trunk/Build/source/utils/asymptote/LspCpp/examples/StdIOServerExample.cpp
    trunk/Build/source/utils/asymptote/LspCpp/examples/TcpServerExample.cpp
    trunk/Build/source/utils/asymptote/LspCpp/examples/WebsocketExample.cpp
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Cancellation.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Condition.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Endpoint.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageIssue.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageJsonHandler.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageProducer.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/NotificationInMessage.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/RemoteEndPoint.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/RequestInMessage.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/StreamMessageProducer.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/TcpServer.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/json.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/lsRequestId.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/lsResponseMessage.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/macro_map.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/message.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/serializer.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/stream.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/threaded_queue.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/AbsolutePath.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ClientPreferences.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/CodeActionParams.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Directory.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ExecuteCommandParams.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/IProgressMonitor.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Markup/Markup.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Markup/string_ref.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ParentProcessWatcher.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ProcessIoService.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ProtocolJsonHandler.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ResourceOperation.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/SimpleTimer.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/client/registerCapability.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/client/unregisterCapability.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/OverridableMethod.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/WorkspaceSymbolParams.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/addOverridableMethods.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/buildWorkspace.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkConstructorsStatus.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkDelegateMethodsStatus.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkHashCodeEqualsStatus.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkToStringStatus.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/codeActionResult.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/executeCommand.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/findLinks.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateAccessors.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateConstructors.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateDelegateMethods.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateHashCodeEquals.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateToString.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getMoveDestinations.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getRefactorEdit.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/resolveUnimplementedAccessors.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/searchSymbols.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/sonarlint/protocol.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/InitializeParams.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/initialize.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsClientCapabilities.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsServerCapabilities.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsTextDocumentClientCapabilities.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsWorkspaceClientCapabilites.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/progress.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/language/language.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/location_type.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsCodeAction.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsCommand.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsDocumentUri.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsFormattingOptions.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsMarkedString.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsPosition.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsRange.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsResponseError.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentEdit.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentIdentifier.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentItem.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentPositionParams.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextEdit.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsVersionedTextDocumentIdentifier.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsWorkspaceEdit.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_code_action.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_completion.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_diagnostic.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/out_list.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/symbol.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/SemanticTokens.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/callHierarchy.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_action.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_lens.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/colorPresentation.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/completion.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/didRenameFiles.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_change.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_close.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_open.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_save.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/documentColor.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_link.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_symbol.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/foldingRange.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/formatting.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/highlight.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/hover.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/linkedEditingRange.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/onTypeFormatting.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/prepareRename.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/publishDiagnostics.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/range_formatting.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/references.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/rename.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/resolveTypeHierarchy.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/selectionRange.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/semanticHighlighting.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/signature_help.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/typeHierarchy.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/type_definition.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/willSave.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/utils.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/windows/MessageNotify.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/working_files.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/applyEdit.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/configuration.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/didChangeWorkspaceFolders.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/did_change_configuration.h
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/workspaceFolders.h
    trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/Endpoint.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/MessageJsonHandler.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/StreamMessageProducer.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/WebSocketServer.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/message.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/serializer.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/lsp/Markup.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/lsp/ParentProcessWatcher.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/lsp/ProtocolJsonHandler.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/lsp/initialize.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/lsp/lsp.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/lsp/lsp_diagnostic.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/lsp/textDocument.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/lsp/utils.cpp
    trunk/Build/source/utils/asymptote/LspCpp/src/lsp/working_files.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/glossary.json
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/menu.json
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/webapp.json
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/widget.json
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/encodings/utf8.json
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/encodings/utf8bom.json
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archiver.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archiver.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archivertest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/capitalize/capitalize.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/condense/condense.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/filterkey/filterkey.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/filterkeydom/filterkeydom.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/jsonx/jsonx.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/lookaheadparser/lookaheadparser.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/parsebyparts/parsebyparts.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/schemavalidator/schemavalidator.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/serialize/serialize.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplepullreader/simplepullreader.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplereader/simplereader.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplewriter/simplewriter.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/traverseaspointer.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/tutorial/tutorial.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/allocators.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/document.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/encodedstream.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/encodings.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/en.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/error.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/filereadstream.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/filewritestream.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/fwd.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/biginteger.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/dtoa.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/ieee754.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/meta.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/pow10.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/regex.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/stack.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/strfunc.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/strtod.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/istreamwrapper.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/memorybuffer.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/memorystream.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/msinttypes/inttypes.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/msinttypes/stdint.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/ostreamwrapper.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/pointer.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/prettywriter.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/rapidjson.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/schema.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/stringbuffer.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/writer.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/misctest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/perftest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/perftest.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/platformtest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/rapidjsontest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/allocatorstest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/bigintegertest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/clzlltest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/documenttest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/dtoatest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodedstreamtest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodingstest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/filestreamtest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/fwdtest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/istreamwrappertest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/jsoncheckertest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/namespacetest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/ostreamwrappertest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/platformtest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/pointertest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/prettywritertest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/regextest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/schematest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/simdtest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/strfunctest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/stringbuffertest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/strtodtest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/unittest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/unittest.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/valuetest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/writertest.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/Doxyfile
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/Makefile
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/cmake_install.cmake
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.make
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/link.txt
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/Makefile
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/cmake_install.cmake
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/test/optional_test.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/test/uri_builder_test.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/test/uri_encoding_test.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/test/uri_test.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/utfcpp/samples/docsample.cpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/utfcpp/source/utf8/core.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp11.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp17.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/utfcpp/source/utf8/unchecked.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/utfcpp/tests/negative.cpp
    trunk/Build/source/utils/asymptote/Makefile.in
    trunk/Build/source/utils/asymptote/ReleaseNotes
    trunk/Build/source/utils/asymptote/abs3doutfile.h
    trunk/Build/source/utils/asymptote/asy-keywords.el
    trunk/Build/source/utils/asymptote/asy.list
    trunk/Build/source/utils/asymptote/asymptote.spec
    trunk/Build/source/utils/asymptote/base/asy-kate.sh
    trunk/Build/source/utils/asymptote/base/geometry.asy
    trunk/Build/source/utils/asymptote/base/graph.asy
    trunk/Build/source/utils/asymptote/base/graph3.asy
    trunk/Build/source/utils/asymptote/base/plain.asy
    trunk/Build/source/utils/asymptote/base/plain_arrows.asy
    trunk/Build/source/utils/asymptote/base/plain_pens.asy
    trunk/Build/source/utils/asymptote/base/rationalSimplex.asy
    trunk/Build/source/utils/asymptote/base/shaders/blend.glsl
    trunk/Build/source/utils/asymptote/base/shaders/count.glsl
    trunk/Build/source/utils/asymptote/base/shaders/fragment.glsl
    trunk/Build/source/utils/asymptote/base/shaders/sum1.glsl
    trunk/Build/source/utils/asymptote/base/shaders/sum2.glsl
    trunk/Build/source/utils/asymptote/base/shaders/sum3.glsl
    trunk/Build/source/utils/asymptote/base/shaders/zero.glsl
    trunk/Build/source/utils/asymptote/base/simplex.asy
    trunk/Build/source/utils/asymptote/base/slopefield.asy
    trunk/Build/source/utils/asymptote/base/stats.asy
    trunk/Build/source/utils/asymptote/base/three.asy
    trunk/Build/source/utils/asymptote/base/three_surface.asy
    trunk/Build/source/utils/asymptote/base/v3dheadertypes.asy
    trunk/Build/source/utils/asymptote/base/v3dtypes.asy
    trunk/Build/source/utils/asymptote/base/webgl/asygl.js
    trunk/Build/source/utils/asymptote/bezierpatch.cc
    trunk/Build/source/utils/asymptote/build-scripts/build-asygl
    trunk/Build/source/utils/asymptote/build-scripts/build-asymptote
    trunk/Build/source/utils/asymptote/build-scripts/build-asymptote.dos
    trunk/Build/source/utils/asymptote/camp.tab.cc
    trunk/Build/source/utils/asymptote/camp.tab.h
    trunk/Build/source/utils/asymptote/config.guess
    trunk/Build/source/utils/asymptote/config.h.in
    trunk/Build/source/utils/asymptote/config.sub
    trunk/Build/source/utils/asymptote/configure
    trunk/Build/source/utils/asymptote/configure.ac
    trunk/Build/source/utils/asymptote/doc/CAD.pdf
    trunk/Build/source/utils/asymptote/doc/FAQ/asy-faq.info
    trunk/Build/source/utils/asymptote/doc/Makefile.in
    trunk/Build/source/utils/asymptote/doc/TeXShopAndAsymptote.pdf
    trunk/Build/source/utils/asymptote/doc/asy-latex.pdf
    trunk/Build/source/utils/asymptote/doc/asy.1
    trunk/Build/source/utils/asymptote/doc/asyRefCard.pdf
    trunk/Build/source/utils/asymptote/doc/asymptote.pdf
    trunk/Build/source/utils/asymptote/doc/asymptote.texi
    trunk/Build/source/utils/asymptote/doc/histogram.asy
    trunk/Build/source/utils/asymptote/doc/png/asymptote.info
    trunk/Build/source/utils/asymptote/doc/slopefield1.asy
    trunk/Build/source/utils/asymptote/doc/vectorfield.asy
    trunk/Build/source/utils/asymptote/drawpath3.cc
    trunk/Build/source/utils/asymptote/drawsurface.cc
    trunk/Build/source/utils/asymptote/examples/filesurface.dat
    trunk/Build/source/utils/asymptote/examples/triads.asy
    trunk/Build/source/utils/asymptote/examples/uhrturm.obj
    trunk/Build/source/utils/asymptote/exp.cc
    trunk/Build/source/utils/asymptote/fftw++.cc
    trunk/Build/source/utils/asymptote/fftw++.h
    trunk/Build/source/utils/asymptote/fileio.h
    trunk/Build/source/utils/asymptote/generate_enums.py
    trunk/Build/source/utils/asymptote/glrender.cc
    trunk/Build/source/utils/asymptote/interact.cc
    trunk/Build/source/utils/asymptote/jsfile.cc
    trunk/Build/source/utils/asymptote/jsfile.h
    trunk/Build/source/utils/asymptote/lspserv.cc
    trunk/Build/source/utils/asymptote/main.cc
    trunk/Build/source/utils/asymptote/mathop.h
    trunk/Build/source/utils/asymptote/memory.h
    trunk/Build/source/utils/asymptote/picture.cc
    trunk/Build/source/utils/asymptote/psfile.cc
    trunk/Build/source/utils/asymptote/revision.cc
    trunk/Build/source/utils/asymptote/runarray.cc
    trunk/Build/source/utils/asymptote/runarray.in
    trunk/Build/source/utils/asymptote/runbacktrace.cc
    trunk/Build/source/utils/asymptote/runfile.cc
    trunk/Build/source/utils/asymptote/runhistory.cc
    trunk/Build/source/utils/asymptote/runlabel.cc
    trunk/Build/source/utils/asymptote/runlabel.in
    trunk/Build/source/utils/asymptote/runmath.cc
    trunk/Build/source/utils/asymptote/runmath.in
    trunk/Build/source/utils/asymptote/runpair.cc
    trunk/Build/source/utils/asymptote/runpath.cc
    trunk/Build/source/utils/asymptote/runpath3d.cc
    trunk/Build/source/utils/asymptote/runpicture.cc
    trunk/Build/source/utils/asymptote/runpicture.in
    trunk/Build/source/utils/asymptote/runstring.cc
    trunk/Build/source/utils/asymptote/runsystem.cc
    trunk/Build/source/utils/asymptote/runtime.cc
    trunk/Build/source/utils/asymptote/runtime.in
    trunk/Build/source/utils/asymptote/runtimebase.in
    trunk/Build/source/utils/asymptote/runtriple.cc
    trunk/Build/source/utils/asymptote/seconds.h
    trunk/Build/source/utils/asymptote/settings.cc
    trunk/Build/source/utils/asymptote/shaders.cc
    trunk/Build/source/utils/asymptote/statistics.h
    trunk/Build/source/utils/asymptote/tests/arith/integer.asy
    trunk/Build/source/utils/asymptote/util.cc
    trunk/Build/source/utils/asymptote/v3dfile.cc
    trunk/Build/source/utils/asymptote/v3dfile.h
    trunk/Build/source/utils/asymptote/v3dheadertypes.h
    trunk/Build/source/utils/asymptote/v3dheadertypes.py
    trunk/Build/source/utils/asymptote/v3dtypes.h
    trunk/Build/source/utils/asymptote/v3dtypes.py
    trunk/Build/source/utils/asymptote/webgl/gl.js
    trunk/Build/source/utils/asymptote/xstream.h

Added Paths:
-----------
    trunk/Build/source/utils/asymptote/GUI/ContextWindow.py
    trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/future.h
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.internal
    trunk/Build/source/utils/asymptote/base/shaders/compress.glsl
    trunk/Build/source/utils/asymptote/base/shaders/sum2fast.glsl
    trunk/Build/source/utils/asymptote/examples/AiryDisk.asy
    trunk/Build/source/utils/asymptote/optional.hpp
    trunk/Build/source/utils/asymptote/parallel.cc
    trunk/Build/source/utils/asymptote/parallel.h

Removed Paths:
-------------
    trunk/Build/source/utils/asymptote/LspCpp/include/optional.hpp
    trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/optional.hpp
    trunk/Build/source/utils/asymptote/LspCpp/third_party/threadpool/
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CTestTestfile.cmake
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/docs/assets/
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/CMakeFiles/
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/CTestTestfile.cmake
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/Makefile
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/cmake_install.cmake
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/test/CMakeFiles/
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/test/CTestTestfile.cmake
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/test/Makefile
    trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/test/cmake_install.cmake

Modified: trunk/Build/source/utils/README
===================================================================
--- trunk/Build/source/utils/README	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/README	2023-02-05 18:18:59 UTC (rev 65737)
@@ -4,7 +4,7 @@
 Extra utilities we (optionally) compile for TeX Live.
 See comments in ../texk/README.
 
-asymptote 2.79 - checked 8mar22
+asymptote 2.84 - checked 5feb23
   update to TL from CTAN, to include prebuilt doc.
   see https://tug.org/texlive/build.html#asymptote
   and tlpkg/bin/tl-update-asy

Modified: trunk/Build/source/utils/asymptote/ChangeLog
===================================================================
--- trunk/Build/source/utils/asymptote/ChangeLog	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/ChangeLog	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,3 +1,1824 @@
+commit 430c7a661c060568720f6d65e611a2087ea1dde6
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jan 21 22:48:26 2023 -0700
+
+    Fix Makefile dependencies.
+
+commit 1e0c04c25ddb2dfc9a4f3423628d39ff494e4b32
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jan 21 18:05:11 2023 -0700
+
+    Revert "Fix Makefile dependency."
+    
+    This reverts commit 826581af2fb2882ab82804e0593217da85ae58bd.
+
+commit 826581af2fb2882ab82804e0593217da85ae58bd
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jan 21 18:01:07 2023 -0700
+
+    Fix Makefile dependency.
+
+commit 2255877e2ee304c38dee5b7b52d113255c0622fd
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jan 21 17:48:00 2023 -0700
+
+    Revert "Improve last revision."
+    
+    This reverts commit e7d475fa66c429851bbc45bcc0017a3ac5eef02a.
+
+commit 4dafd8313cda0aad2a05abfdc91fc30ce88d7385
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jan 21 15:12:28 2023 -0700
+
+    Add high-resolution clock; update FFT support.
+
+commit 56c39a80704b2bb93e808ad74591a8834c3ccca5
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jan 21 12:03:49 2023 -0700
+
+    Account for linewidth in labelmargin.
+
+commit 37f564040bec2ff6059f5c4872950be17586b885
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jan 3 20:37:17 2023 -0700
+
+    Add option to show summary of environment settings.
+
+commit 76f2f4d727261e4e2b466e2ea9d32bb4baf6c466
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Dec 12 22:19:03 2022 -0700
+
+    Avoid division by zero.
+
+commit 46d6ea7351699bbed0418ec6d7f2195011178e5a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Nov 28 20:20:35 2022 -0700
+
+    Improve example of multiple shipout.
+
+commit dce2e0d3b94b59dddcca6bb95c38548e2021821a
+Merge: ee0d1a4a a42e056e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 13 00:10:12 2022 -0700
+
+    Merge pull request #341 from yarusome/master
+    
+    Fixing `inversion inversion(circle, circle)`
+
+commit ee0d1a4a80ff0b30383f297f3ab64bebafd1c07c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Nov 13 00:00:45 2022 -0700
+
+    Fix issue #308: runtime error when drawing degenerate path with TexHead arrow.
+
+commit 0ff56f1ecaff0f5e6da0acd0e7ff6f152cd52c56
+Merge: eb89fd60 1834e488
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Nov 12 23:06:21 2022 -0700
+
+    Merge pull request #354 from vectorgraphics/fix-debian-bug-1023920-xasy
+    
+    XASY: Round numpy.float64 to int for Qt compatibiltiy.
+
+commit eb89fd60d71a5836b05ae0ed17f7525b2723714d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Nov 12 22:50:04 2022 -0700
+
+    Fix bug in XDR reads due to uninitialized variable.
+
+commit 1834e4883a0781944b5eb3e459a35984ad24d14d
+Author: Supakorn Rassameemasmuang <jamievlin at outlook.com>
+Date:   Sat Nov 12 12:22:45 2022 -0700
+
+    XASY: Round numpy.float64 to int for Qt compatibiltiy.
+    
+    This fixes Debian bug #1023920 (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1023920).
+
+commit a64162166a3b2146902971d87ba2da3af53ebd5e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Nov 1 21:22:49 2022 -0600
+
+    Use Bland's rule even on artificial variables.
+
+commit 4f326abc01934c83380ca6e0d399dc5f33819e76
+Merge: e7d475fa 38d018f6
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Oct 31 15:03:46 2022 -0600
+
+    Merge pull request #351 from bmwiedemann/date
+    
+    Allow to override build date with SOURCE_DATE_EPOCH
+
+commit 38d018f6bc6d2341718a67193c4cbb99a07be698
+Author: Bernhard M. Wiedemann <bwiedemann at suse.de>
+Date:   Mon Oct 31 21:46:54 2022 +0100
+
+    Allow to override build date with SOURCE_DATE_EPOCH
+    
+    in order to make builds reproducible.
+    See https://reproducible-builds.org/ for why this is good
+    and https://reproducible-builds.org/specs/source-date-epoch/
+    for the definition of this variable.
+    
+    Signed-off-by: Bernhard M. Wiedemann <bwiedemann at suse.de>
+
+commit e7d475fa66c429851bbc45bcc0017a3ac5eef02a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Oct 27 00:21:20 2022 -0600
+
+    Improve last revision.
+
+commit b5ac744cb044c42a9d2f79a58d37b46444e24caa
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Oct 26 23:57:50 2022 -0600
+
+    Fix Makefile dependency.
+
+commit 8afff2c11b36ea54edf01b32452550bf12843a93
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Oct 23 01:15:48 2022 -0600
+
+    Terminate phase1 of simplex method once a zero-cost solution is found.
+
+commit e7b5c30816f5db7b243222c1c4c10d087294eece
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Oct 22 22:33:15 2022 -0600
+
+    Make evince the default UNIX PDF viewer.
+
+commit 8bc175d31f77312baea3660e5f29dbc35ab2cbdf
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Oct 21 22:33:36 2022 -0600
+
+    Remove spurious tests in glew.c.
+
+commit 0d49a356d0ee1d0f579cb224856f0947a3e1cdc3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Oct 21 22:20:12 2022 -0600
+
+    Check for bison and flex but not libm.
+
+commit f495186f075bc3b686aa53bc80def7fbd91edb97
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Oct 18 00:32:09 2022 -0600
+
+    Add diagostic control to rationalSimplex.asy.
+
+commit d1a336cd3caaea8cae7bd1cc5a9f98175ba18979
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Oct 13 17:08:53 2022 -0600
+
+    Improve diagnostic in rationalSimplex.
+
+commit 20a79dbf5f005bacf3fb55fceb1c33cc8b79c4b8
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Oct 13 17:04:50 2022 -0600
+
+    Update example.
+
+commit 0e13fdc3d0226f153d1859db3ec43eb3d2fb2007
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Oct 9 13:45:34 2022 -0600
+
+    Remove obsolete code.
+
+commit ea5bb5e69ecdc26a576205825c62c5ede14622cb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Oct 9 10:55:22 2022 -0600
+
+    Change default UNIX postscript viewer to evince; remove remaining references to gsview.
+
+commit 6d556b7a78d1680702abcdc0972ecf6c458ced88
+Merge: 681daee0 7696801a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Sep 30 17:10:52 2022 -0600
+
+    Merge branch 'Qt'.
+
+commit 681daee01c6832a5d86e79e17018806b433e1805
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Sep 30 14:44:03 2022 -0600
+
+    Remove unused code.
+
+commit 7696801ae99fe0654030ccdb805df8ba506907cf
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Sep 24 21:39:03 2022 -0600
+
+    XASY: Fix arrowhead changing bug.
+
+commit 7201430c829e273e4ad3ff13391a87ff9f83b373
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Sep 21 21:32:07 2022 -0600
+
+    Disable PDF image compression for non-pdf output.
+
+commit 78662d51f5b9b1b5038cc0e1a41527552f49d181
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Sep 17 15:31:23 2022 -0600
+
+    Clean up more asy-latex files.
+
+commit 2c15485d146a43fbf6234d3fa0cec191a1a768b8
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Sep 17 14:01:30 2022 -0600
+
+    Increment version to 2.84.
+
+commit 2ac4c5f85acd6b0a04865be937279dc29fadb76e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Sep 17 11:27:55 2022 -0600
+
+    Fix default export extension.
+
+commit 40fd9804c037e1424e8e05498ce66f618bce5c58
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Sep 17 01:17:37 2022 -0600
+
+    XASY: Implement color interface.
+
+commit f313efb692d567d300cd9e4931ea276cf0d1f74f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Sep 17 01:01:10 2022 -0600
+
+    XASY: Remove obsolete code.
+
+commit 288ccc888480326cc6d3d4276498edf331a2bd7b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Sep 17 00:49:25 2022 -0600
+
+    XASY: Implement solid pen; disable unimplemented color interface.
+
+commit 5b436a4eb99c50dce13e856c12cda7b7729cf02f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Sep 16 23:05:54 2022 -0600
+
+    XASY: Convert from asy to Qt pattern.
+
+commit 2f9dc5be12dca41d2e0413d2c94f0359c60f6919
+Merge: f3e3ed1a 2bf7c010
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Sep 16 21:19:37 2022 -0600
+
+    Merge branch 'Qt'.
+
+commit 2bf7c010ef6a46dee4d79b6b2b84ccddd51b0d3c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Sep 16 21:14:17 2022 -0600
+
+    XASY: Fix arrowify bug.
+
+commit 6b8e2c390808f67f76e611861caa634188732558
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Sep 16 15:28:47 2022 -0600
+
+    Simplify vectorfield example.
+
+commit 14476dda18ae3a6a00d441762505f4d4683eac9b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Sep 15 23:32:21 2022 -0600
+
+    Allow specifying only endpoint of vector in vectorfield.
+
+commit 65e039f72730a196ce89eb1d4194e9eaf8a97b43
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Sep 15 23:24:31 2022 -0600
+
+    Fix vectorfield scaling.
+
+commit b488009dcb56876362e073780e894307b21864cb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Sep 15 21:38:11 2022 -0600
+
+    Remove diagnostic.
+
+commit 32d191daf3832e462b51e6a66df1a4f7ecda10cc
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Sep 15 21:06:03 2022 -0600
+
+    Fix vectorfield scaling.
+
+commit ef690c9363b3d973f07f20e58a9d6764c8b67c6b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Sep 11 21:56:54 2022 -0600
+
+    Fix integer quotient bug introduced in 1e1e6cbbcfe65b58ead8e04d5e2b302ed011acd8.
+
+commit 997f87e375387fcb4fbbda66db62bc2332f42b2c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Sep 4 22:31:36 2022 -0600
+
+    Remove arrows from slopefield; fix scaling in vectorfield routines.
+
+commit f3e3ed1a216fa3e31878ac4d6169875099508c80
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Sep 16 15:28:47 2022 -0600
+
+    Simplify vectorfield example.
+
+commit 845985e11a46f3406fc80ddf4e22cf5bc0adea3b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Sep 15 23:32:21 2022 -0600
+
+    Allow specifying only endpoint of vector in vectorfield.
+
+commit d0be9ddfcb8f004a520bb80f89739fa3378d06e4
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Sep 15 23:24:31 2022 -0600
+
+    Fix vectorfield scaling.
+
+commit fd5c3f906f0b5565bddefae6a10f88ecb525796a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Sep 15 21:38:11 2022 -0600
+
+    Remove diagnostic.
+
+commit 54e4567585ad4d694cbca6d4fe640e154f67af22
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Sep 15 21:06:03 2022 -0600
+
+    Fix vectorfield scaling.
+
+commit 1d0e4cc886b840f87a726b40e6f9626b14568acc
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Sep 11 21:56:54 2022 -0600
+
+    Fix integer quotient bug introduced in 1e1e6cbbcfe65b58ead8e04d5e2b302ed011acd8.
+
+commit 01c0fad312146968a0fee96ba9282eccff6dc470
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Sep 4 22:31:36 2022 -0600
+
+    Remove arrows from slopefield; fix scaling in vectorfield routines.
+
+commit d2a1f5d2984d4e558285426290a8c36d1dd9e18f
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun Aug 28 23:46:13 2022 -0600
+
+    XASY: Fix saving bugs.
+
+commit e766b2f8cc069ac8bb28eb74b4ff47b1eaf7a50c
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Aug 27 03:12:24 2022 -0600
+
+    XASY: Remove debug print statements.
+
+commit 6d326fef6aa47d027ae159e9f9aeb60b67a1a657
+Merge: bbdba2da d48103a9
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Aug 27 03:07:16 2022 -0600
+
+    Merge branch 'Qt' of https://github.com/vectorgraphics/asymptote into Qt
+
+commit bbdba2da493f0c95caf971d267e67f6f29d2573e
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Aug 27 03:07:12 2022 -0600
+
+    XASY: Fix arrow dash render issue.
+
+commit d48103a9ad3de95caa1ff18ed6f2666128801166
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Aug 26 00:29:01 2022 -0600
+
+    XASY: Apply KEY to begingroup().
+
+commit 2191ec77923ddbdb742abfe9fdcf0f9c1ffa4505
+Merge: 539b8367 98a183dc
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Aug 26 00:13:20 2022 -0600
+
+    Merge branch 'master' into Qt.
+
+commit 98a183dcfbef510cae7f3ac45438f948fb82758b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Aug 26 00:08:44 2022 -0600
+
+    XASY: Fix begingroup transformation.
+
+commit 539b83671f0b4c1c8d1a17565aa025dd130efc2e
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Aug 25 01:29:14 2022 -0600
+
+    XASY: Fix noncommutativity with arrows and fills.
+
+commit a42e056e27e7737695b18fd84842eb481893e531
+Author: yarusome <97945148+yarusome at users.noreply.github.com>
+Date:   Wed Aug 24 22:55:15 2022 +0800
+
+    Fixed `inversion inversion(circle, circle)`
+
+commit 03b46aa391c31f809eae74524ef73b777c1dcc68
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Aug 22 16:43:42 2022 -0600
+
+    Initialize globalObjectCounter to 1.
+
+commit c7e925123f538a59d55e6e2a998d87a254ac194a
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun Aug 21 00:33:36 2022 -0600
+
+    XASY: Fix arrow rendering glitch.
+
+commit 86bc2acae142bdee83515c31ad8d4f393501b22d
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun Aug 14 23:05:22 2022 -0600
+
+    XASY: Fix layout warning messages.
+
+commit 2d243189a39087701ce6450623f0c67860ff8c37
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Aug 13 18:39:52 2022 -0600
+
+    XASY: Fix translation arrow issue.
+
+commit 21e2e4ea0fe288247999f38eca30d90e6d524f9c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Aug 11 22:43:58 2022 +0200
+
+    git subrepo pull --force LspCpp
+    
+    subrepo:
+      subdir:   "LspCpp"
+      merged:   "b6fb8491"
+    upstream:
+      origin:   "git at github.com:vectorgraphics/LspCpp"
+      branch:   "master"
+      commit:   "b6fb8491"
+    git-subrepo:
+      version:  "0.4.3"
+      origin:   "https://github.com/ingydotnet/git-subrepo"
+      commit:   "2f68596"
+
+commit c9e57ede64853386a5db6ed7e8f2f1b080345c0f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Aug 11 22:41:45 2022 +0200
+
+    git subrepo pull --force LspCpp
+    
+    subrepo:
+      subdir:   "LspCpp"
+      merged:   "526e85a5"
+    upstream:
+      origin:   "git at github.com:vectorgraphics/LspCpp"
+      branch:   "master"
+      commit:   "526e85a5"
+    git-subrepo:
+      version:  "0.4.3"
+      origin:   "https://github.com/ingydotnet/git-subrepo"
+      commit:   "2f68596"
+
+commit a2405537b3da29db4c77403273f18113daeb73b8
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Aug 11 22:32:43 2022 +0200
+
+    Update asygl.
+
+commit cf0e0be0be7c0b2be3cf36234d631515c1c5acd9
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Aug 11 22:30:14 2022 +0200
+
+    Fix triangle groups.
+
+commit aa0954499ae7cdce7fc131441dff04c09d15076a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Aug 11 14:50:46 2022 +0200
+
+    Add missing file.
+
+commit 06d9f8f16828f6f803360aef602251ee680293a7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 10 17:08:48 2022 +0200
+
+    Remove version number from CTAN top level directory.
+
+commit 103f78f49c890ea7d6998355a89b291991b89ddf
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 10 12:42:27 2022 +0200
+
+    git subrepo pull --force LspCpp
+    
+    subrepo:
+      subdir:   "LspCpp"
+      merged:   "0e34158d"
+    upstream:
+      origin:   "git at github.com:vectorgraphics/LspCpp"
+      branch:   "master"
+      commit:   "0e34158d"
+    git-subrepo:
+      version:  "0.4.3"
+      origin:   "https://github.com/ingydotnet/git-subrepo"
+      commit:   "2f68596"
+
+commit 4920559af405da4d32bfd86403a32cc0e88677bb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 10 12:37:08 2022 +0200
+
+    git subrepo pull --force LspCpp
+    
+    subrepo:
+      subdir:   "LspCpp"
+      merged:   "d9cd4f6d"
+    upstream:
+      origin:   "git at github.com:vectorgraphics/LspCpp"
+      branch:   "master"
+      commit:   "d9cd4f6d"
+    git-subrepo:
+      version:  "0.4.3"
+      origin:   "https://github.com/ingydotnet/git-subrepo"
+      commit:   "2f68596"
+
+commit 8bd894e51d17f39a7c6275d7e23701a3b278c4bb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 10 11:43:36 2022 +0200
+
+    Simplify code.
+
+commit f7557e41a68a0580a19c90d775f0d8f2d92de026
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Aug 7 17:00:31 2022 +0200
+
+    Increment version to 2.83.
+
+commit 94c770a177aae2dc11e19f70cc9f22ff649d7cea
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 6 22:17:24 2022 +0200
+
+    Update asygl.
+
+commit 9893d408fec128d76b50e3bef24ef6181beef0bc
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 6 22:12:33 2022 +0200
+
+    Use floating point WebGL colors.
+
+commit 89dac594687cd2892851a685c52a092e86db85a7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Aug 6 06:52:30 2022 +1000
+
+    Avoid global variables in AsyGL library.
+
+commit a57d71e7f9857ceba05b9d2fc926953d385971b5
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Aug 4 02:00:02 2022 -0600
+
+    XASY: Add rough intelligent dash patterns.
+
+commit 0ab3eae561e21fcf5a906becf75483291db032d3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Aug 3 22:14:33 2022 +0200
+
+    Preserve the terminal environment under MSDOS by ignoring the wait flag.
+
+commit 87f76fb7e5f3387643491fa123c18cf2be987006
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Aug 1 23:36:30 2022 +0200
+
+    Enforce a unique normal and pen for each vertex in a PRC triangle group.
+
+commit f8d9c943899f592b20f9da01b51b223540536a63
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Jul 30 21:50:25 2022 -0600
+
+    XASY: Fix arrow swapping bug.
+
+commit 8e28af4e33a62630f82652552988c02267821578
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 29 21:10:05 2022 +0200
+
+    Revert "Simplify code."
+    
+    This reverts commit 587a21490bf6d3892ddeab36dc8d8acdd3cec32c.
+
+commit 52170aac260c33ead0eddef60c527bcde782348c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 29 19:19:55 2022 +0200
+
+    Fix patch mode.
+
+commit b401886d804f4c5e870c69339c50dd76a97f0ea5
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 29 19:08:18 2022 +0200
+
+    Revert "Simplify code."
+    
+    This reverts commit dc9d231185c9b01bd8d32c2bbbc87001caa1f4d8.
+
+commit c53b2c5fd4cc2d4bbf4afb071534786c09e70542
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 29 12:53:45 2022 +0200
+
+    Fix segmentation fault.
+
+commit 0703107b953e0610a96776d059904af1cfb1c83e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jul 29 12:13:03 2022 +0200
+
+    Fix segmentation fault.
+
+commit e4dcdfbdef66e861d31bfe9ebbe722d66eafb3df
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Jul 28 11:47:28 2022 -0600
+
+    XASY: Update option menu names to match asymptote.
+
+commit b5a059a24c57f866c165d388a37a159a9fd723c7
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Jul 28 11:46:50 2022 -0600
+
+    XASY: Add asyPen cap options.
+
+commit d6e0c8ae5f4811f1f30ff59db450723fe291f241
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Jul 28 11:44:04 2022 -0600
+
+    XASY: Allow arrow pen types.
+
+commit b52467ba7f780cdb31a1776e0338388614a21dd3
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Jul 28 01:50:07 2022 -0600
+
+    XASY: Preserve shape fill status when arrowifying.
+
+commit 3433888b9a26fa85995617bfdc1e51137b198692
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 28 05:55:22 2022 +1000
+
+    Fix defaultfilename for v3d files.
+
+commit 12740e6ff703bbab76629f065dd574f6242d130d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 28 05:45:36 2022 +1000
+
+    Revert commented diagnostic.
+
+commit ff99318b814d8b02a503897a41269c7bb3ebbb61
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue Jul 26 20:54:00 2022 -0600
+
+    XASY: Fix line mode menu glitch.
+
+commit b2af1e079781e7bc53d7804b1622c0486e484b18
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue Jul 26 20:46:05 2022 -0600
+
+    XASY: Give opacity hint.
+
+commit ec217a2261828eed41835da88c9bfa97af5ec2bc
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 26 20:47:12 2022 +0200
+
+    Move v3d specification back to GitHub now that LaTeX markdown is supported.
+
+commit cb6aeda7ff3c1ed42bb04ed45ba26ce5061797f1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 26 15:18:10 2022 +0200
+
+    List ambiguous functions.
+
+commit 60df18eea453855571ee4a2cc3f45878a4fe52d9
+Merge: fa284421 4fe6f9fb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 26 04:17:33 2022 -0600
+
+    Merge pull request #327 from jamadagni/master
+    
+    Additions to geometry.asy
+
+commit fa28442195bd99b9bac87e3ff752953ac57ee172
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 26 12:05:54 2022 +0200
+
+    Remove extraneous include.
+
+commit 3514430ddbdbf89e21b560202c06801c42ab590f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 26 12:05:24 2022 +0200
+
+    Optimize dvisvgm output.
+
+commit a7588cad36589cc3df2b1bc66123e8c94b681a39
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 26 11:57:05 2022 +0200
+
+    Make dvisvgmMultipleFiles true by default.
+
+commit 8f18ae72e3f12db006aabb23a5045c149a9a821a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 25 14:21:16 2022 -0600
+
+    Fix BUG #329: Fraction bars in labels are always black with PDF texengines.
+
+commit 9fe061906f7b5d0e334299c917effeb283989237
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Mon Jul 25 01:21:11 2022 -0600
+
+    XASY: Add rough version of opacity.
+
+commit acb00a464f88dfef0e36046925cd3df24a643e12
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Jul 23 22:17:29 2022 -0600
+
+    XASY: Add rough version of pen caps.
+
+commit 3878760d3335d907ef6de6b251835eff51274395
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Jul 23 21:53:27 2022 -0600
+
+    XASY: Add alpha line styles.
+
+commit 9573bc9448c759acd5fa820567d16f90d971acde
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Mon Jul 18 10:50:48 2022 -0600
+
+    XASY: Fix filled arrow grouping issue.
+
+commit d5dfdeba88d17eaccfea41798c4fd3a221d03f6a
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Jul 16 22:08:18 2022 -0600
+
+    XASY: Add tabs to context menu.
+
+commit 4fe6f9fb1633ebcfff637bf2140f042b7d802245
+Author: Shriramana Sharma <samjnaa at gmail.com>
+Date:   Thu Jul 14 22:34:15 2022 +0530
+
+    add fill and filldraw for circle,ellipse,triangle,triangle[]
+
+commit 8b8ad63d73e25bc098840c61b16a869184a6cdb2
+Author: Shriramana Sharma <samjnaa at gmail.com>
+Date:   Thu Jul 14 20:19:38 2022 +0530
+
+    add path operator ecast(segment)
+
+commit 006cb4c48cae38fdd710a885df0d38fa172ed640
+Author: Shriramana Sharma <samjnaa at gmail.com>
+Date:   Thu Jul 14 19:57:20 2022 +0530
+
+    add path operator cast(triangle), fix points order
+
+commit dc9d231185c9b01bd8d32c2bbbc87001caa1f4d8
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jul 14 09:22:08 2022 -0600
+
+    Simplify code.
+
+commit b7db8911e3b2cbcc3c6330312b49acb0e06213b9
+Author: Shriramana Sharma <samjnaa at gmail.com>
+Date:   Thu Jul 14 19:47:02 2022 +0530
+
+    rename geometry.orthocentercenter to geometry.orthocenter
+
+commit fb60e629731adba9460cbb9297cf9def84baf897
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Jul 14 01:17:14 2022 -0600
+
+    XASY: Fix arrow fill selection.
+
+commit de64e70501d4219220d8ecfeebd99effcb07f732
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Jul 14 01:05:34 2022 -0600
+
+    XASY: Add hidden code for color options.
+
+commit 587a21490bf6d3892ddeab36dc8d8acdd3cec32c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 13 16:56:14 2022 -0600
+
+    Simplify code.
+
+commit 55d3dab28f6e3698b020cd6125690e65045c6091
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Wed Jul 13 04:07:01 2022 -0600
+
+    XASY: Allow basic arrow curve filling.
+
+commit 3961ec5be64d394e86e89d4ca30b176d4b5ecf62
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 10 10:52:38 2022 -0600
+
+    Fix issue #320.
+
+commit 694902944ba06f3c77dad9bc0bcc4e465fa7e1d4
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jul 9 20:12:27 2022 -0600
+
+    Address issue #320.
+
+commit e88b4b19b53141cc8a070c2eea1b343b5ae88b0e
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Wed Jul 6 23:19:20 2022 -0600
+
+    XASY: Fix object rendering error.
+
+commit 5794434a3392e8c9da44340c4c5a5ab56d55621c
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Wed Jul 6 23:13:19 2022 -0600
+
+    XASY: Set size of context menu.
+
+commit 33bf1141c1bb787bd5518dcfa9f73a4f48d37dfa
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jul 6 23:05:40 2022 -0600
+
+    Output mean color only for PRC.
+
+commit 522aa30a31feeebfab9d9886200fa25c888cf41f
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue Jul 5 15:16:15 2022 -0600
+
+    XASY: Remove deprecated fill changing method.
+
+commit ee191384db269c183b116f717fab11cb6ba4684b
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue Jul 5 15:07:51 2022 -0600
+
+    XASY: Add default indicators for arrow options.
+
+commit 7cbd28939b01da0f96980864698d7d704c9c1a9c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 5 00:45:07 2022 -0600
+
+    Delete troublesome style file.
+
+commit 534d1361a7343dfc653a8b129d3392c0baba68f3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 5 00:41:00 2022 -0600
+
+    Update asygl.
+
+commit 6cea12dfe927edec9aa784ab4b133f9b12ebde1d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Jul 5 00:36:47 2022 -0600
+
+    WebGL: Support backwards compatibility.
+
+commit 323eb79327cf179491107d4ec3e3d6e994b324aa
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 4 23:56:02 2022 -0600
+
+    WebGL: Compute Bezier curve bounds.
+
+commit 482d04bdad8a25d274d1719f6653ff4d4c7b3250
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 4 17:05:47 2022 -0600
+
+    WEBGL: Compute triangle group bounds.
+
+commit 72de9111632b3370f362740ab42cb6ce0238888b
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Mon Jul 4 11:04:02 2022 -0600
+
+    XASY: Show hints for default arrow size and angle.
+
+commit 00cd7219a9794f21ecd3209411889b25523322e0
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jul 4 00:04:25 2022 -0600
+
+    WEBGL: Compute Bezier triangle bounds in WebGL. Remove Min and Max.
+
+commit 42bc4a3b4e0f187e265c353fc9e7766cf8165b95
+Merge: a45aaa1e 30ad132f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 3 22:09:06 2022 -0600
+
+    Merge branch 'master' into webglbounds.
+
+commit 30ad132f3a7dd182792d24a150aaa45de332ee8b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 3 19:34:37 2022 -0600
+
+    Simplify workflow.
+
+commit e15ba5b1e764cff6b75520d41c8fb96a03730d4e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jul 3 18:56:08 2022 -0600
+
+    Fix BUG #319: Rename NOCACHE to NoOutputFonts to address yet another Ghostscript backwards incompatibility (in Ghostscript version 9.56).
+
+commit 12a778be453f9319faeac99edfa25c0498bf2024
+Merge: d393a76b 48625bd2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 29 13:06:59 2022 -0600
+
+    Merge branch 'compute3'.
+
+commit 48625bd2b66ca904af42e308c5bf8d0b5571de39
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 29 13:03:58 2022 -0600
+
+    Fix typo.
+
+commit e89c84c47bed90bca961e6bd26f8a8e7e3c8c3a0
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun Jun 26 23:53:52 2022 -0600
+
+    XASY: Fix arrow reflection bug.
+
+commit 149229fd5ac11209c9fa1f73d5b0d3ed4c2af7f4
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Jun 25 00:03:29 2022 -0600
+
+    XASY: Fix context menu object selection quirks.
+
+commit 81c731e85cdd1803921322e7608306ff9109c0d8
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Jun 23 21:47:06 2022 -0600
+
+    XASY: Finalize saving fix.
+
+commit d531d9e1a96ef2c589b76e38c1a3817cac0d5d95
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Wed Jun 22 00:49:55 2022 -0600
+
+    XASY: Progress on saving bug.
+
+commit d393a76b3960455b4285806771e705faa54c20d8
+Merge: 0669e4fb d8cacc97
+Author: Supakorn 'Jamie' Rassameemasmuang <jamievlin at outlook.com>
+Date:   Tue Jun 21 15:44:12 2022 -0600
+
+    Merge pull request #317 from vectorgraphics/dependabot/pip/GUI/numpy-1.22.0
+    
+    Bump numpy from 1.21.0 to 1.22.0 in /GUI
+
+commit d8cacc97b70f35914ba89baf8c564af93af42edc
+Author: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
+Date:   Tue Jun 21 21:32:47 2022 +0000
+
+    Bump numpy from 1.21.0 to 1.22.0 in /GUI
+    
+    Bumps [numpy](https://github.com/numpy/numpy) from 1.21.0 to 1.22.0.
+    - [Release notes](https://github.com/numpy/numpy/releases)
+    - [Changelog](https://github.com/numpy/numpy/blob/main/doc/HOWTO_RELEASE.rst)
+    - [Commits](https://github.com/numpy/numpy/compare/v1.21.0...v1.22.0)
+    
+    ---
+    updated-dependencies:
+    - dependency-name: numpy
+      dependency-type: direct:production
+    ...
+    
+    Signed-off-by: dependabot[bot] <support at github.com>
+
+commit d9c5fb35f0f2967f4a9af2a1df65aaa64996f861
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Mon Jun 20 02:40:52 2022 -0600
+
+    XASY: Improve how list options are created.
+
+commit e395fb2dd6250a78fd6ce8fd134e2cbf6dda9936
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Jun 16 23:17:39 2022 -0600
+
+    XASY: Fix text entry bug.
+
+commit 134ebc7ff7947248ed281383a7026586d54b6567
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu Jun 16 21:20:34 2022 -0600
+
+    XASY: Refactor reflection code.
+
+commit 63932b2597a406fddbb98763c353fee01aba2524
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun Jun 12 23:53:38 2022 -0600
+
+    XASY: Refactoring and quality enhancement.
+
+commit 8677a0f1a2571f1b38fc1589cf12f6341f69b659
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jun 12 10:32:22 2022 -0600
+
+    TRANSPARENCY: Save 4 bytes in shuffle array.
+
+commit 83e09ca618a9063f0d8c272dd855be9e081c19b1
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Jun 11 20:16:52 2022 -0600
+
+    XASY: Make options dynamic.
+
+commit 292500e5c8d7762b8a49e62665c07221c3bee395
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat Jun 11 20:05:04 2022 -0600
+
+    XASY: Add confirm button for the context menu.
+
+commit 8097098c7938bcc1acc92e7aa5ca675160f47e23
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Fri Jun 10 21:37:38 2022 -0600
+
+    XASY: Add fill type options.
+
+commit 6d42edf99fcc672a4f7ab3d098c82eaa76c2e90c
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Fri Jun 10 21:23:30 2022 -0600
+
+    XASY: Add arrow angle changing options.
+
+commit d9d7a49824f5976135d4b82f554a6a6181ee7087
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Fri Jun 10 21:12:42 2022 -0600
+
+    XASY: Add arrow sizes.
+
+commit a45aaa1e948343e6a6d86391f26f4f132e17e6bd
+Merge: 5f676ec6 0669e4fb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 9 19:01:27 2022 -0600
+
+    Merge branch 'master' into webglbounds.
+
+commit 0669e4fb0fc358ae9555d3db375f3568365b740b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 9 19:00:57 2022 -0600
+
+    Compute tight bounds of Bezier patches and triangles.
+
+commit 5f676ec6a4cc13ce7e382f8b5204df700e97e2b4
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 9 17:35:45 2022 -0600
+
+    Compute Bezier patch bounds in WebGL.
+
+commit 4f51b82701aea7a9c14b89aa833fa10152f2d8c1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 9 17:26:50 2022 -0600
+
+    Fix formatting.
+
+commit 5d6189436d95bbbf6f443d67cc9744af3338ff89
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Wed Jun 8 17:54:34 2022 -0600
+
+    XASY: Fix selection crashing bug.
+
+commit ebf5014696e14f74b17b8a6c2ce740c15e15c657
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Wed Jun 8 17:51:54 2022 -0600
+
+    XASY: Clean up code used for testing.
+
+commit 2879110f7a1ebb3c03cfbb01d68bfc4edbce466a
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Jun 6 21:45:14 2022 -0600
+
+    Derive size from offset in blend shader.
+
+commit 597d08b0ae468babf8c9a7b956d14c11415c1946
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Jun 5 13:06:39 2022 -0600
+
+    Update to latest prefixsum shader.
+
+commit f061f1483550229f592eab9b3e0425a2d6e608c3
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun Jun 5 00:55:47 2022 -0600
+
+    XASY: Fix arrow style selection bug.
+
+commit a2f9702924d4ec7592ba5241a9bc1a40aeb25733
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun Jun 5 00:44:26 2022 -0600
+
+    XASY: Add more arrow types.
+
+commit 75baa00f90034b6de5ccb2dc57b10d723effb4e3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Jun 4 21:02:02 2022 -0600
+
+    Restore zero shader.
+
+commit a95c328913df1d0b6ec0ecdb89dae48577556525
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Jun 3 00:45:00 2022 -0600
+
+    Automatically choose optimal sum2 shader.
+
+commit ba6fcdce8f4e90da7944a9ddec6fbd0ab617181e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 2 16:05:07 2022 -0600
+
+    Optimize sum shaders.
+
+commit 5db78fbb79c6711d250748e47a08381eff4f9a04
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Jun 2 09:26:49 2022 -0600
+
+    Generalize sum2 shader.
+
+commit 70a7c559bbac4e1939552b4228704bdf60a753df
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Jun 1 16:10:04 2022 -0600
+
+    Use optimized binomial tree reduce in sum1 shader.
+
+commit 9271bd55970b7ba76e265d4dd9a89a932b8981aa
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue May 31 17:57:06 2022 -0600
+
+    XASY: Code improvements and arrow copying setup.
+
+commit 98939bfe5406905d51b64ae90ccb56822f6f97c3
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue May 31 17:51:19 2022 -0600
+
+    XASY: Allow dearrowification.
+
+commit d9eab3fb70031cdaa4de8ff14147eb6e895ec317
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue May 31 17:12:09 2022 -0600
+
+    XASY: Snap focus to canvas when objects change.
+
+commit 9b853eead5d61728663ed5c457b4764800a70f17
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue May 31 13:33:33 2022 -0600
+
+    Optimize sum1 shader.
+
+commit aa4700c2d91fcd17fd1768bd7df45ccd788c20d7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue May 31 11:58:45 2022 -0600
+
+    Revert cd7092db3a5f297df6b735c91b4989caf8e60609.
+
+commit be2310a8affc0abf3e8d330489e2ff1f491c3df9
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue May 31 11:20:20 2022 -0600
+
+    Fix memory barriers.
+
+commit 7df45601fd0e38a252e4c68929ed54d9c286e971
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue May 31 10:45:45 2022 -0600
+
+    Fix memory barriers; optimize Hillis-Steele algorithm.
+
+commit 64ca0f99828ac592896b524aa79b043101210e24
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon May 30 23:05:02 2022 -0600
+
+    Add missing shader.
+
+commit 411ffcbc0b0cf626a36ab66bb342656a1e1da2e4
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon May 30 19:00:48 2022 -0600
+
+    Finish partial sums.
+
+commit fa12530d3f7a7d2e84c330ffa35181df38580831
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Mon May 30 11:59:22 2022 -0600
+
+    XASY: Rough version of adding arrowheads.
+
+commit 8519ee922db934d05f0945b93ef17e4b24fe6ea2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon May 30 10:58:37 2022 -0600
+
+    Implement bezier(real a, real b, real c, real d, real t).
+
+commit a728266f13a123f772294b50e2a58b50c28091ef
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 23:24:34 2022 -0600
+
+    Avoid unnecessary differential computations.
+
+commit c5ff5bd2628c05dcf52acd6502a851d78cce3510
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 23:18:15 2022 -0600
+
+    Defer fragment buffer resizing as long as possible.
+
+commit 952e340b05bbd3b6ad5f191f74e0669a5055c2ac
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 23:06:37 2022 -0600
+
+    Fix noGPUindexing.
+
+commit 044dc63915cb19f8106f2e8ebb5df91cf15cdf4f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 22:59:22 2022 -0600
+
+    Disable subdivision crack adjustments for transparent patches.
+
+commit 8bd698940d42574cbe6c7a3c7170039157b43196
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 22:46:26 2022 -0600
+
+    Fix commit f57b4f8b9ead42f092cb706960bf10b6b8d55e30.
+
+commit 8931b432b64b6b90e934bc502c62fffe47a4a8cb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 22:11:32 2022 -0600
+
+    Standardize names.
+
+commit bf9e1ee6c40f9de385992ecef5ca0b8c46f3f63b
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 21:55:36 2022 -0600
+
+    Improve performance.
+
+commit 77d25cd8a9151b5a32ecb6169b5973284a28a955
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 19:13:12 2022 -0600
+
+    Fix maximum depth detection.
+
+commit cd7092db3a5f297df6b735c91b4989caf8e60609
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 15:49:18 2022 -0600
+
+    Use atomicCounterExchange to reset compression counter.
+
+commit 711b1a1666ae0b622a0a79c6275d4076523bb4ba
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun May 29 15:18:50 2022 -0600
+
+    XASY: Add basic logic for replacing objects.
+
+commit e407a7c34129589fcbb0a86d42925592e7d3f8b0
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 14:42:47 2022 -0600
+
+    Finish implementing feedback to CPU.
+
+commit f57b4f8b9ead42f092cb706960bf10b6b8d55e30
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 10:51:02 2022 -0600
+
+    Send feedback to CPU.
+
+commit 5801785e5729fda77f88fabdd7ddbd0e53a48851
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 00:57:57 2022 -0600
+
+    Revert "Store opaqueDepth in alpha channel of opaqueColor."
+    
+    This reverts commit 431d19384d090f11daeed3dc449dc61d2ed5e309.
+
+commit 431d19384d090f11daeed3dc449dc61d2ed5e309
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun May 29 00:04:35 2022 -0600
+
+    Store opaqueDepth in alpha channel of opaqueColor.
+
+commit a35d30b911d256832fe067f638aec75fdad79814
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat May 28 23:28:28 2022 -0600
+
+    Test 2-stage algorithm.
+
+commit 64942510ac5d30470cdd22e777cd0b1a38a6ff69
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat May 28 23:00:33 2022 -0600
+
+    Test 3-stage algorithm.
+
+commit 1c3176bb63ff4ab159bdea150174382c6f6b2b70
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat May 28 22:27:39 2022 -0600
+
+    XASY: Setup work for adding arrowheads.
+
+commit e84bf41ae59bb60cdff9357fc0c7f7faf8933174
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat May 28 11:19:37 2022 -0600
+
+    Add const qualifier.
+
+commit 0f0a04b64cccd21c656ec7a69565f43cf8e6a7b7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri May 27 23:26:36 2022 -0600
+
+    Implement GPUblockSize.
+
+commit 58ddb9f87dcee756366d82b48424c3fe1bac19d9
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri May 27 23:02:11 2022 -0600
+
+    Disable GPUcompression by default.
+
+commit 7dae0ee579ba48d52d4687b79e87506e989a8ce2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri May 27 22:48:47 2022 -0600
+
+    Use a single improved shader to avoid bank conflicts.
+
+commit 4712edd628e9742417b7d83b4d38d2721bae370e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed May 25 09:32:56 2022 -0600
+
+    Simplify code.
+
+commit 1bfbb8215540524f4182744d836031d2223915ed
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed May 25 09:27:17 2022 -0600
+
+    Revert "Perform all sums on the GPU."
+    
+    This reverts commit 574eb027cf53064cfb27e8ab09333a7775b2e094.
+
+commit f377f169236460849e5507e75f50ea8e3955aeba
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue May 24 00:05:26 2022 -0600
+
+    XASY: Change options based on item type.
+
+commit 33cc6fcb9e5ca77a4565db00465345c2b28318d0
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Mon May 23 23:33:53 2022 -0600
+
+    XASY: Make reflection relative to object.
+
+commit 574eb027cf53064cfb27e8ab09333a7775b2e094
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon May 23 22:59:08 2022 -0600
+
+    Perform all sums on the GPU.
+
+commit d270aa2012843aa592d2ada3b390ded7c1c3c35f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon May 23 19:28:39 2022 -0600
+
+    Implement Hillis-Steele algorithm in second stage.
+
+commit b182742a8ac29f1fbf1f37228492a09236c0e0ce
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon May 23 17:35:04 2022 -0600
+
+    Add another compute shader stage to reduce bandwidth to CPU.
+
+commit 85e78f59600fde0f6214212012c80ff539474a13
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon May 23 16:10:44 2022 -0600
+
+    Avoid use of localSumBuffer.
+
+commit 4d4159b5ec2eafa2bb3ba0837d863690af66ce4e
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon May 23 15:30:10 2022 -0600
+
+    Use a single compute shader.
+
+commit aeabf93463cb35e55e7d86bd2a460f1616d44939
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun May 22 23:31:07 2022 -0600
+
+    XASY: Fix minor reflection bug.
+
+commit ea491e1af487809aeca6832227cc2d5aac7ab9d5
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun May 22 23:21:56 2022 -0600
+
+    XASY: Add options reflection to context menu.
+
+commit 3c38347c7c0c3a55b0677a7089bf3a662d1515fd
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun May 22 00:51:39 2022 -0600
+
+    XASY: Prevent context menu crashing.
+
+commit 13aa6344ac37b2303deb1e4e6d6a24d9b260762f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu May 19 20:57:45 2022 -0600
+
+    Improve documentation of rotate(real, triple).
+
+commit 68ff3758a11c9ab62c517b219cd6321b6c8a17ff
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Wed May 18 23:26:19 2022 -0600
+
+    XASY: Change filling method.
+
+commit e867b1fe04293de229d6c133d7cf21a5a9906b13
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue May 17 01:52:30 2022 -0600
+
+    XASY: Display icon.
+
+commit a6d8511834b0dab1dd3580ec0920fbde5cc76042
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue May 17 01:51:30 2022 -0600
+
+    XASY: Display icon.
+
+commit 0f5cb6b88b5c1e3a68ef42f0b441ed4812aa1392
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Tue May 17 01:32:27 2022 -0600
+
+    XASY: Remove redundant menu.
+
+commit c1ec3a89279d567cf4a910557546137aac2c0ee3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat May 14 12:27:51 2022 -0600
+
+    Increment version to 2.82.
+
+commit 4347e589ed5e4fc4f03d4fdafced28f6345f21a7
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat May 14 00:09:48 2022 -0600
+
+    XASY: Minor quality improvements to the options window.
+
+commit 429a50bc7199fcbc5b081369dcb75f92ba766a87
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sat May 14 00:01:55 2022 -0600
+
+    XASY: Alpha version of context menu.
+
+commit 920c0886c23e20db270d04337e59c4d9e069dc63
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri May 13 23:17:54 2022 -0600
+
+    Fix CYGWIN warning.
+
+commit c895e09915302ae276740f1cc91afd834658ae37
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri May 13 22:31:19 2022 -0600
+
+    Fix bug #313: opaque rendering on platforms lacking GL_ARB_fragment_shader_interlock.
+
+commit 1c3deeb0cd6bab28ebde0abc9d04c0302fa84713
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Wed May 11 22:59:01 2022 -0600
+
+    XASY: Finalize alpha version of fill/unfill.
+
+commit 1bb18d1c97b1c05aaff755fbfcc8e4b0a9852776
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Wed May 11 22:48:53 2022 -0600
+
+    XASY: Setup work for context menus.
+
+commit fc7dac6887136289035eaa4f7f60fcbee1dc3967
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed May 11 18:29:56 2022 -0600
+
+    Update documentation.
+
+commit d54736762baaf6b675311c0e5791f6aa5792ae57
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed May 11 16:40:43 2022 -0600
+
+    Document surface constructor for solids of revolution.
+
+commit f910ea19eee9f240045594bf049f363cc8181ac4
+Merge: de70a958 72b0fe36
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue May 10 22:20:00 2022 -0600
+
+    Merge branch 'Qt'.
+
+commit de70a958b3844210142a9066b20bfce2a62bde4f
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue May 10 21:38:21 2022 -0600
+
+    Zero offset buffer when required.
+
+commit 72b0fe3685729e059337082dcd5585ae7fa20f50
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Sun May 8 22:38:36 2022 -0600
+
+    XASY: Fix crashes from opening xasy files.
+
+commit a14f4a75cd8f6d0f9cf6c4217e70baa690e4a1ad
+Author: chaumont-arch <chaumont at ualberta.ca>
+Date:   Thu May 5 23:11:47 2022 -0600
+
+    XASY: Fix bounding box drawing issue.
+
+commit 27d52fa7a6356cda473eb24acac77e822c6fb09d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue May 3 12:20:43 2022 -0600
+
+    Port to MacOS.
+
+commit e23a5527b710aa3cbf83d1d0a682aa5c6a49b62c
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Apr 24 10:24:46 2022 -0600
+
+    Fix bug #310: Missing slash in temporary file path.
+
+commit 365df5651ce0728fa3607d05ae1396668f374197
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Apr 10 09:35:38 2022 -0600
+
+    Rename example.
+
+commit 253349484d7d76aeb639428f02e5c08779fbe094
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Apr 10 00:31:20 2022 -0600
+
+    Add missing typedef.
+
+commit 29967ac62cb69bf3e3196b8cdf5e714007eabce2
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Apr 10 00:20:20 2022 -0600
+
+    Fix last commit.
+
+commit 6f10abaa6611c52cb8040b5715218287202b5510
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Apr 10 00:18:32 2022 -0600
+
+    Consult pkg-config for readline library.
+
+commit 5af8022000bd9d3ab21e7c3548e92e9d59dd3c07
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Apr 10 00:11:15 2022 -0600
+
+    Fix issue #40: Consult pkg-config.
+
+commit 4bd54e14498523c06a2e4cecf20e7c4c6851299d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Apr 8 23:23:37 2022 -0600
+
+    Fix issue #309.
+
+commit 2ffee49a7e3fe5180a96332d529eae8bfe7a8316
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Apr 9 14:49:43 2022 +1000
+
+    Move global typedef within namespace.
+
+commit 8f2ce216a6f5537d74a6b691fcd416a344570007
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Apr 8 17:03:24 2022 -0600
+
+    Implement real Schur decomposition.
+
+commit 0f2ad99bcd3b7cb85ba66d4576ada8438da9c288
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Apr 8 16:23:26 2022 -0600
+
+    Implement Schur decomposition.
+
+commit 5b705e7dece21fb809a43e25b4e97c1707a21152
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Apr 5 23:28:53 2022 -0600
+
+    Add example; remove empty directories.
+
+commit b00f9fc3c2bf1b3b3cb311faf7098c149088e3cb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Apr 5 21:48:56 2022 -0600
+
+    Increment version to 2.81.
+
+commit 52f5c99018d24883f6e115ae72beaa88a15d0669
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Apr 5 11:32:10 2022 -0600
+
+    Fix last revision.
+
+commit 6992734bf38c28328ba829944596fa43d3d40512
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Apr 4 23:00:20 2022 -0600
+
+    TRANSPARENCY: Restrict number and size of workgroups as needed.
+
+commit 561986f58f96e407e92979207d66d4bc864b9556
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Apr 3 21:56:20 2022 -0600
+
+    TRANSPARENCY: Optimize global summation on CPU.
+
+commit e80e073ca6e2bfdc06c277ba17544e71533cecf7
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Mar 29 23:04:53 2022 -0600
+
+    TRANSPARENCY: Fix export.
+
+commit 0fb93b6435910d57594ab4fc5542efd9e0543103
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Mar 28 09:44:08 2022 -0600
+
+    TRANSPARENCY: Check for empty pixels with -noGPUCOMPRESS.
+
+commit 6d3df54aa7801a97ce35824dfa6ffc9109b1a4eb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Mar 28 09:29:58 2022 -0600
+
+    TRANSPARENCY: Fix buffer allocation.
+
+commit 36c947e404b55985d949c7d2313e2f94334762f3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Mar 28 08:22:31 2022 -0600
+
+    TRANSPARENCY: Use no more than 8 SSBOs.
+
+commit 5e1c855ab8287c60a278d3ed3eb93e7eca644418
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Mar 27 13:21:14 2022 -0600
+
+    Implement GPUcompress=false option for non-NVIDIA GPU cards.
+
+commit 554a81c8898bc97d0d4841178e92f5ee3d2a5f22
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Mar 26 12:33:24 2022 -0600
+
+    Fix commit 56df79e03bb18523f47be46620b7be5e62d92eac.
+
+commit 9d0c1b6afea89eeba8c90b54c1f3ee73fd8094a1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Mar 26 11:24:03 2022 -0600
+
+    TRANSPARENCY: Fix floating point exception.
+
+commit 56df79e03bb18523f47be46620b7be5e62d92eac
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Mar 26 10:23:23 2022 -0600
+
+    TRANSPARENCY: Fix export when GPUindexing=false.
+
+commit 25650a26253bfcc81b4a7d4448f352e41236d392
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Mar 26 09:52:06 2022 -0600
+
+    TRANSPARENCY: Fix segmentation fault.
+
+commit 5649ac09e2deb90d4929b34e47677395bac20b48
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Mar 25 22:17:45 2022 -0600
+
+    TRANSPARENCY: Fix atomic counter initialization.
+
+commit f88c7598b4b01a1d4c0c0bd5412a48d1a0eb5160
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Mar 25 00:56:59 2022 -0600
+
+    TRANSPARENCY: Transmit maxSize in global sum array.
+
+commit 3e0cd170f6fe57e38265fff7547d2374ae05bee6
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Wed Mar 23 23:29:14 2022 -0600
+
+    TRANSPARENCY: Discard empty counts.
+
+commit afe3b3291af5d8f02ebb2e286612d90fa96cf7c1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Mar 21 09:50:25 2022 -0600
+
+    TRANSPARENCY: Fix data format.
+
+commit d962523e868ae3240b4196cdaf498337dde34ff3
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Mar 20 10:43:27 2022 -0600
+
+    TRANSPARENCY: Transfer maxSize via globalSum buffer.
+
+commit a0c83db864e01587c64c47c96004e62455682ecc
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Mar 19 22:52:32 2022 -0600
+
+    TRANSPARENCY: Check ARRAYSIZE on every frame.
+
+commit 50aaba78229e7401a1d3863ab3c4184dfc432585
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Mar 19 22:10:22 2022 -0600
+
+    TRANSPARENCY: Don't zero offset buffer.
+
+commit 6ac4803bd0c0af840dcf8609087d521883fe46ca
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Mar 19 18:28:38 2022 -0600
+
+    TRANSPARENCY: Improve last revision.
+
+commit bd35596b24cde31b551ae4c6a3ea02e97ce1f0b1
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Mar 19 15:13:35 2022 -0600
+
+    TRANSPARENCY: Optimize case of one transparent fragment.
+
+commit 8b061a48bdf27b5e142bf48869087c73562169fb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Mar 19 14:46:06 2022 -0600
+
+    TRANSPARENCY: Simplify code.
+
+commit 9946580b30f18817b09a46ab62fd9e20d113b303
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sat Mar 19 14:06:40 2022 -0600
+
+    TRANSPARENCY: Fix depth lookup.
+
+commit 4c6980c4001d493e83d8ba5d11ba56d9f21c38c9
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Fri Mar 18 22:50:54 2022 -0600
+
+    TRANSPARENCY: Conditionally define uniform.
+
+commit 638bb757747216fae868e8a6e152b6eb690c30ce
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Mar 14 12:25:40 2022 -0600
+
+    Implement weighted least-squares fit.
+
+commit 6afedcba8989cac33ce677387160528d828ea269
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Mar 13 19:28:03 2022 -0600
+
+    TRANSPARENCY: Combine local index and depth into structure.
+
+commit fd3d794762fd6e532b916318625d4361f54467bb
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Mar 13 17:15:29 2022 -0600
+
+    Remove unused code.
+
+commit dbafbb86b583bc1671f6111c7518219efb74de18
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Mar 13 17:01:26 2022 -0600
+
+    Merge conditionals.
+
+commit a6e12dda261cad07593c988952b2fe62cf317600
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Sun Mar 13 14:19:01 2022 -0600
+
+    Avoid unnecessary writes to OpaqueDepth SSBO.
+
+commit 115e01faf97e2b1cc6b9ba9c8928d80bc0b00aa0
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Mar 10 12:01:47 2022 -0700
+
+    Use UNIX line terminators.
+
+commit b007afcc67cf18fd431492f9f2cf449daac10b95
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Thu Mar 10 11:56:22 2022 -0700
+
+    git subrepo commit (merge) LspCpp
+    
+    subrepo:
+      subdir:   "LspCpp"
+      merged:   "a311aa1d"
+    upstream:
+      origin:   "git at github.com:vectorgraphics/LspCpp"
+      branch:   "master"
+      commit:   "19411f6c"
+    git-subrepo:
+      version:  "0.4.3"
+      origin:   "https://github.com/ingydotnet/git-subrepo"
+      commit:   "2f68596"
+
+commit 0ce8a977de9a3f01ac63c895d56da4f3848d2035
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Mar 8 23:56:24 2022 -0700
+
+    git subrepo commit (merge) LspCpp
+    
+    subrepo:
+      subdir:   "LspCpp"
+      merged:   "574c2530"
+    upstream:
+      origin:   "git at github.com:vectorgraphics/LspCpp"
+      branch:   "master"
+      commit:   "95cf6780"
+    git-subrepo:
+      version:  "0.4.1"
+      origin:   "https://github.com/ingydotnet/git-subrepo"
+      commit:   "a04d8c2"
+
+commit d12b2dd06788452e0a4fe68b10cc181c6747e42d
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Tue Mar 8 23:36:37 2022 -0700
+
+    Remove all invisible files from release.
+
+commit 1cc029d5b9f573282f0e36daa12c28366130fce8
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Mar 7 21:09:49 2022 -0700
+
+    LSP: Clean up generated files; fix permissions.
+
+commit c7e039c39c71323575a1c80ffc2405ab244339b0
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Mar 7 20:04:26 2022 -0700
+
+    git subrepo commit (merge) LspCpp
+    
+    subrepo:
+      subdir:   "LspCpp"
+      merged:   "05c9d022"
+    upstream:
+      origin:   "git at github.com:vectorgraphics/LspCpp"
+      branch:   "master"
+      commit:   "b1e44c8f"
+    git-subrepo:
+      version:  "0.4.1"
+      origin:   "https://github.com/ingydotnet/git-subrepo"
+      commit:   "a04d8c2"
+
+commit 94fe097db546f1de9e5b43e6b31fe1d2d4e4edaf
+Author: John Bowman <bowman at ualberta.ca>
+Date:   Mon Mar 7 14:23:48 2022 -0700
+
+    Increment version to 2.80.
+
 commit 70dcf303c069ce3669f5f589aa3642650665278b
 Author: John Bowman <bowman at ualberta.ca>
 Date:   Mon Mar 7 11:40:50 2022 -0700

Modified: trunk/Build/source/utils/asymptote/GL/glew.c
===================================================================
--- trunk/Build/source/utils/asymptote/GL/glew.c	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GL/glew.c	2023-02-05 18:18:59 UTC (rev 65737)
@@ -253,7 +253,7 @@
   if(*na >= nb)
   {
     GLuint i=0;
-    while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++;
+    while (i < nb && (*a)[i] == b[i]) i++;
     if(i == nb)
     {
       *a = *a + nb;
@@ -269,7 +269,7 @@
   if(*na >= nb)
   {
     GLuint i=0;
-    while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++;
+    while (i < nb && (*a)[i] == b[i]) i++;
     if(i == nb)
     {
       *a = *a + nb;
@@ -285,7 +285,7 @@
   if(*na >= nb)
   {
     GLuint i=0;
-    while (i < nb && (*a)+i != NULL && b+i != NULL && (*a)[i] == b[i]) i++;
+    while (i < nb && (*a)[i] == b[i]) i++;
     if (i == nb && (*na == nb || (*a)[i] == ' ' || (*a)[i] == '\n' || (*a)[i] == '\r' || (*a)[i] == '\t'))
     {
       *a = *a + nb;

Added: trunk/Build/source/utils/asymptote/GUI/ContextWindow.py
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/ContextWindow.py	                        (rev 0)
+++ trunk/Build/source/utils/asymptote/GUI/ContextWindow.py	2023-02-05 18:18:59 UTC (rev 65737)
@@ -0,0 +1,320 @@
+import PyQt5.QtWidgets as Qw
+import PyQt5.QtGui as Qg
+import PyQt5.QtCore as Qc
+import xasyVersion
+
+import xasyUtils as xu
+import xasy2asy as x2a
+import xasyFile as xf
+import xasyOptions as xo
+import UndoRedoStack as Urs
+import xasyArgs as xa
+import xasyBezierInterface as xbi
+from xasyTransform import xasyTransform as xT
+import xasyStrings as xs
+
+import PrimitiveShape
+import InplaceAddObj
+
+import CustMatTransform
+import SetCustomAnchor
+import GuidesManager
+import time
+
+class AnotherWindow(Qw.QWidget):
+    def __init__(self, shape, parent):
+        super().__init__()
+        self.shape = shape
+        self.parent = parent
+        self.newShape = self.shape
+        self.layout = Qw.QVBoxLayout(self)
+
+        # Initialize tab screen
+        self.tabs = Qw.QTabWidget()
+        self.fillTab = Qw.QWidget()
+        self.lineTab = Qw.QWidget()
+        self.arrowTab = Qw.QWidget()
+        self.othersTab = Qw.QWidget()
+        self.tabs.resize(300,200)
+        self.fillTab.layout = Qw.QVBoxLayout(self.fillTab)
+        self.lineTab.layout = Qw.QVBoxLayout(self.lineTab)
+        self.arrowTab.layout = Qw.QVBoxLayout(self.arrowTab)
+        self.othersTab.layout = Qw.QVBoxLayout(self.othersTab)
+        self.tabs.addTab(self.fillTab,"Fill Options")
+        self.tabs.addTab(self.lineTab,"Line Options")
+        self.tabs.addTab(self.arrowTab,"Arrow Options")
+        self.tabs.addTab(self.othersTab,"Misc. Options")
+
+        self.layout.addWidget(self.tabs)
+        self.setLayout(self.layout)
+        self.setWindowTitle("Shape Options Window")
+
+        self.label = Qw.QLabel("Fill:")
+        self.fillTab.layout.addWidget(self.label)
+        self.fillButton = Qw.QComboBox()
+        self.fillButton.addItem("Unfilled")
+        self.fillButton.addItem("Filled")
+        self.fillButton.currentIndexChanged.connect(self.fillChange)
+        self.fillTab.layout.addWidget(self.fillButton)
+
+        if isinstance(self.shape, x2a.asyArrow):
+            self.colorButton = Qw.QPushButton("Set Line Colour")
+            self.colorButton.clicked.connect(self.pickColor)
+            self.fillTab.layout.addWidget(self.colorButton)
+
+            self.colorButton = Qw.QPushButton("Set Fill Colour")
+            self.colorButton.clicked.connect(self.pickFillColor)
+            self.fillTab.layout.addWidget(self.colorButton)
+
+        elif isinstance(self.shape, x2a.xasyShape):
+            self.colorButton = Qw.QPushButton("Set Colour")
+            self.colorButton.clicked.connect(self.pickColor)
+            self.fillTab.layout.addWidget(self.colorButton)
+
+        self.label = Qw.QLabel("Reflection:")
+        self.othersTab.layout.addWidget(self.label)
+        self.reflectionButton = Qw.QComboBox()
+        self.reflectionButton.addItem("None")
+        self.reflectionButton.addItem("Horizontal")
+        self.reflectionButton.addItem("Vertical")
+        self.reflectionButton.currentIndexChanged.connect(self.reflectionChange)
+        self.othersTab.layout.addWidget(self.reflectionButton)
+
+        self.label = Qw.QLabel("Opacity:")
+        self.othersTab.layout.addWidget(self.label)
+        self.opacityBox = Qw.QLineEdit()
+        self.othersTab.layout.addWidget(self.opacityBox)
+        self.opacityBox.setPlaceholderText(str(self.shape.pen.opacity))
+
+        self.label = Qw.QLabel("Arrowhead:")
+        self.arrowTab.layout.addWidget(self.label)
+        self.arrowheadButton = Qw.QComboBox()
+        self.arrowList = ["None","Arrow","ArcArrow"]
+        for arrowMode in self.arrowList:
+            self.arrowheadButton.addItem(arrowMode)
+        self.arrowheadButton.currentIndexChanged.connect(self.arrowheadChange)
+        self.arrowTab.layout.addWidget(self.arrowheadButton)
+
+        self.label = Qw.QLabel("Line Style:")
+        self.lineTab.layout.addWidget(self.label)
+        self.linestyleButton = Qw.QComboBox()
+        self.lineList = ["solid","dashed","dotted","dashdotted"]
+
+        for lineMode in self.lineList:
+            self.linestyleButton.addItem(lineMode)
+        self.linestyleButton.currentIndexChanged.connect(self.linestyleChange)
+        self.lineTab.layout.addWidget(self.linestyleButton)
+        self.linestyleButton.setCurrentIndex(self.lineList.index(self.shape.pen.style))
+
+        self.label = Qw.QLabel("Line Cap Style:")
+        self.lineTab.layout.addWidget(self.label)
+        self.lineCapStyleButton = Qw.QComboBox()
+        self.lineCapListStrings = ["extendcap","flatcap","roundcap"] #Is there a way to pull these directly
+        self.lineCapList = [Qc.Qt.PenCapStyle.SquareCap,Qc.Qt.PenCapStyle.FlatCap,Qc.Qt.PenCapStyle.RoundCap]
+
+        for lineMode in self.lineCapListStrings:
+            self.lineCapStyleButton.addItem(lineMode)
+        self.lineCapStyleButton.currentIndexChanged.connect(self.lineCapStyleChange)
+        self.lineTab.layout.addWidget(self.lineCapStyleButton)
+        self.lineCapStyleButton.setCurrentIndex(self.lineCapList.index(self.shape.pen.capStyle))
+
+        #TODO: Make this a function.
+        if not isinstance(self.shape, x2a.xasyShape):
+            self.fillButton.setCurrentIndex(int(self.shape.arrowSettings["fill"]))
+            if isinstance(self.shape, x2a.asyArrow):
+                self.arrowheadButton.setCurrentIndex(int(self.shape.arrowSettings["active"]))
+            else:
+                self.arrowheadButton.setDisabled(True)
+        else:
+            self.fillButton.setCurrentIndex(int(self.shape.path.fill))
+
+        if isinstance(self.shape, x2a.asyArrow) and self.shape.arrowSettings["active"]: #Make these all a list or something.
+            self.label = Qw.QLabel("Arrow Style:")
+            self.arrowTab.layout.addWidget(self.label)
+            self.arrowstyleButton = Qw.QComboBox()
+            for arrowStyle in self.shape.arrowStyleList:
+                self.arrowstyleButton.addItem(arrowStyle if arrowStyle else "(default)")
+            self.arrowstyleButton.currentIndexChanged.connect(self.arrowstyleChange)
+            self.arrowTab.layout.addWidget(self.arrowstyleButton)
+
+            self.label = Qw.QLabel("Arrow Size:")
+            self.arrowTab.layout.addWidget(self.label)
+            self.arrowSizeBox = Qw.QLineEdit()
+            self.arrowTab.layout.addWidget(self.arrowSizeBox)
+            self.arrowSizeBox.setPlaceholderText(self.getInfo("DefaultHead.size(currentpen)"))
+
+            self.label = Qw.QLabel("Arrow Angle:")
+            self.arrowTab.layout.addWidget(self.label)
+            self.arrowAngleBox = Qw.QLineEdit()
+            self.arrowTab.layout.addWidget(self.arrowAngleBox)
+            self.arrowAngleBox.setPlaceholderText(self.getInfo("arrowangle"))
+
+            self.label = Qw.QLabel("Arrow Fill:")
+            self.arrowTab.layout.addWidget(self.label)
+            self.arrowFillButton = Qw.QComboBox()
+            for arrowFillStyle in self.shape.arrowFillList:
+                self.arrowFillButton.addItem(arrowFillStyle if arrowFillStyle else "(default)")
+            self.arrowFillButton.currentIndexChanged.connect(self.arrowFillChange)
+            self.arrowTab.layout.addWidget(self.arrowFillButton)
+
+            self.arrowstyleButton.setCurrentIndex(int(self.shape.arrowSettings["style"]))
+            self.arrowFillButton.setCurrentIndex(int(self.shape.arrowSettings["fill"]))
+
+        self.fillTab.setLayout(self.fillTab.layout)
+        self.lineTab.setLayout(self.lineTab.layout)
+        self.arrowTab.setLayout(self.arrowTab.layout)
+        self.othersTab.setLayout(self.othersTab.layout)
+
+        self.confirmButton = Qw.QPushButton("Render")
+        self.confirmButton.clicked.connect(self.renderChanges)
+        self.layout.addWidget(self.confirmButton)
+
+    def arrowheadChange(self, i):
+        #None, {Arrow, ArcArrow} x {(),(SimpleHead),(HookHead),(TeXHead)}
+        if isinstance(self.shape, x2a.xasyShape):
+            if i != 0:
+                if isinstance(self.newShape,x2a.asyArrow):
+                    self.newShape.arrowSettings["active"] = i
+                else:
+                    self.newShape = self.shape.arrowify(arrowhead=i)
+        else:
+            self.newShape.arrowSettings["active"] = i #Simplify the logic
+
+    def arrowstyleChange(self, i):
+        self.newShape.arrowSettings["style"] = i
+
+    def linestyleChange(self, i): #I think add an attribute to asyPen
+        self.shape.pen.setStyle(self.lineList[i])
+
+    def lineCapStyleChange(self, i): #I think add an attribute to asyPen
+        self.shape.pen.setCapStyle(self.lineCapList[i])
+
+    def fillChange(self, i):
+        if isinstance(self.shape, x2a.asyArrow):
+            self.shape.arrowSettings["fill"] = bool(i)
+        elif (self.shape.path.fill != bool(i)) and not isinstance(self.newShape, x2a.asyArrow):
+            if self.newShape:
+                self.newShape = self.newShape.swapFill()
+        if isinstance(self.newShape, x2a.asyArrow):
+            self.newShape.arrowSettings["fill"] = bool(i)
+
+    def reflectionChange(self, i): #TODO: Modernize this.
+        reflectionList = [[1,1],[1,-1],[-1,1]]
+        self.parent.newTransform = xT.makeScaleTransform(*reflectionList[i], self.parent.currentAnchor).toQTransform()
+        self.parent.currentlySelectedObj['selectedIndex'] = self.parent.mostRecentObject
+        self.parent.releaseTransform()
+        self.parent.newTransform = Qg.QTransform()
+
+    def sizeChange(self):
+        try:
+            newSize = self.arrowSizeBox.text()
+            self.newShape.arrowSettings["size"] = float(newSize)
+        except:
+            return #TODO: Show error message.
+
+    def angleChange(self): #Refactor this with the above.
+        try:
+            newAngle = self.arrowAngleBox.text()
+            self.newShape.arrowSettings["angle"] = float(newAngle)
+        except:
+            return #TODO: Show error message.
+
+    def arrowFillChange(self, i): #Can I lambda this?
+        self.newShape.arrowSettings["fill"] = i
+
+    def opacityChange(self):
+        newOpacity = self.opacityBox.text()
+        try:
+            newOpacity = int(newOpacity)
+            if newOpacity >= 0 and newOpacity <= 255:
+                self.shape.pen.setOpacity(newOpacity)
+                self.newShape.pen.setOpacity(newOpacity)
+        except:
+            pass
+
+    def renderChanges(self): #Pull from text boxes here.
+        self.opacityChange()
+        if isinstance(self.shape, x2a.asyArrow) and self.shape.arrowSettings["active"]:
+            self.sizeChange()
+            self.angleChange()
+        elif (not isinstance(self.shape, x2a.asyArrow)):
+            self.renderLineStyle()
+        if self.newShape:
+            self.parent.replaceObject(self.parent.contextWindowObject,self.newShape)
+        self.parent.terminateContextWindow()
+
+    def getInfo(self,value):
+        """ Find out the size of an arbitrary Asymptote pen """
+        self.asyEngine = self.parent.asyEngine
+        assert isinstance(self.asyEngine, x2a.AsymptoteEngine)
+        assert self.asyEngine.active
+
+        fout = self.asyEngine.ostream
+        fin = self.asyEngine.istream
+
+        fout.write("write(_outpipe,{},endl);\n".format(value))
+        fout.write(self.asyEngine.xasy)
+        fout.flush()
+
+        return fin.readline()
+
+    def getPattern(self,pattern,path):
+        """ Find out the adjusted pattern of an Asymptote pen """
+        self.asyEngine = self.parent.asyEngine
+        assert isinstance(self.asyEngine, x2a.AsymptoteEngine)
+        assert self.asyEngine.active
+
+        fout = self.asyEngine.ostream
+        fin = self.asyEngine.istream
+
+        #fout.write("pen p=adjust({pattern},arclength({path}),cyclic({path}));\n")
+        #print(f"write(_outpipe,adjust({pattern},arclength({path}),cyclic({path})),endl);\n")
+        fout.write(f"write(_outpipe,adjust({pattern},arclength({path}),cyclic({path})),endl);\n")
+        fout.write(self.asyEngine.xasy)
+        fout.flush()
+
+        return fin.readline()
+
+    def renderLineStyle(self):
+        #Should only get called with asy shapes
+        if not self.newShape:
+            self.newShape=self.shape
+        if not isinstance(self.newShape,x2a.asyArrow):
+            rawPattern = self.getPattern(self.lineList[self.linestyleButton.currentIndex()],self.newShape.path.getCode())
+        else:
+            #self.newShape.updateCode() #idk if this is necessary.
+            rawPattern = self.getPattern(self.lineList[self.linestyleButton.currentIndex()],self.newShape.code)
+
+        pattern = []
+        if len(rawPattern) == 5:
+            pattern=[1,0]
+        else:
+            for value in rawPattern[2:-3].split(' '):
+                pattern.append(float(value)+1)
+
+        try:
+            self.newShape.pen.setDashPattern(pattern) #pen is going to be a asyPen, add as an attribute
+        except:
+            print("Pen format error")
+
+    def pickColor(self):
+        self.colorDialog = Qw.QColorDialog(x2a.asyPen.convertToQColor(self.shape.pen.color), self)
+        self.colorDialog.show()
+        result = self.colorDialog.exec()
+        if result == Qw.QDialog.Accepted:
+            self.shape.pen.setColorFromQColor(self.colorDialog.selectedColor())
+            self.parent.updateFrameDispColor()
+
+    def pickFillColor(self): #This is a copy of the above, how do you set the var as it is set?
+        self.colorDialog = Qw.QColorDialog(x2a.asyPen.convertToQColor(self.shape.fillPen.color), self)
+        self.colorDialog.show()
+        result = self.colorDialog.exec()
+        if result == Qw.QDialog.Accepted:
+            self.shape.fillPen.setColorFromQColor(self.colorDialog.selectedColor())
+            self.parent.updateFrameDispColor()
+
+    @Qc.pyqtSlot()
+    def on_click(self):
+        print("\n")
+        for currentQTableWidgetItem in self.tableWidget.selectedItems():
+            print(currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text())


Property changes on: trunk/Build/source/utils/asymptote/GUI/ContextWindow.py
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Build/source/utils/asymptote/GUI/Window1.py
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/Window1.py	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/Window1.py	2023-02-05 18:18:59 UTC (rev 65737)
@@ -32,6 +32,7 @@
 
 import PrimitiveShape
 import InplaceAddObj
+import ContextWindow
 
 import CustMatTransform
 import SetCustomAnchor
@@ -127,6 +128,7 @@
         devicePixelRatio=self.devicePixelRatio()
         self.ui.setupUi(self)
         self.ui.menubar.setNativeMenuBar(False)
+        self.setWindowIcon(Qg.QIcon("../asy.ico"))
 
         self.settings = xo.BasicConfigs.defaultOpt
         self.keyMaps = xo.BasicConfigs.keymaps
@@ -229,7 +231,7 @@
         self.previewCurve = None
         self.mouseDown = False
 
-        self.globalObjectCounter = 0
+        self.globalObjectCounter = 1
 
         self.fileItems = []
         self.drawObjects = []
@@ -569,9 +571,6 @@
         self.ui.txtTerminalPrompt.clear()
 
     def btnFillOnClick(self, checked):
-        if self.currentModeStack == [SelectionMode.selectEdit]:
-            if isinstance(self.addMode,xbi.InteractiveBezierEditor):
-                self.addMode.swapObjFill() #Check for crashes
         self.currAddOptions['fill'] = checked
         self.ui.btnOpenCurve.setEnabled(not checked)
         self.ui.btnOpenPoly.setEnabled(not checked)
@@ -893,16 +892,34 @@
         if result:
             self.execCustomCommand(commandText)
 
-    def addXasyShapeFromPath(self, path, pen = None, transform = x2a.identity(), key = None):
+    def addXasyShapeFromPath(self, path, pen = None, transform = x2a.identity(), key = None, fill = False):
+        dashPattern = pen['dashPattern'] #?
         if not pen:
             pen = self.currentPen
         else:
             pen = x2a.asyPen(self.asyEngine, color = pen['color'], width = pen['width'], pen_options = pen['options'])
+            if dashPattern:
+                pen.setDashPattern(dashPattern)
 
         newItem = x2a.xasyShape(path, self.asyEngine, pen = pen, transform = transform)
+        if fill:
+            newItem.swapFill()
         newItem.setKey(key)
         self.fileItems.append(newItem)
 
+    def addXasyArrowFromPath(self, pen, transform, key, arrowSettings, code, dashPattern = None):
+        if not pen:
+            pen = self.currentPen
+        else:
+            pen = x2a.asyPen(self.asyEngine, color = pen['color'], width = pen['width'], pen_options = pen['options'])
+            if dashPattern:
+                pen.setDashPattern(dashPattern)
+
+        newItem = x2a.asyArrow(self.asyEngine, pen, transform, key, canvas=self.xasyDrawObj, code=code)
+        newItem.setKey(key)
+        newItem.arrowSettings = arrowSettings
+        self.fileItems.append(newItem)
+
     def addXasyTextFromData(self, text, location, pen, transform, key, align, fontSize):
         if not pen:
             pen = self.currentPen
@@ -998,6 +1015,8 @@
                 ext = 'asy'
             else:
                 ext = ext[1][1:]
+            if ext == '':
+                ext='asy'
             if ext == 'asy':
                 pathToFile = os.path.splitext(file)[0]+'.'+ext
                 asyFile = io.open(os.path.realpath(pathToFile), 'w')
@@ -1060,9 +1079,10 @@
 
         for item in xasyObjects['objects']:
             key=item['transfKey']
-            if(key) in obj.transfKeymap.keys():
-                continue
-            obj.maxKey=max(obj.maxKey,int(key))
+            if existsAsy:
+                if(key) in obj.transfKeymap.keys():
+                    continue
+                obj.maxKey=max(obj.maxKey,int(key))
             if item['type'] == 'xasyScript':
                 print("Uh oh, there should not be any asy objects loaded")
 
@@ -1078,12 +1098,18 @@
                 linkSet = item['links']
                 path = x2a.asyPath(self.asyEngine)
                 path.initFromNodeList(nodeSet, linkSet)
-                self.addXasyShapeFromPath(path, pen = item['pen'], transform = x2a.asyTransform(item['transform']), key = item['transfKey'])
+                self.addXasyShapeFromPath(path, pen = item['pen'], transform = x2a.asyTransform(item['transform']), key = item['transfKey'], fill = item['fill'])
+
+            elif item['type'] == 'asyArrow':
+                self.addXasyArrowFromPath(item['pen'], x2a.asyTransform(item['transform']), item['transfKey'], item['settings'], item['code'])
+                #self.addXasyArrowFromPath(item['oldpath'], item['pen'], x2a.asyTransform(item['transform']), item['transfKey'], item['settings'])
+
             else:
                 print("ERROR")
 
         self.asy2psmap = x2a.asyTransform(xasyObjects['asy2psmap'])
-        self.globalObjectCounter = obj.maxKey+1
+        if existsAsy:
+            self.globalObjectCounter = obj.maxKey+1
 
         self.asyfyCanvas()
 
@@ -1923,7 +1949,7 @@
             preCanvas.setPen(minorGridCol)
             self.makePenCosmetic(preCanvas)
             for xMinor in range(1, minorGridCount + 1):
-                xCoord = x + ((xMinor / (minorGridCount + 1)) * majorGrid)
+                xCoord = round(x + ((xMinor / (minorGridCount + 1)) * majorGrid))
                 preCanvas.drawLine(Qc.QLine(xCoord, -9999, xCoord, 9999))
                 preCanvas.drawLine(Qc.QLine(-xCoord, -9999, -xCoord, 9999))
 
@@ -1931,20 +1957,22 @@
             preCanvas.setPen(minorGridCol)
             self.makePenCosmetic(preCanvas)
             for yMinor in range(1, minorGridCount + 1):
-                yCoord = y + ((yMinor / (minorGridCount + 1)) * majorGrid)
+                yCoord = round(y + ((yMinor / (minorGridCount + 1)) * majorGrid))
                 preCanvas.drawLine(Qc.QLine(-9999, yCoord, 9999, yCoord))
                 preCanvas.drawLine(Qc.QLine(-9999, -yCoord, 9999, -yCoord))
 
             preCanvas.setPen(majorGridCol)
             self.makePenCosmetic(preCanvas)
-            preCanvas.drawLine(Qc.QLine(-9999, y, 9999, y))
-            preCanvas.drawLine(Qc.QLine(-9999, -y, 9999, -y))
+            roundY = round(y)
+            preCanvas.drawLine(Qc.QLine(-9999, roundY, 9999, roundY))
+            preCanvas.drawLine(Qc.QLine(-9999, -roundY, 9999, -roundY))
 
         for x in np.arange(0, 2 * x_range + 1, majorGrid):
             preCanvas.setPen(majorGridCol)
             self.makePenCosmetic(preCanvas)
-            preCanvas.drawLine(Qc.QLine(x, -9999, x, 9999))
-            preCanvas.drawLine(Qc.QLine(-x, -9999, -x, 9999))
+            roundX = round(x)
+            preCanvas.drawLine(Qc.QLine(roundX, -9999, roundX, 9999))
+            preCanvas.drawLine(Qc.QLine(-roundX, -9999, -roundX, 9999))
 
     def drawPolarGrid(self, preCanvas):
         center = Qc.QPointF(0, 0)
@@ -2046,7 +2074,7 @@
         with Qg.QPainter(self.postCanvasPixmap) as postCanvas:
             postCanvas.setRenderHints(self.mainCanvas.renderHints())
             postCanvas.setTransform(self.getScrsTransform())
-            # self.makePenCosmetic(postCanvas)
+            self.makePenCosmetic(postCanvas)
 
             self.drawTransformPreview(postCanvas)
 
@@ -2423,3 +2451,60 @@
             self.quickUpdate()
         else:
             self.ui.statusbar.showMessage('No object to paste')
+
+    def contextMenuEvent(self, event):
+        #Note that we can't get anything from self.selectOnHover() here.
+        try:
+            self.contextWindowIndex = self.selectObject()[0] #for arrowifying
+            maj = self.contextWindowIndex[0]
+        except:
+            return
+
+        if self.fileItems[maj] is not None:
+            self.contextWindowObject = self.fileItems[maj] #For arrowifying
+            self.contextWindow = ContextWindow.AnotherWindow(self.fileItems[maj],self)
+            self.contextWindow.setMinimumWidth(420)
+            #self.setCentralWidget(self.contextWindow) #I don't know what this does tbh.
+            self.contextWindow.show()
+
+    def focusInEvent(self,event):
+        if self.mainCanvas.isActive():
+            self.quickUpdate()
+
+    def replaceObject(self,objectIndex,newObject):
+        maj, minor = self.contextWindowIndex
+        selectedObj = self.drawObjects[maj][minor]
+
+        parent = selectedObj.parent()
+
+        if isinstance(parent, x2a.xasyScript):
+            objKey=(selectedObj.key, selectedObj.keyIndex)
+            self.hiddenKeys.add(objKey)
+            self.undoRedoStack.add(self.createAction(
+                SoftDeletionChanges(selectedObj.parent(), objKey)
+                ))
+            self.softDeleteObj((maj, minor))
+        else:
+            index = self.fileItems.index(selectedObj.parent())
+
+            self.undoRedoStack.add(self.createAction(
+                HardDeletionChanges(selectedObj.parent(), index)
+            ))
+
+            self.fileItems.remove(selectedObj.parent())
+
+        self.fileItems.append(newObject)
+        self.drawObjects.append(newObject.generateDrawObjects(True)) #THIS DOES WORK, IT'S JUST REGENERATING THE SHAPE.
+
+        self.checkUndoRedoButtons()
+        self.fileChanged = True
+
+        self.clearSelection()
+        #self.asyfyCanvas()
+        #self.quickUpdate()
+
+    def terminateContextWindow(self):
+        if self.contextWindow is not None:
+            self.contextWindow.close()
+        self.asyfyCanvas()
+        self.quickUpdate()

Modified: trunk/Build/source/utils/asymptote/GUI/requirements.txt
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/requirements.txt	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/requirements.txt	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,4 +1,4 @@
-numpy==1.21.0
+numpy==1.22.0
 cson==0.7
 PyQt5==5.11
 rsvg-convert==2.42.3

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-arrow-back.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-arrow-back.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-arrow-back.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g id="Icon_8_">
-	<g>
-		<path d="M427,234.625H167.296l119.702-119.702L256,85L85,256l171,171l29.922-29.924L167.296,277.375H427V234.625z"/>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_8_">
+	<g>
+		<path d="M427,234.625H167.296l119.702-119.702L256,85L85,256l171,171l29.922-29.924L167.296,277.375H427V234.625z"/>
+	</g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-arrow-forward.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-arrow-forward.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-arrow-forward.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g id="Icon_8_">
-	<g>
-		<path d="M85,277.375h259.704L225.002,397.077L256,427l171-171L256,85l-29.922,29.924l118.626,119.701H85V277.375z"/>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_8_">
+	<g>
+		<path d="M85,277.375h259.704L225.002,397.077L256,427l171-171L256,85l-29.922,29.924l118.626,119.701H85V277.375z"/>
+	</g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-camera.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-camera.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-camera.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g>
-	<circle cx="256" cy="280" r="63"/>
-	<path d="M440,96h-88l-32-32H192l-32,32H72c-22.092,0-40,17.908-40,40v272c0,22.092,17.908,40,40,40h368c22.092,0,40-17.908,40-40
-		V136C480,113.908,462.092,96,440,96z M256,392c-61.855,0-112-50.145-112-112s50.145-112,112-112s112,50.145,112,112
-		S317.855,392,256,392z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g>
+	<circle cx="256" cy="280" r="63"/>
+	<path d="M440,96h-88l-32-32H192l-32,32H72c-22.092,0-40,17.908-40,40v272c0,22.092,17.908,40,40,40h368c22.092,0,40-17.908,40-40
+		V136C480,113.908,462.092,96,440,96z M256,392c-61.855,0-112-50.145-112-112s50.145-112,112-112s112,50.145,112,112
+		S317.855,392,256,392z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-close.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-close.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-close.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g id="Icon_5_">
-	<g>
-		<polygon points="405,136.798 375.202,107 256,226.202 136.798,107 107,136.798 226.202,256 107,375.202 136.798,405 256,285.798 
-			375.202,405 405,375.202 285.798,256 		"/>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_5_">
+	<g>
+		<polygon points="405,136.798 375.202,107 256,226.202 136.798,107 107,136.798 226.202,256 107,375.202 136.798,405 256,285.798 
+			375.202,405 405,375.202 285.798,256 		"/>
+	</g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-color-palette.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-color-palette.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-color-palette.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g id="Icon_12_">
-	<g>
-		<path d="M256,64C150.401,64,64,150.401,64,256c0,105.604,86.401,192,192,192c18.136,0,32-13.864,32-32
-			c0-8.531-3.198-16-8.531-21.333c-5.333-5.334-8.531-12.803-8.531-21.334c0-18.135,13.864-32,32-32h38.396
-			c58.667,0,106.667-48,106.667-106.666C448,140.802,361.604,64,256,64z M138.667,256c-18.136,0-32-13.864-32-32s13.864-32,32-32
-			c18.135,0,32,13.864,32,32S156.802,256,138.667,256z M202.667,170.667c-18.136,0-32-13.865-32-32c0-18.136,13.864-32,32-32
-			c18.135,0,32,13.864,32,32C234.667,156.802,220.802,170.667,202.667,170.667z M309.333,170.667c-18.135,0-32-13.865-32-32
-			c0-18.136,13.865-32,32-32c18.136,0,32,13.864,32,32C341.333,156.802,327.469,170.667,309.333,170.667z M373.333,256
-			c-18.135,0-32-13.864-32-32s13.865-32,32-32c18.136,0,32,13.864,32,32S391.469,256,373.333,256z"/>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_12_">
+	<g>
+		<path d="M256,64C150.401,64,64,150.401,64,256c0,105.604,86.401,192,192,192c18.136,0,32-13.864,32-32
+			c0-8.531-3.198-16-8.531-21.333c-5.333-5.334-8.531-12.803-8.531-21.334c0-18.135,13.864-32,32-32h38.396
+			c58.667,0,106.667-48,106.667-106.666C448,140.802,361.604,64,256,64z M138.667,256c-18.136,0-32-13.864-32-32s13.864-32,32-32
+			c18.135,0,32,13.864,32,32S156.802,256,138.667,256z M202.667,170.667c-18.136,0-32-13.865-32-32c0-18.136,13.864-32,32-32
+			c18.135,0,32,13.864,32,32C234.667,156.802,220.802,170.667,202.667,170.667z M309.333,170.667c-18.135,0-32-13.865-32-32
+			c0-18.136,13.865-32,32-32c18.136,0,32,13.864,32,32C341.333,156.802,327.469,170.667,309.333,170.667z M373.333,256
+			c-18.135,0-32-13.864-32-32s13.865-32,32-32c18.136,0,32,13.864,32,32S391.469,256,373.333,256z"/>
+	</g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-delete.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-delete.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-delete.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g>
-	<path d="M128,405.429C128,428.846,147.198,448,170.667,448h170.667C364.802,448,384,428.846,384,405.429V160H128V405.429z M416,96
-		h-80l-26.785-32H202.786L176,96H96v32h320V96z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g>
+	<path d="M128,405.429C128,428.846,147.198,448,170.667,448h170.667C364.802,448,384,428.846,384,405.429V160H128V405.429z M416,96
+		h-80l-26.785-32H202.786L176,96H96v32h320V96z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-done.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-done.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-done.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g id="Icon_1_">
-	<g>
-		<g>
-			<polygon points="186.301,339.893 96,249.461 64,279.968 186.301,402 448,140.506 416,110 			"/>
-		</g>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_1_">
+	<g>
+		<g>
+			<polygon points="186.301,339.893 96,249.461 64,279.968 186.301,402 448,140.506 416,110 			"/>
+		</g>
+	</g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-expand.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-expand.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-expand.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g>
-	<polygon points="396.795,396.8 320,396.8 320,448 448,448 448,320 396.795,320 	"/>
-	<polygon points="396.8,115.205 396.8,192 448,192 448,64 320,64 320,115.205 	"/>
-	<polygon points="115.205,115.2 192,115.2 192,64 64,64 64,192 115.205,192 	"/>
-	<polygon points="115.2,396.795 115.2,320 64,320 64,448 192,448 192,396.795 	"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g>
+	<polygon points="396.795,396.8 320,396.8 320,448 448,448 448,320 396.795,320 	"/>
+	<polygon points="396.8,115.205 396.8,192 448,192 448,64 320,64 320,115.205 	"/>
+	<polygon points="115.205,115.2 192,115.2 192,64 64,64 64,192 115.205,192 	"/>
+	<polygon points="115.2,396.795 115.2,320 64,320 64,448 192,448 192,396.795 	"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-folder-open.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-folder-open.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-folder-open.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<path d="M437.334,144H256.006l-42.668-48H74.666C51.197,96,32,115.198,32,138.667v234.666C32,396.802,51.197,416,74.666,416h362.668
-	C460.803,416,480,396.802,480,373.333V186.667C480,163.198,460.803,144,437.334,144z M448,373.333
-	c0,5.782-4.885,10.667-10.666,10.667H74.666C68.884,384,64,379.115,64,373.333V176h373.334c5.781,0,10.666,4.885,10.666,10.667
-	V373.333z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<path d="M437.334,144H256.006l-42.668-48H74.666C51.197,96,32,115.198,32,138.667v234.666C32,396.802,51.197,416,74.666,416h362.668
+	C460.803,416,480,396.802,480,373.333V186.667C480,163.198,460.803,144,437.334,144z M448,373.333
+	c0,5.782-4.885,10.667-10.666,10.667H74.666C68.884,384,64,379.115,64,373.333V176h373.334c5.781,0,10.666,4.885,10.666,10.667
+	V373.333z"/>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-hand.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-hand.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-hand.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<path d="M450.679,273.5c-14.585-14.577-36.054-15.89-50.639-1.312l-41.687,41.664c-10.852,10.836-23.93,10.859-31.564,1.852
-	c-5.057-5.968-3.061-24.374-1.644-36.049l20.907-171.849c1.867-15.353-9.07-30.185-24.43-32.051
-	c-15.358-1.867-29.322,9.939-31.191,25.289L267.37,236.021c-1.205,3.358-3.79,3.938-4.081-0.582L255.44,60
-	c0-15.465-12.542-28-28.014-28c-15.473,0-28.015,12.535-28.015,28l-0.552,176.752c0.146,2.04-1.604,2.624-1.92,0.294L172.016,99.077
-	c-2.75-15.219-17.323-26.203-32.548-23.453c-15.227,2.748-25.339,18.187-22.591,33.403l22.193,161.455
-	c0.023,2.872-0.941,4.513-2.308,0.831l-33.109-88.517c-5.18-14.572-21.196-23.065-35.776-17.889
-	c-14.579,5.177-22.201,22.061-17.023,36.631l58.042,189.625c0.303,1.046,0.624,2.085,0.953,3.118l0.121,0.39
-	c0.011,0.031,0.025,0.058,0.035,0.088C126.079,444.233,172.57,480,227.427,480c35.116,0,71.591-12.378,99.357-33.672
-	c0.001,0,0.003-0.002,0.003-0.002c29.99-18.051,126.071-121.347,126.071-121.347C467.445,310.402,465.266,288.08,450.679,273.5z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<path d="M450.679,273.5c-14.585-14.577-36.054-15.89-50.639-1.312l-41.687,41.664c-10.852,10.836-23.93,10.859-31.564,1.852
+	c-5.057-5.968-3.061-24.374-1.644-36.049l20.907-171.849c1.867-15.353-9.07-30.185-24.43-32.051
+	c-15.358-1.867-29.322,9.939-31.191,25.289L267.37,236.021c-1.205,3.358-3.79,3.938-4.081-0.582L255.44,60
+	c0-15.465-12.542-28-28.014-28c-15.473,0-28.015,12.535-28.015,28l-0.552,176.752c0.146,2.04-1.604,2.624-1.92,0.294L172.016,99.077
+	c-2.75-15.219-17.323-26.203-32.548-23.453c-15.227,2.748-25.339,18.187-22.591,33.403l22.193,161.455
+	c0.023,2.872-0.941,4.513-2.308,0.831l-33.109-88.517c-5.18-14.572-21.196-23.065-35.776-17.889
+	c-14.579,5.177-22.201,22.061-17.023,36.631l58.042,189.625c0.303,1.046,0.624,2.085,0.953,3.118l0.121,0.39
+	c0.011,0.031,0.025,0.058,0.035,0.088C126.079,444.233,172.57,480,227.427,480c35.116,0,71.591-12.378,99.357-33.672
+	c0.001,0,0.003-0.002,0.003-0.002c29.99-18.051,126.071-121.347,126.071-121.347C467.445,310.402,465.266,288.08,450.679,273.5z"/>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-locate.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-locate.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-locate.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g id="Icon">
-	<g>
-		<path d="M256,176c-44.004,0-80.001,36-80.001,80c0,44.004,35.997,80,80.001,80c44.005,0,79.999-35.996,79.999-80
-			C335.999,212,300.005,176,256,176z M446.938,234.667c-9.605-88.531-81.074-160-169.605-169.599V32h-42.666v33.067
-			c-88.531,9.599-160,81.068-169.604,169.599H32v42.667h33.062c9.604,88.531,81.072,160,169.604,169.604V480h42.666v-33.062
-			c88.531-9.604,160-81.073,169.605-169.604H480v-42.667H446.938z M256,405.333c-82.137,0-149.334-67.198-149.334-149.333
-			c0-82.136,67.197-149.333,149.334-149.333c82.135,0,149.332,67.198,149.332,149.333C405.332,338.135,338.135,405.333,256,405.333z
-			"/>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon">
+	<g>
+		<path d="M256,176c-44.004,0-80.001,36-80.001,80c0,44.004,35.997,80,80.001,80c44.005,0,79.999-35.996,79.999-80
+			C335.999,212,300.005,176,256,176z M446.938,234.667c-9.605-88.531-81.074-160-169.605-169.599V32h-42.666v33.067
+			c-88.531,9.599-160,81.068-169.604,169.599H32v42.667h33.062c9.604,88.531,81.072,160,169.604,169.604V480h42.666v-33.062
+			c88.531-9.604,160-81.073,169.605-169.604H480v-42.667H446.938z M256,405.333c-82.137,0-149.334-67.198-149.334-149.333
+			c0-82.136,67.197-149.333,149.334-149.333c82.135,0,149.332,67.198,149.332,149.333C405.332,338.135,338.135,405.333,256,405.333z
+			"/>
+	</g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-radio-button-off.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-radio-button-off.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-radio-button-off.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,12 +1,12 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g id="Icon_20_">
-	<g>
-		<path d="M256,48C141.601,48,48,141.601,48,256s93.601,208,208,208s208-93.601,208-208S370.399,48,256,48z M256,422.399
-			c-91.518,0-166.399-74.882-166.399-166.399S164.482,89.6,256,89.6S422.4,164.482,422.4,256S347.518,422.399,256,422.399z"/>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_20_">
+	<g>
+		<path d="M256,48C141.601,48,48,141.601,48,256s93.601,208,208,208s208-93.601,208-208S370.399,48,256,48z M256,422.399
+			c-91.518,0-166.399-74.882-166.399-166.399S164.482,89.6,256,89.6S422.4,164.482,422.4,256S347.518,422.399,256,422.399z"/>
+	</g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-radio-button-on.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-radio-button-on.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-radio-button-on.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g id="Icon_21_">
-	<g>
-		<path d="M256,152c-57.2,0-104,46.8-104,104s46.8,104,104,104s104-46.8,104-104S313.2,152,256,152z M256,48
-			C141.601,48,48,141.601,48,256s93.601,208,208,208s208-93.601,208-208S370.399,48,256,48z M256,422.4
-			c-91.518,0-166.4-74.883-166.4-166.4S164.482,89.6,256,89.6S422.4,164.482,422.4,256S347.518,422.4,256,422.4z"/>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g id="Icon_21_">
+	<g>
+		<path d="M256,152c-57.2,0-104,46.8-104,104s46.8,104,104,104s104-46.8,104-104S313.2,152,256,152z M256,48
+			C141.601,48,48,141.601,48,256s93.601,208,208,208s208-93.601,208-208S370.399,48,256,48z M256,422.4
+			c-91.518,0-166.4-74.883-166.4-166.4S164.482,89.6,256,89.6S422.4,164.482,422.4,256S347.518,422.4,256,422.4z"/>
+	</g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/android-refresh.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/android-refresh.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/android-refresh.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g>
-	<path d="M256,388c-72.597,0-132-59.405-132-132c0-72.601,59.403-132,132-132c36.3,0,69.299,15.4,92.406,39.601L278,234h154V80
-		l-51.698,51.702C348.406,99.798,304.406,80,256,80c-96.797,0-176,79.203-176,176s78.094,176,176,176
-		c81.045,0,148.287-54.134,169.401-128H378.85C360.105,353.561,311.712,388,256,388z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g>
+	<path d="M256,388c-72.597,0-132-59.405-132-132c0-72.601,59.403-132,132-132c36.3,0,69.299,15.4,92.406,39.601L278,234h154V80
+		l-51.698,51.702C348.406,99.798,304.406,80,256,80c-96.797,0-176,79.203-176,176s78.094,176,176,176
+		c81.045,0,148.287-54.134,169.401-128H378.85C360.105,353.561,311.712,388,256,388z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/arrow-move.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/arrow-move.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/arrow-move.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<polygon points="480,256 384,160 384,236 276,236 276,128 352,128 256,32 160,128 236,128 236,236 128,236 128,160 32,256 128,352 
-	128,276 236,276 236,384 160,384 256,480 352,384 275.8,384 275.4,275.5 384,275.8 384,352 "/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<polygon points="480,256 384,160 384,236 276,236 276,128 352,128 256,32 160,128 236,128 236,236 128,236 128,160 32,256 128,352 
+	128,276 236,276 236,384 160,384 256,480 352,384 275.8,384 275.4,275.5 384,275.8 384,352 "/>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/arrow-resize.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/arrow-resize.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/arrow-resize.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<polygon points="288,96 337.9,145.9 274,209.7 274,209.7 145.9,337.9 96,288 96,416 224,416 174.1,366.1 357.4,182.9 366.1,174.1 
-	416,224 416,96 "/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<polygon points="288,96 337.9,145.9 274,209.7 274,209.7 145.9,337.9 96,288 96,416 224,416 174.1,366.1 357.4,182.9 366.1,174.1 
+	416,224 416,96 "/>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/brush.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/brush.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/brush.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g>
-	<path d="M48.451,464.828c40.023-0.315,45.01-9.955,58.052-50.132c24.057-63.408,132.419,16.591,65.269,44.374
-		C104.622,486.852,8.428,465.143,48.451,464.828z"/>
-	<path d="M458.857,46.902c-19.417-15.647-51.592-7.938-71.864,17.219L181.645,355.849c-20.272,25.154-20.171,20.347-0.754,35.992
-		c19.417,15.648,14.738,16.77,35.011-8.388l241.406-262.669C477.581,95.628,478.275,62.55,458.857,46.902z M406.065,81.825
-		c0,0-3-3.5-13-11.5c15-24.5,44.5-20,44.5-20C409.565,66.825,406.065,81.825,406.065,81.825z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g>
+	<path d="M48.451,464.828c40.023-0.315,45.01-9.955,58.052-50.132c24.057-63.408,132.419,16.591,65.269,44.374
+		C104.622,486.852,8.428,465.143,48.451,464.828z"/>
+	<path d="M458.857,46.902c-19.417-15.647-51.592-7.938-71.864,17.219L181.645,355.849c-20.272,25.154-20.171,20.347-0.754,35.992
+		c19.417,15.648,14.738,16.77,35.011-8.388l241.406-262.669C477.581,95.628,478.275,62.55,458.857,46.902z M406.065,81.825
+		c0,0-3-3.5-13-11.5c15-24.5,44.5-20,44.5-20C409.565,66.825,406.065,81.825,406.065,81.825z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/check.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/check.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/check.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Check" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
-<path d="M8.294,16.998c-0.435,0-0.847-0.203-1.111-0.553L3.61,11.724c-0.465-0.613-0.344-1.486,0.27-1.951
-	c0.615-0.467,1.488-0.344,1.953,0.27l2.351,3.104l5.911-9.492c0.407-0.652,1.267-0.852,1.921-0.445
-	c0.653,0.406,0.854,1.266,0.446,1.92L9.478,16.34c-0.242,0.391-0.661,0.635-1.12,0.656C8.336,16.998,8.316,16.998,8.294,16.998z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Check" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 20 20" enable-background="new 0 0 20 20" xml:space="preserve">
+<path d="M8.294,16.998c-0.435,0-0.847-0.203-1.111-0.553L3.61,11.724c-0.465-0.613-0.344-1.486,0.27-1.951
+	c0.615-0.467,1.488-0.344,1.953,0.27l2.351,3.104l5.911-9.492c0.407-0.652,1.267-0.852,1.921-0.445
+	c0.653,0.406,0.854,1.266,0.446,1.92L9.478,16.34c-0.242,0.391-0.661,0.635-1.12,0.656C8.336,16.998,8.316,16.998,8.294,16.998z"/>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/chevron-with-circle-left.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/chevron-with-circle-left.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/chevron-with-circle-left.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Chevron_circled_left" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
-	 x="0px" y="0px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g transform='matrix(24 0 0 24 0 0)'>
-<path d="M11.302,6.776c-0.196-0.197-0.515-0.197-0.71,0L7.785,9.641c-0.196,0.199-0.196,0.52,0,0.717l2.807,2.864
-	c0.195,0.199,0.514,0.198,0.71,0c0.196-0.197,0.196-0.518,0-0.717L9,10l2.302-2.506C11.498,7.296,11.498,6.976,11.302,6.776z
-	 M10,0.4c-5.302,0-9.6,4.298-9.6,9.6c0,5.303,4.298,9.6,9.6,9.6s9.6-4.297,9.6-9.6C19.6,4.698,15.302,0.4,10,0.4z M10,18.354
-	c-4.615,0-8.354-3.74-8.354-8.354c0-4.614,3.739-8.354,8.354-8.354c4.613,0,8.354,3.74,8.354,8.354
-	C18.354,14.614,14.613,18.354,10,18.354z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Chevron_circled_left" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+	 x="0px" y="0px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g transform='matrix(24 0 0 24 0 0)'>
+<path d="M11.302,6.776c-0.196-0.197-0.515-0.197-0.71,0L7.785,9.641c-0.196,0.199-0.196,0.52,0,0.717l2.807,2.864
+	c0.195,0.199,0.514,0.198,0.71,0c0.196-0.197,0.196-0.518,0-0.717L9,10l2.302-2.506C11.498,7.296,11.498,6.976,11.302,6.776z
+	 M10,0.4c-5.302,0-9.6,4.298-9.6,9.6c0,5.303,4.298,9.6,9.6,9.6s9.6-4.297,9.6-9.6C19.6,4.698,15.302,0.4,10,0.4z M10,18.354
+	c-4.615,0-8.354-3.74-8.354-8.354c0-4.614,3.739-8.354,8.354-8.354c4.613,0,8.354,3.74,8.354,8.354
+	C18.354,14.614,14.613,18.354,10,18.354z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/chevron-with-circle-right.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/chevron-with-circle-right.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/chevron-with-circle-right.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Chevron_circled_right" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
-	 x="0px" y="0px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g transform='matrix(24 0 0 24 0 0)'>
-<path d="M11,10L8.698,7.494c-0.196-0.198-0.196-0.519,0-0.718c0.196-0.197,0.515-0.197,0.71,0l2.807,2.864
-	c0.196,0.199,0.196,0.52,0,0.717l-2.807,2.864c-0.195,0.199-0.514,0.198-0.71,0c-0.196-0.197-0.196-0.518,0-0.717L11,10z M10,0.4
-	c5.302,0,9.6,4.298,9.6,9.6c0,5.303-4.298,9.6-9.6,9.6S0.4,15.303,0.4,10C0.4,4.698,4.698,0.4,10,0.4z M10,18.354
-	c4.613,0,8.354-3.74,8.354-8.354c0-4.614-3.741-8.354-8.354-8.354c-4.615,0-8.354,3.74-8.354,8.354
-	C1.645,14.614,5.385,18.354,10,18.354z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Chevron_circled_right" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
+	 x="0px" y="0px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g transform='matrix(24 0 0 24 0 0)'>
+<path d="M11,10L8.698,7.494c-0.196-0.198-0.196-0.519,0-0.718c0.196-0.197,0.515-0.197,0.71,0l2.807,2.864
+	c0.196,0.199,0.196,0.52,0,0.717l-2.807,2.864c-0.195,0.199-0.514,0.198-0.71,0c-0.196-0.197-0.196-0.518,0-0.717L11,10z M10,0.4
+	c5.302,0,9.6,4.298,9.6,9.6c0,5.303-4.298,9.6-9.6,9.6S0.4,15.303,0.4,10C0.4,4.698,4.698,0.4,10,0.4z M10,18.354
+	c4.613,0,8.354-3.74,8.354-8.354c0-4.614-3.741-8.354-8.354-8.354c-4.615,0-8.354,3.74-8.354,8.354
+	C1.645,14.614,5.385,18.354,10,18.354z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/circle.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/circle.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/circle.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Circle" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="512px" y="512px"
-	 viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g transform='matrix(24 0 0 24 0 0)'>
-<path d="M10,0.4C4.698,0.4,0.4,4.698,0.4,10C0.4,15.302,4.698,19.6,10,19.6c5.301,0,9.6-4.298,9.6-9.601
-	C19.6,4.698,15.301,0.4,10,0.4z M10,17.599c-4.197,0-7.6-3.402-7.6-7.6S5.802,2.4,10,2.4c4.197,0,7.601,3.402,7.601,7.6
-	S14.197,17.599,10,17.599z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Circle" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="512px" y="512px"
+	 viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g transform='matrix(24 0 0 24 0 0)'>
+<path d="M10,0.4C4.698,0.4,0.4,4.698,0.4,10C0.4,15.302,4.698,19.6,10,19.6c5.301,0,9.6-4.298,9.6-9.601
+	C19.6,4.698,15.301,0.4,10,0.4z M10,17.599c-4.197,0-7.6-3.402-7.6-7.6S5.802,2.4,10,2.4c4.197,0,7.601,3.402,7.601,7.6
+	S14.197,17.599,10,17.599z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/close-round.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/close-round.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/close-round.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<path d="M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5
-	c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9
-	c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M437.5,386.6L306.9,256l130.6-130.6c14.1-14.1,14.1-36.8,0-50.9c-14.1-14.1-36.8-14.1-50.9,0L256,205.1L125.4,74.5
+	c-14.1-14.1-36.8-14.1-50.9,0c-14.1,14.1-14.1,36.8,0,50.9L205.1,256L74.5,386.6c-14.1,14.1-14.1,36.8,0,50.9
+	c14.1,14.1,36.8,14.1,50.9,0L256,306.9l130.6,130.6c14.1,14.1,36.8,14.1,50.9,0C451.5,423.4,451.5,400.6,437.5,386.6z"/>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/code.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/code.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/code.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,14 +1,14 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Code" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="24px" y="24px"
-	 viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g transform='matrix(24 0 0 24 0 0)'><path d="M5.719,14.75c-0.236,0-0.474-0.083-0.664-0.252L-0.005,10l5.341-4.748C5.748,4.887,6.38,4.922,6.747,5.335
-	c0.367,0.413,0.33,1.045-0.083,1.412L3.005,10l3.378,3.002c0.413,0.367,0.45,0.999,0.083,1.412
-	C6.269,14.637,5.994,14.75,5.719,14.75z M14.664,14.748L20.005,10l-5.06-4.498c-0.413-0.367-1.045-0.33-1.411,0.083
-	c-0.367,0.413-0.33,1.045,0.083,1.412L16.995,10l-3.659,3.252c-0.413,0.367-0.45,0.999-0.083,1.412C13.45,14.887,13.725,15,14,15
-	C14.236,15,14.474,14.917,14.664,14.748z M9.986,16.165l2-12c0.091-0.545-0.277-1.06-0.822-1.151
-	c-0.547-0.092-1.061,0.277-1.15,0.822l-2,12c-0.091,0.545,0.277,1.06,0.822,1.151C8.892,16.996,8.946,17,9.001,17
-	C9.481,17,9.905,16.653,9.986,16.165z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Code" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="24px" y="24px"
+	 viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g transform='matrix(24 0 0 24 0 0)'><path d="M5.719,14.75c-0.236,0-0.474-0.083-0.664-0.252L-0.005,10l5.341-4.748C5.748,4.887,6.38,4.922,6.747,5.335
+	c0.367,0.413,0.33,1.045-0.083,1.412L3.005,10l3.378,3.002c0.413,0.367,0.45,0.999,0.083,1.412
+	C6.269,14.637,5.994,14.75,5.719,14.75z M14.664,14.748L20.005,10l-5.06-4.498c-0.413-0.367-1.045-0.33-1.411,0.083
+	c-0.367,0.413-0.33,1.045,0.083,1.412L16.995,10l-3.659,3.252c-0.413,0.367-0.45,0.999-0.083,1.412C13.45,14.887,13.725,15,14,15
+	C14.236,15,14.474,14.917,14.664,14.748z M9.986,16.165l2-12c0.091-0.545-0.277-1.06-0.822-1.151
+	c-0.547-0.092-1.061,0.277-1.15,0.822l-2,12c-0.091,0.545,0.277,1.06,0.822,1.151C8.892,16.996,8.946,17,9.001,17
+	C9.481,17,9.905,16.653,9.986,16.165z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/edit.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/edit.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/edit.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g>
-	
-		<rect x="178.846" y="92.087" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 224.3476 631.1498)" width="128.085" height="354.049"/>
-	<path d="M471.723,88.393l-48.115-48.114c-11.723-11.724-31.558-10.896-44.304,1.85l-45.202,45.203l90.569,90.568l45.202-45.202
-		C482.616,119.952,483.445,100.116,471.723,88.393z"/>
-	<polygon points="64.021,363.252 32,480 148.737,447.979 	"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g>
+	
+		<rect x="178.846" y="92.087" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 224.3476 631.1498)" width="128.085" height="354.049"/>
+	<path d="M471.723,88.393l-48.115-48.114c-11.723-11.724-31.558-10.896-44.304,1.85l-45.202,45.203l90.569,90.568l45.202-45.202
+		C482.616,119.952,483.445,100.116,471.723,88.393z"/>
+	<polygon points="64.021,363.252 32,480 148.737,447.979 	"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/eye.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/eye.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/eye.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,15 +1,15 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<g>
-	<path d="M256,128c-81.9,0-145.7,48.8-224,128c67.4,67.7,124,128,224,128c99.9,0,173.4-76.4,224-126.6
-		C428.2,198.6,354.8,128,256,128z M256,347.3c-49.4,0-89.6-41-89.6-91.3c0-50.4,40.2-91.3,89.6-91.3s89.6,41,89.6,91.3
-		C345.6,306.4,305.4,347.3,256,347.3z"/>
-	<g>
-		<path d="M256,224c0-7.9,2.9-15.1,7.6-20.7c-2.5-0.4-5-0.6-7.6-0.6c-28.8,0-52.3,23.9-52.3,53.3c0,29.4,23.5,53.3,52.3,53.3
-			s52.3-23.9,52.3-53.3c0-2.3-0.2-4.6-0.4-6.9c-5.5,4.3-12.3,6.9-19.8,6.9C270.3,256,256,241.7,256,224z"/>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+	<path d="M256,128c-81.9,0-145.7,48.8-224,128c67.4,67.7,124,128,224,128c99.9,0,173.4-76.4,224-126.6
+		C428.2,198.6,354.8,128,256,128z M256,347.3c-49.4,0-89.6-41-89.6-91.3c0-50.4,40.2-91.3,89.6-91.3s89.6,41,89.6,91.3
+		C345.6,306.4,305.4,347.3,256,347.3z"/>
+	<g>
+		<path d="M256,224c0-7.9,2.9-15.1,7.6-20.7c-2.5-0.4-5-0.6-7.6-0.6c-28.8,0-52.3,23.9-52.3,53.3c0,29.4,23.5,53.3,52.3,53.3
+			s52.3-23.9,52.3-53.3c0-2.3-0.2-4.6-0.4-6.9c-5.5,4.3-12.3,6.9-19.8,6.9C270.3,256,256,241.7,256,224z"/>
+	</g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/grid.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/grid.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/grid.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<g>
-	<g>
-		<path d="M160,153.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V153.3z"
-			/>
-		<path d="M288,153.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V153.3z"
-			/>
-		<path d="M416,153.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V153.3z"
-			/>
-	</g>
-	<g>
-		<path d="M160,281.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V281.3z"
-			/>
-		<path d="M288,281.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V281.3z"
-			/>
-		<path d="M416,281.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V281.3z"
-			/>
-	</g>
-	<g>
-		<path d="M160,409.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V409.3z"
-			/>
-		<path d="M288,409.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V409.3z"
-			/>
-		<path d="M416,409.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V409.3z"
-			/>
-	</g>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<g>
+	<g>
+		<path d="M160,153.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V153.3z"
+			/>
+		<path d="M288,153.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V153.3z"
+			/>
+		<path d="M416,153.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V153.3z"
+			/>
+	</g>
+	<g>
+		<path d="M160,281.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V281.3z"
+			/>
+		<path d="M288,281.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V281.3z"
+			/>
+		<path d="M416,281.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V281.3z"
+			/>
+	</g>
+	<g>
+		<path d="M160,409.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V409.3z"
+			/>
+		<path d="M288,409.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V409.3z"
+			/>
+		<path d="M416,409.3c0,3.7-3,6.7-6.7,6.7h-50.5c-3.7,0-6.7-3-6.7-6.7v-50.5c0-3.7,3-6.7,6.7-6.7h50.5c3.7,0,6.7,3,6.7,6.7V409.3z"
+			/>
+	</g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/magnifying-glass.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/magnifying-glass.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/magnifying-glass.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Magnifying_glass" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
-	 y="0px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g transform='matrix(24 0 0 24 0 0)'>
-<path d="M17.545,15.467l-3.779-3.779c0.57-0.935,0.898-2.035,0.898-3.21c0-3.417-2.961-6.377-6.378-6.377
-	C4.869,2.1,2.1,4.87,2.1,8.287c0,3.416,2.961,6.377,6.377,6.377c1.137,0,2.2-0.309,3.115-0.844l3.799,3.801
-	c0.372,0.371,0.975,0.371,1.346,0l0.943-0.943C18.051,16.307,17.916,15.838,17.545,15.467z M4.004,8.287
-	c0-2.366,1.917-4.283,4.282-4.283c2.366,0,4.474,2.107,4.474,4.474c0,2.365-1.918,4.283-4.283,4.283
-	C6.111,12.76,4.004,10.652,4.004,8.287z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Magnifying_glass" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
+	 y="0px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g transform='matrix(24 0 0 24 0 0)'>
+<path d="M17.545,15.467l-3.779-3.779c0.57-0.935,0.898-2.035,0.898-3.21c0-3.417-2.961-6.377-6.378-6.377
+	C4.869,2.1,2.1,4.87,2.1,8.287c0,3.416,2.961,6.377,6.377,6.377c1.137,0,2.2-0.309,3.115-0.844l3.799,3.801
+	c0.372,0.371,0.975,0.371,1.346,0l0.943-0.943C18.051,16.307,17.916,15.838,17.545,15.467z M4.004,8.287
+	c0-2.366,1.917-4.283,4.282-4.283c2.366,0,4.474,2.107,4.474,4.474c0,2.365-1.918,4.283-4.283,4.283
+	C6.111,12.76,4.004,10.652,4.004,8.287z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/plus-round.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/plus-round.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/plus-round.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
-<path d="M417.4,224H288V94.6c0-16.9-14.3-30.6-32-30.6c-17.7,0-32,13.7-32,30.6V224H94.6C77.7,224,64,238.3,64,256
-	c0,17.7,13.7,32,30.6,32H224v129.4c0,16.9,14.3,30.6,32,30.6c17.7,0,32-13.7,32-30.6V288h129.4c16.9,0,30.6-14.3,30.6-32
-	C448,238.3,434.3,224,417.4,224z"/>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
+<path d="M417.4,224H288V94.6c0-16.9-14.3-30.6-32-30.6c-17.7,0-32,13.7-32,30.6V224H94.6C77.7,224,64,238.3,64,256
+	c0,17.7,13.7,32,30.6,32H224v129.4c0,16.9,14.3,30.6,32,30.6c17.7,0,32-13.7,32-30.6V288h129.4c16.9,0,30.6-14.3,30.6-32
+	C448,238.3,434.3,224,417.4,224z"/>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/redo.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/redo.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/redo.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 423.754 423.754" style="enable-background:new 0 0 423.754 423.754;" xml:space="preserve">
-<path d="M407.516,123.239l-27.717,11.48c18.585,44.869,18.585,94.291,0,139.159c-18.585,44.869-53.531,79.815-98.4,98.4
-	c-22.438,9.293-46.004,13.94-69.579,13.939c-23.569-0.001-47.147-4.647-69.579-13.939c-44.869-18.585-79.815-53.531-98.4-98.4
-	C13.507,200.647,34.758,118.71,90.758,68.644l60.801,60.801V7.521H29.635L69.514,47.4C5.222,105.826-18.985,200.6,16.123,285.359
-	c21.652,52.272,62.364,92.984,114.636,114.636c26.137,10.826,53.599,16.239,81.061,16.239s54.924-5.413,81.06-16.239
-	c52.272-21.652,92.984-62.364,114.637-114.636C429.167,233.087,429.167,175.511,407.516,123.239z"/>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 423.754 423.754" style="enable-background:new 0 0 423.754 423.754;" xml:space="preserve">
+<path d="M407.516,123.239l-27.717,11.48c18.585,44.869,18.585,94.291,0,139.159c-18.585,44.869-53.531,79.815-98.4,98.4
+	c-22.438,9.293-46.004,13.94-69.579,13.939c-23.569-0.001-47.147-4.647-69.579-13.939c-44.869-18.585-79.815-53.531-98.4-98.4
+	C13.507,200.647,34.758,118.71,90.758,68.644l60.801,60.801V7.521H29.635L69.514,47.4C5.222,105.826-18.985,200.6,16.123,285.359
+	c21.652,52.272,62.364,92.984,114.636,114.636c26.137,10.826,53.599,16.239,81.061,16.239s54.924-5.413,81.06-16.239
+	c52.272-21.652,92.984-62.364,114.637-114.636C429.167,233.087,429.167,175.511,407.516,123.239z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/save.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/save.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/save.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,10 +1,10 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Save" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="512px" y="512px"
-	 viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g transform='matrix(24 0 0 24 0 0)'>
-<path d="M15.173,2H4C2.899,2,2,2.9,2,4v12c0,1.1,0.899,2,2,2h12c1.101,0,2-0.9,2-2V5.127L15.173,2z M14,8c0,0.549-0.45,1-1,1H7
-	C6.45,9,6,8.549,6,8V3h8V8z M13,4h-2v4h2V4z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Save" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="512px" y="512px"
+	 viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g transform='matrix(24 0 0 24 0 0)'>
+<path d="M15.173,2H4C2.899,2,2,2.9,2,4v12c0,1.1,0.899,2,2,2h12c1.101,0,2-0.9,2-2V5.127L15.173,2z M14,8c0,0.549-0.45,1-1,1H7
+	C6.45,9,6,8.549,6,8V3h8V8z M13,4h-2v4h2V4z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/social-python.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/social-python.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/social-python.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,21 +1,21 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
-<g>
-	<path d="M193.46,249.056c3.723-0.67,7.589-1.041,11.586-1.041L201.924,248h103.823c4.503,0,8.806-0.617,12.908-1.754
-		c19.37-5.363,33.345-22.537,33.345-43.663v-30.822v-56.402c0-24.832-21.15-43.484-46.289-47.606
-		c-15.931-2.624-39.258-3.827-55.089-3.749c-15.829,0.086-30.981,1.404-44.277,3.749C167.143,74.576,160,88.928,160,115.359V144h96
-		v16H128.82c-35.628,0-64.538,42.571-64.813,95.242C64.005,255.495,64,255.747,64,256c0,9.523,0.94,18.72,2.685,27.404
-		C74.648,323.07,99.451,352,128.82,352H144v-2.662v-43.273C144,279.238,164.146,254.332,193.46,249.056z M203.656,127.002
-		c-9.592,0-17.384-7.785-17.384-17.403c0-9.664,7.774-17.52,17.384-17.52c9.574,0,17.399,7.855,17.399,17.52
-		C221.056,119.217,213.246,127.002,203.656,127.002z"/>
-	<path d="M443.951,222.543C434.78,186.021,411.033,160,383.18,160H368v2.626v38.046c0,33.915-22.286,58.474-49.489,62.681
-		c-2.737,0.424-5.483,0.646-8.301,0.646H206.351c-4.518,0-8.904,0.584-13.049,1.672C174.18,270.689,160,286.6,160,307.236v32.922
-		v54.305c0,24.832,24.977,39.426,49.481,46.551c29.327,8.531,61.267,10.068,96.366,0C329.15,434.354,352,420.893,352,394.463V368
-		h-96v-16h127.18c25.24,0,47.107-21.365,57.814-52.549C445.474,286.404,448,271.641,448,256
-		C448,244.232,446.567,232.962,443.951,222.543z M307.867,382.82c9.59,0,17.381,7.785,17.381,17.4
-		c0,9.65-7.791,17.521-17.381,17.521c-9.577,0-17.399-7.871-17.399-17.521C290.468,390.59,298.274,382.82,307.867,382.82z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 width="512px" height="512px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve">
+<g>
+	<path d="M193.46,249.056c3.723-0.67,7.589-1.041,11.586-1.041L201.924,248h103.823c4.503,0,8.806-0.617,12.908-1.754
+		c19.37-5.363,33.345-22.537,33.345-43.663v-30.822v-56.402c0-24.832-21.15-43.484-46.289-47.606
+		c-15.931-2.624-39.258-3.827-55.089-3.749c-15.829,0.086-30.981,1.404-44.277,3.749C167.143,74.576,160,88.928,160,115.359V144h96
+		v16H128.82c-35.628,0-64.538,42.571-64.813,95.242C64.005,255.495,64,255.747,64,256c0,9.523,0.94,18.72,2.685,27.404
+		C74.648,323.07,99.451,352,128.82,352H144v-2.662v-43.273C144,279.238,164.146,254.332,193.46,249.056z M203.656,127.002
+		c-9.592,0-17.384-7.785-17.384-17.403c0-9.664,7.774-17.52,17.384-17.52c9.574,0,17.399,7.855,17.399,17.52
+		C221.056,119.217,213.246,127.002,203.656,127.002z"/>
+	<path d="M443.951,222.543C434.78,186.021,411.033,160,383.18,160H368v2.626v38.046c0,33.915-22.286,58.474-49.489,62.681
+		c-2.737,0.424-5.483,0.646-8.301,0.646H206.351c-4.518,0-8.904,0.584-13.049,1.672C174.18,270.689,160,286.6,160,307.236v32.922
+		v54.305c0,24.832,24.977,39.426,49.481,46.551c29.327,8.531,61.267,10.068,96.366,0C329.15,434.354,352,420.893,352,394.463V368
+		h-96v-16h127.18c25.24,0,47.107-21.365,57.814-52.549C445.474,286.404,448,271.641,448,256
+		C448,244.232,446.567,232.962,443.951,222.543z M307.867,382.82c9.59,0,17.381,7.785,17.381,17.4
+		c0,9.65-7.791,17.521-17.381,17.521c-9.577,0-17.399-7.871-17.399-17.521C290.468,390.59,298.274,382.82,307.867,382.82z"/>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/res/icons/undo.svg
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/res/icons/undo.svg	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/res/icons/undo.svg	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,40 +1,40 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
-	 viewBox="0 0 423.754 423.754" style="enable-background:new 0 0 423.754 423.754;" xml:space="preserve">
-<path d="M354.24,47.4l39.879-39.879H272.196v121.924l60.801-60.801c56,50.066,77.251,132.004,46.918,205.235
-	c-18.585,44.869-53.531,79.815-98.4,98.4c-44.866,18.585-94.288,18.585-139.158,0c-44.869-18.585-79.815-53.531-98.4-98.4
-	c-18.585-44.869-18.585-94.29,0-139.159l-27.717-11.48c-21.651,52.272-21.651,109.848,0,162.12
-	c21.652,52.272,62.364,92.984,114.637,114.636c26.14,10.827,53.595,16.24,81.06,16.239c27.459-0.001,54.927-5.414,81.061-16.239
-	c52.271-21.652,92.983-62.364,114.636-114.636C442.739,200.6,418.532,105.826,354.24,47.4z"/>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 423.754 423.754" style="enable-background:new 0 0 423.754 423.754;" xml:space="preserve">
+<path d="M354.24,47.4l39.879-39.879H272.196v121.924l60.801-60.801c56,50.066,77.251,132.004,46.918,205.235
+	c-18.585,44.869-53.531,79.815-98.4,98.4c-44.866,18.585-94.288,18.585-139.158,0c-44.869-18.585-79.815-53.531-98.4-98.4
+	c-18.585-44.869-18.585-94.29,0-139.159l-27.717-11.48c-21.651,52.272-21.651,109.848,0,162.12
+	c21.652,52.272,62.364,92.984,114.637,114.636c26.14,10.827,53.595,16.24,81.06,16.239c27.459-0.001,54.927-5.414,81.061-16.239
+	c52.271-21.652,92.983-62.364,114.636-114.636C442.739,200.6,418.532,105.826,354.24,47.4z"/>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+<g>
+</g>
+</svg>

Modified: trunk/Build/source/utils/asymptote/GUI/xasy2asy.py
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/xasy2asy.py	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/xasy2asy.py	2023-02-05 18:18:59 UTC (rev 65737)
@@ -416,6 +416,10 @@
         self.color = (0, 0, 0)
         self.options = pen_options
         self.width = width
+        self.style = "solid"
+        self.capStyle = QtCore.Qt.PenCapStyle.SquareCap
+        self.opacity = 255 #Should these be in a dictionary?
+        self.dashPattern = [1,0]
         self._asyengine = asyengine
         self._deferAsyfy = False
         if pen_options:
@@ -431,6 +435,14 @@
     def asyEngine(self, value):
         self._asyengine = value
 
+    def qtCapStyleToAsyCapStyle(self, style):
+        lineCapList = [QtCore.Qt.PenCapStyle.SquareCap,QtCore.Qt.PenCapStyle.FlatCap,QtCore.Qt.PenCapStyle.RoundCap]
+        asyCapList = ["extendcap","flatcap","roundcap"]
+        if style in lineCapList:
+            return asyCapList[lineCapList.index(style)]
+        else:
+            return False
+
     def updateCode(self, asy2psmap = identity()):
         """ Generate the pen's code """
         if self._deferAsyfy:
@@ -438,6 +450,8 @@
         self.asyCode = 'rgb({:g},{:g},{:g})+{:s}'.format(self.color[0], self.color[1], self.color[2], str(self.width))
         if len(self.options) > 0:
             self.asyCode = self.asyCode + '+' + self.options
+        if self.style != "solid":
+            self.asyCode = self.style + '+' + self.asyCode
 
     def setWidth(self, newWidth):
         """ Set the pen's width """
@@ -444,6 +458,22 @@
         self.width = newWidth
         self.updateCode()
 
+    def setDashPattern(self, pattern):
+        self.dashPattern = pattern
+        self.updateCode() #Get working
+
+    def setStyle(self, style):
+        self.style = style
+        self.updateCode()
+
+    def setCapStyle(self, style):
+        self.capStyle = style
+        self.updateCode()
+
+    def setOpacity(self, opacity):
+        self.opacity = opacity
+        self.updateCode()
+
     def setColor(self, color):
         """ Set the pen's color """
         if isinstance(color, tuple) and len(color) == 3:
@@ -493,8 +523,13 @@
         if self._deferAsyfy:
             self.computeColor()
         newPen = QtGui.QPen()
-        newPen.setColor(asyPen.convertToQColor(self.color))
+        color = asyPen.convertToQColor(self.color)
+        color.setAlpha(self.opacity)
+        newPen.setColor(color)
+        newPen.setCapStyle(self.capStyle)
         newPen.setWidthF(self.width)
+        if self.dashPattern:
+            newPen.setDashPattern(self.dashPattern)
 
         return newPen
 
@@ -969,7 +1004,7 @@
             if transfExists:
                 transfExists = localCount <= len(self.transfKeymap[key]) - 1
                 if transfExists:
-                    validKey = not self.transfKeymap[key][localCount].deleted
+                    validKey = not self.transfKeymap[key][localCount].deleted #Does this ever exist?
             else:
                 validKey = False
 
@@ -1290,7 +1325,12 @@
     def copy(self):
         return type(self)(self.path,self._asyengine,self.pen)
 
+    def arrowify(self,arrowhead=0):
+        newObj = asyArrow(self.path.asyengine, pen=self.pen, transfKey = self.transfKey, transfKeymap = self.transfKeymap, canvas = self.onCanvas, arrowActive = arrowhead, code = self.path.getCode(yflip())) #transform
+        newObj.arrowSettings["fill"] = self.path.fill
+        return newObj
 
+
 class xasyFilledShape(xasyShape):
     """ A filled shape drawn on the GUI """
 
@@ -1555,11 +1595,23 @@
                 if i + 1 in keylist.keys():
                     # this case, we have a key.
                     with io.StringIO() as raw_line:
-                        for j in range(len(curr_str)):
+                        n=len(curr_str)
+                        for j in range(n):
                             raw_line.write(curr_str[j])
                             if j + 1 in keylist[i + 1]:
                                 # at this point, replace keys with xkey
-                                raw_line.write('KEY="{0:s}",'.format(linenum2key[(i + 1, j + 1)]))
+                                sep=','
+                                k=j+1
+                                # assume begingroup is on a single line for now
+                                while k < n:
+                                    c=curr_str[k]
+                                    if c == ')':
+                                        sep=''
+                                        break
+                                    if not c.isspace():
+                                        break
+                                    ++k
+                                raw_line.write('KEY="{0:s}"'.format(linenum2key[(i + 1, j + 1)])+sep)
                                 self.userKeys.add(linenum2key[(i + 1, j + 1)])
                         curr_str = raw_line.getvalue()
                 # else, skip and just write the line.
@@ -1819,3 +1871,125 @@
 
     def getID(self):
         return self.originalObj
+
+
+class asyArrow(xasyItem):
+
+    def __init__(self, asyengine, pen=None, transform=identity(), transfKey=None, transfKeymap = None, canvas=None, arrowActive=False, code=None):
+        #super().__init__(path=path, engine=asyengine, pen=pen, transform=transform)
+        """Initialize the label with the given test, location, and pen"""
+        #asyObj.__init__(self)
+        super().__init__(canvas=canvas, asyengine=asyengine) #CANVAS? Seems to work.
+        if pen is None:
+            pen = asyPen()
+        if pen.asyEngine is None:
+            pen.asyEngine = asyengine
+        self.pen = pen
+        self.fillPen = asyPen()
+        self.fillPen.asyEngine = asyengine
+        self.code = code
+        #self.path = path
+        #self.path.asyengine = asyengine
+        self.transfKey = transfKey
+        if transfKeymap == None: #Better way?
+            self.transfKeymap = {self.transfKey: [transform]}
+        else:
+            self.transfKeymap = transfKeymap
+        self.location = (0,0)
+        self.asyfied = False
+        self.onCanvas = canvas
+
+        self.arrowSettings = {"active": arrowActive, "style": 0, "fill": 0} #Rename active?
+        self.arrowList = ["","Arrow","ArcArrow"] #The first setting corresponds to no arrow.
+        self.arrowStyleList = ["","SimpleHead","HookHead","TeXHead"]
+        self.arrowFillList = ["","FillDraw","Fill","NoFill","UnFill","Draw"]
+
+    def getArrowSettings(self):
+        settings = "("
+
+        if self.arrowSettings["style"] != 0:
+            settings += "arrowhead="
+        settings += self.arrowStyleList[self.arrowSettings["style"]]
+
+        if "size" in self.arrowSettings:
+            if settings != "(": #This is really messy.
+                settings += ","
+            settings += "size=" + str(self.arrowSettings["size"]) #Should I add options to this? Like for cm?
+
+        if "angle" in self.arrowSettings: #This is so similar, you should be able to turn this into a function or something.
+            if settings != "(":
+                settings += ","
+            settings += "angle=" + str(self.arrowSettings["angle"])
+
+        if self.arrowSettings["fill"] != 0:
+            if settings != "(":
+                settings += ","
+            settings += "filltype="
+        settings += self.arrowFillList[self.arrowSettings["fill"]]
+
+        settings += ")"
+        #print(settings)
+        return settings
+
+    def setKey(self, newKey = None):
+        transform = self.transfKeymap[self.transfKey][0]
+
+        self.transfKey = newKey
+        self.transfKeymap = {self.transfKey: [transform]}
+
+    def updateCode(self, asy2psmap = identity()):
+        newLoc = asy2psmap.inverted() * self.location
+        self.asyCode = ''
+        if self.arrowSettings["active"]:
+            if self.arrowSettings["fill"]:
+                self.asyCode += 'begingroup(KEY="{0}");'.format(self.transfKey)+'\n\n'
+                self.asyCode += 'fill({0},{1});'.format(self.code, self.fillPen.getCode())+'\n\n'
+                self.asyCode += 'draw({0},{1},arrow={2}{3});'.format(self.code, self.pen.getCode(), self.arrowList[self.arrowSettings["active"]],self.getArrowSettings())+'\n\n'
+            else:
+                self.asyCode += 'draw(KEY="{0}",{1},{2},arrow={3}{4});'.format(self.transfKey, self.code, self.pen.getCode(), self.arrowList[self.arrowSettings["active"]],self.getArrowSettings())+'\n\n'
+            if self.arrowSettings["fill"]:
+                self.asyCode += 'endgroup();\n\n'
+        else:
+            self.asyCode = 'draw(KEY="{0}",{1},{2});'.format(self.transfKey, self.code, self.pen.getCode())+'\n\n'
+
+    def setPen(self, pen):
+        """ Set the label's pen """
+        self.pen = pen
+        self.updateCode()
+
+    def moveTo(self, newl):
+        """ Translate the label's location """
+        self.location = newl
+
+    def getObjectCode(self, asy2psmap=identity()):
+        self.updateCode()
+        return self.asyCode
+
+    def getTransformCode(self, asy2psmap=identity()):
+        transf = self.transfKeymap[self.transfKey][0]
+        if transf == identity():
+            return ''
+        else:
+            return xasyItem.setKeyFormatStr.format(self.transfKey, transf.getCode(asy2psmap))+'\n'
+
+    def generateDrawObjects(self, forceUpdate=False):
+        self.asyfy(forceUpdate)
+        transf = self.transfKeymap[self.transfKey][0]
+        for drawObject in self.drawObjects:
+            drawObject.pTransform = transf
+        return self.drawObjects
+
+    def __str__(self):
+        """ Create a string describing this shape """
+        return "xasyShape code:{:s}".format("\n\t".join(self.getCode().splitlines()))
+
+    def swapFill(self):
+        self.arrowSettings["fill"] = not self.arrowSettings["fill"]
+
+    def getBoundingBox(self):
+        self.asyfy()
+        return self.imageList[0].bbox
+
+    def copy(self):
+        #Include all parameters?
+        return type(self)(self._asyengine,pen=self.pen,canvas=self.onCanvas,arrowActive=self.arrowSettings["active"])

Modified: trunk/Build/source/utils/asymptote/GUI/xasyBezierInterface.py
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/xasyBezierInterface.py	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/xasyBezierInterface.py	2023-02-05 18:18:59 UTC (rev 65737)
@@ -51,14 +51,8 @@
         self.prospectiveCtrlPts = []
 
         #The magnification isn't being set. Here I'm manually setting it to be the square root of the determinant.
-        self.info['magnification'] = math.sqrt(self.transf.xx * self.transf.yy - self.transf.xy * self.transf.yx)
-        self.parent = parent
-        if isinstance(obj,xasy2asy.xasyFilledShape) or isinstance(obj,xasy2asy.xasyShape):
-            parent.ui.btnFill.setChecked(obj.path.fill)
+        self.info['magnification'] = math.sqrt(abs(self.transf.xx * self.transf.yy - self.transf.xy * self.transf.yx))
 
-    def swapObjFill(self):
-        self.obj.swapFill() #This may end up being more in the future
-
     def setSelectionBoundaries(self):
         self.nodeSelRects = self.handleNodeSelectionBounds()
 

Modified: trunk/Build/source/utils/asymptote/GUI/xasyFile.py
===================================================================
--- trunk/Build/source/utils/asymptote/GUI/xasyFile.py	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/GUI/xasyFile.py	2023-02-05 18:18:59 UTC (rev 65737)
@@ -103,15 +103,27 @@
                     })
 
         elif isinstance(item, xasy2asy.xasyShape):
-            penData = {'color': item.pen.color, 'width': item.pen.width, 'options': item.pen.options}
+            penData = {'color': item.pen.color, 'width': item.pen.width, 'dashPattern': item.pen.dashPattern, 'options': item.pen.options}
             fileItems.append({'type': 'xasyShape',
                     'nodes': item.path.nodeSet,
                     'links': item.path.linkSet,
+                    'fill': item.path.fill,
                     'transform': item.transfKeymap[item.transfKey][0].t,
                     'transfKey': item.transfKey,
                     'pen': penData
                     })
 
+        elif isinstance(item, xasy2asy.asyArrow): #Will this ever even be reached?
+            penData = {'color': item.pen.color, 'width': item.pen.width, 'dashPattern': item.pen.dashPattern, 'options': item.pen.options}
+            fileItems.append({'type': 'asyArrow',
+                    'pen': penData,
+                    'arrowSettings': item.arrowSettings,
+                    'transform': item.transfKeymap[item.transfKey][0].t,
+                    'transfKey': item.transfKey,
+                    'settings': item.arrowSettings,
+                    'code': item.code
+                    })
+
         else:
             # DEBUGGING PURPOSES ONLY
             print(type(item))

Modified: trunk/Build/source/utils/asymptote/LspCpp/CMakeLists.txt
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/CMakeLists.txt	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/CMakeLists.txt	2023-02-05 18:18:59 UTC (rev 65737)
@@ -197,7 +197,7 @@
     endif()
 endif()
 if(NOT RapidJSON_FOUND)
-    if(EXISTS "${CMAKE_SOURCE_DIR}/third_party/rapidjson/include")
+    if(EXISTS "${PROJECT_SOURCE_DIR}/third_party/rapidjson/include")
         message(STATUS "Using local RapidJSON")
         set(RapidJSON_INCLUDE_DIRS third_party/rapidjson/include)
     else()
@@ -227,7 +227,6 @@
 target_link_libraries(lspcpp PUBLIC network-uri  ${Boost_LIBRARIES})
 
 set(LSPCPP_THIRD_PARTY_DIR_LIST
-        ${LSPCPP_THIRD_PARTY_DIR}/threadpool
         ${LSPCPP_THIRD_PARTY_DIR}/utfcpp/source
         )
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/LICENSE
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/LICENSE	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/LICENSE	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,21 +1,21 @@
-MIT License
-
-Copyright (c) 2020 kuafuwang
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+MIT License
+
+Copyright (c) 2020 kuafuwang
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.

Modified: trunk/Build/source/utils/asymptote/LspCpp/README.md
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/README.md	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/README.md	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,7 +1,7 @@
 # LspCpp
 
 ## Dependencies
-`LspCpp` depends on boost, rapidjson, utfcpp, uri, and threadpool.
+`LspCpp` depends on boost, rapidjson, utfcpp, uri.
 
 ## Build
 
@@ -50,3 +50,4 @@
 [1]: https://github.com/cquery-project/cquery "cquery:"
 [2]: https://www.javacardos.com/tools "JcKit:"
 [3]: https://docs.microsoft.com/en-us/nuget/consume-packages/package-restore "Package Restore"
+

Modified: trunk/Build/source/utils/asymptote/LspCpp/examples/StdIOClientExample.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/examples/StdIOClientExample.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/examples/StdIOClientExample.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -29,190 +29,190 @@
 {
 public:
 
-	void log(Level level, std::wstring&& msg)
-	{
-		
-		std::wcerr << msg << std::endl;
-	};
-	void log(Level level, const std::wstring& msg)
-	{
-		std::wcerr << msg << std::endl;
-	};
-	void log(Level level, std::string&& msg)
-	{
-		std::cerr << msg << std::endl;
-	};
-	void log(Level level, const std::string& msg)
-	{
-		std::cerr << msg << std::endl;
-	};
+        void log(Level level, std::wstring&& msg)
+        {
+
+                std::wcerr << msg << std::endl;
+        };
+        void log(Level level, const std::wstring& msg)
+        {
+                std::wcerr << msg << std::endl;
+        };
+        void log(Level level, std::string&& msg)
+        {
+                std::cerr << msg << std::endl;
+        };
+        void log(Level level, const std::string& msg)
+        {
+                std::cerr << msg << std::endl;
+        };
 };
 
 struct boost_process_ipstream : lsp::base_istream< boost::process::ipstream >
 {
-	explicit boost_process_ipstream(boost::process::ipstream& _t)
-		: base_istream<boost::process::ipstream>(_t)
-	{
-	}
+        explicit boost_process_ipstream(boost::process::ipstream& _t)
+                : base_istream<boost::process::ipstream>(_t)
+        {
+        }
 
-	std::string what() override
-	{
-		return {};
-	}
-	void clear() override
-	{
-		
-	}
+        std::string what() override
+        {
+                return {};
+        }
+        void clear() override
+        {
+
+        }
 };
 struct boost_process_opstream : lsp::base_ostream< boost::process::opstream >
 {
-	explicit boost_process_opstream(boost::process::opstream& _t)
-		: lsp::base_ostream<boost::process::opstream>(_t)
-	{
-	}
+        explicit boost_process_opstream(boost::process::opstream& _t)
+                : lsp::base_ostream<boost::process::opstream>(_t)
+        {
+        }
 
-	std::string what() override
-	{
-		return {};
-	}
-	void clear() override
-	{
+        std::string what() override
+        {
+                return {};
+        }
+        void clear() override
+        {
 
-	}
+        }
 };
 class Client
 {
 public:
-	Client(std::string& execPath,const std::vector<std::string>& args) 
-		:point(protocol_json_handler, endpoint, _log)
-	{
-		std::error_code ec;
-		namespace bp = boost::process;
-		c = std::make_shared<bp::child>(asio_io.getIOService(), execPath, 
-			bp::args = args,
-			ec,
+        Client(std::string& execPath,const std::vector<std::string>& args)
+                :point(protocol_json_handler, endpoint, _log)
+        {
+                std::error_code ec;
+                namespace bp = boost::process;
+                c = std::make_shared<bp::child>(asio_io.getIOService(), execPath,
+                        bp::args = args,
+                        ec,
 
-			bp::std_out > read_from_service,
-			bp::std_in < write_to_service,
-			bp::on_exit([&](int exit_code, const std::error_code& ec_in){
-				
-			}));
-		if (ec)
-		{
-			// fail
-			_log.log(lsp::Log::Level::SEVERE, "Start server failed.");
-		}
-		else {
-			//success
-			point.startProcessingMessages(read_from_service_proxy, write_to_service_proxy);
-		}
-	}
-	~Client()
-	{
-		point.Stop();
+                        bp::std_out > read_from_service,
+                        bp::std_in < write_to_service,
+                        bp::on_exit([&](int exit_code, const std::error_code& ec_in){
+
+                        }));
+                if (ec)
+                {
+                        // fail
+                        _log.log(lsp::Log::Level::SEVERE, "Start server failed.");
+                }
+                else {
+                        //success
+                        point.startProcessingMessages(read_from_service_proxy, write_to_service_proxy);
+                }
+        }
+        ~Client()
+        {
+        point.stop();
         std::this_thread::sleep_for(std::chrono::milliseconds (1000));
-	}
+        }
 
-	lsp::ProcessIoService asio_io;
-	std::shared_ptr < lsp::ProtocolJsonHandler >  protocol_json_handler = std::make_shared< lsp::ProtocolJsonHandler>();
-	DummyLog _log;
+        lsp::ProcessIoService asio_io;
+        std::shared_ptr < lsp::ProtocolJsonHandler >  protocol_json_handler = std::make_shared< lsp::ProtocolJsonHandler>();
+        DummyLog _log;
 
-	std::shared_ptr<GenericEndpoint>  endpoint = std::make_shared<GenericEndpoint>(_log);
+        std::shared_ptr<GenericEndpoint>  endpoint = std::make_shared<GenericEndpoint>(_log);
 
-	boost::process::opstream write_to_service;
-	boost::process::ipstream   read_from_service;
+        boost::process::opstream write_to_service;
+        boost::process::ipstream   read_from_service;
 
-	std::shared_ptr<lsp::ostream> write_to_service_proxy = std::make_shared<boost_process_opstream>(write_to_service);
-	std::shared_ptr<lsp::istream>  read_from_service_proxy = std::make_shared< boost_process_ipstream >(read_from_service);
+        std::shared_ptr<lsp::ostream> write_to_service_proxy = std::make_shared<boost_process_opstream>(write_to_service);
+        std::shared_ptr<lsp::istream>  read_from_service_proxy = std::make_shared< boost_process_ipstream >(read_from_service);
 
-	std::shared_ptr<boost::process::child> c;
-	RemoteEndPoint point;
+        std::shared_ptr<boost::process::child> c;
+        RemoteEndPoint point;
 };
 
 int main(int argc, char* argv[])
 {
-	using namespace  boost::program_options;
-	options_description desc("Allowed options");
-	desc.add_options()
-		("help,h", "produce help message")
-		("execPath", value<string>(), "LSP server's path");
-	
+        using namespace  boost::program_options;
+        options_description desc("Allowed options");
+        desc.add_options()
+                ("help,h", "produce help message")
+                ("execPath", value<string>(), "LSP server's path");
 
 
-	variables_map vm;
-	try {
-		store(parse_command_line(argc, argv, desc), vm);
-	}
-	catch (std::exception& e) {
-		std::cout << "Undefined input.Reason:" << e.what() << std::endl;
-		return 0;
-	}
-	notify(vm);
 
+        variables_map vm;
+        try {
+                store(parse_command_line(argc, argv, desc), vm);
+        }
+        catch (std::exception& e) {
+                std::cout << "Undefined input.Reason:" << e.what() << std::endl;
+                return 0;
+        }
+        notify(vm);
 
-	if (vm.count("help"))
-	{
-		cout << desc << endl;
-		return 1;
-	}
-	string execPath;
-	if (vm.count("execPath"))
-	{
-		execPath = vm["execPath"].as<string>();
-	}
-	else
-	{
-		execPath = "STDIO_SERVER_EXAMPLE.exe";
-	}
 
-	Client client(execPath, {});
-	{
-		td_initialize::request req;
-		auto rsp = client.point.waitResponse(req);
-		if (rsp)
-		{
-			std::cerr << rsp->ToJson() << std::endl;
-		}
-		else
-		{
-			std::cerr << "get initialze  response time out" << std::endl;
-		}
-	}
-	{
-		td_definition::request req;
-		auto future_rsp = client.point.send(req);
-		auto state = future_rsp.wait_for(std::chrono::seconds(4));
-		if (std::future_status::timeout == state)
-		{
-			std::cerr << "get textDocument/definition  response time out" << std::endl;
-			return 0;
-		}
-		auto rsp = future_rsp.get();
-		if (rsp.is_error)
-		{
-			std::cerr << "get textDocument/definition  response error" << std::endl;
+        if (vm.count("help"))
+        {
+                cout << desc << endl;
+                return 1;
+        }
+        string execPath;
+        if (vm.count("execPath"))
+        {
+                execPath = vm["execPath"].as<string>();
+        }
+        else
+        {
+                execPath = "STDIO_SERVER_EXAMPLE.exe";
+        }
 
-		}
-		else
-		{
-			std::cerr << rsp.response.ToJson() << std::endl;
-		}
-	}
-	{
-		td_initialize::request req;
-		auto rsp = client.point.waitResponse(req);
-		if (rsp)
-		{
-			std::cerr << rsp->ToJson() << std::endl;
-		}
-		else
-		{
-			std::cerr << "get initialze  response time out" << std::endl;
-		}
-	}
-	Notify_Exit::notify notify;
-	client.point.send(notify);
-	return 0;
+        Client client(execPath, {});
+        {
+                td_initialize::request req;
+                auto rsp = client.point.waitResponse(req);
+                if (rsp)
+                {
+                        std::cerr << rsp->ToJson() << std::endl;
+                }
+                else
+                {
+                        std::cerr << "get initialze  response time out" << std::endl;
+                }
+        }
+        {
+                td_definition::request req;
+                auto future_rsp = client.point.send(req);
+                auto state = future_rsp.wait_for(std::chrono::seconds(4));
+                if (lsp::future_status::timeout == state)
+                {
+                        std::cerr << "get textDocument/definition  response time out" << std::endl;
+                        return 0;
+                }
+                auto rsp = future_rsp.get();
+                if (rsp.is_error)
+                {
+                        std::cerr << "get textDocument/definition  response error" << std::endl;
+
+                }
+                else
+                {
+                        std::cerr << rsp.response.ToJson() << std::endl;
+                }
+        }
+        {
+                td_initialize::request req;
+                auto rsp = client.point.waitResponse(req);
+                if (rsp)
+                {
+                        std::cerr << rsp->ToJson() << std::endl;
+                }
+                else
+                {
+                        std::cerr << "get initialze  response time out" << std::endl;
+                }
+        }
+        Notify_Exit::notify notify;
+        client.point.send(notify);
+        return 0;
 }
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/examples/StdIOServerExample.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/examples/StdIOServerExample.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/examples/StdIOServerExample.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -26,23 +26,23 @@
 {
 public:
 
-	void log(Level level, std::wstring&& msg)
-	{
+        void log(Level level, std::wstring&& msg)
+        {
 
-		std::wcerr << msg << std::endl;
-	};
-	void log(Level level, const std::wstring& msg)
-	{
-		std::wcerr << msg << std::endl;
-	};
-	void log(Level level, std::string&& msg)
-	{
-		std::cerr << msg << std::endl;
-	};
-	void log(Level level, const std::string& msg)
-	{
-		std::cerr << msg << std::endl;
-	};
+                std::wcerr << msg << std::endl;
+        };
+        void log(Level level, const std::wstring& msg)
+        {
+                std::wcerr << msg << std::endl;
+        };
+        void log(Level level, std::string&& msg)
+        {
+                std::cerr << msg << std::endl;
+        };
+        void log(Level level, const std::string& msg)
+        {
+                std::cerr << msg << std::endl;
+        };
 };
 
 
@@ -49,77 +49,77 @@
 class StdIOServer
 {
 public:
-	
-	StdIOServer() : remote_end_point_(protocol_json_handler, endpoint, _log)
-	{
-		remote_end_point_.registerHandler([&](const td_initialize::request& req)
-		{
-				td_initialize::response rsp;
-				rsp.id = req.id;
-				CodeLensOptions code_lens_options;
-				code_lens_options.resolveProvider = true;
-				rsp.result.capabilities.codeLensProvider = code_lens_options;
-				return rsp;
-		});
 
-		remote_end_point_.registerHandler([&](Notify_Exit::notify& notify)
-			{
-				remote_end_point_.Stop();
-				esc_event.notify(std::make_unique<bool>(true));
-			});
-		remote_end_point_.registerHandler([&](const td_definition::request& req,
-			const CancelMonitor& monitor)
-			{
-				td_definition::response rsp;
-				rsp.result.first = std::vector<lsLocation>();
-				if (monitor && monitor())
-				{
-					_log.info("textDocument/definition request had been cancel.");
-				}
-				return rsp;
-			});
+        StdIOServer() : remote_end_point_(protocol_json_handler, endpoint, _log)
+        {
+                remote_end_point_.registerHandler([&](const td_initialize::request& req)
+                {
+                                td_initialize::response rsp;
+                                rsp.id = req.id;
+                                CodeLensOptions code_lens_options;
+                                code_lens_options.resolveProvider = true;
+                                rsp.result.capabilities.codeLensProvider = code_lens_options;
+                                return rsp;
+                });
 
-		remote_end_point_.startProcessingMessages(input, output);
-	}
-	~StdIOServer()
-	{
-		
-	}
+                remote_end_point_.registerHandler([&](Notify_Exit::notify& notify)
+                        {
+                remote_end_point_.stop();
+                                esc_event.notify(std::make_unique<bool>(true));
+                        });
+                remote_end_point_.registerHandler([&](const td_definition::request& req,
+                        const CancelMonitor& monitor)
+                        {
+                                td_definition::response rsp;
+                                rsp.result.first = std::vector<lsLocation>();
+                                if (monitor && monitor())
+                                {
+                                        _log.info("textDocument/definition request had been cancel.");
+                                }
+                                return rsp;
+                        });
 
-	struct ostream : lsp::base_ostream<std::ostream>
-	{
-		explicit ostream(std::ostream& _t)
-			: base_ostream<std::ostream>(_t)
-		{
-			
-		}
+                remote_end_point_.startProcessingMessages(input, output);
+        }
+        ~StdIOServer()
+        {
 
-		std::string what() override
-		{
-			return {};
-		}
-	};
-	struct istream :lsp::base_istream<std::istream>
-	{
-		explicit istream(std::istream& _t)
-			: base_istream<std::istream>(_t)
-		{
-		}
+        }
 
-		std::string what() override
-		{
-			return {};
-		}
-	};
-	std::shared_ptr < lsp::ProtocolJsonHandler >  protocol_json_handler = std::make_shared < lsp::ProtocolJsonHandler >();
-	DummyLog _log;
-	
-	std::shared_ptr<ostream> output = std::make_shared<ostream>(std::cout);
-	std::shared_ptr<istream> input = std::make_shared<istream>(std::cin);
+        struct ostream : lsp::base_ostream<std::ostream>
+        {
+                explicit ostream(std::ostream& _t)
+                        : base_ostream<std::ostream>(_t)
+                {
 
-	std::shared_ptr < GenericEndpoint >  endpoint = std::make_shared<GenericEndpoint>(_log);
-	RemoteEndPoint remote_end_point_;
-	Condition<bool> esc_event;
+                }
+
+                std::string what() override
+                {
+                        return {};
+                }
+        };
+        struct istream :lsp::base_istream<std::istream>
+        {
+                explicit istream(std::istream& _t)
+                        : base_istream<std::istream>(_t)
+                {
+                }
+
+                std::string what() override
+                {
+                        return {};
+                }
+        };
+        std::shared_ptr < lsp::ProtocolJsonHandler >  protocol_json_handler = std::make_shared < lsp::ProtocolJsonHandler >();
+        DummyLog _log;
+
+        std::shared_ptr<ostream> output = std::make_shared<ostream>(std::cout);
+        std::shared_ptr<istream> input = std::make_shared<istream>(std::cin);
+
+        std::shared_ptr < GenericEndpoint >  endpoint = std::make_shared<GenericEndpoint>(_log);
+        RemoteEndPoint remote_end_point_;
+        Condition<bool> esc_event;
 };
 
 
@@ -127,33 +127,33 @@
 
 int main(int argc, char* argv[])
 {
-	using namespace  boost::program_options;
-	options_description desc("Allowed options");
-	desc.add_options()
-		("help,h", "produce help message");
+        using namespace  boost::program_options;
+        options_description desc("Allowed options");
+        desc.add_options()
+                ("help,h", "produce help message");
 
 
 
-	variables_map vm;
-	try {
-		store(parse_command_line(argc, argv, desc), vm);
-	}
-	catch (std::exception& e) {
-		std::cout << "Undefined input.Reason:" << e.what() << std::endl;
-		return 0;
-	}
-	notify(vm);
+        variables_map vm;
+        try {
+                store(parse_command_line(argc, argv, desc), vm);
+        }
+        catch (std::exception& e) {
+                std::cout << "Undefined input.Reason:" << e.what() << std::endl;
+                return 0;
+        }
+        notify(vm);
 
 
-	if (vm.count("help"))
-	{
-		cout << desc << endl;
-		return 1;
-	}
-	StdIOServer server;
-	server.esc_event.wait();
+        if (vm.count("help"))
+        {
+                cout << desc << endl;
+                return 1;
+        }
+        StdIOServer server;
+        server.esc_event.wait();
 
-	return 0;
+        return 0;
 }
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/examples/TcpServerExample.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/examples/TcpServerExample.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/examples/TcpServerExample.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -25,22 +25,22 @@
 {
 public:
 
-	void log(Level level, std::wstring&& msg)
-	{
-		std::wcout << msg << std::endl;
-	};
-	void log(Level level, const std::wstring& msg)
-	{
-		std::wcout << msg << std::endl;
-	};
-	void log(Level level, std::string&& msg)
-	{
-		std::cout << msg << std::endl;
-	};
-	void log(Level level, const std::string& msg)
-	{
-		std::cout << msg << std::endl;
-	};
+        void log(Level level, std::wstring&& msg)
+        {
+                std::wcout << msg << std::endl;
+        };
+        void log(Level level, const std::wstring& msg)
+        {
+                std::wcout << msg << std::endl;
+        };
+        void log(Level level, std::string&& msg)
+        {
+                std::cout << msg << std::endl;
+        };
+        void log(Level level, const std::string& msg)
+        {
+                std::cout << msg << std::endl;
+        };
 };
 
 std::string _address = "127.0.0.1";
@@ -51,149 +51,157 @@
 public:
 
 
-	Server():server(_address,_port,protocol_json_handler, endpoint, _log)
-	{
-		server.point.registerHandler(
-			[&](const td_initialize::request& req)
-		          ->lsp::ResponseOrError< td_initialize::response >{
-				
-				td_initialize::response rsp;
-				CodeLensOptions code_lens_options;
-				code_lens_options.resolveProvider = true;
-				rsp.result.capabilities.codeLensProvider = code_lens_options;
-	
-				return rsp;
-			});
-		server.point.registerHandler([&](const td_definition::request& req
-			,const CancelMonitor& monitor)
-			{
-				td_definition::response rsp;
-				rsp.result.first= std::vector<lsLocation>();
-				std::this_thread::sleep_for(std::chrono::seconds(8));
-			    if(monitor && monitor())
-			    {
-					_log.info("textDocument/definition request had been cancel.");
-			    }
-				return rsp;
-			});
-		
-		server.point.registerHandler([=](Notify_Exit::notify& notify)
-			{
-				std::cout << notify.ToJson() << std::endl;
-			});
-		std::thread([&]()
-			{
-				server.run();
-			}).detach();
-	}
-	~Server()
-	{
-		server.stop();
-	}
-	std::shared_ptr < lsp::ProtocolJsonHandler >  protocol_json_handler = std::make_shared < lsp::ProtocolJsonHandler >();
-	DummyLog _log;
+        Server():server(_address,_port,protocol_json_handler, endpoint, _log)
+        {
+                server.point.registerHandler(
+                        [&](const td_initialize::request& req)
+                          ->lsp::ResponseOrError< td_initialize::response >{
 
-	std::shared_ptr < GenericEndpoint >  endpoint = std::make_shared<GenericEndpoint>(_log);
-	lsp::TcpServer server;
+                                td_initialize::response rsp;
+                                CodeLensOptions code_lens_options;
+                                code_lens_options.resolveProvider = true;
+                                rsp.result.capabilities.codeLensProvider = code_lens_options;
 
+                                return rsp;
+                        });
+                server.point.registerHandler([&](const td_definition::request& req
+                        ,const CancelMonitor& monitor)  -> lsp::ResponseOrError<td_definition::response>
+                        {
+
+                                std::this_thread::sleep_for(std::chrono::seconds(8));
+
+                            if( monitor && monitor() )
+                            {
+                                        _log.info("textDocument/definition request had been cancel.");
+                    Rsp_Error rsp;
+                    rsp.error.code = lsErrorCodes::RequestCancelled;
+                    rsp.error.message = "textDocument/definition request had been cancel.";
+                    return  rsp;
+                            }
+                else
+                {
+                    td_definition::response rsp;
+                    rsp.result.first= std::vector<lsLocation>();
+                    return rsp;
+                }
+
+                        });
+
+                server.point.registerHandler([=](Notify_Exit::notify& notify)
+                        {
+                                std::cout << notify.ToJson() << std::endl;
+                        });
+                std::thread([&]()
+                        {
+                                server.run();
+                        }).detach();
+        }
+        ~Server()
+        {
+                server.stop();
+        }
+        std::shared_ptr < lsp::ProtocolJsonHandler >  protocol_json_handler = std::make_shared < lsp::ProtocolJsonHandler >();
+        DummyLog _log;
+
+        std::shared_ptr < GenericEndpoint >  endpoint = std::make_shared<GenericEndpoint>(_log);
+        lsp::TcpServer server;
+
 };
 
 class Client
 {
 public:
-	struct iostream :public lsp::base_iostream<tcp::iostream>
-	{
-		explicit iostream(boost::asio::basic_socket_iostream<tcp>& _t)
-			: base_iostream<boost::asio::basic_socket_iostream<tcp>>(_t)
-		{
-		}
+        struct iostream :public lsp::base_iostream<tcp::iostream>
+        {
+                explicit iostream(boost::asio::basic_socket_iostream<tcp>& _t)
+                        : base_iostream<boost::asio::basic_socket_iostream<tcp>>(_t)
+                {
+                }
 
-		std::string what() override
-		{
-			auto  msg = _impl.error().message();
-			return  msg;
-		}
-		
-	};
-	Client() :remote_end_point_(protocol_json_handler, endpoint, _log)
-	{
-		tcp::endpoint end_point( address::from_string(_address), 9333);
+                std::string what() override
+                {
+                        auto  msg = _impl.error().message();
+                        return  msg;
+                }
 
-		socket_ = std::make_shared<tcp::iostream>();
-		socket_->connect(end_point);
-		if (!socket_)
-		{
-			string temp = "Unable to connect: " + socket_->error().message();
-			std::cout << temp << std::endl;
-		}
-	
-		vector<string> args;
-		socket_proxy = std::make_shared<iostream>(*socket_.get());
-	
-		remote_end_point_.startProcessingMessages(socket_proxy, socket_proxy);
-	}
-	~Client()
-	{
-		remote_end_point_.Stop();
-		std::this_thread::sleep_for(std::chrono::milliseconds (1000));
-		socket_->close();
-	}
+        };
+        Client() :remote_end_point_(protocol_json_handler, endpoint, _log)
+        {
+                tcp::endpoint end_point( address::from_string(_address), 9333);
 
-	std::shared_ptr < lsp::ProtocolJsonHandler >  protocol_json_handler = std::make_shared< lsp::ProtocolJsonHandler>();
-	DummyLog _log;
+                socket_ = std::make_shared<tcp::iostream>();
+                socket_->connect(end_point);
+                if (!socket_)
+                {
+                        string temp = "Unable to connect: " + socket_->error().message();
+                        std::cout << temp << std::endl;
+                }
 
-	std::shared_ptr<GenericEndpoint>  endpoint = std::make_shared<GenericEndpoint>(_log);
+                vector<string> args;
+                socket_proxy = std::make_shared<iostream>(*socket_.get());
 
-	std::shared_ptr < iostream> socket_proxy;
-	std::shared_ptr<tcp::iostream>  socket_;
-	RemoteEndPoint remote_end_point_;
+                remote_end_point_.startProcessingMessages(socket_proxy, socket_proxy);
+        }
+        ~Client()
+        {
+        remote_end_point_.stop();
+                std::this_thread::sleep_for(std::chrono::milliseconds (1000));
+                socket_->close();
+        }
+
+        std::shared_ptr < lsp::ProtocolJsonHandler >  protocol_json_handler = std::make_shared< lsp::ProtocolJsonHandler>();
+        DummyLog _log;
+
+        std::shared_ptr<GenericEndpoint>  endpoint = std::make_shared<GenericEndpoint>(_log);
+
+        std::shared_ptr < iostream> socket_proxy;
+        std::shared_ptr<tcp::iostream>  socket_;
+        RemoteEndPoint remote_end_point_;
 };
 
-int main() 
+int main()
 {
 
-	Server server;
-	Client client;
+        Server server;
+        Client client;
 
-	{
-		td_initialize::request req;
-		auto rsp = client.remote_end_point_.waitResponse(req);
-		if (rsp)
-		{
-			std::cout << rsp->response.ToJson() << std::endl;
-		}
-		else
-		{
-			std::cout << "get initialze  response time out" << std::endl;
-		}
-	}
-	{
-		td_definition::request req;
-		auto future_rsp = client.remote_end_point_.send(req);
-		Notify_Cancellation::notify cancel_notify;
-		cancel_notify.params.id = req.id;
-		client.remote_end_point_.send(cancel_notify);
-		
-		auto state = future_rsp.wait_for(std::chrono::seconds(16));
-		if (std::future_status::timeout == state)
-		{
-			std::cout << "get textDocument/definition  response time out" << std::endl;
-			return 0;
-		}
-		auto rsp = future_rsp.get();
-		if (rsp.is_error)
-		{
-			std::cout << "get textDocument/definition  response error" << std::endl;
+        {
+                td_initialize::request req;
+                auto rsp = client.remote_end_point_.waitResponse(req);
+                if (rsp)
+                {
+                        std::cout << rsp->response.ToJson() << std::endl;
+                }
+                else
+                {
+                        std::cout << "get initialze  response time out" << std::endl;
+                }
+        }
+        {
+                td_definition::request req;
+                auto future_rsp = client.remote_end_point_.send(req);
+        client.remote_end_point_.cancelRequest(req.id);
 
-		}
-		else
-		{
-			std::cout << rsp.response.ToJson() << std::endl;
-		}
-	}
-	Notify_Exit::notify notify;
-	client.remote_end_point_.send(notify);
-	return 0;
+                auto state = future_rsp.wait_for(std::chrono::seconds(16));
+                if (lsp::future_status::timeout == state)
+                {
+                        std::cout << "get textDocument/definition  response time out" << std::endl;
+                        return 0;
+                }
+                auto rsp = future_rsp.get();
+                if (rsp.is_error)
+                {
+                        std::cout << "get textDocument/definition  response error :" << rsp.ToJson() << std::endl;
+
+                }
+                else
+                {
+                        std::cout << rsp.response.ToJson() << std::endl;
+                }
+        }
+        Notify_Exit::notify notify;
+        client.remote_end_point_.send(notify);
+        return 0;
 }
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/examples/WebsocketExample.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/examples/WebsocketExample.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/examples/WebsocketExample.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -89,9 +89,9 @@
     std::string user_agent_;
     std::shared_ptr < lsp::ProtocolJsonHandler >  protocol_json_handler = std::make_shared< lsp::ProtocolJsonHandler>();
     DummyLog _log;
-	
+
     std::shared_ptr<GenericEndpoint>  endpoint = std::make_shared<GenericEndpoint>(_log);
-	
+
     std::shared_ptr<lsp::websocket_stream_wrapper>  proxy_;
 public:
    RemoteEndPoint point;
@@ -104,7 +104,7 @@
         , ws_(net::make_strand(ioc)),point(protocol_json_handler, endpoint, _log)
     {
         proxy_ = std::make_shared<lsp::websocket_stream_wrapper>(ws_);
- 
+
     }
 
     // Start the asynchronous operation
@@ -127,12 +127,12 @@
         {
                ioc.run();
         }).detach();
-        while (!point.IsWorking())
+        while (!point.isWorking())
         {
             std::this_thread::sleep_for(std::chrono::milliseconds (50));
         }
     }
-    
+
     void
         on_resolve(
             beast::error_code ec,
@@ -189,8 +189,8 @@
             return;
 
         // Send the message
-    
 
+
         point.startProcessingMessages(proxy_, proxy_);
         // Read a message into our buffer
         ws_.async_read(
@@ -215,7 +215,7 @@
         std::vector<char> elements(data, data + bytes_transferred);
         buffer_.clear();
         proxy_->on_request.EnqueueAll(std::move(elements), false);
-        
+
         ws_.async_read(
             buffer_,
             beast::bind_front_handler(
@@ -249,7 +249,7 @@
                 code_lens_options.resolveProvider = true;
                 rsp.result.capabilities.codeLensProvider = code_lens_options;
                 return rsp;
-		});
+                });
         std::thread([&]()
             {
                 server.run();
@@ -261,7 +261,7 @@
     }
     std::shared_ptr <  lsp::ProtocolJsonHandler >  protocol_json_handler = std::make_shared < lsp::ProtocolJsonHandler >();
     DummyLog _log;
-    
+
     std::shared_ptr < GenericEndpoint >  endpoint = std::make_shared<GenericEndpoint>(_log);
     lsp::WebSocketServer server;
 
@@ -271,11 +271,11 @@
 {
     std::string user_agent = std::string(BOOST_BEAST_VERSION_STRING) +" websocket-server-async";
     Server server(user_agent);
-   
+
     auto client = std::make_shared<Client>();
     user_agent = std::string(BOOST_BEAST_VERSION_STRING) + " websocket-client-async";
     client->run(_address.c_str(), _port.c_str(), user_agent.c_str());
-	
+
     td_initialize::request req;
 
     auto rsp = client->point.waitResponse(req);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Cancellation.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Cancellation.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Cancellation.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,12 +7,12 @@
 {
 
   struct Params {
-	  /**
-	   * The request id to cancel.
-	   */
-	  lsRequestId id;
-  	
-	  MAKE_SWAP_METHOD(Cancellation::Params, id);
+          /**
+           * The request id to cancel.
+           */
+          lsRequestId id;
+
+          MAKE_SWAP_METHOD(Cancellation::Params, id);
   };
 
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Condition.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Condition.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Condition.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -5,44 +5,44 @@
 {
 public:
 
-	std::mutex m_mutex;
-	std::condition_variable   m_condition;
-	~Condition() {
-		m_condition.notify_all();
-	}
-	void notify(std::unique_ptr<T> data) noexcept
-	{
-		{
-			std::lock_guard<std::mutex> eventLock(m_mutex);
-			any.swap(data);
-		}
-		// wake up one waiter
-		m_condition.notify_one();
-	};
+        std::mutex m_mutex;
+        std::condition_variable   m_condition;
+        ~Condition() {
+                m_condition.notify_all();
+        }
+        void notify(std::unique_ptr<T> data) noexcept
+        {
+                {
+                        std::lock_guard<std::mutex> eventLock(m_mutex);
+                        any.swap(data);
+                }
+                // wake up one waiter
+                m_condition.notify_one();
+        };
 
-	
-	std::unique_ptr<T> wait(unsigned timeout=0)
-	{
-		std::unique_lock<std::mutex> ul(m_mutex);
-		if (!timeout) {
-			m_condition.wait(ul,[&]() {
-					if (!any)
-						return false;
-					return true;
-			});
-		}
-		else{
-			if(!any){
-				std::cv_status status = m_condition.wait_for(ul, std::chrono::milliseconds(timeout));
-				if (status == std::cv_status::timeout)
-				{
-					return {};
-				}
-			}
-		}
-		return std::unique_ptr<T>(any.release());
-		
-	}
+
+        std::unique_ptr<T> wait(unsigned timeout=0)
+        {
+                std::unique_lock<std::mutex> ul(m_mutex);
+                if (!timeout) {
+                        m_condition.wait(ul,[&]() {
+                                        if (!any)
+                                                return false;
+                                        return true;
+                        });
+                }
+                else{
+                        if(!any){
+                                std::cv_status status = m_condition.wait_for(ul, std::chrono::milliseconds(timeout));
+                                if (status == std::cv_status::timeout)
+                                {
+                                        return {};
+                                }
+                        }
+                }
+                return std::unique_ptr<T>(any.release());
+
+        }
 private:
-	std::unique_ptr<T> any;
+        std::unique_ptr<T> any;
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Endpoint.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Endpoint.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/Endpoint.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -15,13 +15,13 @@
 class Endpoint
 {
 public:
-	virtual  ~Endpoint() = default;
-	virtual  bool onRequest(std::unique_ptr<LspMessage>) = 0;
-	virtual  bool notify(std::unique_ptr<LspMessage>) = 0;
-	
-	virtual  bool onResponse(const std::string&, std::unique_ptr<LspMessage>) = 0;
-	virtual  void registerRequestHandler(const std::string&, GenericResponseHandler ) = 0;
-	virtual  void registerNotifyHandler(const std::string&,  GenericNotificationHandler ) = 0;
+        virtual  ~Endpoint() = default;
+        virtual  bool onRequest(std::unique_ptr<LspMessage>) = 0;
+        virtual  bool notify(std::unique_ptr<LspMessage>) = 0;
+
+        virtual  bool onResponse(const std::string&, std::unique_ptr<LspMessage>) = 0;
+        virtual  void registerRequestHandler(const std::string&, GenericResponseHandler ) = 0;
+        virtual  void registerNotifyHandler(const std::string&,  GenericNotificationHandler ) = 0;
 };
 
 class GenericEndpoint :public Endpoint
@@ -28,26 +28,26 @@
 {
 
 public:
-	GenericEndpoint(lsp::Log& l):log(l){}
-	bool notify(std::unique_ptr<LspMessage>) override;
-	bool onResponse(const std::string&, std::unique_ptr<LspMessage>) override;
+        GenericEndpoint(lsp::Log& l):log(l){}
+        bool notify(std::unique_ptr<LspMessage>) override;
+        bool onResponse(const std::string&, std::unique_ptr<LspMessage>) override;
 
-	bool onRequest(std::unique_ptr<LspMessage>) override;
-	std::map< std::string, GenericRequestHandler > method2request;
-	std::map< std::string, GenericResponseHandler  > method2response;
-	std::map< std::string, GenericNotificationHandler  > method2notification;
-	
-	  void registerRequestHandler(const std::string& method, GenericResponseHandler cb) override
-	{
-		  method2request[method] = cb;
-	}
+        bool onRequest(std::unique_ptr<LspMessage>) override;
+        std::map< std::string, GenericRequestHandler > method2request;
+        std::map< std::string, GenericResponseHandler  > method2response;
+        std::map< std::string, GenericNotificationHandler  > method2notification;
 
-	void registerNotifyHandler(const std::string& method, GenericNotificationHandler cb) override
-	  {
-		method2notification[method] = cb;
-	  }
-	lsp::Log& log;
+          void registerRequestHandler(const std::string& method, GenericResponseHandler cb) override
+        {
+                  method2request[method] = cb;
+        }
 
+        void registerNotifyHandler(const std::string& method, GenericNotificationHandler cb) override
+          {
+                method2notification[method] = cb;
+          }
+        lsp::Log& log;
 
 
+
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageIssue.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageIssue.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageIssue.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -4,179 +4,179 @@
 #include <vector>
 namespace lsp
 {
-	class Log
-	{
-	public:
-		virtual ~Log() = default;
+        class Log
+        {
+        public:
+                virtual ~Log() = default;
 
-		enum class Level
-		{
-			/**
-			  * OFF is a special level that can be used to turn off logging.
+                enum class Level
+                {
+                        /**
+                          * OFF is a special level that can be used to turn off logging.
 
-			  */
-			OFF = 1,
+                          */
+                        OFF = 1,
 
-			/**
-			 * SEVERE is a message level indicating a serious failure.
-			 * <p>
-			 * In general SEVERE messages should describe events that are
-			 * of considerable importance and which will prevent normal
-			 * program execution.   They should be reasonably intelligible
-			 * to end users and to system administrators.
+                        /**
+                         * SEVERE is a message level indicating a serious failure.
+                         * <p>
+                         * In general SEVERE messages should describe events that are
+                         * of considerable importance and which will prevent normal
+                         * program execution.   They should be reasonably intelligible
+                         * to end users and to system administrators.
 
-			 */
-			 SEVERE = 2,
+                         */
+                         SEVERE = 2,
 
-			 /**
-			  * WARNING is a message level indicating a potential problem.
-			  * <p>
-			  * In general WARNING messages should describe events that will
-			  * be of interest to end users or system managers, or which
-			  * indicate potential problems.
+                         /**
+                          * WARNING is a message level indicating a potential problem.
+                          * <p>
+                          * In general WARNING messages should describe events that will
+                          * be of interest to end users or system managers, or which
+                          * indicate potential problems.
 
-			  *
-			  */
-			  WARNING = 3,
-			  /**
-			 * INFO is a message level for informational messages.
-			 * <p>
-			 * Typically INFO messages will be written to the console
-			 * or its equivalent.  So the INFO level should only be
-			 * used for reasonably significant messages that will
-			 * make sense to end users and system administrators.
+                          *
+                          */
+                          WARNING = 3,
+                          /**
+                         * INFO is a message level for informational messages.
+                         * <p>
+                         * Typically INFO messages will be written to the console
+                         * or its equivalent.  So the INFO level should only be
+                         * used for reasonably significant messages that will
+                         * make sense to end users and system administrators.
 
-			 */
-			 INFO = 3,
-			 /**
-			 * CONFIG is a message level for static configuration messages.
-			 * <p>
-			 * CONFIG messages are intended to provide a variety of static
-			 * configuration information, to assist in debugging problems
-			 * that may be associated with particular configurations.
-			 * For example, CONFIG message might include the CPU type,
-			 * the graphics depth, the GUI look-and-feel, etc.
-			 * This level is initialized to <CODE>4</CODE>.
-			 */
+                         */
+                         INFO = 3,
+                         /**
+                         * CONFIG is a message level for static configuration messages.
+                         * <p>
+                         * CONFIG messages are intended to provide a variety of static
+                         * configuration information, to assist in debugging problems
+                         * that may be associated with particular configurations.
+                         * For example, CONFIG message might include the CPU type,
+                         * the graphics depth, the GUI look-and-feel, etc.
+                         * This level is initialized to <CODE>4</CODE>.
+                         */
 
-			 CONFIG = 4,
+                         CONFIG = 4,
 
 
 
-			 /**
-			  * FINE is a message level providing tracing information.
-			  * <p>
-			  * All of FINE, FINER, and FINEST are intended for relatively
-			  * detailed tracing.  The exact meaning of the three levels will
-			  * vary between subsystems, but in general, FINEST should be used
-			  * for the most voluminous detailed output, FINER for somewhat
-			  * less detailed output, and FINE for the  lowest volume (and
-			  * most important) messages.
-			  * <p>
-			  * In general the FINE level should be used for information
-			  * that will be broadly interesting to developers who do not have
-			  * a specialized interest in the specific subsystem.
-			  * <p>
-			  * FINE messages might include things like minor (recoverable)
-			  * failures.  Issues indicating potential performance problems
-			  * are also worth logging as FINE.
-			  * This level is initialized to <CODE>5</CODE>.
-			  */
-			  FINE = 5,
+                         /**
+                          * FINE is a message level providing tracing information.
+                          * <p>
+                          * All of FINE, FINER, and FINEST are intended for relatively
+                          * detailed tracing.  The exact meaning of the three levels will
+                          * vary between subsystems, but in general, FINEST should be used
+                          * for the most voluminous detailed output, FINER for somewhat
+                          * less detailed output, and FINE for the  lowest volume (and
+                          * most important) messages.
+                          * <p>
+                          * In general the FINE level should be used for information
+                          * that will be broadly interesting to developers who do not have
+                          * a specialized interest in the specific subsystem.
+                          * <p>
+                          * FINE messages might include things like minor (recoverable)
+                          * failures.  Issues indicating potential performance problems
+                          * are also worth logging as FINE.
+                          * This level is initialized to <CODE>5</CODE>.
+                          */
+                          FINE = 5,
 
-			  /**
-			  * FINER indicates a fairly detailed tracing message.
-			  * By default logging calls for entering, returning, or throwing
-			  * an exception are traced at this level.
-			  * This level is initialized to <CODE>400</CODE>.
-			  */
-			  FINER = 6,
+                          /**
+                          * FINER indicates a fairly detailed tracing message.
+                          * By default logging calls for entering, returning, or throwing
+                          * an exception are traced at this level.
+                          * This level is initialized to <CODE>400</CODE>.
+                          */
+                          FINER = 6,
 
-			  /**
-			   * FINEST indicates a highly detailed tracing message.
-			   * This level is initialized to <CODE>300</CODE>.
-			   */
-			   FINEST = 7,
+                          /**
+                           * FINEST indicates a highly detailed tracing message.
+                           * This level is initialized to <CODE>300</CODE>.
+                           */
+                           FINEST = 7,
 
-			   /**
-				* ALL indicates that all messages should be logged.
-				* This level is initialized to <CODE>Integer.MIN_VALUE</CODE>.
-				*/
-				ALL,
-		};
-		virtual  void log(Level level, std::wstring&& msg) = 0;
-		virtual  void log(Level level, const std::wstring& msg) = 0;
-		virtual  void log(Level level, std::string&& msg) = 0;
-		virtual  void log(Level level, const std::string& msg) = 0;
-		
-		void  info(const std::string& msg)
-		{
-			log(Level::INFO, msg);
-		}
-		void  info(const std::wstring& msg)
-		{
-			log(Level::INFO, msg);
-		}
-		void  error(const std::string& msg)
-		{
-			log(Level::SEVERE, msg);
-		}
-		void  error(const std::wstring& msg)
-		{
-			log(Level::SEVERE, msg);
-		}
-		void  warning(const std::string& msg)
-		{
-			log(Level::WARNING, msg);
-		}
-		void  warning(const std::wstring& msg)
-		{
-			log(Level::WARNING, msg);
-		}
-	};
+                           /**
+                                * ALL indicates that all messages should be logged.
+                                * This level is initialized to <CODE>Integer.MIN_VALUE</CODE>.
+                                */
+                                ALL,
+                };
+                virtual  void log(Level level, std::wstring&& msg) = 0;
+                virtual  void log(Level level, const std::wstring& msg) = 0;
+                virtual  void log(Level level, std::string&& msg) = 0;
+                virtual  void log(Level level, const std::string& msg) = 0;
+
+                void  info(const std::string& msg)
+                {
+                        log(Level::INFO, msg);
+                }
+                void  info(const std::wstring& msg)
+                {
+                        log(Level::INFO, msg);
+                }
+                void  error(const std::string& msg)
+                {
+                        log(Level::SEVERE, msg);
+                }
+                void  error(const std::wstring& msg)
+                {
+                        log(Level::SEVERE, msg);
+                }
+                void  warning(const std::string& msg)
+                {
+                        log(Level::WARNING, msg);
+                }
+                void  warning(const std::wstring& msg)
+                {
+                        log(Level::WARNING, msg);
+                }
+        };
 }
 
 class MessageIssue {
 
 public:
-	std::string text;
+        std::string text;
 
-	lsp::Log::Level code;
+        lsp::Log::Level code;
 
-	MessageIssue(const std::string& text, lsp::Log::Level code) :text(text), code(code)
-	{
+        MessageIssue(const std::string& text, lsp::Log::Level code) :text(text), code(code)
+        {
 
 
-	}
-	MessageIssue(std::string&& text, lsp::Log::Level code) :text(text), code(code)
-	{
+        }
+        MessageIssue(std::string&& text, lsp::Log::Level code) :text(text), code(code)
+        {
 
 
-	}
+        }
 
 
-	std::string getText() {
-		return text;
-	}
+        std::string getText() {
+                return text;
+        }
 
-	lsp::Log::Level getIssueCode() {
-		return code;
-	}
+        lsp::Log::Level getIssueCode() {
+                return code;
+        }
 
 
-	std::string toString() {
-		return getText();
-	}
+        std::string toString() {
+                return getText();
+        }
 
 };
 class  MessageIssueHandler
 {
 public:
-	/**
-	 * Handle issues found while parsing or validating a message. The list of issues must not be empty.
-	 */
-	virtual  ~MessageIssueHandler() = default;
-	
-	virtual  void handle(std::vector<MessageIssue>&&) = 0;
-	virtual  void handle( MessageIssue&&) = 0;
+        /**
+         * Handle issues found while parsing or validating a message. The list of issues must not be empty.
+         */
+        virtual  ~MessageIssueHandler() = default;
+
+        virtual  void handle(std::vector<MessageIssue>&&) = 0;
+        virtual  void handle( MessageIssue&&) = 0;
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageJsonHandler.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageJsonHandler.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageJsonHandler.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -13,49 +13,49 @@
 class MessageJsonHandler
 {
 public:
-	std::map< std::string, GenericRequestJsonHandler > method2request;
-	std::map< std::string,  GenericResponseJsonHandler > method2response;
-	std::map< std::string, GenericNotificationJsonHandler > method2notification;
+        std::map< std::string, GenericRequestJsonHandler > method2request;
+        std::map< std::string,  GenericResponseJsonHandler > method2response;
+        std::map< std::string, GenericNotificationJsonHandler > method2notification;
 
 
-	const GenericRequestJsonHandler* GetRequestJsonHandler(const char* methodInfo) const
-	{
-		const auto findIt = method2request.find(methodInfo);
-		return  findIt == method2request.end() ? nullptr : &findIt->second;
-	}
-	
-	void SetRequestJsonHandler(const std::string& methodInfo, GenericRequestJsonHandler handler)
-	{
-		method2request[methodInfo] = handler;
-	}
-	
-	const GenericResponseJsonHandler* GetResponseJsonHandler(const char* methodInfo) const
-	{
-		const auto findIt = method2response.find(methodInfo);
-		return  findIt == method2response.end() ? nullptr : &findIt->second;
-	}
-	
-	void SetResponseJsonHandler(const std::string& methodInfo,GenericResponseJsonHandler handler) 
-	{
-		method2response[methodInfo] = handler;
-	}
+        const GenericRequestJsonHandler* GetRequestJsonHandler(const char* methodInfo) const
+        {
+                const auto findIt = method2request.find(methodInfo);
+                return  findIt == method2request.end() ? nullptr : &findIt->second;
+        }
 
-	const GenericNotificationJsonHandler* GetNotificationJsonHandler(const char* methodInfo) const
-	{
-		const auto findIt = method2notification.find(methodInfo);
-		return  findIt == method2notification.end() ? nullptr : &findIt->second;
-	}
+        void SetRequestJsonHandler(const std::string& methodInfo, GenericRequestJsonHandler handler)
+        {
+                method2request[methodInfo] = handler;
+        }
 
-	void SetNotificationJsonHandler(const std::string& methodInfo, GenericNotificationJsonHandler handler)
-	{
-		method2notification[methodInfo] = handler;
-	}
+        const GenericResponseJsonHandler* GetResponseJsonHandler(const char* methodInfo) const
+        {
+                const auto findIt = method2response.find(methodInfo);
+                return  findIt == method2response.end() ? nullptr : &findIt->second;
+        }
 
+        void SetResponseJsonHandler(const std::string& methodInfo,GenericResponseJsonHandler handler)
+        {
+                method2response[methodInfo] = handler;
+        }
 
-	
-	std::unique_ptr<LspMessage> parseResponseMessage(const std::string&, Reader&);
-	std::unique_ptr<LspMessage> parseRequstMessage(const std::string&, Reader&);
-	bool resovleResponseMessage(Reader&, std::pair<std::string, std::unique_ptr<LspMessage>>& result);
-	std::unique_ptr<LspMessage> parseNotificationMessage(const std::string&, Reader&);
+        const GenericNotificationJsonHandler* GetNotificationJsonHandler(const char* methodInfo) const
+        {
+                const auto findIt = method2notification.find(methodInfo);
+                return  findIt == method2notification.end() ? nullptr : &findIt->second;
+        }
+
+        void SetNotificationJsonHandler(const std::string& methodInfo, GenericNotificationJsonHandler handler)
+        {
+                method2notification[methodInfo] = handler;
+        }
+
+
+
+        std::unique_ptr<LspMessage> parseResponseMessage(const std::string&, Reader&);
+        std::unique_ptr<LspMessage> parseRequstMessage(const std::string&, Reader&);
+        bool resovleResponseMessage(Reader&, std::pair<std::string, std::unique_ptr<LspMessage>>& result);
+        std::unique_ptr<LspMessage> parseNotificationMessage(const std::string&, Reader&);
 };
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageProducer.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageProducer.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/MessageProducer.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -5,9 +5,9 @@
 class MessageProducer
 {
 public:
-	
-	
-	typedef  std::function< void(std::string&&) >  MessageConsumer;
-	virtual  ~MessageProducer() = default;
-	virtual void listen(MessageConsumer) = 0;
+
+
+        typedef  std::function< void(std::string&&) >  MessageConsumer;
+        virtual  ~MessageProducer() = default;
+        virtual void listen(MessageConsumer) = 0;
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/NotificationInMessage.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/NotificationInMessage.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/NotificationInMessage.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,54 +9,54 @@
 // NotificationInMessage does not have |id|.
 struct NotificationInMessage : public LspMessage {
 
-	Kind GetKid() override
-	{
-		return  NOTIFICATION_MESSAGE;
-	}
-	MethodType GetMethodType() const override
-	{
-		return method.c_str();
-	}
-	void SetMethodType(MethodType _t) override
-	{
-		method = _t;
-	}
-	std::string method;
+        Kind GetKid() override
+        {
+                return  NOTIFICATION_MESSAGE;
+        }
+        MethodType GetMethodType() const override
+        {
+                return method.c_str();
+        }
+        void SetMethodType(MethodType _t) override
+        {
+                method = _t;
+        }
+        std::string method;
 };
 template <class T, class TDerived >
 struct lsNotificationInMessage : NotificationInMessage {
 
-	void ReflectWriter(Writer& writer) override {
-		Reflect(writer, static_cast<TDerived&>(*this));
-	}
-	lsNotificationInMessage(MethodType _method)
-	{
-		method = _method;
-	}
+        void ReflectWriter(Writer& writer) override {
+                Reflect(writer, static_cast<TDerived&>(*this));
+        }
+        lsNotificationInMessage(MethodType _method)
+        {
+                method = _method;
+        }
 
-	static std::unique_ptr<LspMessage> ReflectReader(Reader& visitor) {
+        static std::unique_ptr<LspMessage> ReflectReader(Reader& visitor) {
 
-		TDerived* temp = new TDerived();
+                TDerived* temp = new TDerived();
 
-		std::unique_ptr<TDerived>  message = std::unique_ptr<TDerived>(temp);
-		// Reflect may throw and *message will be partially deserialized.
-		Reflect(visitor, static_cast<TDerived&>(*temp));
-		return message;
+                std::unique_ptr<TDerived>  message = std::unique_ptr<TDerived>(temp);
+                // Reflect may throw and *message will be partially deserialized.
+                Reflect(visitor, static_cast<TDerived&>(*temp));
+                return message;
 
-	}
-	void swap(lsNotificationInMessage& arg) noexcept
-	{
-		method.swap(method);
-		std::swap(params, arg.params);
-	}
-	T params;
+        }
+        void swap(lsNotificationInMessage& arg) noexcept
+        {
+                method.swap(method);
+                std::swap(params, arg.params);
+        }
+        T params;
 };
 
 #define DEFINE_NOTIFICATION_TYPE(MSG,paramType,methodInfo)\
 namespace  MSG {\
-	struct notify : public lsNotificationInMessage< paramType , notify >{\
-		static constexpr   MethodType  kMethodInfo = methodInfo;\
-		notify():lsNotificationInMessage(kMethodInfo){}                                   \
-	};\
+        struct notify : public lsNotificationInMessage< paramType , notify >{\
+                static constexpr   MethodType  kMethodInfo = methodInfo;\
+                notify():lsNotificationInMessage(kMethodInfo){}                                   \
+        };\
 };\
 MAKE_REFLECT_STRUCT(MSG::notify, jsonrpc,method, params)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/RemoteEndPoint.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/RemoteEndPoint.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/RemoteEndPoint.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -12,6 +12,7 @@
 #include "MessageIssue.h"
 #include "LibLsp/JsonRpc/MessageJsonHandler.h"
 #include "Endpoint.h"
+#include "future.h"
 
 
 class MessageJsonHandler;
@@ -19,74 +20,74 @@
 struct LspMessage;
 class RemoteEndPoint;
 namespace lsp {
-	class ostream;
-	class istream;
+        class ostream;
+        class istream;
 
-	////////////////////////////////////////////////////////////////////////////////
-	// ResponseOrError<T>
-	////////////////////////////////////////////////////////////////////////////////
+        ////////////////////////////////////////////////////////////////////////////////
+        // ResponseOrError<T>
+        ////////////////////////////////////////////////////////////////////////////////
 
-	// ResponseOrError holds either the response to a  request or an error
-	// message.
-	template <typename T>
-	struct ResponseOrError {
-		 using Request = T;
-		 ResponseOrError();
-		 ResponseOrError(const T& response);
-		 ResponseOrError(T&& response);
-		 ResponseOrError(const Rsp_Error& error);
-		 ResponseOrError(Rsp_Error&& error);
-		 ResponseOrError(const ResponseOrError& other);
-		 ResponseOrError(ResponseOrError&& other) noexcept;
+        // ResponseOrError holds either the response to a  request or an error
+        // message.
+        template <typename T>
+        struct ResponseOrError {
+                 using Request = T;
+                 ResponseOrError();
+                 ResponseOrError(const T& response);
+                 ResponseOrError(T&& response);
+                 ResponseOrError(const Rsp_Error& error);
+                 ResponseOrError(Rsp_Error&& error);
+                 ResponseOrError(const ResponseOrError& other);
+                 ResponseOrError(ResponseOrError&& other) noexcept;
 
-		 ResponseOrError& operator=(const ResponseOrError& other);
-		 ResponseOrError& operator=(ResponseOrError&& other) noexcept;
-		bool  IsError() const { return  is_error; }
-		std::string ToJson()
-		{
-			if (is_error) return  error.ToJson();
-			return  response.ToJson();
-		}
-		T response;
-		Rsp_Error error;  // empty represents success.
-		bool is_error;
-	};
+                 ResponseOrError& operator=(const ResponseOrError& other);
+                 ResponseOrError& operator=(ResponseOrError&& other) noexcept;
+                bool  IsError() const { return  is_error; }
+                std::string ToJson()
+                {
+                        if (is_error) return  error.ToJson();
+                        return  response.ToJson();
+                }
+                T response;
+                Rsp_Error error;  // empty represents success.
+                bool is_error;
+        };
 
-	template <typename T>
-	ResponseOrError<T>::ResponseOrError(): is_error(false)
-	{
-	}
+        template <typename T>
+        ResponseOrError<T>::ResponseOrError(): is_error(false)
+        {
+        }
 
-	template <typename T>
-	ResponseOrError<T>::ResponseOrError(const T& resp) : response(resp), is_error(false) {}
-	template <typename T>
-	ResponseOrError<T>::ResponseOrError(T&& resp) : response(std::move(resp)), is_error(false) {}
-	template <typename T>
-	ResponseOrError<T>::ResponseOrError(const Rsp_Error& err) : error(err), is_error(true) {}
-	template <typename T>
-	ResponseOrError<T>::ResponseOrError(Rsp_Error&& err) : error(std::move(err)), is_error(true) {}
-	template <typename T>
-	ResponseOrError<T>::ResponseOrError(const ResponseOrError& other)
-		: response(other.response), error(other.error), is_error(other.is_error) {}
-	template <typename T>
-	ResponseOrError<T>::ResponseOrError(ResponseOrError&& other) noexcept
-		: response(std::move(other.response)), error(std::move(other.error)), is_error(other.is_error) {}
-	template <typename T>
-	ResponseOrError<T>& ResponseOrError<T>::operator=(
-		const ResponseOrError& other) {
-		response = other.response;
-		error = other.error;
-		is_error = other.is_error;
-		return *this;
-	}
-	template <typename T>
-	ResponseOrError<T>& ResponseOrError<T>::operator=(ResponseOrError&& other) noexcept
-	{
-		response = std::move(other.response);
-		error = std::move(other.error);
-		is_error = other.is_error;
-		return *this;
-	}
+        template <typename T>
+        ResponseOrError<T>::ResponseOrError(const T& resp) : response(resp), is_error(false) {}
+        template <typename T>
+        ResponseOrError<T>::ResponseOrError(T&& resp) : response(std::move(resp)), is_error(false) {}
+        template <typename T>
+        ResponseOrError<T>::ResponseOrError(const Rsp_Error& err) : error(err), is_error(true) {}
+        template <typename T>
+        ResponseOrError<T>::ResponseOrError(Rsp_Error&& err) : error(std::move(err)), is_error(true) {}
+        template <typename T>
+        ResponseOrError<T>::ResponseOrError(const ResponseOrError& other)
+                : response(other.response), error(other.error), is_error(other.is_error) {}
+        template <typename T>
+        ResponseOrError<T>::ResponseOrError(ResponseOrError&& other) noexcept
+                : response(std::move(other.response)), error(std::move(other.error)), is_error(other.is_error) {}
+        template <typename T>
+        ResponseOrError<T>& ResponseOrError<T>::operator=(
+                const ResponseOrError& other) {
+                response = other.response;
+                error = other.error;
+                is_error = other.is_error;
+                return *this;
+        }
+        template <typename T>
+        ResponseOrError<T>& ResponseOrError<T>::operator=(ResponseOrError&& other) noexcept
+        {
+                response = std::move(other.response);
+                error = std::move(other.error);
+                is_error = other.is_error;
+                return *this;
+        }
 
 }
 
@@ -94,247 +95,253 @@
 class RemoteEndPoint :MessageIssueHandler
 {
 
-	template <typename F, int N>
-	using ParamType = lsp::traits::ParameterType<F, N>;
+        template <typename F, int N>
+        using ParamType = lsp::traits::ParameterType<F, N>;
 
-	template <typename T>
-	using IsRequest = lsp::traits::EnableIfIsType<RequestInMessage, T>;
+        template <typename T>
+        using IsRequest = lsp::traits::EnableIfIsType<RequestInMessage, T>;
 
-	template <typename T>
-	using IsResponse = lsp::traits::EnableIfIsType<ResponseInMessage, T>;
+        template <typename T>
+        using IsResponse = lsp::traits::EnableIfIsType<ResponseInMessage, T>;
 
-	template <typename T>
-	using IsNotify = lsp::traits::EnableIfIsType<NotificationInMessage, T>;
+        template <typename T>
+        using IsNotify = lsp::traits::EnableIfIsType<NotificationInMessage, T>;
 
 
-	template <typename F, typename ReturnType>
-	using IsRequestHandler = lsp::traits::EnableIf<lsp::traits::CompatibleWith<
-		F,
-		std::function<ReturnType(const RequestInMessage&)>>::
-		value>;
+        template <typename F, typename ReturnType>
+        using IsRequestHandler = lsp::traits::EnableIf<lsp::traits::CompatibleWith<
+                F,
+                std::function<ReturnType(const RequestInMessage&)>>::
+                value>;
 
-	template <typename F, typename ReturnType>
-	using IsRequestHandlerWithMonitor = lsp::traits::EnableIf<lsp::traits::CompatibleWith<
-		F,
-		std::function<ReturnType(const RequestInMessage&,const CancelMonitor&)>>::
-		value>;
+        template <typename F, typename ReturnType>
+        using IsRequestHandlerWithMonitor = lsp::traits::EnableIf<lsp::traits::CompatibleWith<
+                F,
+                std::function<ReturnType(const RequestInMessage&,const CancelMonitor&)>>::
+                value>;
 
 public:
 
-	
-	RemoteEndPoint(const std::shared_ptr <MessageJsonHandler>& json_handler,
-		const std::shared_ptr < Endpoint >& localEndPoint,
-		lsp::Log& _log, uint8_t max_workers = 2);
-	
-	~RemoteEndPoint() override;
-	template <typename F, typename RequestType = ParamType<F, 0>, typename ResponseType = typename RequestType::Response>
-	IsRequestHandler< F, lsp::ResponseOrError<ResponseType> >  registerHandler(F&& handler)
-	{
-		ProcessRequestJsonHandler(handler);
-		local_endpoint->registerRequestHandler(RequestType::kMethodInfo, [=](std::unique_ptr<LspMessage> msg) {
-			auto  req = reinterpret_cast<const RequestType*>(msg.get());
-			lsp::ResponseOrError<ResponseType> res(handler(*req));
-			if (res.is_error) {
-				res.error.id = req->id;
-				send(res.error);
-			}
-			else
-			{
-				res.response.id = req->id;
-				send(res.response);
-			}
-			return  true;
-		});
-	}
-	template <typename F, typename RequestType = ParamType<F, 0>, typename ResponseType = typename RequestType::Response>
-	IsRequestHandlerWithMonitor< F, lsp::ResponseOrError<ResponseType> >  registerHandler(F&& handler)  {
-		ProcessRequestJsonHandler(handler);
-		local_endpoint->registerRequestHandler(RequestType::kMethodInfo, [=](std::unique_ptr<LspMessage> msg) {
-			auto  req = static_cast<const RequestType*>(msg.get());
-			lsp::ResponseOrError<ResponseType> res(handler(*req , getCancelMonitor(req->id)));
-			if (res.is_error) {
-				res.error.id = req->id;
-				send(res.error);
-			}
-			else
-			{
-				res.response.id = req->id;
-				send(res.response);
-			}
-			return  true;
-		});
-	}
-	using RequestErrorCallback = std::function<void(const Rsp_Error&)>;
-	
-	template <typename T, typename F, typename ResponseType = ParamType<F, 0> >
-	void send(T& request, F&& handler, RequestErrorCallback onError)
-	{
-		ProcessRequestJsonHandler(handler);
-		auto cb = [=](std::unique_ptr<LspMessage> msg) {
-			if (!msg)
-				return true;
-			const auto result = msg.get();
-		
-			if (static_cast<ResponseInMessage*>(result)->IsErrorType()) {
-				const auto rsp_error = static_cast<const Rsp_Error*>(result);
-				onError(*rsp_error);
-			}
-			else {
-				handler(*static_cast<ResponseType*>(result));
-			}
 
-			return  true;
-		};
-		internalSendRequest(request, cb);
-	}
-	
+        RemoteEndPoint(const std::shared_ptr <MessageJsonHandler>& json_handler,
+                const std::shared_ptr < Endpoint >& localEndPoint,
+                lsp::Log& _log, uint8_t max_workers = 2);
 
-	template <typename F, typename NotifyType = ParamType<F, 0> >
-	IsNotify<NotifyType>  registerHandler(F&& handler) {
-		{
-			std::lock_guard<std::mutex> lock(m_sendMutex);
-			if (!jsonHandler->GetNotificationJsonHandler(NotifyType::kMethodInfo))
-			{
-				jsonHandler->SetNotificationJsonHandler(NotifyType::kMethodInfo,
-					[](Reader& visitor)
-					{
-						return NotifyType::ReflectReader(visitor);
-					});
-			}
-		}
-		local_endpoint->registerNotifyHandler(NotifyType::kMethodInfo, [=](std::unique_ptr<LspMessage> msg) {
-			handler(*static_cast<NotifyType*>(msg.get()));
-			return  true;
-			});
-	}
+        ~RemoteEndPoint() override;
+        template <typename F, typename RequestType = ParamType<F, 0>, typename ResponseType = typename RequestType::Response>
+        IsRequestHandler< F, lsp::ResponseOrError<ResponseType> >  registerHandler(F&& handler)
+        {
+                processRequestJsonHandler(handler);
+                local_endpoint->registerRequestHandler(RequestType::kMethodInfo, [=](std::unique_ptr<LspMessage> msg) {
+                        auto  req = reinterpret_cast<const RequestType*>(msg.get());
+                        lsp::ResponseOrError<ResponseType> res(handler(*req));
+                        if (res.is_error) {
+                                res.error.id = req->id;
+                                send(res.error);
+                        }
+                        else
+                        {
+                                res.response.id = req->id;
+                                send(res.response);
+                        }
+                        return  true;
+                });
+        }
+        template <typename F, typename RequestType = ParamType<F, 0>, typename ResponseType = typename RequestType::Response>
+        IsRequestHandlerWithMonitor< F, lsp::ResponseOrError<ResponseType> >  registerHandler(F&& handler)  {
+                processRequestJsonHandler(handler);
+                local_endpoint->registerRequestHandler(RequestType::kMethodInfo, [=](std::unique_ptr<LspMessage> msg) {
+                        auto  req = static_cast<const RequestType*>(msg.get());
+                        lsp::ResponseOrError<ResponseType> res(handler(*req , getCancelMonitor(req->id)));
+                        if (res.is_error) {
+                                res.error.id = req->id;
+                                send(res.error);
+                        }
+                        else
+                        {
+                                res.response.id = req->id;
+                                send(res.response);
+                        }
+                        return  true;
+                });
+        }
+        using RequestErrorCallback = std::function<void(const Rsp_Error&)>;
 
-	template <typename T, typename = IsRequest<T>>
-	std::future< lsp::ResponseOrError<typename T::Response> > send(T& request) {
+        template <typename T, typename F, typename ResponseType = ParamType<F, 0> >
+        void send(T& request, F&& handler, RequestErrorCallback onError)
+        {
+                processRequestJsonHandler(handler);
+                auto cb = [=](std::unique_ptr<LspMessage> msg) {
+                        if (!msg)
+                                return true;
+                        const auto result = msg.get();
 
-		ProcessResponseJsonHandler(request);
-		using Response = typename T::Response;
-		auto promise = std::make_shared< std::promise<lsp::ResponseOrError<Response>>>();
-		auto cb = [=](std::unique_ptr<LspMessage> msg) {
-			if (!msg)
-				return true;
-			auto result = msg.get();
+                        if (static_cast<ResponseInMessage*>(result)->IsErrorType()) {
+                                const auto rsp_error = static_cast<const Rsp_Error*>(result);
+                                onError(*rsp_error);
+                        }
+                        else {
+                                handler(*static_cast<ResponseType*>(result));
+                        }
 
-			if (reinterpret_cast<ResponseInMessage*>(result)->IsErrorType())
-			{
-				Rsp_Error* rsp_error = static_cast<Rsp_Error*>(result);
-				Rsp_Error temp;
-				std::swap(temp, *rsp_error);
-				promise->set_value(std::move(lsp::ResponseOrError<Response>(std::move(temp))));
-			}
-			else
-			{
-				Response temp;
-				std::swap(temp, *static_cast<Response*>(result));
-				promise->set_value(std::move(lsp::ResponseOrError<Response>(std::move(temp))));
-			}
-			return  true;
-		};
-		internalSendRequest(request, cb);
-		return promise->get_future();
-	}
+                        return  true;
+                };
+                internalSendRequest(request, cb);
+        }
 
-	template <typename T, typename = IsRequest<T>>
-	std::unique_ptr<lsp::ResponseOrError<typename T::Response>> waitResponse(T& request, const unsigned time_out = 0)
-	{
-		auto future_rsp = send(request);
-		if (time_out == 0)
-		{
-			future_rsp.wait();
-		}
-		else
-		{
-			auto state = future_rsp.wait_for(std::chrono::milliseconds(time_out));
-			if (std::future_status::timeout == state)
-			{
-				return {};
-			}
-		}
 
-		using Response = typename T::Response;
-		return std::make_unique<lsp::ResponseOrError<Response>>(std::move(future_rsp.get()));
-	}
+        template <typename F, typename NotifyType = ParamType<F, 0> >
+        IsNotify<NotifyType>  registerHandler(F&& handler) {
+                {
+                        std::lock_guard<std::mutex> lock(m_sendMutex);
+                        if (!jsonHandler->GetNotificationJsonHandler(NotifyType::kMethodInfo))
+                        {
+                                jsonHandler->SetNotificationJsonHandler(NotifyType::kMethodInfo,
+                                        [](Reader& visitor)
+                                        {
+                                                return NotifyType::ReflectReader(visitor);
+                                        });
+                        }
+                }
+                local_endpoint->registerNotifyHandler(NotifyType::kMethodInfo, [=](std::unique_ptr<LspMessage> msg) {
+                        handler(*static_cast<NotifyType*>(msg.get()));
+                        return  true;
+                        });
+        }
 
-	void send(NotificationInMessage& msg)
-	{
-		sendMsg(msg);
-	}
+        template <typename T, typename = IsRequest<T>>
+        lsp::future< lsp::ResponseOrError<typename T::Response> > send(T& request) {
 
-	void send(ResponseInMessage& msg)
-	{
-		sendMsg(msg);
-	}
-	
-	void sendNotification(NotificationInMessage& msg)
-	{
-		send(msg);
-	}
-	void sendResponse(ResponseInMessage& msg)
-	{
-		send(msg);
-	}
-	void startProcessingMessages(std::shared_ptr<lsp::istream> r,
-		std::shared_ptr<lsp::ostream> w);
+                processResponseJsonHandler(request);
+                using Response = typename T::Response;
+                auto promise = std::make_shared< lsp::promise<lsp::ResponseOrError<Response>>>();
+                auto cb = [=](std::unique_ptr<LspMessage> msg) {
+                        if (!msg)
+                                return true;
+                        auto result = msg.get();
 
-	bool IsWorking() const
-	{
-		if (message_producer_thread_)
-			return true;
-		return  false;
-	}
-	void Stop();
+                        if (reinterpret_cast<ResponseInMessage*>(result)->IsErrorType())
+                        {
+                                Rsp_Error* rsp_error = static_cast<Rsp_Error*>(result);
+                                Rsp_Error temp;
+                                std::swap(temp, *rsp_error);
+                                promise->set_value(std::move(lsp::ResponseOrError<Response>(std::move(temp))));
+                        }
+                        else
+                        {
+                                Response temp;
+                                std::swap(temp, *static_cast<Response*>(result));
+                                promise->set_value(std::move(lsp::ResponseOrError<Response>(std::move(temp))));
+                        }
+                        return  true;
+                };
+                internalSendRequest(request, cb);
+                return promise->get_future();
+        }
 
-	std::unique_ptr<LspMessage> internalWaitResponse(RequestInMessage&, unsigned time_out = 0);
+        template <typename T, typename = IsRequest<T>>
+        std::unique_ptr<lsp::ResponseOrError<typename T::Response>> waitResponse(T& request, const unsigned time_out = 0)
+        {
+                auto future_rsp = send(request);
+                if (time_out == 0)
+                {
+                        future_rsp.wait();
+                }
+                else
+                {
+                        auto state = future_rsp.wait_for(std::chrono::milliseconds(time_out));
+                        if (lsp::future_status::timeout == state)
+                        {
+                                return {};
+                        }
+                }
 
-	void internalSendRequest(RequestInMessage&, GenericResponseHandler);
+                using Response = typename T::Response;
+                return std::make_unique<lsp::ResponseOrError<Response>>(std::move(future_rsp.get()));
+        }
 
-	void handle(std::vector<MessageIssue>&&) override;
-	void handle(MessageIssue&&) override;
+        void send(NotificationInMessage& msg)
+        {
+                sendMsg(msg);
+        }
+
+        void send(ResponseInMessage& msg)
+        {
+                sendMsg(msg);
+        }
+
+        void sendNotification(NotificationInMessage& msg)
+        {
+                send(msg);
+        }
+        void sendResponse(ResponseInMessage& msg)
+        {
+                send(msg);
+        }
+    template <typename T>
+    T createRequest() {
+        auto req = T();
+        req.id.set(getNextRequestId());
+        return req;
+    }
+
+    int getNextRequestId();
+
+    bool cancelRequest(const lsRequestId&);
+
+        void startProcessingMessages(std::shared_ptr<lsp::istream> r,
+                std::shared_ptr<lsp::ostream> w);
+
+        bool isWorking() const;
+        void stop();
+
+        std::unique_ptr<LspMessage> internalWaitResponse(RequestInMessage&, unsigned time_out = 0);
+
+        bool internalSendRequest(RequestInMessage &info, GenericResponseHandler handler);
+
+        void handle(std::vector<MessageIssue>&&) override;
+        void handle(MessageIssue&&) override;
 private:
-	CancelMonitor getCancelMonitor(const lsRequestId&);
-	void sendMsg(LspMessage& msg);
-	void mainLoop(std::unique_ptr<LspMessage>);
-	bool dispatch(const std::string&);
-	template <typename F, typename RequestType = ParamType<F, 0>>
-	IsRequest<RequestType>  ProcessRequestJsonHandler(const F& handler) {
-		std::lock_guard<std::mutex> lock(m_sendMutex);
-		if (!jsonHandler->GetRequestJsonHandler(RequestType::kMethodInfo))
-		{
-			jsonHandler->SetRequestJsonHandler(RequestType::kMethodInfo,
-				[](Reader& visitor)
-				{
-					return RequestType::ReflectReader(visitor);
-				});
-		}	
-	}
-	template <typename T, typename = IsRequest<T>>
-	void ProcessResponseJsonHandler(T& request)
-	{
-		using Response = typename T::Response;
-		std::lock_guard<std::mutex> lock(m_sendMutex);
-		if (!jsonHandler->GetResponseJsonHandler(T::kMethodInfo))
-		{
-			jsonHandler->SetResponseJsonHandler(T::kMethodInfo, [](Reader& visitor)
-				{
-					if (visitor.HasMember("error"))
-						return 	Rsp_Error::ReflectReader(visitor);
-					return Response::ReflectReader(visitor);
-				});
-		}
-	}
+        CancelMonitor getCancelMonitor(const lsRequestId&);
+        void sendMsg(LspMessage& msg);
+        void mainLoop(std::unique_ptr<LspMessage>);
+        bool dispatch(const std::string&);
+        template <typename F, typename RequestType = ParamType<F, 0>>
+        IsRequest<RequestType>  processRequestJsonHandler(const F& handler) {
+                std::lock_guard<std::mutex> lock(m_sendMutex);
+                if (!jsonHandler->GetRequestJsonHandler(RequestType::kMethodInfo))
+                {
+                        jsonHandler->SetRequestJsonHandler(RequestType::kMethodInfo,
+                                [](Reader& visitor)
+                                {
+                                        return RequestType::ReflectReader(visitor);
+                                });
+                }
+        }
+        template <typename T, typename = IsRequest<T>>
+        void processResponseJsonHandler(T& request)
+        {
+                using Response = typename T::Response;
+                std::lock_guard<std::mutex> lock(m_sendMutex);
+                if (!jsonHandler->GetResponseJsonHandler(T::kMethodInfo))
+                {
+                        jsonHandler->SetResponseJsonHandler(T::kMethodInfo, [](Reader& visitor)
+                                {
+                                        if (visitor.HasMember("error"))
+                                                return  Rsp_Error::ReflectReader(visitor);
+                                        return Response::ReflectReader(visitor);
+                                });
+                }
+        }
 
-	struct Data;
+        struct Data;
 
-	Data* d_ptr;
+        Data* d_ptr;
 
-	std::shared_ptr < MessageJsonHandler> jsonHandler;
-	std::mutex m_sendMutex;
+        std::shared_ptr < MessageJsonHandler> jsonHandler;
+        std::mutex m_sendMutex;
 
-	std::shared_ptr < Endpoint > local_endpoint;
+        std::shared_ptr < Endpoint > local_endpoint;
 public:
-	std::shared_ptr < std::thread > message_producer_thread_;
+        std::shared_ptr < std::thread > message_producer_thread_;
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/RequestInMessage.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/RequestInMessage.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/RequestInMessage.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -10,14 +10,14 @@
 #include "lsResponseMessage.h"
 
 struct RequestInMessage : public LspMessage {
-	// number or string, actually no null
-	lsRequestId id;
-	std::string method;
-	Kind GetKid() override
-	{
-		return  REQUEST_MESSAGE;
-	}
-	
+        // number or string, actually no null
+        lsRequestId id;
+        std::string method;
+        Kind GetKid() override
+        {
+                return  REQUEST_MESSAGE;
+        }
+
 };
 
 
@@ -25,45 +25,45 @@
 template <class T, class TDerived >
 struct lsRequest : public RequestInMessage
 {
-	lsRequest(MethodType _method)
-	{
-		method = _method;
-	}
-	MethodType GetMethodType() const override { return method.c_str(); }
-	void SetMethodType(MethodType _method) override
-	{
-		method = _method;
-	}								  \
-	void ReflectWriter(Writer& writer) override {
-		Reflect(writer, static_cast<TDerived&>(*this));
-	}
-	
-	static std::unique_ptr<LspMessage> ReflectReader(Reader& visitor) {
+        lsRequest(MethodType _method)
+        {
+                method = _method;
+        }
+        MethodType GetMethodType() const override { return method.c_str(); }
+        void SetMethodType(MethodType _method) override
+        {
+                method = _method;
+        }                                                                 \
+        void ReflectWriter(Writer& writer) override {
+                Reflect(writer, static_cast<TDerived&>(*this));
+        }
 
-		TDerived* temp = new TDerived();
-		std::unique_ptr<TDerived>  message = std::unique_ptr<TDerived>(temp);
-		// Reflect may throw and *message will be partially deserialized.
-		Reflect(visitor, static_cast<TDerived&>(*temp));
-		return message;
-	}
-	void swap(lsRequest& arg) noexcept
-	{
-		id.swap(arg.id);
-		method.swap(method);
-		std::swap(params, arg.params);
-	}
-	T params;
+        static std::unique_ptr<LspMessage> ReflectReader(Reader& visitor) {
+
+                TDerived* temp = new TDerived();
+                std::unique_ptr<TDerived>  message = std::unique_ptr<TDerived>(temp);
+                // Reflect may throw and *message will be partially deserialized.
+                Reflect(visitor, static_cast<TDerived&>(*temp));
+                return message;
+        }
+        void swap(lsRequest& arg) noexcept
+        {
+                id.swap(arg.id);
+                method.swap(method);
+                std::swap(params, arg.params);
+        }
+        T params;
 };
 
 
 #define DEFINE_REQUEST_RESPONSE_TYPE(MSG,request_param,response_result,methodInfo)\
 namespace  MSG {\
-	struct response :public ResponseMessage< response_result, response> {}; \
-	struct request : public lsRequest< request_param , request >{\
-		static constexpr   MethodType  kMethodInfo = methodInfo;\
-		request():lsRequest(kMethodInfo){}                                   \
-		 using Response = response;\
-	};\
+        struct response :public ResponseMessage< response_result, response> {}; \
+        struct request : public lsRequest< request_param , request >{\
+                static constexpr   MethodType  kMethodInfo = methodInfo;\
+                request():lsRequest(kMethodInfo){}                                   \
+                 using Response = response;\
+        };\
 };\
 MAKE_REFLECT_STRUCT(MSG::request, jsonrpc, id, method, params);\
 MAKE_REFLECT_STRUCT(MSG::response, jsonrpc, id, result);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/StreamMessageProducer.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/StreamMessageProducer.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/StreamMessageProducer.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,42 +7,42 @@
 #include "MessageIssue.h"
 
 namespace lsp {
-	class istream;
+        class istream;
 }
 
 class StreamMessageProducer : public MessageProducer
 {
 public:
-	struct Headers
-	{
-		int contentLength = -1;
-		std::string charset;
-		void clear()
-		{
-			contentLength = -1;
-			charset.clear();
-		}
-	};
-	bool handleMessage(Headers& headers, MessageConsumer callBack);
-	StreamMessageProducer(
-		MessageIssueHandler& message_issue_handler, std::shared_ptr < lsp::istream> _input)
-		: issueHandler(message_issue_handler),
-		  input(_input)
-	{
-	}
-	StreamMessageProducer(
-		MessageIssueHandler& message_issue_handler)
-		: issueHandler(message_issue_handler)
-	{
-	}
-	
-	bool keepRunning = false;
-	void listen(MessageConsumer) override;
-	void bind(std::shared_ptr < lsp::istream>);
-	void parseHeader(std::string& line, Headers& headers);
+        struct Headers
+        {
+                int contentLength = -1;
+                std::string charset;
+                void clear()
+                {
+                        contentLength = -1;
+                        charset.clear();
+                }
+        };
+        bool handleMessage(Headers& headers, MessageConsumer callBack);
+        StreamMessageProducer(
+                MessageIssueHandler& message_issue_handler, std::shared_ptr < lsp::istream> _input)
+                : issueHandler(message_issue_handler),
+                  input(_input)
+        {
+        }
+        StreamMessageProducer(
+                MessageIssueHandler& message_issue_handler)
+                : issueHandler(message_issue_handler)
+        {
+        }
+
+        bool keepRunning = false;
+        void listen(MessageConsumer) override;
+        void bind(std::shared_ptr < lsp::istream>);
+        void parseHeader(std::string& line, Headers& headers);
 private:
-	MessageIssueHandler& issueHandler;
-	std::shared_ptr < lsp::istream> input;
-	
+        MessageIssueHandler& issueHandler;
+        std::shared_ptr < lsp::istream> input;
 
+
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/TcpServer.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/TcpServer.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/TcpServer.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -36,5 +36,5 @@
             void do_stop();
             Data* d_ptr = nullptr;
         };
-} // namespace 
+} // namespace
 

Added: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/future.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/future.h	                        (rev 0)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/future.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -0,0 +1,178 @@
+// Copyright 2019 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#pragma once
+
+#include <condition_variable>
+#include <memory>
+#include <mutex>
+
+namespace lsp {
+
+// internal functionality
+namespace detail {
+template <typename T>
+struct promise_state {
+  T val;
+  std::mutex mutex;
+  std::condition_variable cv;
+  bool hasVal = false;
+};
+}  // namespace detail
+
+// forward declaration
+template <typename T>
+class promise;
+
+// future_status is the enumeration returned by future::wait_for and
+// future::wait_until.
+enum class future_status {
+  ready,
+  timeout,
+};
+
+// future is a minimal reimplementation of std::future, that does not suffer
+// from TSAN false positives. See:
+// https://gcc.gnu.org/bugzilla//show_bug.cgi?id=69204
+template <typename T>
+class future {
+ public:
+  using State = detail::promise_state<T>;
+
+  // constructors
+  inline future() = default;
+  inline future(future&&) = default;
+
+  // valid() returns true if the future has an internal state.
+  bool valid() const;
+
+  // get() blocks until the future has a valid result, and returns it.
+  // The future must have a valid internal state to call this method.
+  inline T get();
+
+  // wait() blocks until the future has a valid result.
+  // The future must have a valid internal state to call this method.
+  void wait() const;
+
+  // wait_for() blocks until the future has a valid result, or the timeout is
+  // reached.
+  // The future must have a valid internal state to call this method.
+  template <class Rep, class Period>
+  future_status wait_for(
+      const std::chrono::duration<Rep, Period>& timeout) const;
+
+  // wait_until() blocks until the future has a valid result, or the timeout is
+  // reached.
+  // The future must have a valid internal state to call this method.
+  template <class Clock, class Duration>
+  future_status wait_until(
+      const std::chrono::time_point<Clock, Duration>& timeout) const;
+
+ private:
+  friend promise<T>;
+  future(const future&) = delete;
+  inline future(const std::shared_ptr<State>& state);
+
+  std::shared_ptr<State> state = std::make_shared<State>();
+};
+
+template <typename T>
+future<T>::future(const std::shared_ptr<State>& s) : state(s) {}
+
+template <typename T>
+bool future<T>::valid() const {
+  return static_cast<bool>(state);
+}
+
+template <typename T>
+T future<T>::get() {
+  std::unique_lock<std::mutex> lock(state->mutex);
+  state->cv.wait(lock, [&] { return state->hasVal; });
+  return state->val;
+}
+
+template <typename T>
+void future<T>::wait() const {
+  std::unique_lock<std::mutex> lock(state->mutex);
+  state->cv.wait(lock, [&] { return state->hasVal; });
+}
+
+template <typename T>
+template <class Rep, class Period>
+future_status future<T>::wait_for(
+    const std::chrono::duration<Rep, Period>& timeout) const {
+  std::unique_lock<std::mutex> lock(state->mutex);
+  return state->cv.wait_for(lock, timeout, [&] { return state->hasVal; })
+             ? future_status::ready
+             : future_status::timeout;
+}
+
+template <typename T>
+template <class Clock, class Duration>
+future_status future<T>::wait_until(
+    const std::chrono::time_point<Clock, Duration>& timeout) const {
+  std::unique_lock<std::mutex> lock(state->mutex);
+  return state->cv.wait_until(lock, timeout, [&] { return state->hasVal; })
+             ? future_status::ready
+             : future_status::timeout;
+}
+
+// promise is a minimal reimplementation of std::promise, that does not suffer
+// from TSAN false positives. See:
+// https://gcc.gnu.org/bugzilla//show_bug.cgi?id=69204
+template <typename T>
+class promise {
+ public:
+  // constructors
+  inline promise() = default;
+  inline promise(promise&& other) = default;
+  inline promise(const promise& other) = default;
+
+  // set_value() stores value to the shared state.
+  // set_value() must only be called once.
+  inline void set_value(const T& value) const;
+  inline void set_value(T&& value) const;
+
+  // get_future() returns a future sharing this promise's state.
+  future<T> get_future();
+
+ private:
+  using State = detail::promise_state<T>;
+  std::shared_ptr<State> state = std::make_shared<State>();
+};
+
+template <typename T>
+future<T> promise<T>::get_future() {
+  return future<T>(state);
+}
+
+template <typename T>
+void promise<T>::set_value(const T& value) const {
+  std::unique_lock<std::mutex> lock(state->mutex);
+  state->val = value;
+  state->hasVal = true;
+  state->cv.notify_all();
+}
+
+template <typename T>
+void promise<T>::set_value(T&& value) const {
+  std::unique_lock<std::mutex> lock(state->mutex);
+  state->val = std::move(value);
+  state->hasVal = true;
+  state->cv.notify_all();
+}
+
+}  // namespace lsp
+
+


Property changes on: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/future.h
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/json.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/json.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/json.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -10,7 +10,7 @@
   std::vector<const char*> path_;
 
  public:
-	 rapidjson::GenericValue<rapidjson::UTF8<>>* m_;
+         rapidjson::GenericValue<rapidjson::UTF8<>>* m_;
   JsonReader(rapidjson::GenericValue<rapidjson::UTF8<>>* m) : m_(m) {}
   SerializeFormat Format() const override { return SerializeFormat::Json; }
 
@@ -35,10 +35,10 @@
 
   bool HasMember(const char* x) override
   {
-	  if (m_->IsObject())
-		  return m_->HasMember(x);
-	  else
-		  return false;
+          if (m_->IsObject())
+                  return m_->HasMember(x);
+          else
+                  return false;
   }
   std::unique_ptr<Reader> operator[](const char* x) override {
     auto& sub = (*m_)[x];
@@ -59,7 +59,7 @@
 class JsonWriter : public Writer {
 
  public:
-	 rapidjson::Writer<rapidjson::StringBuffer>* m_;
+         rapidjson::Writer<rapidjson::StringBuffer>* m_;
 
   JsonWriter(rapidjson::Writer<rapidjson::StringBuffer>* m) : m_(m) {}
   SerializeFormat Format() const override { return SerializeFormat::Json; }

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/lsRequestId.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/lsRequestId.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/lsRequestId.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -3,49 +3,49 @@
 #include "LibLsp/JsonRpc/serializer.h"
 
 struct lsRequestId {
-	// The client can send the request id as an int or a string. We should output
-	// the same format we received.
-	enum Type { kNone, kInt, kString };
-	Type type = kNone;
+        // The client can send the request id as an int or a string. We should output
+        // the same format we received.
+        enum Type { kNone, kInt, kString };
+        Type type = kNone;
 
-	int value = -1;
-	std::string  k_string;
-	bool has_value() const { return type != kNone; }
-	void swap(lsRequestId& arg) noexcept
-	{
-		std::swap(arg, *this);
-	}
-	void set(int v)
-	{
-		value = v;
-		type = kInt;
-	}
-	void set(const std::string& v)
-	{
-		k_string = v;
-		type = kString;
-	}
-	bool operator==(const lsRequestId& rhs) const
-	{
-		if (type != rhs.type) return  false;
-		if (type == kInt)
-			return  value == rhs.value;
-		return  k_string == rhs.k_string;
-	}
-	bool operator!=(const lsRequestId& rhs) const
-	{
-		return !operator==(rhs);
-	}
-	bool operator<(const lsRequestId& rhs) const
-	{
-		if (type != rhs.type) return  false;
-		if (type == kInt)
-			return  value < rhs.value;
-		return  k_string < rhs.k_string;
-	}
+        int value = -1;
+        std::string  k_string;
+        bool has_value() const { return type != kNone; }
+        void swap(lsRequestId& arg) noexcept
+        {
+                std::swap(arg, *this);
+        }
+        void set(int v)
+        {
+                value = v;
+                type = kInt;
+        }
+        void set(const std::string& v)
+        {
+                k_string = v;
+                type = kString;
+        }
+        bool operator==(const lsRequestId& rhs) const
+        {
+                if (type != rhs.type) return  false;
+                if (type == kInt)
+                        return  value == rhs.value;
+                return  k_string == rhs.k_string;
+        }
+        bool operator!=(const lsRequestId& rhs) const
+        {
+                return !operator==(rhs);
+        }
+        bool operator<(const lsRequestId& rhs) const
+        {
+                if (type != rhs.type) return  false;
+                if (type == kInt)
+                        return  value < rhs.value;
+                return  k_string < rhs.k_string;
+        }
 };
 void Reflect(Reader& visitor, lsRequestId& value);
 void Reflect(Writer& visitor, lsRequestId& value);
 
 // Debug method to convert an id to a string.
-std::string ToString(const lsRequestId& id);
\ No newline at end of file
+std::string ToString(const lsRequestId& id);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/lsResponseMessage.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/lsResponseMessage.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/lsResponseMessage.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,41 +7,41 @@
 
 struct ResponseInMessage :public LspMessage {
 
-	lsRequestId id;
-	std::string m_methodType;
+        lsRequestId id;
+        std::string m_methodType;
 
-	virtual  MethodType GetMethodType() const override
-	{
-		return m_methodType.data();
-	};
-	virtual  void SetMethodType(MethodType _type) override
-	{
-		m_methodType = _type;
-	};
+        virtual  MethodType GetMethodType() const override
+        {
+                return m_methodType.data();
+        };
+        virtual  void SetMethodType(MethodType _type) override
+        {
+                m_methodType = _type;
+        };
 
-	Kind GetKid() override
-	{
-		return  RESPONCE_MESSAGE;
-	}
-	virtual  bool IsErrorType()
-	{
-		return false;
-	}
+        Kind GetKid() override
+        {
+                return  RESPONCE_MESSAGE;
+        }
+        virtual  bool IsErrorType()
+        {
+                return false;
+        }
 };
 template <class TDerived >
 struct BaseResponseMessage : ResponseInMessage {
 
-	void ReflectWriter(Writer& writer) override {
-		Reflect(writer, static_cast<TDerived&>(*this));
-	}
-	static std::unique_ptr<LspMessage> ReflectReader(Reader& visitor) {
+        void ReflectWriter(Writer& writer) override {
+                Reflect(writer, static_cast<TDerived&>(*this));
+        }
+        static std::unique_ptr<LspMessage> ReflectReader(Reader& visitor) {
 
-		TDerived* temp = new TDerived();
-		std::unique_ptr<TDerived>  message = std::unique_ptr<TDerived>(temp);
-		// Reflect may throw and *message will be partially deserialized.
-		Reflect(visitor, static_cast<TDerived&>(*temp));
-		return message;
-	}
+                TDerived* temp = new TDerived();
+                std::unique_ptr<TDerived>  message = std::unique_ptr<TDerived>(temp);
+                // Reflect may throw and *message will be partially deserialized.
+                Reflect(visitor, static_cast<TDerived&>(*temp));
+                return message;
+        }
 
 };
 
@@ -48,24 +48,24 @@
 
 template <class T, class TDerived >
 struct ResponseMessage : BaseResponseMessage<TDerived> {
-	T result;
-	void swap(ResponseMessage<T, TDerived>& arg) noexcept
-	{
-		std::swap(result, arg.result);
-		this->id.swap(arg.id);
-		this->m_methodType.swap(arg.m_methodType);
-	}
+        T result;
+        void swap(ResponseMessage<T, TDerived>& arg) noexcept
+        {
+                std::swap(result, arg.result);
+                this->id.swap(arg.id);
+                this->m_methodType.swap(arg.m_methodType);
+        }
 };
 
 template <class T, class TDerived >
 struct ResponseError : BaseResponseMessage<TDerived> {
-	T error;
-	bool IsErrorType() override { return true; }
-	void swap(ResponseError<T, TDerived>& arg) noexcept
-	{
+        T error;
+        bool IsErrorType() override { return true; }
+        void swap(ResponseError<T, TDerived>& arg) noexcept
+        {
 
-		this->id.swap(arg.id);
-		this->m_methodType.swap(arg.m_methodType);
-		std::swap(error, arg.error);
-	}
+                this->id.swap(arg.id);
+                this->m_methodType.swap(arg.m_methodType);
+                std::swap(error, arg.error);
+        }
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/macro_map.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/macro_map.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/macro_map.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -27,7 +27,7 @@
 // Taken from https://github.com/cbeck88/visit_struct.
 //
 // Usage
-//  
+//
 //   #define PRINT_DOUBLE(x) printf(#x " = %d\n", x);
 //
 //   MACRO_MAP(PRINT_DOUBLE, 1, 2, 3)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/message.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/message.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/message.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,26 +9,26 @@
 struct LspMessage
 {
 public:
-	std::string jsonrpc = "2.0";
-	virtual void ReflectWriter(Writer&)   = 0;
+        std::string jsonrpc = "2.0";
+        virtual void ReflectWriter(Writer&)   = 0;
 
-	// Send the message to the language client by writing it to stdout.
-	void Write(std::ostream& out);
-	
+        // Send the message to the language client by writing it to stdout.
+        void Write(std::ostream& out);
 
-	virtual MethodType GetMethodType() const = 0;
-	virtual void SetMethodType(MethodType) = 0;
-	
-	virtual ~LspMessage()=default;
-	enum Kind
-	{
-		REQUEST_MESSAGE,
-		RESPONCE_MESSAGE,
-		NOTIFICATION_MESSAGE
-	};
 
-	virtual  Kind GetKid() = 0;
-	virtual std::string ToJson()  ;
-	
+        virtual MethodType GetMethodType() const = 0;
+        virtual void SetMethodType(MethodType) = 0;
+
+        virtual ~LspMessage()=default;
+        enum Kind
+        {
+                REQUEST_MESSAGE,
+                RESPONCE_MESSAGE,
+                NOTIFICATION_MESSAGE
+        };
+
+        virtual  Kind GetKid() = 0;
+        virtual std::string ToJson()  ;
+
 };
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/serializer.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/serializer.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/serializer.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -24,7 +24,7 @@
 // A tag type that can be used to write `null` to json.
 struct JsonNull
 {
-	void swap(JsonNull& arg) noexcept;
+        void swap(JsonNull& arg) noexcept;
 };
 
 
@@ -31,34 +31,34 @@
 
 class Reader {
 public:
-	virtual ~Reader() {}
-	virtual SerializeFormat Format() const = 0;
+        virtual ~Reader() {}
+        virtual SerializeFormat Format() const = 0;
 
-	virtual bool IsBool() = 0;
-	virtual bool IsNull() = 0;
-	virtual bool IsArray() = 0;
-	virtual bool IsInt() = 0;
-	virtual bool IsInt64() = 0;
-	virtual bool IsUint64() = 0;
-	virtual bool IsDouble() = 0;
+        virtual bool IsBool() = 0;
+        virtual bool IsNull() = 0;
+        virtual bool IsArray() = 0;
+        virtual bool IsInt() = 0;
+        virtual bool IsInt64() = 0;
+        virtual bool IsUint64() = 0;
+        virtual bool IsDouble() = 0;
     virtual bool IsNumber() = 0;
     virtual bool IsString() = 0;
 
-	virtual void GetNull() = 0;
-	virtual bool GetBool() = 0;
-	virtual int GetInt() = 0;
-	virtual uint32_t GetUint32() = 0;
-	virtual int64_t GetInt64() = 0;
-	virtual uint64_t GetUint64() = 0;
-	virtual double GetDouble() = 0;
-	virtual std::string GetString() = 0;
+        virtual void GetNull() = 0;
+        virtual bool GetBool() = 0;
+        virtual int GetInt() = 0;
+        virtual uint32_t GetUint32() = 0;
+        virtual int64_t GetInt64() = 0;
+        virtual uint64_t GetUint64() = 0;
+        virtual double GetDouble() = 0;
+        virtual std::string GetString() = 0;
 
-	virtual bool HasMember(const char* x) = 0;
-	virtual std::unique_ptr<Reader> operator[](const char* x) = 0;
-	virtual void IterMap( std::function<void(const char*, Reader&)> fn) = 0;
-	virtual void IterArray(std::function<void(Reader&)> fn) = 0;
-	virtual void DoMember(const char* name, std::function<void(Reader&)> fn) = 0;
-	virtual std::string ToString() const = 0;
+        virtual bool HasMember(const char* x) = 0;
+        virtual std::unique_ptr<Reader> operator[](const char* x) = 0;
+        virtual void IterMap( std::function<void(const char*, Reader&)> fn) = 0;
+        virtual void IterArray(std::function<void(Reader&)> fn) = 0;
+        virtual void DoMember(const char* name, std::function<void(Reader&)> fn) = 0;
+        virtual std::string ToString() const = 0;
 };
 
 
@@ -65,23 +65,23 @@
 
 class Writer {
 public:
-	virtual ~Writer() {}
-	virtual SerializeFormat Format() const = 0;
+        virtual ~Writer() {}
+        virtual SerializeFormat Format() const = 0;
 
-	virtual void Null() = 0;
-	virtual void Bool(bool x) = 0;
-	virtual void Int(int x) = 0;
-	virtual void Uint32(uint32_t x) = 0;
-	virtual void Int64(int64_t x) = 0;
-	virtual void Uint64(uint64_t x) = 0;
-	virtual void Double(double x) = 0;
-	virtual void String(const char* x) = 0;
-	virtual void String(const char* x, size_t len) = 0;
-	virtual void StartArray(size_t) = 0;
-	virtual void EndArray() = 0;
-	virtual void StartObject() = 0;
-	virtual void EndObject() = 0;
-	virtual void Key(const char* name) = 0;
+        virtual void Null() = 0;
+        virtual void Bool(bool x) = 0;
+        virtual void Int(int x) = 0;
+        virtual void Uint32(uint32_t x) = 0;
+        virtual void Int64(int64_t x) = 0;
+        virtual void Uint64(uint64_t x) = 0;
+        virtual void Double(double x) = 0;
+        virtual void String(const char* x) = 0;
+        virtual void String(const char* x, size_t len) = 0;
+        virtual void StartArray(size_t) = 0;
+        virtual void EndArray() = 0;
+        virtual void StartObject() = 0;
+        virtual void EndObject() = 0;
+        virtual void Key(const char* name) = 0;
 };
 
 
@@ -130,9 +130,9 @@
 
 #define _MAPPABLE_SWAP_MEMBER(name)  std::swap(name,arg.name);
 
-#define  MAKE_SWAP_METHOD(type, ...)			\
-void swap(type& arg) noexcept{			\
-	MACRO_MAP(_MAPPABLE_SWAP_MEMBER, __VA_ARGS__) \
+#define  MAKE_SWAP_METHOD(type, ...)                    \
+void swap(type& arg) noexcept{                  \
+        MACRO_MAP(_MAPPABLE_SWAP_MEMBER, __VA_ARGS__) \
 }
 
 #define MAKE_REFLECT_STRUCT_OPTIONALS_MANDATORY(type, ...)     \
@@ -208,32 +208,32 @@
 
 template <typename T>
 void Reflect(Reader& visitor, boost::optional<T>& value) {
-	if (visitor.IsNull()) {
-		visitor.GetNull();
-		return;
-	}
-	T real_value;
-	Reflect(visitor, real_value);
-	value = std::move(real_value);
+        if (visitor.IsNull()) {
+                visitor.GetNull();
+                return;
+        }
+        T real_value;
+        Reflect(visitor, real_value);
+        value = std::move(real_value);
 }
 template <typename T>
 void Reflect(Writer& visitor, boost::optional<T>& value) {
-	if (value)
-		Reflect(visitor, *value);
-	else
-		visitor.Null();
+        if (value)
+                Reflect(visitor, *value);
+        else
+                visitor.Null();
 }
 
 
 template <typename T>
 void ReflectMember(Writer& visitor, const char* name, boost::optional<T>& value) {
-	// For TypeScript optional property key?: value in the spec,
-	// We omit both key and value if value is std::nullopt (null) for JsonWriter
-	// to reduce output. But keep it for other serialization formats.
-	if (value || visitor.Format() != SerializeFormat::Json) {
-		visitor.Key(name);
-		Reflect(visitor, value);
-	}
+        // For TypeScript optional property key?: value in the spec,
+        // We omit both key and value if value is std::nullopt (null) for JsonWriter
+        // to reduce output. But keep it for other serialization formats.
+        if (value || visitor.Format() != SerializeFormat::Json) {
+                visitor.Key(name);
+                Reflect(visitor, value);
+        }
 }
 
 
@@ -240,75 +240,75 @@
 
 template <typename T>
 void ReflectMember(Writer& visitor,
-	const char* name,
-	T& value,
-	optionals_mandatory_tag) {
-	visitor.Key(name);
-	Reflect(visitor, value);
+        const char* name,
+        T& value,
+        optionals_mandatory_tag) {
+        visitor.Key(name);
+        Reflect(visitor, value);
 }
 template <typename T>
 void ReflectMember(Reader& visitor,
-	const char* name,
-	T& value,
-	optionals_mandatory_tag) {
-	Reflect(visitor, value);
+        const char* name,
+        T& value,
+        optionals_mandatory_tag) {
+        Reflect(visitor, value);
 }
 
 template<class T >
 void Reflect(Reader& visitor, std::map<std::string, T>& value)
 {
-	visitor.IterMap([&](const char* name,Reader& entry) {
-		T entry_value;
-		Reflect(entry, entry_value);
-		value[name]=(std::move(entry_value));
-	});
+        visitor.IterMap([&](const char* name,Reader& entry) {
+                T entry_value;
+                Reflect(entry, entry_value);
+                value[name]=(std::move(entry_value));
+        });
 }
 template<class _Ty >
 void Reflect(Writer& visitor, std::map<std::string, _Ty>& value)
 {
-	REFLECT_MEMBER_START();
-	for (auto& it : value)
-	{
-		visitor.Key(it.first.c_str());
-		Reflect(visitor, it.second);
-	}
-	REFLECT_MEMBER_END();
+        REFLECT_MEMBER_START();
+        for (auto& it : value)
+        {
+                visitor.Key(it.first.c_str());
+                Reflect(visitor, it.second);
+        }
+        REFLECT_MEMBER_END();
 }
 
 // std::vector
 template <typename T>
 void Reflect(Reader& visitor, std::vector<T>& values) {
-	visitor.IterArray([&](Reader& entry) {
-		T entry_value;
-		Reflect(entry, entry_value);
-		values.push_back(std::move(entry_value));
-		});
+        visitor.IterArray([&](Reader& entry) {
+                T entry_value;
+                Reflect(entry, entry_value);
+                values.push_back(std::move(entry_value));
+                });
 }
 
 
 template <typename T>
 void Reflect(Writer& visitor, std::vector<T>& values) {
-	visitor.StartArray(values.size());
-	for (auto& value : values)
-		Reflect(visitor, value);
-	visitor.EndArray();
+        visitor.StartArray(values.size());
+        for (auto& value : values)
+                Reflect(visitor, value);
+        visitor.EndArray();
 }
 
 // ReflectMember
 
 inline void DefaultReflectMemberStart(Writer& visitor) {
-	visitor.StartObject();
+        visitor.StartObject();
 }
 inline void DefaultReflectMemberStart(Reader& visitor) {}
 
 template <typename T>
 bool ReflectMemberStart(Reader& visitor, T& value) {
-	return false;
+        return false;
 }
 template <typename T>
 bool ReflectMemberStart(Writer& visitor, T& value) {
-	visitor.StartObject();
-	return true;
+        visitor.StartObject();
+        return true;
 }
 
 template <typename T>
@@ -315,52 +315,52 @@
 void ReflectMemberEnd(Reader& visitor, T& value) {}
 template <typename T>
 void ReflectMemberEnd(Writer& visitor, T& value) {
-	visitor.EndObject();
+        visitor.EndObject();
 }
 
 template <typename T>
 void ReflectMember(Reader& visitor, const char* name, T& value) {
-	visitor.DoMember(name, [&](Reader& child) { Reflect(child, value); });
+        visitor.DoMember(name, [&](Reader& child) { Reflect(child, value); });
 }
 template <typename T>
 void ReflectMember(Writer& visitor, const char* name, T& value) {
-	visitor.Key(name);
-	Reflect(visitor, value);
+        visitor.Key(name);
+        Reflect(visitor, value);
 }
 
 template<class _Ty1, class _Ty2>
 void Reflect(Writer& visitor, std::pair<  boost::optional<_Ty1>, boost::optional<_Ty2> >& value)
 {
-	if (value.first)
-	{
-		Reflect(visitor, value.first);
-	}
-	else
-	{
-		Reflect(visitor, value.second);
-	}
+        if (value.first)
+        {
+                Reflect(visitor, value.first);
+        }
+        else
+        {
+                Reflect(visitor, value.second);
+        }
 }
 template<class _Ty2>
 void Reflect(Reader& visitor, std::pair<  boost::optional<bool>, boost::optional<_Ty2> >& value)
 {
-	if(visitor.IsBool())
-	{
-		Reflect(visitor, value.first);
-		return;
-	}
+        if(visitor.IsBool())
+        {
+                Reflect(visitor, value.first);
+                return;
+        }
 
-	Reflect(visitor, value.second);
+        Reflect(visitor, value.second);
 }
 template<class _Ty2>
 void Reflect(Reader& visitor, std::pair<  boost::optional<std::string>, boost::optional<_Ty2> >& value)
 {
-	if (visitor.IsString())
-	{
-		Reflect(visitor, value.first);
-		return;
-	}
+        if (visitor.IsString())
+        {
+                Reflect(visitor, value.first);
+                return;
+        }
 
-	Reflect(visitor, value.second);
+        Reflect(visitor, value.second);
 }
 
 
@@ -367,12 +367,12 @@
 template<class _Ty1, class _Ty2>
 void Reflect(Reader& visitor, std::pair<  boost::optional<_Ty1>, boost::optional<_Ty2> >& value)
 {
-	try
-	{
-		Reflect(visitor, value.second);
-	}
-	catch (...)
-	{
-		Reflect(visitor, value.first);
-	}
+        try
+        {
+                Reflect(visitor, value.second);
+        }
+        catch (...)
+        {
+                Reflect(visitor, value.first);
+        }
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/stream.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/stream.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/stream.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -3,194 +3,194 @@
 #include <string>
 namespace lsp
 {
-	class stream
-	{
-	public:
-		virtual ~stream() = default;
-		virtual  bool fail() = 0;
-		virtual  bool bad() = 0;
-		virtual  bool eof() = 0;
-		virtual  bool good() = 0;
-		virtual  void clear() = 0;
-		virtual  std::string  what() = 0;
-		virtual  bool need_to_clear_the_state()
-		{
-			return false;
-		}
+        class stream
+        {
+        public:
+                virtual ~stream() = default;
+                virtual  bool fail() = 0;
+                virtual  bool bad() = 0;
+                virtual  bool eof() = 0;
+                virtual  bool good() = 0;
+                virtual  void clear() = 0;
+                virtual  std::string  what() = 0;
+                virtual  bool need_to_clear_the_state()
+                {
+                        return false;
+                }
 
-		bool  operator!()
-		{
-			return bad();
-		}
-	};
-	class istream : public  stream
-	{
-	public:
-		virtual  int get() = 0;
-		virtual ~istream() = default;
-		virtual  istream& read(char* str, std::streamsize count) = 0;
-	};
-	template <class T >
-	class base_istream : public istream
-	{
-	public:
-		explicit  base_istream(T& _t) :_impl(_t)
-		{
+                bool  operator!()
+                {
+                        return bad();
+                }
+        };
+        class istream : public  stream
+        {
+        public:
+                virtual  int get() = 0;
+                virtual ~istream() = default;
+                virtual  istream& read(char* str, std::streamsize count) = 0;
+        };
+        template <class T >
+        class base_istream : public istream
+        {
+        public:
+                explicit  base_istream(T& _t) :_impl(_t)
+                {
 
-		}
+                }
 
-		int get() override
-		{
-			return  _impl.get();
-		}
-		bool fail() override
-		{
-			return  _impl.fail();
-		}
-		bool bad() override
-		{
-			return  _impl.bad();
-		}
-		bool eof() override
-		{
-			return  _impl.eof();
-		}
-		bool good() override
-		{
-			return  _impl.good();
-		}
-		istream& read(char* str, std::streamsize count) override
-		{
-			_impl.read(str, count);
-			return *this;
-		}
+                int get() override
+                {
+                        return  _impl.get();
+                }
+                bool fail() override
+                {
+                        return  _impl.fail();
+                }
+                bool bad() override
+                {
+                        return  _impl.bad();
+                }
+                bool eof() override
+                {
+                        return  _impl.eof();
+                }
+                bool good() override
+                {
+                        return  _impl.good();
+                }
+                istream& read(char* str, std::streamsize count) override
+                {
+                        _impl.read(str, count);
+                        return *this;
+                }
 
-		void clear() override
-		{
-			_impl.clear();
-		}
-		T& _impl;
-	};
-	class ostream : public  stream
-	{
-	public:
-		virtual ~ostream() = default;
+                void clear() override
+                {
+                        _impl.clear();
+                }
+                T& _impl;
+        };
+        class ostream : public  stream
+        {
+        public:
+                virtual ~ostream() = default;
 
-		virtual  ostream& write(const std::string&) = 0;
-		virtual  ostream& write(std::streamsize) = 0;
-		virtual  ostream& flush() = 0;
+                virtual  ostream& write(const std::string&) = 0;
+                virtual  ostream& write(std::streamsize) = 0;
+                virtual  ostream& flush() = 0;
 
-	};
-	template <class T >
-	class base_ostream : public ostream
-	{
-	public:
-		explicit  base_ostream(T& _t) :_impl(_t)
-		{
+        };
+        template <class T >
+        class base_ostream : public ostream
+        {
+        public:
+                explicit  base_ostream(T& _t) :_impl(_t)
+                {
 
-		}
+                }
 
-		bool fail() override
-		{
-			return  _impl.fail();
-		}
-		bool good() override
-		{
-			return  _impl.good();
-		}
-		bool bad() override
-		{
-			return  _impl.bad();
-		}
-		bool eof() override
-		{
-			return  _impl.eof();
-		}
+                bool fail() override
+                {
+                        return  _impl.fail();
+                }
+                bool good() override
+                {
+                        return  _impl.good();
+                }
+                bool bad() override
+                {
+                        return  _impl.bad();
+                }
+                bool eof() override
+                {
+                        return  _impl.eof();
+                }
 
-		ostream& write(const std::string& c) override
-		{
-			_impl << c;
-			return *this;
-		}
+                ostream& write(const std::string& c) override
+                {
+                        _impl << c;
+                        return *this;
+                }
 
-		ostream& write(std::streamsize _s) override
-		{
+                ostream& write(std::streamsize _s) override
+                {
 
-			_impl << std::to_string(_s);
-			return *this;
-		}
+                        _impl << std::to_string(_s);
+                        return *this;
+                }
 
-		ostream& flush() override
-		{
-			_impl.flush();
-			return *this;
-		}
+                ostream& flush() override
+                {
+                        _impl.flush();
+                        return *this;
+                }
 
-		void clear() override
-		{
-			_impl.clear();
-		}
-	protected:
-		T& _impl;
-	};
+                void clear() override
+                {
+                        _impl.clear();
+                }
+        protected:
+                T& _impl;
+        };
 
-	template <class T >
-	class base_iostream : public istream, public ostream
-	{
-	public:
-		explicit  base_iostream(T& _t) :_impl(_t)
-		{
+        template <class T >
+        class base_iostream : public istream, public ostream
+        {
+        public:
+                explicit  base_iostream(T& _t) :_impl(_t)
+                {
 
-		}
+                }
 
-		int get() override
-		{
-			return  _impl.get();
-		}
-		bool fail() override
-		{
-			return  _impl.fail();
-		}
-		bool bad() override
-		{
-			return  _impl.bad();
-		}
-		bool eof() override
-		{
-			return  _impl.eof();
-		}
-		bool good() override
-		{
-			return  _impl.good();
-		}
-		istream& read(char* str, std::streamsize count) override
-		{
-			_impl.read(str, count);
-			return *this;
-		}
-		ostream& write(const std::string& c) override
-		{
-			_impl << c;
-			return *this;
-		}
+                int get() override
+                {
+                        return  _impl.get();
+                }
+                bool fail() override
+                {
+                        return  _impl.fail();
+                }
+                bool bad() override
+                {
+                        return  _impl.bad();
+                }
+                bool eof() override
+                {
+                        return  _impl.eof();
+                }
+                bool good() override
+                {
+                        return  _impl.good();
+                }
+                istream& read(char* str, std::streamsize count) override
+                {
+                        _impl.read(str, count);
+                        return *this;
+                }
+                ostream& write(const std::string& c) override
+                {
+                        _impl << c;
+                        return *this;
+                }
 
-		ostream& write(std::streamsize _s) override
-		{
-			_impl << std::to_string(_s);
-			return *this;
-		}
+                ostream& write(std::streamsize _s) override
+                {
+                        _impl << std::to_string(_s);
+                        return *this;
+                }
 
-		ostream& flush() override
-		{
-			_impl.flush();
-			return *this;
-		}
+                ostream& flush() override
+                {
+                        _impl.flush();
+                        return *this;
+                }
 
-		void clear() override
-		{
-			_impl.clear();
-		}
-	protected:
-		T& _impl;
-	};
+                void clear() override
+                {
+                        _impl.clear();
+                }
+        protected:
+                T& _impl;
+        };
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/threaded_queue.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/threaded_queue.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/JsonRpc/threaded_queue.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -57,23 +57,23 @@
   static bool HasState(std::initializer_list<BaseThreadQueue*> queues);
 
   bool ValidateWaiter(std::initializer_list<BaseThreadQueue*> queues);
-	
+
   template <typename... BaseThreadQueue>
   bool Wait(std::atomic<bool>& quit, BaseThreadQueue... queues) {
-	  MultiQueueLock<BaseThreadQueue...> l(queues...);
-	  while (!quit.load(std::memory_order_relaxed)) {
-		  if (HasState({ queues... }))
-			  return false;
-		  cv.wait(l);
-	  }
-	  return true;
+          MultiQueueLock<BaseThreadQueue...> l(queues...);
+          while (!quit.load(std::memory_order_relaxed)) {
+                  if (HasState({ queues... }))
+                          return false;
+                  cv.wait(l);
+          }
+          return true;
   }
   template <typename... BaseThreadQueue>
   void WaitUntil(std::chrono::steady_clock::time_point t,
-	  BaseThreadQueue... queues) {
-	  MultiQueueLock<BaseThreadQueue...> l(queues...);
-	  if (!HasState({ queues... }))
-		  cv.wait_until(l, t);
+          BaseThreadQueue... queues) {
+          MultiQueueLock<BaseThreadQueue...> l(queues...);
+          if (!HasState({ queues... }))
+                  cv.wait_until(l, t);
   }
   template <typename... BaseThreadQueue>
   void Wait(BaseThreadQueue... queues) {
@@ -181,22 +181,22 @@
   }
   // Return all elements in the queue.
   std::vector<T> DequeueAll() {
-	  std::lock_guard<std::mutex> lock(mutex);
+          std::lock_guard<std::mutex> lock(mutex);
 
-	  total_count_ = 0;
+          total_count_ = 0;
 
-	  std::vector<T> result;
-	  result.reserve(priority_.size() + queue_.size());
-	  while (!priority_.empty()) {
-		  result.emplace_back(std::move(priority_.front()));
-		  priority_.pop_front();
-	  }
-	  while (!queue_.empty()) {
-		  result.emplace_back(std::move(queue_.front()));
-		  queue_.pop_front();
-	  }
+          std::vector<T> result;
+          result.reserve(priority_.size() + queue_.size());
+          while (!priority_.empty()) {
+                  result.emplace_back(std::move(priority_.front()));
+                  priority_.pop_front();
+          }
+          while (!queue_.empty()) {
+                  result.emplace_back(std::move(queue_.front()));
+                  queue_.pop_front();
+          }
 
-	  return result;
+          return result;
   }
   std::vector<T> TryDequeueSome(size_t num) {
       std::lock_guard<std::mutex> lock(mutex);
@@ -213,7 +213,7 @@
           }
           else
           {
-	          break;
+                  break;
           }
           num -= 1;
       }

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/AbsolutePath.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/AbsolutePath.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/AbsolutePath.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -4,21 +4,21 @@
 #include <string>
 
 struct AbsolutePath {
-	static AbsolutePath BuildDoNotUse(const std::string& path);
+        static AbsolutePath BuildDoNotUse(const std::string& path);
 
-	// Try not to use this.
-	AbsolutePath();
+        // Try not to use this.
+        AbsolutePath();
 
-	// Provide implicit conversions to std::string for the time being.
-	AbsolutePath(const std::string& path, bool validate = true);
-	operator std::string() const;
+        // Provide implicit conversions to std::string for the time being.
+        AbsolutePath(const std::string& path, bool validate = true);
+        operator std::string() const;
 
-	bool operator==(const AbsolutePath& rhs) const;
-	bool operator!=(const AbsolutePath& rhs) const;
-	bool operator<(const AbsolutePath& rhs) const;
-	bool operator>(const AbsolutePath& rhs) const;
-	std::string path;
-	bool qualify = true;
+        bool operator==(const AbsolutePath& rhs) const;
+        bool operator!=(const AbsolutePath& rhs) const;
+        bool operator<(const AbsolutePath& rhs) const;
+        bool operator>(const AbsolutePath& rhs) const;
+        std::string path;
+        bool qualify = true;
 };
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ClientPreferences.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ClientPreferences.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ClientPreferences.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,298 +9,298 @@
 {
 public:
 
-	std::shared_ptr<lsWorkspaceClientCapabilites>  workspace;
-	lsTextDocumentClientCapabilities textDocument ;
-	
-	ClientPreferences(const lsClientCapabilities& capabilities)
-	{
-		v3supported = capabilities.textDocument.has_value();
-		if (v3supported)
-			textDocument = capabilities.textDocument.value();
-		if(capabilities.workspace)
-		{
-			workspace = std::make_shared<lsWorkspaceClientCapabilites>(capabilities.workspace.value());
-		}
-	}
-	
-	bool v3supported=false;
+        std::shared_ptr<lsWorkspaceClientCapabilites>  workspace;
+        lsTextDocumentClientCapabilities textDocument ;
 
-	bool isSignatureHelpSupported() {
-	
-		return v3supported && (textDocument.signatureHelp);
-	}
-	bool  isWorkspaceDidChangeConfigurationSupported() const
-	{
-		return workspace && isDynamicRegistrationSupported(workspace->didChangeConfiguration);
-	}
-	bool isWorkspaceFoldersSupported() {
-		return workspace != nullptr && isTrue(workspace->workspaceFolders);
-	}
+        ClientPreferences(const lsClientCapabilities& capabilities)
+        {
+                v3supported = capabilities.textDocument.has_value();
+                if (v3supported)
+                        textDocument = capabilities.textDocument.value();
+                if(capabilities.workspace)
+                {
+                        workspace = std::make_shared<lsWorkspaceClientCapabilites>(capabilities.workspace.value());
+                }
+        }
 
-	bool isCompletionDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.completion);
-	}
+        bool v3supported=false;
 
-	bool isCompletionSnippetsSupported() {
-		//@formatter:off
-		if(!v3supported || !textDocument.completion)
-		{
-			return false;
-		}
-		const auto& completion = textDocument.completion.value();
-		if(completion.completionItem)
-		{
-			return isTrue(completion.completionItem.value().snippetSupport);
-		}
-		return false;
-	}
+        bool isSignatureHelpSupported() {
 
-	bool isV3Supported() {
-		return v3supported;
-	}
+                return v3supported && (textDocument.signatureHelp);
+        }
+        bool  isWorkspaceDidChangeConfigurationSupported() const
+        {
+                return workspace && isDynamicRegistrationSupported(workspace->didChangeConfiguration);
+        }
+        bool isWorkspaceFoldersSupported() {
+                return workspace != nullptr && isTrue(workspace->workspaceFolders);
+        }
 
-	bool isFormattingDynamicRegistrationSupported() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.formatting);
-	}
+        bool isCompletionDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.completion);
+        }
 
-	bool isRangeFormattingDynamicRegistrationSupported() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.rangeFormatting);
-	}
+        bool isCompletionSnippetsSupported() {
+                //@formatter:off
+                if(!v3supported || !textDocument.completion)
+                {
+                        return false;
+                }
+                const auto& completion = textDocument.completion.value();
+                if(completion.completionItem)
+                {
+                        return isTrue(completion.completionItem.value().snippetSupport);
+                }
+                return false;
+        }
 
-	bool isOnTypeFormattingDynamicRegistrationSupported() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.onTypeFormatting);
-	}
+        bool isV3Supported() {
+                return v3supported;
+        }
 
-	bool isCodeLensDynamicRegistrationSupported() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.codeLens);
-	}
+        bool isFormattingDynamicRegistrationSupported() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.formatting);
+        }
 
-	bool isSignatureHelpDynamicRegistrationSupported() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.signatureHelp);
-	}
-	template<typename  T>
-	static bool isDynamicRegistrationSupported(boost::optional<T>& capability)
-	{
-		if(capability)
-			return (capability.value().dynamicRegistration.value());
-		return false;
-	}
-	
-	bool isTrue(const boost::optional<bool>& value)
-	{
-		return  value.get_value_or(false);
-	}
+        bool isRangeFormattingDynamicRegistrationSupported() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.rangeFormatting);
+        }
 
-	bool isRenameDynamicRegistrationSupported() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.rename);
-	}
+        bool isOnTypeFormattingDynamicRegistrationSupported() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.onTypeFormatting);
+        }
 
-	bool isExecuteCommandDynamicRegistrationSupported() {
-		return v3supported && workspace != nullptr && isDynamicRegistrationSupported(workspace->executeCommand);
-	}
+        bool isCodeLensDynamicRegistrationSupported() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.codeLens);
+        }
 
-	bool isWorkspaceSymbolDynamicRegistered() {
-		return v3supported && workspace != nullptr && isDynamicRegistrationSupported(workspace->symbol);
-	}
+        bool isSignatureHelpDynamicRegistrationSupported() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.signatureHelp);
+        }
+        template<typename  T>
+        static bool isDynamicRegistrationSupported(boost::optional<T>& capability)
+        {
+                if(capability)
+                        return (capability.value().dynamicRegistration.value());
+                return false;
+        }
 
-	bool isWorkspaceChangeWatchedFilesDynamicRegistered() {
-		return v3supported && workspace != nullptr && isDynamicRegistrationSupported(workspace->didChangeWatchedFiles);
-	}
+        bool isTrue(const boost::optional<bool>& value)
+        {
+                return  value.get_value_or(false);
+        }
 
-	bool isDocumentSymbolDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.documentSymbol);
-	}
+        bool isRenameDynamicRegistrationSupported() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.rename);
+        }
 
-	bool isCodeActionDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.codeAction);
-	}
+        bool isExecuteCommandDynamicRegistrationSupported() {
+                return v3supported && workspace != nullptr && isDynamicRegistrationSupported(workspace->executeCommand);
+        }
 
-	bool isDefinitionDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.definition);
-	}
+        bool isWorkspaceSymbolDynamicRegistered() {
+                return v3supported && workspace != nullptr && isDynamicRegistrationSupported(workspace->symbol);
+        }
 
-	bool isTypeDefinitionDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.typeDefinition);
-	}
+        bool isWorkspaceChangeWatchedFilesDynamicRegistered() {
+                return v3supported && workspace != nullptr && isDynamicRegistrationSupported(workspace->didChangeWatchedFiles);
+        }
 
-	bool isHoverDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.hover);
-	}
+        bool isDocumentSymbolDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.documentSymbol);
+        }
 
-	bool isReferencesDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.references);
-	}
+        bool isCodeActionDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.codeAction);
+        }
 
-	bool isDocumentHighlightDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.documentHighlight);
-	}
+        bool isDefinitionDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.definition);
+        }
 
-	bool isFoldgingRangeDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.foldingRange);
-	}
+        bool isTypeDefinitionDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.typeDefinition);
+        }
 
-	bool isImplementationDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.implementation);
-	}
+        bool isHoverDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.hover);
+        }
 
-	bool isSelectionRangeDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.selectionRange);
-	}
+        bool isReferencesDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.references);
+        }
 
-	bool isWillSaveRegistered() {
-		return v3supported && isTrue(textDocument.synchronization.willSave);
-	}
+        bool isDocumentHighlightDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.documentHighlight);
+        }
 
-	bool isWillSaveWaitUntilRegistered() {
-		return v3supported && isTrue(textDocument.synchronization.willSaveWaitUntil);
-	}
+        bool isFoldgingRangeDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.foldingRange);
+        }
 
-	bool isWorkspaceApplyEditSupported() {
-		return workspace != nullptr && isTrue(workspace->applyEdit);
-	}
+        bool isImplementationDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.implementation);
+        }
 
-	bool isSupportsCompletionDocumentationMarkdown() {
+        bool isSelectionRangeDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.selectionRange);
+        }
 
-		if (!v3supported || !textDocument.completion)
-		{
-			return false;
-		}
-		const auto& completion = textDocument.completion.value();
-		if (completion.completionItem)
-		{
-			auto& documentationFormat = completion.completionItem.value().documentationFormat;
-			if(documentationFormat)
-			{
-				auto& data = documentationFormat.value();
-				for(auto& it : data)
-				{
-					if(it == "markdown")
-					{
-						return true;
-					}
-				}
-			}
-		}
-		return false;
-		
-	}
+        bool isWillSaveRegistered() {
+                return v3supported && isTrue(textDocument.synchronization.willSave);
+        }
 
+        bool isWillSaveWaitUntilRegistered() {
+                return v3supported && isTrue(textDocument.synchronization.willSaveWaitUntil);
+        }
 
-	bool isWorkspaceEditResourceChangesSupported() {
-		if(!workspace) return false;
-		
-		if(workspace->workspaceEdit)
-		{
-			return isTrue(workspace->workspaceEdit.value().resourceChanges);
-		}
-		return false;
-	}
-	static  bool contains(const std::vector<std::string>& v, const std::string& target)
-	{
-		for(auto& it : v)
-		{
-			if(it == target) return true;
-		}
-		return false;
-	}
-	bool isResourceOperationSupported() const
-	{
-		if (!workspace) return false;
-		if (!workspace->workspaceEdit)
-		{
-			return false;
-		}
-		auto& it = (workspace->workspaceEdit.value());
-		if(!it.resourceOperations) return false;
-		const auto& resourceOperations = it.resourceOperations.value();
-		return contains(resourceOperations, "create") && contains(resourceOperations, "rename") && contains(resourceOperations, "delete");
-		
-	}
+        bool isWorkspaceApplyEditSupported() {
+                return workspace != nullptr && isTrue(workspace->applyEdit);
+        }
 
-	/**
-	 * {@code true} if the client has explicitly set the
-	 * {@code textDocument.documentSymbol.hierarchicalDocumentSymbolSupport} to
-	 * {@code true} when initializing the LS. Otherwise, {@code false}.
-	 */
-	bool isHierarchicalDocumentSymbolSupported() {
-		if(!v3supported || !textDocument.documentSymbol) return false;
-		return  isTrue(textDocument.documentSymbol.value().hierarchicalDocumentSymbolSupport);
+        bool isSupportsCompletionDocumentationMarkdown() {
 
-	}
+                if (!v3supported || !textDocument.completion)
+                {
+                        return false;
+                }
+                const auto& completion = textDocument.completion.value();
+                if (completion.completionItem)
+                {
+                        auto& documentationFormat = completion.completionItem.value().documentationFormat;
+                        if(documentationFormat)
+                        {
+                                auto& data = documentationFormat.value();
+                                for(auto& it : data)
+                                {
+                                        if(it == "markdown")
+                                        {
+                                                return true;
+                                        }
+                                }
+                        }
+                }
+                return false;
 
-	bool isSemanticHighlightingSupported() {
-		//@formatter:off
-		if (!v3supported || !textDocument.semanticHighlightingCapabilities) return false;
-		return  isTrue(textDocument.semanticHighlightingCapabilities.value().semanticHighlighting);
-		//@formatter:on
-	}
+        }
 
-	/**
-	 * {@code true} if the client has explicitly set the
-	 * {@code textDocument.codeAction.codeActionLiteralSupport.codeActionKind.valueSet}
-	 * value. Otherwise, {@code false}.
-	 */
-	bool isSupportedCodeActionKind(const std::string& kind) {
-		if (!v3supported || !textDocument.codeAction) return false;
-		//@formatter:off
-		const auto& codeAction = textDocument.codeAction.value();
-		if(codeAction.codeActionLiteralSupport)
-		{
-			const auto& codeActionKind = codeAction.codeActionLiteralSupport.value().codeActionKind;
-			if(codeActionKind)
-			{
-				const auto& valueSet = codeActionKind.value().valueSet;
-				if(valueSet)
-				{
-					for(auto& k : valueSet.value())
-					{
-						if(lsp::StartsWith(kind,k))
-						{
-							return true;
-						}
-					}
-				}
-			}
-		}
-		return false;
 
-		//@formatter:on
-	}
+        bool isWorkspaceEditResourceChangesSupported() {
+                if(!workspace) return false;
 
-	/**
-	 * {@code true} if the client has explicitly set the
-	 * {@code textDocument.publishDiagnostics.tagSupport} to
-	 * {@code true} when initializing the LS. Otherwise, {@code false}.
-	 */
-	bool isDiagnosticTagSupported() {
-		if (!v3supported || !textDocument.publishDiagnostics) return false;
-		const auto& publishDiagnostics = textDocument.publishDiagnostics.value();
-		if(publishDiagnostics.tagSupport)
-		{
-			isTagSupported(publishDiagnostics.tagSupport);
-		}
-		return false;
-	}
+                if(workspace->workspaceEdit)
+                {
+                        return isTrue(workspace->workspaceEdit.value().resourceChanges);
+                }
+                return false;
+        }
+        static  bool contains(const std::vector<std::string>& v, const std::string& target)
+        {
+                for(auto& it : v)
+                {
+                        if(it == target) return true;
+                }
+                return false;
+        }
+        bool isResourceOperationSupported() const
+        {
+                if (!workspace) return false;
+                if (!workspace->workspaceEdit)
+                {
+                        return false;
+                }
+                auto& it = (workspace->workspaceEdit.value());
+                if(!it.resourceOperations) return false;
+                const auto& resourceOperations = it.resourceOperations.value();
+                return contains(resourceOperations, "create") && contains(resourceOperations, "rename") && contains(resourceOperations, "delete");
 
-	bool isTagSupported(const boost::optional < std::pair<boost::optional<bool>,
-		boost::optional<DiagnosticsTagSupport> > >& tagSupport) {
-		if(tagSupport)
-		{
-			auto &v = tagSupport.value();
-			if (v.first)
-			{
-				return v.first.value();
-			}
-			if (v.second) {
-				return !v.second.value().valueSet.empty();
-			}
-		}
-		return false;
-	}
+        }
 
-	bool isCallHierarchyDynamicRegistered() {
-		return v3supported && isDynamicRegistrationSupported(textDocument.callHierarchy);
-	}
+        /**
+         * {@code true} if the client has explicitly set the
+         * {@code textDocument.documentSymbol.hierarchicalDocumentSymbolSupport} to
+         * {@code true} when initializing the LS. Otherwise, {@code false}.
+         */
+        bool isHierarchicalDocumentSymbolSupported() {
+                if(!v3supported || !textDocument.documentSymbol) return false;
+                return  isTrue(textDocument.documentSymbol.value().hierarchicalDocumentSymbolSupport);
 
+        }
+
+        bool isSemanticHighlightingSupported() {
+                //@formatter:off
+                if (!v3supported || !textDocument.semanticHighlightingCapabilities) return false;
+                return  isTrue(textDocument.semanticHighlightingCapabilities.value().semanticHighlighting);
+                //@formatter:on
+        }
+
+        /**
+         * {@code true} if the client has explicitly set the
+         * {@code textDocument.codeAction.codeActionLiteralSupport.codeActionKind.valueSet}
+         * value. Otherwise, {@code false}.
+         */
+        bool isSupportedCodeActionKind(const std::string& kind) {
+                if (!v3supported || !textDocument.codeAction) return false;
+                //@formatter:off
+                const auto& codeAction = textDocument.codeAction.value();
+                if(codeAction.codeActionLiteralSupport)
+                {
+                        const auto& codeActionKind = codeAction.codeActionLiteralSupport.value().codeActionKind;
+                        if(codeActionKind)
+                        {
+                                const auto& valueSet = codeActionKind.value().valueSet;
+                                if(valueSet)
+                                {
+                                        for(auto& k : valueSet.value())
+                                        {
+                                                if(lsp::StartsWith(kind,k))
+                                                {
+                                                        return true;
+                                                }
+                                        }
+                                }
+                        }
+                }
+                return false;
+
+                //@formatter:on
+        }
+
+        /**
+         * {@code true} if the client has explicitly set the
+         * {@code textDocument.publishDiagnostics.tagSupport} to
+         * {@code true} when initializing the LS. Otherwise, {@code false}.
+         */
+        bool isDiagnosticTagSupported() {
+                if (!v3supported || !textDocument.publishDiagnostics) return false;
+                const auto& publishDiagnostics = textDocument.publishDiagnostics.value();
+                if(publishDiagnostics.tagSupport)
+                {
+                        isTagSupported(publishDiagnostics.tagSupport);
+                }
+                return false;
+        }
+
+        bool isTagSupported(const boost::optional < std::pair<boost::optional<bool>,
+                boost::optional<DiagnosticsTagSupport> > >& tagSupport) {
+                if(tagSupport)
+                {
+                        auto &v = tagSupport.value();
+                        if (v.first)
+                        {
+                                return v.first.value();
+                        }
+                        if (v.second) {
+                                return !v.second.value().valueSet.empty();
+                        }
+                }
+                return false;
+        }
+
+        bool isCallHierarchyDynamicRegistered() {
+                return v3supported && isDynamicRegistrationSupported(textDocument.callHierarchy);
+        }
+
 };
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/CodeActionParams.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/CodeActionParams.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/CodeActionParams.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,98 +7,98 @@
 #include "LibLsp/lsp/lsCodeAction.h"
 namespace  JDT
 {
-	namespace CodeActionKind {
+        namespace CodeActionKind {
 
 
-		/**
-		 * Base kind for quickfix actions: 'quickfix'
-		 */
-		extern  const char* QuickFix;
+                /**
+                 * Base kind for quickfix actions: 'quickfix'
+                 */
+                extern  const char* QuickFix;
 
-		/**
-		 * Base kind for refactoring actions: 'refactor'
-		 */
-		extern const char* Refactor;
+                /**
+                 * Base kind for refactoring actions: 'refactor'
+                 */
+                extern const char* Refactor;
 
-		/**
-		 * Base kind for refactoring extraction actions: 'refactor.extract'
-		 *
-		 * Example extract actions:
-		 *
-		 * - Extract method - Extract function - Extract variable - Extract interface
-		 * from class - ...
-		 */
-		extern	const char* RefactorExtract;
+                /**
+                 * Base kind for refactoring extraction actions: 'refactor.extract'
+                 *
+                 * Example extract actions:
+                 *
+                 * - Extract method - Extract function - Extract variable - Extract interface
+                 * from class - ...
+                 */
+                extern  const char* RefactorExtract;
 
-		/**
-		 * Base kind for refactoring inline actions: 'refactor.inline'
-		 *
-		 * Example inline actions:
-		 *
-		 * - Inline function - Inline variable - Inline constant - ...
-		 */
-		extern const char* RefactorInline;
+                /**
+                 * Base kind for refactoring inline actions: 'refactor.inline'
+                 *
+                 * Example inline actions:
+                 *
+                 * - Inline function - Inline variable - Inline constant - ...
+                 */
+                extern const char* RefactorInline;
 
-		/**
-		 * Base kind for refactoring rewrite actions: 'refactor.rewrite'
-		 *
-		 * Example rewrite actions:
-		 *
-		 * - Convert JavaScript function to class - Add or remove parameter -
-		 * Encapsulate field - Make method static - Move method to base class - ...
-		 */
-		extern const char* RefactorRewrite;
+                /**
+                 * Base kind for refactoring rewrite actions: 'refactor.rewrite'
+                 *
+                 * Example rewrite actions:
+                 *
+                 * - Convert JavaScript function to class - Add or remove parameter -
+                 * Encapsulate field - Make method static - Move method to base class - ...
+                 */
+                extern const char* RefactorRewrite;
 
-		/**
-		 * Base kind for source actions: `source`
-		 *
-		 * Source code actions apply to the entire file.
-		 */
-		extern const char* Source ;
+                /**
+                 * Base kind for source actions: `source`
+                 *
+                 * Source code actions apply to the entire file.
+                 */
+                extern const char* Source ;
 
-		/**
-		 * Base kind for an organize imports source action: `source.organizeImports`
-		 */
-		extern const char* SourceOrganizeImports;
+                /**
+                 * Base kind for an organize imports source action: `source.organizeImports`
+                 */
+                extern const char* SourceOrganizeImports;
 
-		extern  const char* COMMAND_ID_APPLY_EDIT;
-	};
+                extern  const char* COMMAND_ID_APPLY_EDIT;
+        };
 
 
 }
 struct lsCodeActionContext {
-	// An array of diagnostics.
-	std::vector<lsDiagnostic> diagnostics;
-	/**
-	 * Requested kind of actions to return.
-	 *
-	 * Actions not of this kind are filtered out by the client before being shown. So servers
-	 * can omit computing them.
-	 *
-	 * See {@link CodeActionKind} for allowed values.
-	 */
-	boost::optional<std::vector<std::string>> only;
+        // An array of diagnostics.
+        std::vector<lsDiagnostic> diagnostics;
+        /**
+         * Requested kind of actions to return.
+         *
+         * Actions not of this kind are filtered out by the client before being shown. So servers
+         * can omit computing them.
+         *
+         * See {@link CodeActionKind} for allowed values.
+         */
+        boost::optional<std::vector<std::string>> only;
 
-	MAKE_SWAP_METHOD(lsCodeActionContext,
-		diagnostics, only);
+        MAKE_SWAP_METHOD(lsCodeActionContext,
+                diagnostics, only);
 };
 MAKE_REFLECT_STRUCT(lsCodeActionContext,
-	diagnostics, only);
+        diagnostics, only);
 
 
 // Params for the CodeActionRequest
 struct lsCodeActionParams {
-	// The document in which the command was invoked.
-	lsTextDocumentIdentifier textDocument;
-	// The range for which the command was invoked.
-	lsRange range;
-	// Context carrying additional information.
-	lsCodeActionContext context;
+        // The document in which the command was invoked.
+        lsTextDocumentIdentifier textDocument;
+        // The range for which the command was invoked.
+        lsRange range;
+        // Context carrying additional information.
+        lsCodeActionContext context;
 
-	MAKE_SWAP_METHOD(lsCodeActionParams,
-		textDocument,
-		range,
-		context);
+        MAKE_SWAP_METHOD(lsCodeActionParams,
+                textDocument,
+                range,
+                context);
 };
 MAKE_REFLECT_STRUCT(lsCodeActionParams,
                     textDocument,

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Directory.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Directory.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Directory.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -4,10 +4,10 @@
 struct AbsolutePath;
 
 struct Directory {
-	explicit Directory(const AbsolutePath& path);
+        explicit Directory(const AbsolutePath& path);
 
-	bool operator==(const Directory& rhs) const;
-	bool operator!=(const Directory& rhs) const;
+        bool operator==(const Directory& rhs) const;
+        bool operator!=(const Directory& rhs) const;
 
-	std::string path;
+        std::string path;
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ExecuteCommandParams.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ExecuteCommandParams.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ExecuteCommandParams.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -2,19 +2,19 @@
 
 #include "lsAny.h"
 struct ExecuteCommandParams {
-	/**
-	 * The identifier of the actual command handler.
-	 */
+        /**
+         * The identifier of the actual command handler.
+         */
 
-	std::string command;
+        std::string command;
 
-	/**
-	 * Arguments that the command should be invoked with.
-	 * The arguments are typically specified when a command is returned from the server to the client.
-	 * Example requests that return a command are textDocument/codeAction or textDocument/codeLens.
-	 */
-	boost::optional<std::vector<lsp::Any>>  arguments;
-	
-	MAKE_SWAP_METHOD(ExecuteCommandParams, command, arguments);
+        /**
+         * Arguments that the command should be invoked with.
+         * The arguments are typically specified when a command is returned from the server to the client.
+         * Example requests that return a command are textDocument/codeAction or textDocument/codeLens.
+         */
+        boost::optional<std::vector<lsp::Any>>  arguments;
+
+        MAKE_SWAP_METHOD(ExecuteCommandParams, command, arguments);
 };
 MAKE_REFLECT_STRUCT(ExecuteCommandParams,command,arguments)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/IProgressMonitor.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/IProgressMonitor.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/IProgressMonitor.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -2,7 +2,7 @@
 
 
 #include <string>
-namespace lsp { 
+namespace lsp {
 /**
  * The <code>IProgressMonitor</code> interface is implemented
  * by objects that monitor the progress of an activity; the methods
@@ -36,110 +36,108 @@
  * Clients may implement this interface.
  * </p>
  */
-	class  IProgressMonitor {
-	public:
-		virtual ~IProgressMonitor()
-		{
-		}
+        class  IProgressMonitor {
+        public:
+                virtual ~IProgressMonitor()
+                {
+                }
 
-		/** Constant indicating an unknown amount of work.
-		 */
+                /** Constant indicating an unknown amount of work.
+                 */
 
-		const static int UNKNOWN = -1;
+                const static int UNKNOWN = -1;
 
-	/**
-		* Notifies that the main task is beginning.  This must only be called once
-		* on a given progress monitor instance.
-		*
-		* @param name the name (or description) of the main task
-		* @param totalWork the total number of work units into which
-		*  the main task is been subdivided. If the value is <code>UNKNOWN</code>
-		*  the implemenation is free to indicate progress in a way which
-		*  doesn't require the total number of work units in advance.
-		*/
-		virtual void beginTask(void* , int totalWork)
-		{
+        /**
+                * Notifies that the main task is beginning.  This must only be called once
+                * on a given progress monitor instance.
+                *
+                * @param name the name (or description) of the main task
+                * @param totalWork the total number of work units into which
+                *  the main task is been subdivided. If the value is <code>UNKNOWN</code>
+                *  the implemenation is free to indicate progress in a way which
+                *  doesn't require the total number of work units in advance.
+                */
+                virtual void beginTask(void* , int totalWork)
+                {
 
-		};
-		/**
-		 * Notifies that the work is done; that is, either the main task is completed
-		 * or the user canceled it. This method may be called more than once
-		 * (implementations should be prepared to handle this case).
-		 */
+                };
+                /**
+                 * Notifies that the work is done; that is, either the main task is completed
+                 * or the user canceled it. This method may be called more than once
+                 * (implementations should be prepared to handle this case).
+                 */
 
-		virtual void endTask(void*, int totalWork)
-		{
+                virtual void endTask(void*, int totalWork)
+                {
 
-		}
+                }
 
-		virtual void done(void*) = 0;
+                virtual void done(void*) = 0;
 
-		/**
-		 * Internal method to handle scaling correctly. This method
-		 * must not be called by a client. Clients should
-		 * always use the method </code>worked(int)</code>.
-		 */
-		virtual void internalWorked(double work)
-		{
+                /**
+                 * Internal method to handle scaling correctly. This method
+                 * must not be called by a client. Clients should
+                 * always use the method <code>worked(int)</code>.
+                 */
+                virtual void internalWorked(double work)
+                {
 
-		}
-		/**
-		 * Returns whether cancelation of current operation has been requested.
-		 * Long-running operations should poll to see if cancelation
-		 * has been requested.
-		 *
-		 * @return <code>true</code> if cancellation has been requested,
-		 *    and <code>false</code> otherwise
-		 * @see #setCanceled
-		 */
-		virtual bool isCanceled() = 0;
-		/**
-		 * Sets the cancel state to the given value.
-		 *
-		 * @param value <code>true</code> indicates that cancelation has
-		 *     been requested (but not necessarily acknowledged);
-		 *     <code>false</code> clears this flag
-		 *
-		 * @see #isCanceled
-		 */
-		virtual void setCanceled(bool value) = 0;
-		/**
-		 * Sets the task name to the given value. This method is used to
-		 * restore the task label after a nested operation was executed.
-		 * Normally there is no need for clients to call this method.
-		 *
-		 * @param name the name (or description) of the main task
-		 * @see #beginTask(java.lang.const wstring&, int)
-		 */
-		virtual void setTaskName(void*)
-		{
+                }
+                /**
+                 * Returns whether cancelation of current operation has been requested.
+                 * Long-running operations should poll to see if cancelation
+                 * has been requested.
+                 *
+                 * @return <code>true</code> if cancellation has been requested,
+                 *    and <code>false</code> otherwise
+                 * @see #setCanceled
+                 */
+                virtual bool isCanceled() = 0;
+                /**
+                 * Sets the cancel state to the given value.
+                 *
+                 * @param value <code>true</code> indicates that cancelation has
+                 *     been requested (but not necessarily acknowledged);
+                 *     <code>false</code> clears this flag
+                 *
+                 * @see #isCanceled
+                 */
+                virtual void setCanceled(bool value) = 0;
+                /**
+                 * Sets the task name to the given value. This method is used to
+                 * restore the task label after a nested operation was executed.
+                 * Normally there is no need for clients to call this method.
+                 *
+                 * @param name the name (or description) of the main task
+                 * @see #beginTask(java.lang.const wstring&, int)
+                 */
+                virtual void setTaskName(void*)
+                {
 
-		};
-		/**
-		 * Notifies that a subtask of the main task is beginning.
-		 * Subtasks are optional; the main task might not have subtasks.
-		 *
-		 * @param name the name (or description) of the subtask
-		 */
-		virtual void subTask(void* )
-		{
+                };
+                /**
+                 * Notifies that a subtask of the main task is beginning.
+                 * Subtasks are optional; the main task might not have subtasks.
+                 *
+                 * @param name the name (or description) of the subtask
+                 */
+                virtual void subTask(void* )
+                {
 
-		}
-		/**
-		 * Notifies that a given number of work unit of the main task
-		 * has been completed. Note that this amount represents an
-		 * installment, as opposed to a cumulative amount of work done
-		 * to date.
-		 *
-		 * @param work the number of work units just completed
-		 */
-		virtual void worked(int work)
-		{
+                }
+                /**
+                 * Notifies that a given number of work unit of the main task
+                 * has been completed. Note that this amount represents an
+                 * installment, as opposed to a cumulative amount of work done
+                 * to date.
+                 *
+                 * @param work the number of work units just completed
+                 */
+                virtual void worked(int work)
+                {
 
-		};
-		
-		virtual void catch_exception(void*) = 0;
-	};
+                };
+
+                virtual void catch_exception(void*) = 0;
+        };
 }
-
-

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Markup/Markup.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Markup/Markup.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Markup/Markup.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 #pragma once
-#include <cctype> 
+#include <cctype>
 #include <clocale>
 #include <cstddef>
 #include <memory>
@@ -11,7 +11,7 @@
 
 namespace lsp
 {
-	
+
 /// Holds text and knows how to lay it out. Multiple blocks can be grouped to
 /// form a document. Blocks include their own trailing newlines,  std::string_ref
 /// should trim them if need be.

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Markup/string_ref.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Markup/string_ref.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/Markup/string_ref.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -12,877 +12,877 @@
 namespace std
 {
 
-	/**
-	 * An extension of STL's string providing additional functionality that is often availiable in
-	 * higher-level languages such as Python.
-	 */
-	class string_ref : public string
-	{
-	public:
+        /**
+         * An extension of STL's string providing additional functionality that is often availiable in
+         * higher-level languages such as Python.
+         */
+        class string_ref : public string
+        {
+        public:
 
-		//static unsigned GetAutoSenseRadix(string_ref& Str) {
-		//	if (Str.empty())
-		//		return 10;
+                //static unsigned GetAutoSenseRadix(string_ref& Str) {
+                //      if (Str.empty())
+                //              return 10;
 
-		//	if (Str.start_with("0x") || Str.start_with("0X")) {
-		//		Str = Str.substr(2);
-		//		return 16;
-		//	}
+                //      if (Str.start_with("0x") || Str.start_with("0X")) {
+                //              Str = Str.substr(2);
+                //              return 16;
+                //      }
 
-		//	if (Str.start_with("0b") || Str.start_with("0B")) {
-		//		Str = Str.substr(2);
-		//		return 2;
-		//	}
+                //      if (Str.start_with("0b") || Str.start_with("0B")) {
+                //              Str = Str.substr(2);
+                //              return 2;
+                //      }
 
-		//	if (Str.start_with("0o")) {
-		//		Str = Str.substr(2);
-		//		return 8;
-		//	}
+                //      if (Str.start_with("0o")) {
+                //              Str = Str.substr(2);
+                //              return 8;
+                //      }
 
-		//	if (Str[0] == '0' && Str.size() > 1 && std::isdigit(Str[1])) {
-		//		Str = Str.substr(1);
-		//		return 8;
-		//	}
+                //      if (Str[0] == '0' && Str.size() > 1 && std::isdigit(Str[1])) {
+                //              Str = Str.substr(1);
+                //              return 8;
+                //      }
 
-		//	return 10;
-		//}
+                //      return 10;
+                //}
 
-		//static bool consumeUnsignedInteger(string_ref& Str, unsigned Radix,
-		//	unsigned long long& Result) {
-		//	// Autosense radix if not specified.
-		//	if (Radix == 0)
-		//		Radix = GetAutoSenseRadix(Str);
+                //static bool consumeUnsignedInteger(string_ref& Str, unsigned Radix,
+                //      unsigned long long& Result) {
+                //      // Autosense radix if not specified.
+                //      if (Radix == 0)
+                //              Radix = GetAutoSenseRadix(Str);
 
-		//	// Empty strings (after the radix autosense) are invalid.
-		//	if (Str.empty()) return true;
+                //      // Empty strings (after the radix autosense) are invalid.
+                //      if (Str.empty()) return true;
 
-		//	// Parse all the bytes of the string given this radix.  Watch for overflow.
-		//	string_ref Str2 = Str;
-		//	Result = 0;
-		//	while (!Str2.empty()) {
-		//		unsigned CharVal;
-		//		if (Str2[0] >= '0' && Str2[0] <= '9')
-		//			CharVal = Str2[0] - '0';
-		//		else if (Str2[0] >= 'a' && Str2[0] <= 'z')
-		//			CharVal = Str2[0] - 'a' + 10;
-		//		else if (Str2[0] >= 'A' && Str2[0] <= 'Z')
-		//			CharVal = Str2[0] - 'A' + 10;
-		//		else
-		//			break;
+                //      // Parse all the bytes of the string given this radix.  Watch for overflow.
+                //      string_ref Str2 = Str;
+                //      Result = 0;
+                //      while (!Str2.empty()) {
+                //              unsigned CharVal;
+                //              if (Str2[0] >= '0' && Str2[0] <= '9')
+                //                      CharVal = Str2[0] - '0';
+                //              else if (Str2[0] >= 'a' && Str2[0] <= 'z')
+                //                      CharVal = Str2[0] - 'a' + 10;
+                //              else if (Str2[0] >= 'A' && Str2[0] <= 'Z')
+                //                      CharVal = Str2[0] - 'A' + 10;
+                //              else
+                //                      break;
 
-		//		// If the parsed value is larger than the integer radix, we cannot
-		//		// consume any more characters.
-		//		if (CharVal >= Radix)
-		//			break;
+                //              // If the parsed value is larger than the integer radix, we cannot
+                //              // consume any more characters.
+                //              if (CharVal >= Radix)
+                //                      break;
 
-		//		// Add in this character.
-		//		unsigned long long PrevResult = Result;
-		//		Result = Result * Radix + CharVal;
+                //              // Add in this character.
+                //              unsigned long long PrevResult = Result;
+                //              Result = Result * Radix + CharVal;
 
-		//		// Check for overflow by shifting back and seeing if bits were lost.
-		//		if (Result / Radix < PrevResult)
-		//			return true;
+                //              // Check for overflow by shifting back and seeing if bits were lost.
+                //              if (Result / Radix < PrevResult)
+                //                      return true;
 
-		//		Str2 = Str2.substr(1);
-		//	}
+                //              Str2 = Str2.substr(1);
+                //      }
 
-		//	// We consider the operation a failure if no characters were consumed
-		//	// successfully.
-		//	if (Str.size() == Str2.size())
-		//		return true;
+                //      // We consider the operation a failure if no characters were consumed
+                //      // successfully.
+                //      if (Str.size() == Str2.size())
+                //              return true;
 
-		//	Str = Str2;
-		//	return false;
-		//}
+                //      Str = Str2;
+                //      return false;
+                //}
 
-		//static bool consumeSignedInteger(string_ref& Str, unsigned Radix,
-		//	long long& Result) {
-		//	unsigned long long ULLVal;
+                //static bool consumeSignedInteger(string_ref& Str, unsigned Radix,
+                //      long long& Result) {
+                //      unsigned long long ULLVal;
 
-		//	// Handle positive strings first.
-		//	if (Str.empty() || Str.front() != '-') {
-		//		if (consumeUnsignedInteger(Str, Radix, ULLVal) ||
-		//			// Check for value so large it overflows a signed value.
-		//			(long long)ULLVal < 0)
-		//			return true;
-		//		Result = ULLVal;
-		//		return false;
-		//	}
+                //      // Handle positive strings first.
+                //      if (Str.empty() || Str.front() != '-') {
+                //              if (consumeUnsignedInteger(Str, Radix, ULLVal) ||
+                //                      // Check for value so large it overflows a signed value.
+                //                      (long long)ULLVal < 0)
+                //                      return true;
+                //              Result = ULLVal;
+                //              return false;
+                //      }
 
-		//	// Get the positive part of the value.
-		//	string_ref Str2 = Str.drop_front(1);
-		//	if (consumeUnsignedInteger(Str2, Radix, ULLVal) ||
-		//		// Reject values so large they'd overflow as negative signed, but allow
-		//		// "-0".  This negates the unsigned so that the negative isn't undefined
-		//		// on signed overflow.
-		//		(long long)-ULLVal > 0)
-		//		return true;
+                //      // Get the positive part of the value.
+                //      string_ref Str2 = Str.drop_front(1);
+                //      if (consumeUnsignedInteger(Str2, Radix, ULLVal) ||
+                //              // Reject values so large they'd overflow as negative signed, but allow
+                //              // "-0".  This negates the unsigned so that the negative isn't undefined
+                //              // on signed overflow.
+                //              (long long)-ULLVal > 0)
+                //              return true;
 
-		//	Str = Str2;
-		//	Result = -ULLVal;
-		//	return false;
-		//}
+                //      Str = Str2;
+                //      Result = -ULLVal;
+                //      return false;
+                //}
 
-		///// GetAsUnsignedInteger - Workhorse method that converts a integer character
-		///// sequence of radix up to 36 to an unsigned long long value.
-		//static	bool getAsUnsignedInteger(string_ref Str, unsigned Radix,
-		//	unsigned long long& Result) {
-		//	if (consumeUnsignedInteger(Str, Radix, Result))
-		//		return true;
+                ///// GetAsUnsignedInteger - Workhorse method that converts a integer character
+                ///// sequence of radix up to 36 to an unsigned long long value.
+                //static        bool getAsUnsignedInteger(string_ref Str, unsigned Radix,
+                //      unsigned long long& Result) {
+                //      if (consumeUnsignedInteger(Str, Radix, Result))
+                //              return true;
 
-		//	// For getAsUnsignedInteger, we require the whole string to be consumed or
-		//	// else we consider it a failure.
-		//	return !Str.empty();
-		//}
+                //      // For getAsUnsignedInteger, we require the whole string to be consumed or
+                //      // else we consider it a failure.
+                //      return !Str.empty();
+                //}
 
-		//static  bool getAsSignedInteger(string_ref Str, unsigned Radix,
-		//	long long& Result) {
-		//	if (consumeSignedInteger(Str, Radix, Result))
-		//		return true;
+                //static  bool getAsSignedInteger(string_ref Str, unsigned Radix,
+                //      long long& Result) {
+                //      if (consumeSignedInteger(Str, Radix, Result))
+                //              return true;
 
-		//	// For getAsSignedInteger, we require the whole string to be consumed or else
-		//	// we consider it a failure.
-		//	return !Str.empty();
-		//}
+                //      // For getAsSignedInteger, we require the whole string to be consumed or else
+                //      // we consider it a failure.
+                //      return !Str.empty();
+                //}
 
 
-		///// Parse the current string as an integer of the specified radix.  If
-		///// \p Radix is specified as zero, this does radix autosensing using
-		///// extended C rules: 0 is octal, 0x is hex, 0b is binary.
-		/////
-		///// If the string is invalid or if only a subset of the string is valid,
-		///// this returns true to signify the error.  The string is considered
-		///// erroneous if empty or if it overflows T.
-		//template <typename T>
-		//std::enable_if_t<std::numeric_limits<T>::is_signed, bool>
-		//	getAsInteger(unsigned Radix, T& Result) const {
-		//	long long LLVal;
-		//	if (getAsSignedInteger(*this, Radix, LLVal) ||
-		//		static_cast<T>(LLVal) != LLVal)
-		//		return true;
-		//	Result = LLVal;
-		//	return false;
-		//}
+                ///// Parse the current string as an integer of the specified radix.  If
+                ///// \p Radix is specified as zero, this does radix autosensing using
+                ///// extended C rules: 0 is octal, 0x is hex, 0b is binary.
+                /////
+                ///// If the string is invalid or if only a subset of the string is valid,
+                ///// this returns true to signify the error.  The string is considered
+                ///// erroneous if empty or if it overflows T.
+                //template <typename T>
+                //std::enable_if_t<std::numeric_limits<T>::is_signed, bool>
+                //      getAsInteger(unsigned Radix, T& Result) const {
+                //      long long LLVal;
+                //      if (getAsSignedInteger(*this, Radix, LLVal) ||
+                //              static_cast<T>(LLVal) != LLVal)
+                //              return true;
+                //      Result = LLVal;
+                //      return false;
+                //}
 
-		//template <typename T>
-		//std::enable_if_t<!std::numeric_limits<T>::is_signed, bool>
-		//	getAsInteger(unsigned Radix, T& Result) const {
-		//	unsigned long long ULLVal;
-		//	// The additional cast to unsigned long long is required to avoid the
-		//	// Visual C++ warning C4805: '!=' : unsafe mix of type 'bool' and type
-		//	// 'unsigned __int64' when instantiating getAsInteger with T = bool.
-		//	if (getAsUnsignedInteger(*this, Radix, ULLVal) ||
-		//		static_cast<unsigned long long>(static_cast<T>(ULLVal)) != ULLVal)
-		//		return true;
-		//	Result = ULLVal;
-		//	return false;
-		//}
+                //template <typename T>
+                //std::enable_if_t<!std::numeric_limits<T>::is_signed, bool>
+                //      getAsInteger(unsigned Radix, T& Result) const {
+                //      unsigned long long ULLVal;
+                //      // The additional cast to unsigned long long is required to avoid the
+                //      // Visual C++ warning C4805: '!=' : unsafe mix of type 'bool' and type
+                //      // 'unsigned __int64' when instantiating getAsInteger with T = bool.
+                //      if (getAsUnsignedInteger(*this, Radix, ULLVal) ||
+                //              static_cast<unsigned long long>(static_cast<T>(ULLVal)) != ULLVal)
+                //              return true;
+                //      Result = ULLVal;
+                //      return false;
+                //}
 
 
-		
-		/**`
-		 * Default constructor
-		 *
-		 * Constructs an empty string_ref ("")
-		 */
-		string_ref() : string() { }
 
-		/**
-		 * Duplicate the STL string copy constructor
-		 *
-		 * @param[in] s   The string to copy
-		 * @param[in] pos The starting position in the string to copy from
-		 * @param[in] n   The number of characters to copy
-		 */
-		string_ref(const string &s, size_type pos = 0, size_type n = npos) : string(s, pos, npos) { }
+                /**`
+                 * Default constructor
+                 *
+                 * Constructs an empty string_ref ("")
+                 */
+                string_ref() : string() { }
 
-		/**
-		 * Construct an string_ref from a null-terminated character array
-		 *
-		 * @param[in] s The character array to copy into the new string
-		 */
-		string_ref(const value_type *s) : string(s) { }
+                /**
+                 * Duplicate the STL string copy constructor
+                 *
+                 * @param[in] s   The string to copy
+                 * @param[in] pos The starting position in the string to copy from
+                 * @param[in] n   The number of characters to copy
+                 */
+                string_ref(const string &s, size_type pos = 0, size_type n = npos) : string(s, pos, npos) { }
 
-		/**
-		 * Construct an string_ref from a character array and a length
-		 *
-		 * @param[in] s The character array to copy into the new string
-		 * @param[in] n The number of characters to copy
-		 */
-		string_ref(const value_type *s, size_type n) : string(s, n) { }
+                /**
+                 * Construct an string_ref from a null-terminated character array
+                 *
+                 * @param[in] s The character array to copy into the new string
+                 */
+                string_ref(const value_type *s) : string(s) { }
 
-		/**
-		 * Create an string_ref with @p n copies of @p c
-		 *
-		 * @param[in] n The number of copies
-		 * @param[in] c The character to copy @p n times
-		 */
-		string_ref(size_type n, value_type c) : string(n, c) { }
+                /**
+                 * Construct an string_ref from a character array and a length
+                 *
+                 * @param[in] s The character array to copy into the new string
+                 * @param[in] n The number of characters to copy
+                 */
+                string_ref(const value_type *s, size_type n) : string(s, n) { }
 
-		/**
-		 * Create a string from a range
-		 *
-		 * @param[in] first The first element to copy in
-		 * @param[in] last  The last element to copy in
-		 */
-		template <class InputIterator>
-			string_ref(InputIterator first, InputIterator last) : string(first, last) { }
+                /**
+                 * Create an string_ref with @p n copies of @p c
+                 *
+                 * @param[in] n The number of copies
+                 * @param[in] c The character to copy @p n times
+                 */
+                string_ref(size_type n, value_type c) : string(n, c) { }
 
-		/**
-		 * The destructor
-		 */
-		~string_ref() { }
+                /**
+                 * Create a string from a range
+                 *
+                 * @param[in] first The first element to copy in
+                 * @param[in] last  The last element to copy in
+                 */
+                template <class InputIterator>
+                        string_ref(InputIterator first, InputIterator last) : string(first, last) { }
 
-		/**
-		 * Split a string by whitespace
-		 *
-		 * @return A vector of strings, each of which is a substring of the string
-		 */
-		vector<string_ref> split(size_type limit = npos) const
-		{
-			vector<string_ref> v;
+                /**
+                 * The destructor
+                 */
+                ~string_ref() { }
 
-			const_iterator 
-				i = begin(),
-				  last = i;
-			for (; i != end(); i++)
-			{
-				if (*i == ' ' || *i == '\n' || *i == '\t' || *i == '\r')
-				{
-					if (i + 1 != end() && (i[1] == ' ' || i[1] == '\n' || i[1] == '\t' || i[1] == '\r'))
-						continue;
-					v.push_back(string_ref(last, i));
-					last = i + 1;
-					if (v.size() >= limit - 1)
-					{
-						v.push_back(string_ref(last, end()));
-						return v;
-					}
-				}
-			}
+                /**
+                 * Split a string by whitespace
+                 *
+                 * @return A vector of strings, each of which is a substring of the string
+                 */
+                vector<string_ref> split(size_type limit = npos) const
+                {
+                        vector<string_ref> v;
 
-			if (last != i)
-				v.push_back(string_ref(last, i));
+                        const_iterator
+                                i = begin(),
+                                  last = i;
+                        for (; i != end(); i++)
+                        {
+                                if (*i == ' ' || *i == '\n' || *i == '\t' || *i == '\r')
+                                {
+                                        if (i + 1 != end() && (i[1] == ' ' || i[1] == '\n' || i[1] == '\t' || i[1] == '\r'))
+                                                continue;
+                                        v.push_back(string_ref(last, i));
+                                        last = i + 1;
+                                        if (v.size() >= limit - 1)
+                                        {
+                                                v.push_back(string_ref(last, end()));
+                                                return v;
+                                        }
+                                }
+                        }
 
-			return v;
-		}
+                        if (last != i)
+                                v.push_back(string_ref(last, i));
 
-		/**
-		 * Split a string by a character
-		 *
-		 * Returns a vector of ext_strings, each of which is a substring of the string formed by splitting
-		 * it on boundaries formed by the character @p separator.  If @p limit is set, the returned vector
-		 * will contain a maximum of @p limit elements with the last element containing the rest of
-		 * the string.
-		 *
-		 * If @p separator is not found in the string, a single element will be returned in the vector
-		 * containing the entire string.
-		 *
-		 * The separators are removed from the output
-		 *
-		 * @param[in] separator The character separator to split the string on
-		 * @param[in] limit     The maximum number of output elements
-		 * @return A vector of strings, each of which is a substring of the string
-		 *
-		 * @section split_ex Example
-		 * @code
-		 * std::string_ref s("This|is|a|test.");
-		 * std::vector<std::string_ref> v = s.split('|');
-		 * std::copy(v.begin(), v.end(), std::ostream_iterator<std::string_ref>(std::cout, "\n"));
-		 *
-		 * This
-		 * is
-		 * a
-		 * test.
-		 * @endcode
-		 */
-		vector<string_ref> split(value_type separator, size_type limit = npos) const
-		{
-			vector<string_ref> v;
+                        return v;
+                }
 
-			const_iterator 
-				i = begin(),
-				last = i;
-			for (; i != end(); i++)
-			{
-				if (*i == separator)
-				{
-					v.push_back(string_ref(last, i));
-					last = i + 1;
-					if (v.size() >= limit - 1)
-					{
-						v.push_back(string_ref(last, end()));
-						return v;
-					}
-				}
-			}
+                /**
+                 * Split a string by a character
+                 *
+                 * Returns a vector of ext_strings, each of which is a substring of the string formed by splitting
+                 * it on boundaries formed by the character @p separator.  If @p limit is set, the returned vector
+                 * will contain a maximum of @p limit elements with the last element containing the rest of
+                 * the string.
+                 *
+                 * If @p separator is not found in the string, a single element will be returned in the vector
+                 * containing the entire string.
+                 *
+                 * The separators are removed from the output
+                 *
+                 * @param[in] separator The character separator to split the string on
+                 * @param[in] limit     The maximum number of output elements
+                 * @return A vector of strings, each of which is a substring of the string
+                 *
+                 * @section split_ex Example
+                 * @code
+                 * std::string_ref s("This|is|a|test.");
+                 * std::vector<std::string_ref> v = s.split('|');
+                 * std::copy(v.begin(), v.end(), std::ostream_iterator<std::string_ref>(std::cout, "\n"));
+                 *
+                 * This
+                 * is
+                 * a
+                 * test.
+                 * @endcode
+                 */
+                vector<string_ref> split(value_type separator, size_type limit = npos) const
+                {
+                        vector<string_ref> v;
 
-			if (last != i)
-				v.push_back(string_ref(last, i));
+                        const_iterator
+                                i = begin(),
+                                last = i;
+                        for (; i != end(); i++)
+                        {
+                                if (*i == separator)
+                                {
+                                        v.push_back(string_ref(last, i));
+                                        last = i + 1;
+                                        if (v.size() >= limit - 1)
+                                        {
+                                                v.push_back(string_ref(last, end()));
+                                                return v;
+                                        }
+                                }
+                        }
 
-			return v;
-		}
+                        if (last != i)
+                                v.push_back(string_ref(last, i));
 
-		/**
-		 * Split a string by another string
-		 *
-		 * Returns a vector of ext_strings, each of which is a substring of the string formed by
-		 * splitting it on boundaries formed by the string @p separator.  If @p limit is set, the
-		 * returned vector will contain a maximum of @p limit elements with the last element
-		 * containing the rest of the string.
-		 *
-		 * If @p separator is not found in the string, a single element will be returned in the
-		 * vector containing the entire string.
-		 *
-		 * The separators are removed from the output
-		 *
-		 * @param[in] separator The string separator to split the string on
-		 * @param[in] limit     The maximum number of output elements
-		 * @return A vector of strings, each of which is a substring of the string
-		 *
-		 * @ref split_ex
-		 */
-		vector<string_ref> split(const string &separator, size_type limit = npos) const
-		{
-			vector<string_ref> v;
+                        return v;
+                }
 
-			const_iterator
-				i = begin(),
-				last = i;
-			for (; i != end(); i++)
-			{
-				if (string(i, i + separator.length()) == separator)
-				{
-					v.push_back(string_ref(last, i));
-					last = i + separator.length();
+                /**
+                 * Split a string by another string
+                 *
+                 * Returns a vector of ext_strings, each of which is a substring of the string formed by
+                 * splitting it on boundaries formed by the string @p separator.  If @p limit is set, the
+                 * returned vector will contain a maximum of @p limit elements with the last element
+                 * containing the rest of the string.
+                 *
+                 * If @p separator is not found in the string, a single element will be returned in the
+                 * vector containing the entire string.
+                 *
+                 * The separators are removed from the output
+                 *
+                 * @param[in] separator The string separator to split the string on
+                 * @param[in] limit     The maximum number of output elements
+                 * @return A vector of strings, each of which is a substring of the string
+                 *
+                 * @ref split_ex
+                 */
+                vector<string_ref> split(const string &separator, size_type limit = npos) const
+                {
+                        vector<string_ref> v;
 
-					if (v.size() >= limit - 1)
-					{
-						v.push_back(string_ref(last, end()));
-						return v;
-					}
-				}
-			}
+                        const_iterator
+                                i = begin(),
+                                last = i;
+                        for (; i != end(); i++)
+                        {
+                                if (string(i, i + separator.length()) == separator)
+                                {
+                                        v.push_back(string_ref(last, i));
+                                        last = i + separator.length();
 
-			if (last != i)
-				v.push_back(string_ref(last, i));
+                                        if (v.size() >= limit - 1)
+                                        {
+                                                v.push_back(string_ref(last, end()));
+                                                return v;
+                                        }
+                                }
+                        }
 
-			return v;
-		}
+                        if (last != i)
+                                v.push_back(string_ref(last, i));
 
-		/**
-		 * Convert a string into an integer
-		 *
-		 * Convert the initial portion of a string into a signed integer.  Once a non-numeric
-		 * character is reached, the remainder of @p string is ignored and the integer that was
-		 * read returned.
-		 *
-		 * @param s The string to convert
-		 * @return The integer converted from @p string
-		 */
-		static long int integer(const string &s)
-		{
-			long int retval = 0;
-			bool neg = false;
+                        return v;
+                }
 
-			for (const_iterator i = s.begin(); i != s.end(); i++)
-			{
-				if (i == s.begin())
-				{
-					if (*i == '-')
-					{
-						neg = true;
-						continue;
-					}
-					else if (*i == '+')
-						continue;
-				}
-				if (*i >= '0' && *i <= '9')
-				{
-					retval *= 10;
-					retval += *i - '0';
-				}
-				else
-					break;
-			}
+                /**
+                 * Convert a string into an integer
+                 *
+                 * Convert the initial portion of a string into a signed integer.  Once a non-numeric
+                 * character is reached, the remainder of @p string is ignored and the integer that was
+                 * read returned.
+                 *
+                 * @param s The string to convert
+                 * @return The integer converted from @p string
+                 */
+                static long int integer(const string &s)
+                {
+                        long int retval = 0;
+                        bool neg = false;
 
-			if (neg)
-				retval *= -1;
+                        for (const_iterator i = s.begin(); i != s.end(); i++)
+                        {
+                                if (i == s.begin())
+                                {
+                                        if (*i == '-')
+                                        {
+                                                neg = true;
+                                                continue;
+                                        }
+                                        else if (*i == '+')
+                                                continue;
+                                }
+                                if (*i >= '0' && *i <= '9')
+                                {
+                                        retval *= 10;
+                                        retval += *i - '0';
+                                }
+                                else
+                                        break;
+                        }
 
-			return retval;
-		}
+                        if (neg)
+                                retval *= -1;
 
-		/**
-		 * Convert the string to an integer
-		 *
-		 * Convert the initial portion of the string into a signed integer.  Once a non-numeric
-		 * character is reached, the remainder of the string is ignored and the integer that had
-		 * been read thus far is returned.
-		 *
-		 * @return The integer converted from the string
-		 */
-		long int integer() const
-		{
-			return integer(*this);
-		}
+                        return retval;
+                }
 
-		/**
-		 * Split a string into chunks of size @p chunklen.  Returns a vector of strings.
-		 *
-		 * Splits a string into chunks of the given size.  The final chunk may not fill its
-		 * entire allocated number of characters.
-		 *
-		 * @param[in] chunklen The number of characters per chunk
-		 * @return A vector of strings, each of length <= chunklen
-		 *
-		 * @section chunk_split-ex Example
-		 * @code
-		 * std::string_ref s("abcdefghijk");
-		 * std::vector<std::string_ref> v = s.chunk_split(3);
-		 * std::copy(v.begin(), v.end(), ostream_iterator<std::string_ref>(cout, " "));
-		 *
-		 * abc def ghi jk
-		 * @endcode
-		 */
-		vector<string_ref> chunk_split(size_type chunklen) const
-		{
-			vector<string_ref> retval;
-			retval.reserve(size() / chunklen + 1);
+                /**
+                 * Convert the string to an integer
+                 *
+                 * Convert the initial portion of the string into a signed integer.  Once a non-numeric
+                 * character is reached, the remainder of the string is ignored and the integer that had
+                 * been read thus far is returned.
+                 *
+                 * @return The integer converted from the string
+                 */
+                long int integer() const
+                {
+                        return integer(*this);
+                }
 
-			size_type count = 0;
-			const_iterator
-				i = begin(),
-				last = i;
-			for (; i != end(); i++, count++)
-			{
-				if (count == chunklen)
-				{
-					count = 0;
-					retval.push_back(string_ref(last, i));
-					last = i;
-				}
-			}
-			
-			if (last != i)
-				retval.push_back(string_ref(last, i));
+                /**
+                 * Split a string into chunks of size @p chunklen.  Returns a vector of strings.
+                 *
+                 * Splits a string into chunks of the given size.  The final chunk may not fill its
+                 * entire allocated number of characters.
+                 *
+                 * @param[in] chunklen The number of characters per chunk
+                 * @return A vector of strings, each of length <= chunklen
+                 *
+                 * @section chunk_split-ex Example
+                 * @code
+                 * std::string_ref s("abcdefghijk");
+                 * std::vector<std::string_ref> v = s.chunk_split(3);
+                 * std::copy(v.begin(), v.end(), ostream_iterator<std::string_ref>(cout, " "));
+                 *
+                 * abc def ghi jk
+                 * @endcode
+                 */
+                vector<string_ref> chunk_split(size_type chunklen) const
+                {
+                        vector<string_ref> retval;
+                        retval.reserve(size() / chunklen + 1);
 
-			return retval;
-		}
+                        size_type count = 0;
+                        const_iterator
+                                i = begin(),
+                                last = i;
+                        for (; i != end(); i++, count++)
+                        {
+                                if (count == chunklen)
+                                {
+                                        count = 0;
+                                        retval.push_back(string_ref(last, i));
+                                        last = i;
+                                }
+                        }
 
-		/**
-		 * Join a sequence of strings by some glue to create a new string
-		 *
-		 * Glue is not added to the end of the string.
-		 *
-		 * @pre [first, last) is a valid range
-		 * @pre InputIterator is a model of STL's Input Iterator
-		 * @pre InputIterator must point to a string type (std::string, std::string_ref, char *)
-		 *
-		 * @param[in] glue  The glue to join strings with
-		 * @param[in] first The beginning of the range to join
-		 * @param[in] last  The end of the range to join
-		 * @return A string constructed of each element of the range connected together with @p glue
-		 *
-		 * @section join_ex Example
-		 * @code
-		 * std::vector<std::string_ref> v;
-		 * v.push_back("This");
-		 * v.push_back("is");
-		 * v.push_back("a");
-		 * v.push_back("test.");
-		 * std::cout << std::string_ref::join("|", v.begin(), v.end()) << std::endl;
-		 *
-		 * This|is|a|test.
-		 * @endcode
-		 */
-		template <class InputIterator>
-			static string_ref join(const string &glue, InputIterator first, InputIterator last)
-			{
-				string_ref retval;
+                        if (last != i)
+                                retval.push_back(string_ref(last, i));
 
-				for (; first != last; ++first)
-				{
-					retval.append(*first);
-					retval.append(glue);
-				}
-				retval.erase(retval.length() - glue.length());
+                        return retval;
+                }
 
-				return retval;
-			}
+                /**
+                 * Join a sequence of strings by some glue to create a new string
+                 *
+                 * Glue is not added to the end of the string.
+                 *
+                 * @pre [first, last) is a valid range
+                 * @pre InputIterator is a model of STL's Input Iterator
+                 * @pre InputIterator must point to a string type (std::string, std::string_ref, char *)
+                 *
+                 * @param[in] glue  The glue to join strings with
+                 * @param[in] first The beginning of the range to join
+                 * @param[in] last  The end of the range to join
+                 * @return A string constructed of each element of the range connected together with @p glue
+                 *
+                 * @section join_ex Example
+                 * @code
+                 * std::vector<std::string_ref> v;
+                 * v.push_back("This");
+                 * v.push_back("is");
+                 * v.push_back("a");
+                 * v.push_back("test.");
+                 * std::cout << std::string_ref::join("|", v.begin(), v.end()) << std::endl;
+                 *
+                 * This|is|a|test.
+                 * @endcode
+                 */
+                template <class InputIterator>
+                        static string_ref join(const string &glue, InputIterator first, InputIterator last)
+                        {
+                                string_ref retval;
 
-		/**
-		 * Join a sequence of strings by some glue to create a new string
-		 *
-		 * @copydoc join
-		 * @ref join_ex
-		 */
-		template <class InputIterator>
-			static string_ref join(value_type glue, InputIterator first, InputIterator last)
-			{
-				string_ref retval;
+                                for (; first != last; ++first)
+                                {
+                                        retval.append(*first);
+                                        retval.append(glue);
+                                }
+                                retval.erase(retval.length() - glue.length());
 
-				for (; first != last; ++first)
-				{
-					retval.append(*first);
-					retval.append(1, glue);
-				}
-				retval.erase(retval.length() - 1);
+                                return retval;
+                        }
 
-				return retval;
-			}
+                /**
+                 * Join a sequence of strings by some glue to create a new string
+                 *
+                 * @copydoc join
+                 * @ref join_ex
+                 */
+                template <class InputIterator>
+                        static string_ref join(value_type glue, InputIterator first, InputIterator last)
+                        {
+                                string_ref retval;
 
-		/**
-		 * Search for any instances of @p needle and replace them with @p s
-		 *
-		 * @param[in] needle The string to replace
-		 * @param[in] s      The replacement string
-		 * @return				*this
-		 * @post					All instances of @p needle in the string are replaced with @p s
-		 *
-		 * @section replace-ex Example
-		 * @code
-		 * std::string_ref s("This is a test.");
-		 * s.replace("is", "ere");
-		 * std::cout << s << std::endl;
-		 *
-		 * There ere a test.
-		 * @endcode
-		 */
-		string_ref &replace(const string &needle, const string &s)
-		{
-			size_type
-				lastpos = 0,
-				thispos;
+                                for (; first != last; ++first)
+                                {
+                                        retval.append(*first);
+                                        retval.append(1, glue);
+                                }
+                                retval.erase(retval.length() - 1);
 
-			while ((thispos = find(needle, lastpos)) != npos)
-			{
-				string::replace(thispos, needle.length(), s);
-				lastpos = thispos + 1;
-			}
-			return *this;
-		}
-		string_ref &replace_first(const string &needle, const string &s)
-		{
-			size_type
-				lastpos = 0,
-				thispos;
+                                return retval;
+                        }
 
-			if ((thispos = find(needle, lastpos)) != npos)
-			{
-				string::replace(thispos, needle.length(), s);
-				lastpos = thispos + 1;
-			}
-			return *this;
-		}
-		/**
-		 * Search of any instances of @p needle and replace them with @p c
-		 *
-		 * @param[in] needle The character to replace
-		 * @param[in] c      The replacement character
-		 * @return           *this
-		 * @post             All instances of @p needle in the string are replaced with @p c
-		 *
-		 * @ref replace-ex
-		 */
-		string_ref &replace(value_type needle, value_type c)
-		{
-			for (iterator i = begin(); i != end(); i++)
-				if (*i == needle)
-					*i = c;
+                /**
+                 * Search for any instances of @p needle and replace them with @p s
+                 *
+                 * @param[in] needle The string to replace
+                 * @param[in] s      The replacement string
+                 * @return                              *this
+                 * @post                                        All instances of @p needle in the string are replaced with @p s
+                 *
+                 * @section replace-ex Example
+                 * @code
+                 * std::string_ref s("This is a test.");
+                 * s.replace("is", "ere");
+                 * std::cout << s << std::endl;
+                 *
+                 * There ere a test.
+                 * @endcode
+                 */
+                string_ref &replace(const string &needle, const string &s)
+                {
+                        size_type
+                                lastpos = 0,
+                                thispos;
 
-			return *this;
-		}
+                        while ((thispos = find(needle, lastpos)) != npos)
+                        {
+                                string::replace(thispos, needle.length(), s);
+                                lastpos = thispos + 1;
+                        }
+                        return *this;
+                }
+                string_ref &replace_first(const string &needle, const string &s)
+                {
+                        size_type
+                                lastpos = 0,
+                                thispos;
 
-		/**
-		 * Repeat a string @p n times
-		 *
-		 * @param[in] n The number of times to repeat the string
-		 * @return string_ref containing @p n copies of the string
-		 *
-		 * @section repeat-ex Example
-		 * @code
-		 * std::string_ref s("123");
-		 * s = s * 3;
-		 * std::cout << s << std::endl;
-		 *
-		 * 123123123
-		 * @endcode
-		 */
-		string_ref operator*(size_type n)
-		{
-			string_ref retval;
-			for (size_type i = 0; i < n; i++)
-				retval.append(*this);
+                        if ((thispos = find(needle, lastpos)) != npos)
+                        {
+                                string::replace(thispos, needle.length(), s);
+                                lastpos = thispos + 1;
+                        }
+                        return *this;
+                }
+                /**
+                 * Search of any instances of @p needle and replace them with @p c
+                 *
+                 * @param[in] needle The character to replace
+                 * @param[in] c      The replacement character
+                 * @return           *this
+                 * @post             All instances of @p needle in the string are replaced with @p c
+                 *
+                 * @ref replace-ex
+                 */
+                string_ref &replace(value_type needle, value_type c)
+                {
+                        for (iterator i = begin(); i != end(); i++)
+                                if (*i == needle)
+                                        *i = c;
 
-			return retval;
-		}
+                        return *this;
+                }
 
-		/**
-		 * Convert the string to lowercase
-		 *
-		 * @return *this
-		 * @post The string is converted to lowercase
-		 */
-		string_ref &tolower()
-		{
-			for (iterator i = begin(); i != end(); i++)
-				if (*i >= 'A' && *i <= 'Z')
-					*i = (*i) + ('a' - 'A');
-			return *this;
-		}
+                /**
+                 * Repeat a string @p n times
+                 *
+                 * @param[in] n The number of times to repeat the string
+                 * @return string_ref containing @p n copies of the string
+                 *
+                 * @section repeat-ex Example
+                 * @code
+                 * std::string_ref s("123");
+                 * s = s * 3;
+                 * std::cout << s << std::endl;
+                 *
+                 * 123123123
+                 * @endcode
+                 */
+                string_ref operator*(size_type n)
+                {
+                        string_ref retval;
+                        for (size_type i = 0; i < n; i++)
+                                retval.append(*this);
 
-		/**
-		 * Convert the string to uppercase
-		 *
-		 * @return *this
-		 * @post The string is converted to uppercase
-		 */
-		string_ref &toupper()
-		{
-			for (iterator i = begin(); i != end(); i++)
-				if (*i >= 'a' && *i <= 'z')
-					*i = (*i) - ('a' - 'A');
-			return *this;
-		}
+                        return retval;
+                }
 
-		/**
-		 * Count the occurances of @p str in the string.
-		 *
-		 * @return The count of substrings @p str in the string
-		 */
-		size_type count(const string &str) const
-		{
-			size_type
-				count = 0,
-				last = 0,
-				cur = 0;
+                /**
+                 * Convert the string to lowercase
+                 *
+                 * @return *this
+                 * @post The string is converted to lowercase
+                 */
+                string_ref &tolower()
+                {
+                        for (iterator i = begin(); i != end(); i++)
+                                if (*i >= 'A' && *i <= 'Z')
+                                        *i = (*i) + ('a' - 'A');
+                        return *this;
+                }
 
-			while ((cur = find(str, last + 1)) != npos)
-			{
-				count++;
-				last = cur;
-			}
+                /**
+                 * Convert the string to uppercase
+                 *
+                 * @return *this
+                 * @post The string is converted to uppercase
+                 */
+                string_ref &toupper()
+                {
+                        for (iterator i = begin(); i != end(); i++)
+                                if (*i >= 'a' && *i <= 'z')
+                                        *i = (*i) - ('a' - 'A');
+                        return *this;
+                }
 
-			return count;
-		}
+                /**
+                 * Count the occurances of @p str in the string.
+                 *
+                 * @return The count of substrings @p str in the string
+                 */
+                size_type count(const string &str) const
+                {
+                        size_type
+                                count = 0,
+                                last = 0,
+                                cur = 0;
 
-		/**
-		 * Determine if the string is alphanumeric
-		 *
-		 * @return true if the string contains only characters between a-z, A-Z and 0-9 and
-		 * contains at least one character, else false
-		 */
-		bool is_alnum() const
-		{
-			if (length() == 0)
-				return false;
+                        while ((cur = find(str, last + 1)) != npos)
+                        {
+                                count++;
+                                last = cur;
+                        }
 
-			for (const_iterator i = begin(); i != end(); i++)
-			{
-				if (*i < 'A' || *i > 'Z')
-					if (*i < '0' || *i > '9')
-						if (*i < 'a' || *i > 'z')
-							return false;
-			}
+                        return count;
+                }
 
-			return true;
-		}
+                /**
+                 * Determine if the string is alphanumeric
+                 *
+                 * @return true if the string contains only characters between a-z, A-Z and 0-9 and
+                 * contains at least one character, else false
+                 */
+                bool is_alnum() const
+                {
+                        if (length() == 0)
+                                return false;
 
-		/**
-		 * Determine if the string is alphabetic only
-		 *
-		 * @return true of the string contains only characters between a-z and A-Z and contains at
-		 * least one character, else false
-		 */
-		bool is_alpha() const
-		{
-			if (length() == 0)
-				return false;
+                        for (const_iterator i = begin(); i != end(); i++)
+                        {
+                                if (*i < 'A' || *i > 'Z')
+                                        if (*i < '0' || *i > '9')
+                                                if (*i < 'a' || *i > 'z')
+                                                        return false;
+                        }
 
-			for (const_iterator i = begin(); i != end(); i++)
-				if (*i < 'A' || (*i > 'Z' && (*i < 'a' || *i > 'z')))
-					return false;
+                        return true;
+                }
 
-			return true;
-		}
+                /**
+                 * Determine if the string is alphabetic only
+                 *
+                 * @return true of the string contains only characters between a-z and A-Z and contains at
+                 * least one character, else false
+                 */
+                bool is_alpha() const
+                {
+                        if (length() == 0)
+                                return false;
 
-		/**
-		 * Determine if the string is numeric only
-		 *
-		 * @return true if the string contains only characters between 0-9 and contains at least
-		 * one character, else false
-		 */
-		bool is_numeric() const
-		{
-			if (length() == 0)
-				return false;
+                        for (const_iterator i = begin(); i != end(); i++)
+                                if (*i < 'A' || (*i > 'Z' && (*i < 'a' || *i > 'z')))
+                                        return false;
 
-			for (const_iterator i = begin(); i != end(); i++)
-				if (*i < '0' || *i > '9')
-					return false;
+                        return true;
+                }
 
-			return true;
-		}
+                /**
+                 * Determine if the string is numeric only
+                 *
+                 * @return true if the string contains only characters between 0-9 and contains at least
+                 * one character, else false
+                 */
+                bool is_numeric() const
+                {
+                        if (length() == 0)
+                                return false;
 
-		/**
-		 * Determine if a string is all lower case
-		 *
-		 * @return true if there is at least one character, and all characters are lowercase
-		 * letters, else false
-		 */
-		bool is_lower() const
-		{
-			if (length() == 0)
-				return false;
+                        for (const_iterator i = begin(); i != end(); i++)
+                                if (*i < '0' || *i > '9')
+                                        return false;
 
-			for (const_iterator i = begin(); i != end(); i++)
-				if (*i < 'a' || *i < 'z')
-					return false;
+                        return true;
+                }
 
-			return true;
-		}
+                /**
+                 * Determine if a string is all lower case
+                 *
+                 * @return true if there is at least one character, and all characters are lowercase
+                 * letters, else false
+                 */
+                bool is_lower() const
+                {
+                        if (length() == 0)
+                                return false;
 
-		/**
-		 * Determine if a string is all upper case
-		 *
-		 * @return true if there is at least one character, and all characters are uppercase
-		 * letters, else false
-		 */
-		bool is_upper() const
-		{
-			if (length() == 0)
-				return false;
+                        for (const_iterator i = begin(); i != end(); i++)
+                                if (*i < 'a' || *i < 'z')
+                                        return false;
 
-			for (const_iterator i = begin(); i != end(); i++)
-				if (*i < 'A' || *i > 'Z')
-					return false;
+                        return true;
+                }
 
-			return true;
-		}
+                /**
+                 * Determine if a string is all upper case
+                 *
+                 * @return true if there is at least one character, and all characters are uppercase
+                 * letters, else false
+                 */
+                bool is_upper() const
+                {
+                        if (length() == 0)
+                                return false;
 
-		/**
-		 * Swap the case of a string
-		 *
-		 * @post Converts all uppercase to lowercase, and all lowercase to uppercase in the string
-		 * @return *this
-		 */
-		string_ref &swapcase()
-		{
-			for (iterator i = begin(); i != end(); i++)
-				if (*i >= 'A' && *i <= 'Z')
-					*i += ('a' - 'A');
-				else if (*i >= 'a' && *i <= 'z')
-					*i -= ('a' - 'A');
-			
-			return *this;
-		}
+                        for (const_iterator i = begin(); i != end(); i++)
+                                if (*i < 'A' || *i > 'Z')
+                                        return false;
 
-		/*******************************************************************************
-			Function:	std::string_ref::start_with
-			Access:		public 
-			Qualifier:	const
-			Parameter:	const string & str			
-			Returns:	bool		
-		
-			Purpose:	is the string start with str
-		*******************************************************************************/
-		bool start_with(const string& str) const
-		{
-			return ( this->find(str) == 0 );
-		}
+                        return true;
+                }
 
-		/// Return a string_ref equal to 'this' but with only the last \p N
-		/// elements remaining.  If \p N is greater than the length of the
-		/// string, the entire string is returned.
-		
-		string_ref take_back(size_t N = 1) const {
-			if (N >= size())
-				return *this;
-			return drop_front(size() - N);
-		}
-		/// Return a string_ref equal to 'this' but with the first \p N elements
-		/// dropped.
-		
-		string_ref drop_front(size_t N = 1) const {
-			//assert(size() >= N && "Dropping more elements than exist");
-			return substr(N);
-		}
+                /**
+                 * Swap the case of a string
+                 *
+                 * @post Converts all uppercase to lowercase, and all lowercase to uppercase in the string
+                 * @return *this
+                 */
+                string_ref &swapcase()
+                {
+                        for (iterator i = begin(); i != end(); i++)
+                                if (*i >= 'A' && *i <= 'Z')
+                                        *i += ('a' - 'A');
+                                else if (*i >= 'a' && *i <= 'z')
+                                        *i -= ('a' - 'A');
 
+                        return *this;
+                }
 
+                /*******************************************************************************
+                        Function:       std::string_ref::start_with
+                        Access:         public
+                        Qualifier:      const
+                        Parameter:      const string & str
+                        Returns:        bool
 
-		/// Return a string_ref equal to 'this' but with the last \p N elements
-		/// dropped.
-		
-		string_ref drop_back(size_t N = 1) const {
-		
-			return substr(0, size() - N);
-		}
+                        Purpose:        is the string start with str
+                *******************************************************************************/
+                bool start_with(const string& str) const
+                {
+                        return ( this->find(str) == 0 );
+                }
 
-		/// Return a string_ref equal to 'this', but with all characters satisfying
-		/// the given predicate dropped from the beginning of the string.
-		
-		string_ref drop_while(std::function<bool(char)> F) const {
-			return substr(std::find_if_not(begin(),end(),F)-begin());
-		}
+                /// Return a string_ref equal to 'this' but with only the last \p N
+                /// elements remaining.  If \p N is greater than the length of the
+                /// string, the entire string is returned.
 
-		/// Return a string_ref equal to 'this', but with all characters not
-		/// satisfying the given predicate dropped from the beginning of the string.
-		
-			string_ref drop_until(std::function<bool(char)> F) const {
-			return substr(std::find_if(begin(), end(), F) - begin());
-		}
+                string_ref take_back(size_t N = 1) const {
+                        if (N >= size())
+                                return *this;
+                        return drop_front(size() - N);
+                }
+                /// Return a string_ref equal to 'this' but with the first \p N elements
+                /// dropped.
 
-		/// Returns true if this string_ref has the given prefix and removes that
-		/// prefix.
-		bool consume_front(string_ref Prefix) {
-			if (!start_with(Prefix))
-				return false;
+                string_ref drop_front(size_t N = 1) const {
+                        //assert(size() >= N && "Dropping more elements than exist");
+                        return substr(N);
+                }
 
-			*this = drop_front(Prefix.size());
-			return true;
-		}
 
-		/// Returns true if this string_ref has the given suffix and removes that
-		/// suffix.
-		bool consume_back(string_ref Suffix) {
-			if (!end_with(Suffix))
-				return false;
 
-			*this = drop_back(Suffix.size());
-			return true;
-		}
+                /// Return a string_ref equal to 'this' but with the last \p N elements
+                /// dropped.
 
-		/*******************************************************************************
-			Function:	std::string_ref::end_with
-			Access:		public 
-			Qualifier:	const
-			Parameter:	const string & str			
-			Returns:	bool		
-		
-			Purpose:	is the string end with str
-		*******************************************************************************/
-		bool end_with(const string& str) const
-		{
-			if (str.length() > this->length())
-			{
-				return false;
-			}
-			size_type off = this->length() - str.length();
-			return ( find(str, off) == off);
-		}
+                string_ref drop_back(size_t N = 1) const {
 
-		/*******************************************************************************
-			Function:	hl_lib::string_ref::format
-			Access:		public 
-			Qualifier:	
-			Parameter:	const char * format_string
-			Parameter:	...
-			Returns:	string_ref&
-			
-			Purpose:	format the string
-		*******************************************************************************/
-		string_ref& format(const char* format_string, ...)
-		{
+                        return substr(0, size() - N);
+                }
+
+                /// Return a string_ref equal to 'this', but with all characters satisfying
+                /// the given predicate dropped from the beginning of the string.
+
+                string_ref drop_while(std::function<bool(char)> F) const {
+                        return substr(std::find_if_not(begin(),end(),F)-begin());
+                }
+
+                /// Return a string_ref equal to 'this', but with all characters not
+                /// satisfying the given predicate dropped from the beginning of the string.
+
+                        string_ref drop_until(std::function<bool(char)> F) const {
+                        return substr(std::find_if(begin(), end(), F) - begin());
+                }
+
+                /// Returns true if this string_ref has the given prefix and removes that
+                /// prefix.
+                bool consume_front(string_ref Prefix) {
+                        if (!start_with(Prefix))
+                                return false;
+
+                        *this = drop_front(Prefix.size());
+                        return true;
+                }
+
+                /// Returns true if this string_ref has the given suffix and removes that
+                /// suffix.
+                bool consume_back(string_ref Suffix) {
+                        if (!end_with(Suffix))
+                                return false;
+
+                        *this = drop_back(Suffix.size());
+                        return true;
+                }
+
+                /*******************************************************************************
+                        Function:       std::string_ref::end_with
+                        Access:         public
+                        Qualifier:      const
+                        Parameter:      const string & str
+                        Returns:        bool
+
+                        Purpose:        is the string end with str
+                *******************************************************************************/
+                bool end_with(const string& str) const
+                {
+                        if (str.length() > this->length())
+                        {
+                                return false;
+                        }
+                        size_type off = this->length() - str.length();
+                        return ( find(str, off) == off);
+                }
+
+                /*******************************************************************************
+                        Function:       hl_lib::string_ref::format
+                        Access:         public
+                        Qualifier:
+                        Parameter:      const char * format_string
+                        Parameter:      ...
+                        Returns:        string_ref&
+
+                        Purpose:        format the string
+                *******************************************************************************/
+                string_ref& format(const char* format_string, ...)
+                {
             if (format_string == 0)
             {
                 return *this;
@@ -912,150 +912,150 @@
 #endif
             va_end( argList );
             return *this;
-		}
+                }
 
-		/*******************************************************************************
-			Function:	hl_lib::string_ref::trim_left
-			Access:		public 
-			Qualifier:	
-			Parameter:	value_type ch
-			Returns:	string_ref&
-			
-			Purpose:	delete all char which is ch at the left of the string
-		*******************************************************************************/
-		string_ref& trim_left(value_type ch = ' ')
-		{
-			size_type off = this->find_first_not_of(ch);
-			if (off != string::npos)
-			{
-				this->erase(0, off);
-			}
-			return *this;
-		}
+                /*******************************************************************************
+                        Function:       hl_lib::string_ref::trim_left
+                        Access:         public
+                        Qualifier:
+                        Parameter:      value_type ch
+                        Returns:        string_ref&
 
-		/*******************************************************************************
-			Function:	hl_lib::string_ref::trim_right
-			Access:		public 
-			Qualifier:	
-			Parameter:	value_type ch
-			Returns:	string_ref&
-			
-			Purpose:	delete all char which is ch at the right of the string
-		*******************************************************************************/
-		string_ref& trim_right(value_type ch = ' ')
-		{
-			size_type off = this->find_last_not_of(ch);
-			if (off == string::npos)
-			{
-				off = 0;
-			}
-			else
-			{
-				off++;
-			}
-			this->erase(off, length() - off);
-			return *this;
-		}
+                        Purpose:        delete all char which is ch at the left of the string
+                *******************************************************************************/
+                string_ref& trim_left(value_type ch = ' ')
+                {
+                        size_type off = this->find_first_not_of(ch);
+                        if (off != string::npos)
+                        {
+                                this->erase(0, off);
+                        }
+                        return *this;
+                }
 
-		/*******************************************************************************
-			Function:	hl_lib::string_ref::trim
-			Access:		public 
-			Qualifier:	
-			Parameter:	value_type ch
-			Returns:	string_ref&
-			
-			Purpose:	delete all char which is ch at the left and right of the string
-		*******************************************************************************/
-		string_ref& trim(value_type ch = ' ')
-		{
-			trim_left(ch);
-			trim_right(ch);
-			return *this;
-		}
+                /*******************************************************************************
+                        Function:       hl_lib::string_ref::trim_right
+                        Access:         public
+                        Qualifier:
+                        Parameter:      value_type ch
+                        Returns:        string_ref&
 
-		/*******************************************************************************
-			Function:	hl_lib::string_ref::float_num
-			Access:		public static 
-			Qualifier:	
-			Parameter:	const string & str
-			Returns:	double
-			
-			Purpose:	parse str to a float number
-		*******************************************************************************/
-		static double float_num(const string& str)
-		{
-			return atof(str.c_str());
-		}
+                        Purpose:        delete all char which is ch at the right of the string
+                *******************************************************************************/
+                string_ref& trim_right(value_type ch = ' ')
+                {
+                        size_type off = this->find_last_not_of(ch);
+                        if (off == string::npos)
+                        {
+                                off = 0;
+                        }
+                        else
+                        {
+                                off++;
+                        }
+                        this->erase(off, length() - off);
+                        return *this;
+                }
 
-		/*******************************************************************************
-			Function:	hl_lib::string_ref::float_num
-			Access:		public static 
-			Qualifier:	
-			Returns:	double
-			
-			Purpose:	parse this to a float number
-		*******************************************************************************/
-		double float_num() const
-		{
-			return float_num(*this);
-		}
+                /*******************************************************************************
+                        Function:       hl_lib::string_ref::trim
+                        Access:         public
+                        Qualifier:
+                        Parameter:      value_type ch
+                        Returns:        string_ref&
 
-		/*******************************************************************************
-			Function:	hl_lib::string_ref::compare_nocase
-			Access:		public 
-			Qualifier:	const
-			Parameter:	const string & str
-			Returns:	int
-			
-			Purpose:	compare string no case
-		*******************************************************************************/
-		int compare_nocase(const string& str) const
-		{
+                        Purpose:        delete all char which is ch at the left and right of the string
+                *******************************************************************************/
+                string_ref& trim(value_type ch = ' ')
+                {
+                        trim_left(ch);
+                        trim_right(ch);
+                        return *this;
+                }
+
+                /*******************************************************************************
+                        Function:       hl_lib::string_ref::float_num
+                        Access:         public static
+                        Qualifier:
+                        Parameter:      const string & str
+                        Returns:        double
+
+                        Purpose:        parse str to a float number
+                *******************************************************************************/
+                static double float_num(const string& str)
+                {
+                        return atof(str.c_str());
+                }
+
+                /*******************************************************************************
+                        Function:       hl_lib::string_ref::float_num
+                        Access:         public static
+                        Qualifier:
+                        Returns:        double
+
+                        Purpose:        parse this to a float number
+                *******************************************************************************/
+                double float_num() const
+                {
+                        return float_num(*this);
+                }
+
+                /*******************************************************************************
+                        Function:       hl_lib::string_ref::compare_nocase
+                        Access:         public
+                        Qualifier:      const
+                        Parameter:      const string & str
+                        Returns:        int
+
+                        Purpose:        compare string no case
+                *******************************************************************************/
+                int compare_nocase(const string& str) const
+                {
 #ifdef _WIN32
-			return _stricmp(this->c_str(), str.c_str());
+                        return _stricmp(this->c_str(), str.c_str());
 #else
-		    return strcasecmp(this->c_str(), str.c_str());
+                    return strcasecmp(this->c_str(), str.c_str());
 #endif
-		}
+                }
 
-		/*******************************************************************************
-			Function:	hl_lib::string_ref::compare_nocase
-			Access:		public 
-			Qualifier:	const
-			Parameter:	size_type index
-			Parameter:	size_type length
-			Parameter:	const string & str
-			Returns:	int
-			
-			Purpose:	compare substring no case
-		*******************************************************************************/
-		int compare_nocase( size_type index, size_type length, const string &str ) const
-		{
-			string_ref temp = this->substr(index, length);
-			return temp.compare_nocase(str);
-		}
+                /*******************************************************************************
+                        Function:       hl_lib::string_ref::compare_nocase
+                        Access:         public
+                        Qualifier:      const
+                        Parameter:      size_type index
+                        Parameter:      size_type length
+                        Parameter:      const string & str
+                        Returns:        int
 
-		/*******************************************************************************
-			Function:	hl_lib::string_ref::compare_nocase
-			Access:		public 
-			Qualifier:	const
-			Parameter:	size_type index
-			Parameter:	size_type length
-			Parameter:	const string & str
-			Parameter:	size_type index2
-			Parameter:	size_type length2
-			Returns:	int
-			
-			Purpose:	compare two substring no case
-		*******************************************************************************/
-		int compare_nocase( size_type index, size_type length, const string &str, size_type index2,	size_type length2) const
-		{
-			string_ref temp1 = this->substr(index, length);
-			string_ref temp2 = str.substr(index2, length2);
-			return temp1.compare_nocase(temp2);
-		}
+                        Purpose:        compare substring no case
+                *******************************************************************************/
+                int compare_nocase( size_type index, size_type length, const string &str ) const
+                {
+                        string_ref temp = this->substr(index, length);
+                        return temp.compare_nocase(str);
+                }
 
-	};
+                /*******************************************************************************
+                        Function:       hl_lib::string_ref::compare_nocase
+                        Access:         public
+                        Qualifier:      const
+                        Parameter:      size_type index
+                        Parameter:      size_type length
+                        Parameter:      const string & str
+                        Parameter:      size_type index2
+                        Parameter:      size_type length2
+                        Returns:        int
 
+                        Purpose:        compare two substring no case
+                *******************************************************************************/
+                int compare_nocase( size_type index, size_type length, const string &str, size_type index2,     size_type length2) const
+                {
+                        string_ref temp1 = this->substr(index, length);
+                        string_ref temp2 = str.substr(index2, length2);
+                        return temp1.compare_nocase(temp2);
+                }
+
+        };
+
 }
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ParentProcessWatcher.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ParentProcessWatcher.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ParentProcessWatcher.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,12 +6,12 @@
 class ParentProcessWatcher
 {
 public:
-	struct ParentProcessWatcherData;
+        struct ParentProcessWatcherData;
 
-	ParentProcessWatcher(lsp::Log& log, int pid, const std::function<void()>&& callback, uint32_t  poll_delay_secs = 10);
+        ParentProcessWatcher(lsp::Log& log, int pid, const std::function<void()>&& callback, uint32_t  poll_delay_secs = 10);
 
-	~ParentProcessWatcher();
+        ~ParentProcessWatcher();
 
-	std::shared_ptr<ParentProcessWatcherData>  d_ptr;
+        std::shared_ptr<ParentProcessWatcherData>  d_ptr;
 };
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ProcessIoService.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ProcessIoService.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ProcessIoService.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -4,45 +4,45 @@
 
 namespace lsp
 {
-	class ProcessIoService
-	{
-	public:
-		using IOService = boost::asio::io_service;
-		using Work = boost::asio::io_service::work;
-		using WorkPtr = std::unique_ptr<Work>;
+        class ProcessIoService
+        {
+        public:
+                using IOService = boost::asio::io_service;
+                using Work = boost::asio::io_service::work;
+                using WorkPtr = std::unique_ptr<Work>;
 
-		ProcessIoService() {
+                ProcessIoService() {
 
-			work_ = std::unique_ptr<Work>(new Work(ioService_));
-			auto temp_thread_ = new std::thread([this]
-				{
-					ioService_.run();
-				});
-			thread_ = std::unique_ptr<std::thread>(temp_thread_);
-		}
+                        work_ = std::unique_ptr<Work>(new Work(ioService_));
+                        auto temp_thread_ = new std::thread([this]
+                                {
+                                        ioService_.run();
+                                });
+                        thread_ = std::unique_ptr<std::thread>(temp_thread_);
+                }
 
-		ProcessIoService(const ProcessIoService&) = delete;
-		ProcessIoService& operator=(const ProcessIoService&) = delete;
+                ProcessIoService(const ProcessIoService&) = delete;
+                ProcessIoService& operator=(const ProcessIoService&) = delete;
 
-		boost::asio::io_service& getIOService()
-		{
-			return ioService_;
-		}
+                boost::asio::io_service& getIOService()
+                {
+                        return ioService_;
+                }
 
-		void stop()
-		{
+                void stop()
+                {
 
-			work_.reset();
+                        work_.reset();
 
-			thread_->join();
+                        thread_->join();
 
-		}
+                }
 
-	private:
-		IOService       ioService_;
-		WorkPtr        work_;
-		std::unique_ptr<std::thread>    thread_;
+        private:
+                IOService       ioService_;
+                WorkPtr        work_;
+                std::unique_ptr<std::thread>    thread_;
 
-	};
+        };
 
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ProtocolJsonHandler.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ProtocolJsonHandler.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ProtocolJsonHandler.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -2,10 +2,10 @@
 
 #include "LibLsp/JsonRpc/MessageJsonHandler.h"
 namespace lsp {
-	class ProtocolJsonHandler : public MessageJsonHandler
-	{
-	public:
-		ProtocolJsonHandler();
-	};
+        class ProtocolJsonHandler : public MessageJsonHandler
+        {
+        public:
+                ProtocolJsonHandler();
+        };
 
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ResourceOperation.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ResourceOperation.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/ResourceOperation.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,116 +6,116 @@
 #include "LibLsp/lsp/lsAny.h"
 #include "LibLsp/lsp/lsTextEdit.h"
 struct ResourceOperation {
-	std::string kind;
-	virtual  ~ResourceOperation() = default;
-	
-	MAKE_SWAP_METHOD(ResourceOperation, kind);
+        std::string kind;
+        virtual  ~ResourceOperation() = default;
+
+        MAKE_SWAP_METHOD(ResourceOperation, kind);
 };
 MAKE_REFLECT_STRUCT(ResourceOperation, kind);
 extern void Reflect(Writer& visitor, ResourceOperation* value);
 struct CreateFileOptions{
 
-	/**
-	 * Overwrite existing file. Overwrite wins over `ignoreIfExists`
-	 */
-	boost::optional<bool>  overwrite = false;
+        /**
+         * Overwrite existing file. Overwrite wins over `ignoreIfExists`
+         */
+        boost::optional<bool>  overwrite = false;
 
-	/**
-	 * Ignore if exists.
-	 */
-	boost::optional< bool> ignoreIfExists =false;
-	
-	MAKE_SWAP_METHOD(CreateFileOptions, overwrite, ignoreIfExists)
+        /**
+         * Ignore if exists.
+         */
+        boost::optional< bool> ignoreIfExists =false;
+
+        MAKE_SWAP_METHOD(CreateFileOptions, overwrite, ignoreIfExists)
 };
 MAKE_REFLECT_STRUCT(CreateFileOptions, overwrite, ignoreIfExists)
 struct lsCreateFile :public ResourceOperation {
 
-	/**
-	 * The resource to create.
-	 */
-	lsCreateFile();
-	lsDocumentUri uri;
+        /**
+         * The resource to create.
+         */
+        lsCreateFile();
+        lsDocumentUri uri;
 
-	/**
-	 * Additional options
-	 */
-	boost::optional<CreateFileOptions>  options;
+        /**
+         * Additional options
+         */
+        boost::optional<CreateFileOptions>  options;
 
 
-	/**
-	 * An optional annotation identifer describing the operation.
-	 *
-	 * @since 3.16.0
-	 */
-	boost::optional<lsChangeAnnotationIdentifier> annotationId;
-	
-	MAKE_SWAP_METHOD(lsCreateFile, kind, uri, options, annotationId)
+        /**
+         * An optional annotation identifer describing the operation.
+         *
+         * @since 3.16.0
+         */
+        boost::optional<lsChangeAnnotationIdentifier> annotationId;
+
+        MAKE_SWAP_METHOD(lsCreateFile, kind, uri, options, annotationId)
 };
 MAKE_REFLECT_STRUCT(lsCreateFile, kind, uri,options, annotationId)
 
 
 struct DeleteFileOptions {
-	/**
-	 * Delete the content recursively if a folder is denoted.
-	 */
-	boost::optional<bool>  recursive = false;
+        /**
+         * Delete the content recursively if a folder is denoted.
+         */
+        boost::optional<bool>  recursive = false;
 
-	/**
-	 * Ignore the operation if the file doesn't exist.
-	 */
-	boost::optional<bool> ignoreIfNotExists = false;
+        /**
+         * Ignore the operation if the file doesn't exist.
+         */
+        boost::optional<bool> ignoreIfNotExists = false;
 
 
-	MAKE_SWAP_METHOD(DeleteFileOptions, recursive, ignoreIfNotExists);
+        MAKE_SWAP_METHOD(DeleteFileOptions, recursive, ignoreIfNotExists);
 };
 
 MAKE_REFLECT_STRUCT(DeleteFileOptions, recursive, ignoreIfNotExists)
 
 struct lsDeleteFile :public ResourceOperation {
-	/**
-	 * The file to delete.
-	 */
-	lsDeleteFile();
-	lsDocumentUri uri;
+        /**
+         * The file to delete.
+         */
+        lsDeleteFile();
+        lsDocumentUri uri;
 
-	/**
-	 * Delete options.
-	 */
-	boost::optional<DeleteFileOptions>  options;
+        /**
+         * Delete options.
+         */
+        boost::optional<DeleteFileOptions>  options;
 
-	MAKE_SWAP_METHOD(lsDeleteFile, kind, uri, options);
+        MAKE_SWAP_METHOD(lsDeleteFile, kind, uri, options);
 };
 MAKE_REFLECT_STRUCT(lsDeleteFile, kind, uri,options);
 
 typedef  CreateFileOptions RenameFileOptions;
 struct lsRenameFile :public ResourceOperation {
-	/**
-	 * The old (existing) location.
-	 */
-	lsRenameFile();
-	lsDocumentUri oldUri;
+        /**
+         * The old (existing) location.
+         */
+        lsRenameFile();
+        lsDocumentUri oldUri;
 
-	/**
-	 * The new location.
-	 */
+        /**
+         * The new location.
+         */
 
-	lsDocumentUri newUri;
+        lsDocumentUri newUri;
 
-	/**
-	 * Rename options.
-	 */
-	boost::optional<RenameFileOptions>  options;
+        /**
+         * Rename options.
+         */
+        boost::optional<RenameFileOptions>  options;
 
-	/**
-	 * An optional annotation identifer describing the operation.
-	 *
-	 * @since 3.16.0
-	 */
-	boost::optional<lsChangeAnnotationIdentifier> annotationId;
-	
-	MAKE_SWAP_METHOD(lsRenameFile, kind, oldUri, newUri, options, annotationId)
+        /**
+         * An optional annotation identifer describing the operation.
+         *
+         * @since 3.16.0
+         */
+        boost::optional<lsChangeAnnotationIdentifier> annotationId;
+
+        MAKE_SWAP_METHOD(lsRenameFile, kind, oldUri, newUri, options, annotationId)
 };
 MAKE_REFLECT_STRUCT(lsRenameFile, kind, oldUri, newUri, options, annotationId);
 
 
-extern  ResourceOperation* GetResourceOperation(lsp::Any& lspAny);
\ No newline at end of file
+extern  ResourceOperation* GetResourceOperation(lsp::Any& lspAny);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/SimpleTimer.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/SimpleTimer.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/SimpleTimer.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,7 +9,7 @@
 {
 public:
     SimpleTimer(unsigned int duration,const std::function<void()>& _call_back)
-	:is_running_(true), call_back(_call_back), _deadline_timer(_ios, Duration(duration))
+        :is_running_(true), call_back(_call_back), _deadline_timer(_ios, Duration(duration))
     {
         _deadline_timer.async_wait([&](const boost::system::error_code& e)
         {

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/client/registerCapability.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/client/registerCapability.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/client/registerCapability.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,20 +7,20 @@
  */
 
 struct Registration {
-	static  Registration Create(const std::string& method);
-	/**
-	 * The id used to register the request. The id can be used to deregister
-	 * the request again.
-	 */
-	std::string id;
+        static  Registration Create(const std::string& method);
+        /**
+         * The id used to register the request. The id can be used to deregister
+         * the request again.
+         */
+        std::string id;
 
-	/**
-	 * The method / capability to register for.
-	 */
+        /**
+         * The method / capability to register for.
+         */
 
-	std::string method;
-	
-	MAKE_SWAP_METHOD(Registration, id, method);
+        std::string method;
+
+        MAKE_SWAP_METHOD(Registration, id, method);
 };
 
 
@@ -35,8 +35,8 @@
  */
 struct RegistrationParams
 {
-	std::vector<Registration> registrations;
-	MAKE_SWAP_METHOD(RegistrationParams, registrations);
+        std::vector<Registration> registrations;
+        MAKE_SWAP_METHOD(RegistrationParams, registrations);
 };
 /**
  * The client/registerCapability request is sent from the server to the client
@@ -46,4 +46,4 @@
  */
 MAKE_REFLECT_STRUCT(RegistrationParams, registrations);
 
-DEFINE_REQUEST_RESPONSE_TYPE(Req_ClientRegisterCapability, RegistrationParams,JsonNull, "client/registerCapability");
\ No newline at end of file
+DEFINE_REQUEST_RESPONSE_TYPE(Req_ClientRegisterCapability, RegistrationParams,JsonNull, "client/registerCapability");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/client/unregisterCapability.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/client/unregisterCapability.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/client/unregisterCapability.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -10,20 +10,20 @@
  */
 
 struct Unregistration {
-	/**
-	 * The id used to unregister the request or notification. Usually an id
-	 * provided during the register request.
-	 */
+        /**
+         * The id used to unregister the request or notification. Usually an id
+         * provided during the register request.
+         */
 
-	std::string id;
+        std::string id;
 
-	/**
-	 * The method / capability to unregister for.
-	 */
+        /**
+         * The method / capability to unregister for.
+         */
 
-	std::string method;
-	
-	MAKE_SWAP_METHOD(Unregistration, id, method);
+        std::string method;
+
+        MAKE_SWAP_METHOD(Unregistration, id, method);
 };
 MAKE_REFLECT_STRUCT(Unregistration, id, method);
 /**
@@ -32,10 +32,10 @@
  */
 struct UnregistrationParams
 {
-	std::vector<Unregistration> unregisterations;
-	MAKE_SWAP_METHOD(UnregistrationParams, unregisterations);
+        std::vector<Unregistration> unregisterations;
+        MAKE_SWAP_METHOD(UnregistrationParams, unregisterations);
 };
 
 MAKE_REFLECT_STRUCT(UnregistrationParams, unregisterations);
 
-DEFINE_REQUEST_RESPONSE_TYPE(Req_ClientUnregisterCapability, UnregistrationParams,JsonNull, "client/unregisterCapability");
\ No newline at end of file
+DEFINE_REQUEST_RESPONSE_TYPE(Req_ClientUnregisterCapability, UnregistrationParams,JsonNull, "client/unregisterCapability");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/OverridableMethod.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/OverridableMethod.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/OverridableMethod.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -4,31 +4,31 @@
 #include <string>
 struct OverridableMethod
 {
-	std::string bindingKey;
-	std::string name;
-	std::vector<std::string> parameters;
-	bool unimplemented = false;
-	std::string declaringClass;
-	std::string declaringClassType;
+        std::string bindingKey;
+        std::string name;
+        std::vector<std::string> parameters;
+        bool unimplemented = false;
+        std::string declaringClass;
+        std::string declaringClassType;
 
-	void swap(OverridableMethod& arg) noexcept
-	{
-		bindingKey.swap(arg.bindingKey);
-		name.swap(arg.name);
-		parameters.swap(arg.parameters);
-		declaringClass.swap(arg.declaringClass);
-		declaringClassType.swap(arg.declaringClassType);
-		std::swap(unimplemented, arg.unimplemented);
-	}
+        void swap(OverridableMethod& arg) noexcept
+        {
+                bindingKey.swap(arg.bindingKey);
+                name.swap(arg.name);
+                parameters.swap(arg.parameters);
+                declaringClass.swap(arg.declaringClass);
+                declaringClassType.swap(arg.declaringClassType);
+                std::swap(unimplemented, arg.unimplemented);
+        }
 };
 MAKE_REFLECT_STRUCT(OverridableMethod, bindingKey, name, parameters, unimplemented, declaringClass, declaringClassType);
 
 struct  OverridableMethodsResponse
 {
-	std::string type;
-	std::vector<OverridableMethod> methods;
+        std::string type;
+        std::vector<OverridableMethod> methods;
 
-	MAKE_SWAP_METHOD(OverridableMethodsResponse, type, methods)
+        MAKE_SWAP_METHOD(OverridableMethodsResponse, type, methods)
 };
 
 MAKE_REFLECT_STRUCT(OverridableMethodsResponse, type, methods)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/WorkspaceSymbolParams.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/WorkspaceSymbolParams.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/WorkspaceSymbolParams.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,8 +6,8 @@
 
 struct  WorkspaceSymbolParams
 {
-	std::string query;
-	MAKE_SWAP_METHOD(WorkspaceSymbolParams, query);
+        std::string query;
+        MAKE_SWAP_METHOD(WorkspaceSymbolParams, query);
 };
 MAKE_REFLECT_STRUCT(WorkspaceSymbolParams, query);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/addOverridableMethods.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/addOverridableMethods.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/addOverridableMethods.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,10 +6,10 @@
 #include "LibLsp/JsonRpc/RequestInMessage.h"
 #include "LibLsp/JsonRpc/lsResponseMessage.h"
 struct AddOverridableMethodParams {
-	lsCodeActionParams context;
-	std::vector<OverridableMethod> overridableMethods;
+        lsCodeActionParams context;
+        std::vector<OverridableMethod> overridableMethods;
 
-	MAKE_SWAP_METHOD(AddOverridableMethodParams, context, overridableMethods);
+        MAKE_SWAP_METHOD(AddOverridableMethodParams, context, overridableMethods);
 };
 
 MAKE_REFLECT_STRUCT(AddOverridableMethodParams, context, overridableMethods);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/buildWorkspace.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/buildWorkspace.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/buildWorkspace.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -10,8 +10,8 @@
 
 enum class  BuildWorkspaceStatus : uint8_t{
 
-	FAILED, SUCCEED, WITH_ERROR, CANCELLED,
+        FAILED, SUCCEED, WITH_ERROR, CANCELLED,
 };
 MAKE_REFLECT_TYPE_PROXY(BuildWorkspaceStatus)
 
-DEFINE_REQUEST_RESPONSE_TYPE(java_buildWorkspace, bool, BuildWorkspaceStatus, "java/buildWorkspace");
\ No newline at end of file
+DEFINE_REQUEST_RESPONSE_TYPE(java_buildWorkspace, bool, BuildWorkspaceStatus, "java/buildWorkspace");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkConstructorsStatus.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkConstructorsStatus.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkConstructorsStatus.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,19 +6,19 @@
 #include "checkHashCodeEqualsStatus.h"
 
 struct  LspMethodBinding {
-	 std::string bindingKey;
-	 std::string name;
-	std::vector< std::string> parameters;
+         std::string bindingKey;
+         std::string name;
+        std::vector< std::string> parameters;
 
-	MAKE_SWAP_METHOD(LspMethodBinding, bindingKey, name, parameters);
+        MAKE_SWAP_METHOD(LspMethodBinding, bindingKey, name, parameters);
 };
 MAKE_REFLECT_STRUCT(LspMethodBinding, bindingKey, name, parameters);
 
 
 struct CheckConstructorsResponse {
-	std::vector<LspMethodBinding> constructors;
-	std::vector<LspVariableBinding>  fields;
-	MAKE_SWAP_METHOD(CheckConstructorsResponse, constructors, fields)
+        std::vector<LspMethodBinding> constructors;
+        std::vector<LspVariableBinding>  fields;
+        MAKE_SWAP_METHOD(CheckConstructorsResponse, constructors, fields)
 };
 MAKE_REFLECT_STRUCT(CheckConstructorsResponse, constructors,fields)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkDelegateMethodsStatus.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkDelegateMethodsStatus.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkDelegateMethodsStatus.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,22 +8,22 @@
 #include "checkConstructorsStatus.h"
 
 struct  LspDelegateField {
-	LspVariableBinding field;
-	std::vector<LspMethodBinding> delegateMethods;
+        LspVariableBinding field;
+        std::vector<LspMethodBinding> delegateMethods;
 
-	MAKE_SWAP_METHOD(LspDelegateField, field, delegateMethods);
+        MAKE_SWAP_METHOD(LspDelegateField, field, delegateMethods);
 };
 MAKE_REFLECT_STRUCT(LspDelegateField, field, delegateMethods);
 
 
 struct CheckDelegateMethodsResponse {
-	std::vector<LspDelegateField> delegateFields;
+        std::vector<LspDelegateField> delegateFields;
 
-	MAKE_SWAP_METHOD(CheckDelegateMethodsResponse, delegateFields)
+        MAKE_SWAP_METHOD(CheckDelegateMethodsResponse, delegateFields)
 };
 MAKE_REFLECT_STRUCT(CheckDelegateMethodsResponse, delegateFields)
 
 DEFINE_REQUEST_RESPONSE_TYPE(java_checkDelegateMethodsStatus,
-	lsCodeActionParams, CheckDelegateMethodsResponse, "java/checkDelegateMethodsStatus");
+        lsCodeActionParams, CheckDelegateMethodsResponse, "java/checkDelegateMethodsStatus");
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkHashCodeEqualsStatus.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkHashCodeEqualsStatus.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkHashCodeEqualsStatus.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,29 +8,29 @@
 #include "LibLsp/lsp/CodeActionParams.h"
 
 struct LspVariableBinding {
-	std::string bindingKey;
-	std::string name;
-	std::string type;
-	bool isField;
-	void swap(LspVariableBinding& arg) noexcept
-	{
-		bindingKey.swap(arg.bindingKey);
-		name.swap(arg.name);
-		type.swap(arg.type);
-		std::swap(isField, arg.isField);
-	}
+        std::string bindingKey;
+        std::string name;
+        std::string type;
+        bool isField;
+        void swap(LspVariableBinding& arg) noexcept
+        {
+                bindingKey.swap(arg.bindingKey);
+                name.swap(arg.name);
+                type.swap(arg.type);
+                std::swap(isField, arg.isField);
+        }
 };
 MAKE_REFLECT_STRUCT(LspVariableBinding, bindingKey, name, type, isField)
 
 struct CheckHashCodeEqualsResponse {
-	 std::string type;
-	 std::vector<LspVariableBinding>  fields;
-	 std::vector<std::string> existingMethods;
-	 MAKE_SWAP_METHOD(CheckHashCodeEqualsResponse, type, fields, type, existingMethods)
+         std::string type;
+         std::vector<LspVariableBinding>  fields;
+         std::vector<std::string> existingMethods;
+         MAKE_SWAP_METHOD(CheckHashCodeEqualsResponse, type, fields, type, existingMethods)
 };
 MAKE_REFLECT_STRUCT(CheckHashCodeEqualsResponse, type, fields, type, existingMethods)
 
 DEFINE_REQUEST_RESPONSE_TYPE(java_checkHashCodeEqualsStatus,
-	lsCodeActionParams, CheckHashCodeEqualsResponse, "java/checkHashCodeEqualsStatus")
+        lsCodeActionParams, CheckHashCodeEqualsResponse, "java/checkHashCodeEqualsStatus")
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkToStringStatus.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkToStringStatus.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/checkToStringStatus.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,19 +6,19 @@
 #include "LibLsp/lsp/CodeActionParams.h"
 #include "checkHashCodeEqualsStatus.h"
 struct CheckToStringResponse {
-	std::string type;
-	std::vector<LspVariableBinding>  fields;
-	 bool exists;
-	 void swap(CheckToStringResponse& arg) noexcept
-	 {
-		 type.swap(arg.type);
-		 fields.swap(arg.fields);
-		 std::swap(exists, arg.exists);
-	 }
+        std::string type;
+        std::vector<LspVariableBinding>  fields;
+         bool exists;
+         void swap(CheckToStringResponse& arg) noexcept
+         {
+                 type.swap(arg.type);
+                 fields.swap(arg.fields);
+                 std::swap(exists, arg.exists);
+         }
 };
 MAKE_REFLECT_STRUCT(CheckToStringResponse,type,fields,exists)
 
 DEFINE_REQUEST_RESPONSE_TYPE(java_checkToStringStatus,
-	lsCodeActionParams, CheckToStringResponse ,"java/checkToStringStatus")
+        lsCodeActionParams, CheckToStringResponse ,"java/checkToStringStatus")
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/codeActionResult.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/codeActionResult.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/codeActionResult.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,14 +9,14 @@
 
 namespace SourceAssistProcessor {
 
-	/*std::set<std::string> UNSUPPORTED_RESOURCES = { "module-info.java", "package-info.java"
-	};*/
+        /*std::set<std::string> UNSUPPORTED_RESOURCES = { "module-info.java", "package-info.java"
+        };*/
 
-//	static  const char* COMMAND_ID_ACTION_OVERRIDEMETHODSPROMPT = "java.action.overrideMethodsPrompt";
-//	static  const char* COMMAND_ID_ACTION_HASHCODEEQUALSPROMPT = "java.action.hashCodeEqualsPrompt";
-//	static  const char* COMMAND_ID_ACTION_ORGANIZEIMPORTS = "java.action.organizeImports";
-//	static  const char* COMMAND_ID_ACTION_GENERATETOSTRINGPROMPT = "java.action.generateToStringPrompt";
-//	static  const char* COMMAND_ID_ACTION_GENERATEACCESSORSPROMPT = "java.action.generateAccessorsPrompt";
-//	static  const char* COMMAND_ID_ACTION_GENERATECONSTRUCTORSPROMPT = "java.action.generateConstructorsPrompt";
-//	static  const char* COMMAND_ID_ACTION_GENERATEDELEGATEMETHODSPROMPT = "java.action.generateDelegateMethodsPrompt";
+//      static  const char* COMMAND_ID_ACTION_OVERRIDEMETHODSPROMPT = "java.action.overrideMethodsPrompt";
+//      static  const char* COMMAND_ID_ACTION_HASHCODEEQUALSPROMPT = "java.action.hashCodeEqualsPrompt";
+//      static  const char* COMMAND_ID_ACTION_ORGANIZEIMPORTS = "java.action.organizeImports";
+//      static  const char* COMMAND_ID_ACTION_GENERATETOSTRINGPROMPT = "java.action.generateToStringPrompt";
+//      static  const char* COMMAND_ID_ACTION_GENERATEACCESSORSPROMPT = "java.action.generateAccessorsPrompt";
+//      static  const char* COMMAND_ID_ACTION_GENERATECONSTRUCTORSPROMPT = "java.action.generateConstructorsPrompt";
+//      static  const char* COMMAND_ID_ACTION_GENERATEDELEGATEMETHODSPROMPT = "java.action.generateDelegateMethodsPrompt";
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/executeCommand.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/executeCommand.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/executeCommand.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,20 +6,20 @@
 #include "LibLsp/lsp/ExecuteCommandParams.h"
 namespace  buildpath
 {
-//	static  const char* EDIT_ORGNIZEIMPORTS = "java.edit.organizeImports";
-//	static  const char* RESOLVE_SOURCE_ATTACHMENT = "java.project.resolveSourceAttachment";
+//      static  const char* EDIT_ORGNIZEIMPORTS = "java.edit.organizeImports";
+//      static  const char* RESOLVE_SOURCE_ATTACHMENT = "java.project.resolveSourceAttachment";
 
-//	static  const char* UPDATE_SOURCE_ATTACHMENT = "java.project.updateSourceAttachment";
+//      static  const char* UPDATE_SOURCE_ATTACHMENT = "java.project.updateSourceAttachment";
 
-//	static  const char* ADD_TO_SOURCEPATH = "java.project.addToSourcePath";
+//      static  const char* ADD_TO_SOURCEPATH = "java.project.addToSourcePath";
 
-//	static  const char* REMOVE_FROM_SOURCEPATH = "java.project.removeFromSourcePath";
+//      static  const char* REMOVE_FROM_SOURCEPATH = "java.project.removeFromSourcePath";
 
-//	static  const char* LIST_SOURCEPATHS = "java.project.listSourcePaths";
-	struct Result {
-		bool status;
-		std::string message;
-	};
+//      static  const char* LIST_SOURCEPATHS = "java.project.listSourcePaths";
+        struct Result {
+                bool status;
+                std::string message;
+        };
 
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/findLinks.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/findLinks.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/findLinks.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,11 +8,11 @@
 #include "LibLsp/lsp/lsTextDocumentPositionParams.h"
 
 struct  FindLinksParams {
-	// Supported link types: superImplementation
-	std::string type;
-	lsTextDocumentPositionParams position;
-	
-	MAKE_SWAP_METHOD(FindLinksParams, type, position)
+        // Supported link types: superImplementation
+        std::string type;
+        lsTextDocumentPositionParams position;
+
+        MAKE_SWAP_METHOD(FindLinksParams, type, position)
 };
 MAKE_REFLECT_STRUCT(FindLinksParams,type,position)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateAccessors.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateAccessors.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateAccessors.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,11 +8,11 @@
 
 
 struct GenerateAccessorsParams {
-	lsCodeActionParams context;
-	std::vector<AccessorField>  accessors;
+        lsCodeActionParams context;
+        std::vector<AccessorField>  accessors;
 
 
-	MAKE_SWAP_METHOD(GenerateAccessorsParams, context, accessors)
+        MAKE_SWAP_METHOD(GenerateAccessorsParams, context, accessors)
 };
 MAKE_REFLECT_STRUCT(GenerateAccessorsParams, context, accessors)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateConstructors.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateConstructors.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateConstructors.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,10 +8,10 @@
 
 
 struct GenerateConstructorsParams {
-	lsCodeActionParams context;
-	std::vector<LspMethodBinding> constructors;
-	std::vector< LspVariableBinding >fields;
-	MAKE_SWAP_METHOD(GenerateConstructorsParams, context, fields)
+        lsCodeActionParams context;
+        std::vector<LspMethodBinding> constructors;
+        std::vector< LspVariableBinding >fields;
+        MAKE_SWAP_METHOD(GenerateConstructorsParams, context, fields)
 };
 MAKE_REFLECT_STRUCT(GenerateConstructorsParams, context, fields)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateDelegateMethods.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateDelegateMethods.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateDelegateMethods.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,17 +7,17 @@
 #include "checkConstructorsStatus.h"
 
 struct  LspDelegateEntry {
-	LspVariableBinding field;
-	LspMethodBinding delegateMethod;
-	MAKE_SWAP_METHOD(LspDelegateEntry, field, delegateMethod);
+        LspVariableBinding field;
+        LspMethodBinding delegateMethod;
+        MAKE_SWAP_METHOD(LspDelegateEntry, field, delegateMethod);
 };
 MAKE_REFLECT_STRUCT(LspDelegateEntry, field, delegateMethod);
 
 
 struct GenerateDelegateMethodsParams {
-	lsCodeActionParams context;
-	std::vector<LspDelegateEntry> delegateEntries;
-	MAKE_SWAP_METHOD(GenerateDelegateMethodsParams, context, delegateEntries)
+        lsCodeActionParams context;
+        std::vector<LspDelegateEntry> delegateEntries;
+        MAKE_SWAP_METHOD(GenerateDelegateMethodsParams, context, delegateEntries)
 };
 MAKE_REFLECT_STRUCT(GenerateDelegateMethodsParams, context, delegateEntries)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateHashCodeEquals.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateHashCodeEquals.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateHashCodeEquals.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,15 +8,15 @@
 #include "checkHashCodeEqualsStatus.h"
 
 struct GenerateHashCodeEqualsParams {
-	lsCodeActionParams context;
-	std::vector<LspVariableBinding>  fields;
-	bool regenerate= false;
-	void swap(GenerateHashCodeEqualsParams& arg) noexcept
-	{
-		context.swap(arg.context);
-		fields.swap(arg.fields);
-		std::swap(regenerate, arg.regenerate);
-	}
+        lsCodeActionParams context;
+        std::vector<LspVariableBinding>  fields;
+        bool regenerate= false;
+        void swap(GenerateHashCodeEqualsParams& arg) noexcept
+        {
+                context.swap(arg.context);
+                fields.swap(arg.fields);
+                std::swap(regenerate, arg.regenerate);
+        }
 };
 MAKE_REFLECT_STRUCT(GenerateHashCodeEqualsParams, context, fields, regenerate);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateToString.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateToString.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/generateToString.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,11 +7,11 @@
 
 
 struct GenerateToStringParams {
-	lsCodeActionParams context;
-	std::vector< LspVariableBinding >fields;
-	
-	MAKE_SWAP_METHOD(GenerateToStringParams, context, fields)
-	
+        lsCodeActionParams context;
+        std::vector< LspVariableBinding >fields;
+
+        MAKE_SWAP_METHOD(GenerateToStringParams, context, fields)
+
 };
 MAKE_REFLECT_STRUCT(GenerateToStringParams, context, fields)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getMoveDestinations.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getMoveDestinations.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getMoveDestinations.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,54 +8,54 @@
 
 struct MoveKindInfo
 {
-	static   std::string moveResource()
-	{
-		return "moveResource";
-	}
-	static   std::string moveInstanceMethod()
-	{
-		return "moveInstanceMethod";
-	}
-	static   std::string moveStaticMember()
-	{
-		return "moveStaticMember";
-	}
+        static   std::string moveResource()
+        {
+                return "moveResource";
+        }
+        static   std::string moveInstanceMethod()
+        {
+                return "moveInstanceMethod";
+        }
+        static   std::string moveStaticMember()
+        {
+                return "moveStaticMember";
+        }
 };
 
 struct MoveParams {
-	/**
-	 * The supported move kind: moveResource, moveInstanceMethod, moveStaticMember,
-	 * moveTypeToNewFile.
-	 */
-	std::string moveKind;
-	/**
-	 * The selected resource uris when the move operation is triggered.
-	 */
-	std::vector<std::string> sourceUris;
-	/**
-	 * The code action params when the move operation is triggered.
-	 */
-	boost::optional<lsCodeActionParams>  params;
-	/**
-	 * The possible destination: a folder/package, class, instanceDeclaration.
-	 */
-	lsp::Any destination;
-	bool updateReferences;
-	void swap(MoveParams& arg) noexcept
-	{
-		moveKind.swap(arg.moveKind);
-		sourceUris.swap(arg.sourceUris);
-		params.swap(arg.params);
-		destination.swap(arg.destination);
-		std::swap(updateReferences, arg.updateReferences);
-	}
+        /**
+         * The supported move kind: moveResource, moveInstanceMethod, moveStaticMember,
+         * moveTypeToNewFile.
+         */
+        std::string moveKind;
+        /**
+         * The selected resource uris when the move operation is triggered.
+         */
+        std::vector<std::string> sourceUris;
+        /**
+         * The code action params when the move operation is triggered.
+         */
+        boost::optional<lsCodeActionParams>  params;
+        /**
+         * The possible destination: a folder/package, class, instanceDeclaration.
+         */
+        lsp::Any destination;
+        bool updateReferences;
+        void swap(MoveParams& arg) noexcept
+        {
+                moveKind.swap(arg.moveKind);
+                sourceUris.swap(arg.sourceUris);
+                params.swap(arg.params);
+                destination.swap(arg.destination);
+                std::swap(updateReferences, arg.updateReferences);
+        }
 };
 MAKE_REFLECT_STRUCT(MoveParams, moveKind, sourceUris, params, destination, updateReferences);
 
 struct MoveDestinationsResponse {
-	std::string errorMessage;
-	std::vector<lsp::Any > destinations;
-	MAKE_SWAP_METHOD(MoveDestinationsResponse, errorMessage, destinations);
+        std::string errorMessage;
+        std::vector<lsp::Any > destinations;
+        MAKE_SWAP_METHOD(MoveDestinationsResponse, errorMessage, destinations);
 };
 MAKE_REFLECT_STRUCT(MoveDestinationsResponse, errorMessage, destinations);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getRefactorEdit.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getRefactorEdit.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/getRefactorEdit.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -15,40 +15,40 @@
 namespace
 RefactorProposalUtility
 {
-	extern  const char* APPLY_REFACTORING_COMMAND_ID;
-	extern  const char* EXTRACT_VARIABLE_ALL_OCCURRENCE_COMMAND;
-	extern  const char* EXTRACT_VARIABLE_COMMAND;
-	extern  const char* EXTRACT_CONSTANT_COMMAND;
-	extern  const char* EXTRACT_METHOD_COMMAND;
-	extern  const char* EXTRACT_FIELD_COMMAND;
-	extern  const char* CONVERT_VARIABLE_TO_FIELD_COMMAND;
-	extern  const char* MOVE_FILE_COMMAND;
-	extern  const char* MOVE_INSTANCE_METHOD_COMMAND;
-	extern  const char* MOVE_STATIC_MEMBER_COMMAND;
-	extern  const char* MOVE_TYPE_COMMAND;
+        extern  const char* APPLY_REFACTORING_COMMAND_ID;
+        extern  const char* EXTRACT_VARIABLE_ALL_OCCURRENCE_COMMAND;
+        extern  const char* EXTRACT_VARIABLE_COMMAND;
+        extern  const char* EXTRACT_CONSTANT_COMMAND;
+        extern  const char* EXTRACT_METHOD_COMMAND;
+        extern  const char* EXTRACT_FIELD_COMMAND;
+        extern  const char* CONVERT_VARIABLE_TO_FIELD_COMMAND;
+        extern  const char* MOVE_FILE_COMMAND;
+        extern  const char* MOVE_INSTANCE_METHOD_COMMAND;
+        extern  const char* MOVE_STATIC_MEMBER_COMMAND;
+        extern  const char* MOVE_TYPE_COMMAND;
 };
 
 
 struct RenamePosition {
-	lsDocumentUri uri;
-	int offset = 0;
-	int length = 0;
-	void swap(RenamePosition& arg) noexcept
-	{
-		uri.swap(arg.uri);
-		std::swap(offset, arg.offset);
-		std::swap(length, arg.length);
-	}
+        lsDocumentUri uri;
+        int offset = 0;
+        int length = 0;
+        void swap(RenamePosition& arg) noexcept
+        {
+                uri.swap(arg.uri);
+                std::swap(offset, arg.offset);
+                std::swap(length, arg.length);
+        }
 };
 MAKE_REFLECT_STRUCT(RenamePosition, uri, offset, length);
 
 struct GetRefactorEditParams
 {
-	std::string command;
-	std::vector<lsp::Any>  commandArguments;
-	lsCodeActionParams context;
-	boost::optional<lsFormattingOptions> options;
-	MAKE_SWAP_METHOD(GetRefactorEditParams, command, context, options);
+        std::string command;
+        std::vector<lsp::Any>  commandArguments;
+        lsCodeActionParams context;
+        boost::optional<lsFormattingOptions> options;
+        MAKE_SWAP_METHOD(GetRefactorEditParams, command, context, options);
 };
 MAKE_REFLECT_STRUCT(GetRefactorEditParams, command, context, options);
 
@@ -56,20 +56,20 @@
 
 
 struct RefactorWorkspaceEdit {
-	/**
-	 * The workspace edit this code action performs.
-	 */
-	 lsWorkspaceEdit edit;
-	/**
-	 * A command this code action executes. If a code action provides a edit and a
-	 * command, first the edit is executed and then the command.
-	 */
-	
-	boost::optional<std::string> errorMessage;
-	
-	boost::optional < lsCommandWithAny > command;
-	
-	MAKE_SWAP_METHOD(RefactorWorkspaceEdit, edit, command, errorMessage)
+        /**
+         * The workspace edit this code action performs.
+         */
+         lsWorkspaceEdit edit;
+        /**
+         * A command this code action executes. If a code action provides a edit and a
+         * command, first the edit is executed and then the command.
+         */
+
+        boost::optional<std::string> errorMessage;
+
+        boost::optional < lsCommandWithAny > command;
+
+        MAKE_SWAP_METHOD(RefactorWorkspaceEdit, edit, command, errorMessage)
 };
 MAKE_REFLECT_STRUCT(RefactorWorkspaceEdit,edit,command,errorMessage)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/resolveUnimplementedAccessors.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/resolveUnimplementedAccessors.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/resolveUnimplementedAccessors.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,16 +7,16 @@
 
 
 struct AccessorField {
-	std::string fieldName;
-	bool isStatic =false;
-	bool generateGetter = false;
-	bool generateSetter = false;
-	void swap(AccessorField& arg) noexcept{
-		fieldName.swap(arg.fieldName);
-		std::swap(isStatic, arg.isStatic);
-		std::swap(generateGetter, arg.generateGetter);
-		std::swap(generateSetter, arg.generateSetter);
-	}
+        std::string fieldName;
+        bool isStatic =false;
+        bool generateGetter = false;
+        bool generateSetter = false;
+        void swap(AccessorField& arg) noexcept{
+                fieldName.swap(arg.fieldName);
+                std::swap(isStatic, arg.isStatic);
+                std::swap(generateGetter, arg.generateGetter);
+                std::swap(generateSetter, arg.generateSetter);
+        }
 };
 
 MAKE_REFLECT_STRUCT(AccessorField, fieldName,isStatic,generateGetter,generateSetter)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/searchSymbols.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/searchSymbols.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/jdtls/searchSymbols.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -13,10 +13,10 @@
 
 struct SearchSymbolParams :public WorkspaceSymbolParams
 {
-	boost::optional<std::string>  projectName;
-	boost::optional< bool >sourceOnly;
-	boost::optional< int> maxResults;
-	MAKE_SWAP_METHOD(SearchSymbolParams, query, projectName, sourceOnly, maxResults);
+        boost::optional<std::string>  projectName;
+        boost::optional< bool >sourceOnly;
+        boost::optional< int> maxResults;
+        MAKE_SWAP_METHOD(SearchSymbolParams, query, projectName, sourceOnly, maxResults);
 };
 MAKE_REFLECT_STRUCT(SearchSymbolParams, query, projectName, sourceOnly, maxResults);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/sonarlint/protocol.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/sonarlint/protocol.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/extention/sonarlint/protocol.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,19 +9,19 @@
 
 struct LintRule
 {
-	std::string key;
-	std::string name;
+        std::string key;
+        std::string name;
 
 
-	std::string Display() const
-	{
-		return name + " (" + key + ")";
-	}
-	bool activeByDefault = true;
-	boost::optional<std::string> severity;
-	boost::optional<std::string> type;
-	int icon_index = -1;
-	MAKE_SWAP_METHOD(LintRule, key, name, activeByDefault, severity, type);
+        std::string Display() const
+        {
+                return name + " (" + key + ")";
+        }
+        bool activeByDefault = true;
+        boost::optional<std::string> severity;
+        boost::optional<std::string> type;
+        int icon_index = -1;
+        MAKE_SWAP_METHOD(LintRule, key, name, activeByDefault, severity, type);
 
 };
 MAKE_REFLECT_STRUCT(LintRule, key, name, activeByDefault, severity, type);
@@ -28,9 +28,9 @@
 
 
 struct RuleParameter {
-	std::string name;
-	boost::optional<std::string>  description;
-	boost::optional<std::string> defaultValue;
+        std::string name;
+        boost::optional<std::string>  description;
+        boost::optional<std::string> defaultValue;
 
 };
 MAKE_REFLECT_STRUCT(RuleParameter, name, description, defaultValue);
@@ -37,18 +37,18 @@
 
 struct ShowRuleDescriptionParams {
 
-	boost::optional<std::string> key;
+        boost::optional<std::string> key;
 
-	boost::optional<std::string> name;
+        boost::optional<std::string> name;
 
-	boost::optional<std::string> htmlDescription;
+        boost::optional<std::string> htmlDescription;
 
-	boost::optional<std::string>  type;
+        boost::optional<std::string>  type;
 
-	boost::optional<std::string>  severity;
+        boost::optional<std::string>  severity;
 
-	boost::optional< std::vector<RuleParameter> >   parameters;
-	MAKE_SWAP_METHOD(ShowRuleDescriptionParams, key, name, htmlDescription, type, severity, parameters)
+        boost::optional< std::vector<RuleParameter> >   parameters;
+        MAKE_SWAP_METHOD(ShowRuleDescriptionParams, key, name, htmlDescription, type, severity, parameters)
 
 
 };
@@ -56,17 +56,17 @@
 
 
 struct GetJavaConfigResponse {
-	std::string  projectRoot;
-	std::string  sourceLevel;
-	std::vector<std::string>  classpath;
-	bool isTest;
-	std::string  vmLocation;
-	MAKE_SWAP_METHOD(GetJavaConfigResponse, projectRoot, sourceLevel, classpath, isTest, vmLocation);
+        std::string  projectRoot;
+        std::string  sourceLevel;
+        std::vector<std::string>  classpath;
+        bool isTest;
+        std::string  vmLocation;
+        MAKE_SWAP_METHOD(GetJavaConfigResponse, projectRoot, sourceLevel, classpath, isTest, vmLocation);
 };
 MAKE_REFLECT_STRUCT(GetJavaConfigResponse, projectRoot, sourceLevel, classpath, isTest, vmLocation);
 
 struct SetTraceNotificationParams {
-	lsInitializeParams::lsTrace value;
+        lsInitializeParams::lsTrace value;
 };
 MAKE_REFLECT_STRUCT(SetTraceNotificationParams, value);
 
@@ -73,17 +73,17 @@
 
 struct ServerConnectionSettings {
 
-	std::string SONARCLOUD_URL = "https://sonarcloud.io";
-	std::vector<std::string>SONARCLOUD_ALIAS = { "https://sonarqube.com",
-		"https://www.sonarqube.com",
-		"https://www.sonarcloud.io",
-		"https://sonarcloud.io" };
+        std::string SONARCLOUD_URL = "https://sonarcloud.io";
+        std::vector<std::string>SONARCLOUD_ALIAS = { "https://sonarqube.com",
+                "https://www.sonarqube.com",
+                "https://www.sonarcloud.io",
+                "https://sonarcloud.io" };
 
-	std::string connectionId;
-	std::string serverUrl;
-	std::string token;
-	boost::optional<std::string> organizationKey;
-	MAKE_SWAP_METHOD(ServerConnectionSettings, connectionId, serverUrl, token, organizationKey)
+        std::string connectionId;
+        std::string serverUrl;
+        std::string token;
+        boost::optional<std::string> organizationKey;
+        MAKE_SWAP_METHOD(ServerConnectionSettings, connectionId, serverUrl, token, organizationKey)
 
 };
 MAKE_REFLECT_STRUCT(ServerConnectionSettings, connectionId, serverUrl, token, organizationKey)
@@ -90,62 +90,62 @@
 
 struct RuleSetting
 {
-	bool IsOn();
-	std::string level = "on";
-	RuleSetting(bool activate);
-	RuleSetting() = default;
-	void toggle();
-	void on()
-	{
-		level = "on";
-	}
-	void off()
-	{
-		level = "off";
-	}
-	void turn(bool activate)
-	{
-		if (activate)
-		{
-			on();
-		}
-		else
-		{
-			off();
-		}
-	}
-	boost::optional< std::map<std::string, std::string > > parameters;
+        bool IsOn();
+        std::string level = "on";
+        RuleSetting(bool activate);
+        RuleSetting() = default;
+        void toggle();
+        void on()
+        {
+                level = "on";
+        }
+        void off()
+        {
+                level = "off";
+        }
+        void turn(bool activate)
+        {
+                if (activate)
+                {
+                        on();
+                }
+                else
+                {
+                        off();
+                }
+        }
+        boost::optional< std::map<std::string, std::string > > parameters;
 };
 MAKE_REFLECT_STRUCT(RuleSetting, level, parameters)
 
 struct ConsoleParams
 {
-	boost::optional < bool >showAnalyzerLogs;
-	boost::optional < bool >showVerboseLogs;
-	MAKE_SWAP_METHOD(ConsoleParams, showAnalyzerLogs, showVerboseLogs)
+        boost::optional < bool >showAnalyzerLogs;
+        boost::optional < bool >showVerboseLogs;
+        MAKE_SWAP_METHOD(ConsoleParams, showAnalyzerLogs, showVerboseLogs)
 };
 MAKE_REFLECT_STRUCT(ConsoleParams, showAnalyzerLogs, showVerboseLogs)
 
 struct SonarLintWorkspaceSettings
 {
-	boost::optional < bool > disableTelemetry;
-	boost::optional < std::map<std::string, ServerConnectionSettings> >connectedMode;
-	boost::optional<std::map<std::string, RuleSetting>>  rules;
-	boost::optional<ConsoleParams> output;
+        boost::optional < bool > disableTelemetry;
+        boost::optional < std::map<std::string, ServerConnectionSettings> >connectedMode;
+        boost::optional<std::map<std::string, RuleSetting>>  rules;
+        boost::optional<ConsoleParams> output;
 
-	boost::optional<std::string >  pathToNodeExecutable;
+        boost::optional<std::string >  pathToNodeExecutable;
 
-	boost::optional< std::map<std::string, std::string > > getConfigurationParameters(const std::string& ruleKey);
+        boost::optional< std::map<std::string, std::string > > getConfigurationParameters(const std::string& ruleKey);
 
 
 };
 
 MAKE_REFLECT_STRUCT(SonarLintWorkspaceSettings, disableTelemetry, connectedMode,
-	rules, output, pathToNodeExecutable)
+        rules, output, pathToNodeExecutable)
 
 
 
-	DEFINE_REQUEST_RESPONSE_TYPE(slls_listAllRules, JsonNull, lsp::Any, "sonarlint/listAllRules");
+        DEFINE_REQUEST_RESPONSE_TYPE(slls_listAllRules, JsonNull, lsp::Any, "sonarlint/listAllRules");
 
 
 
@@ -173,4 +173,4 @@
 DEFINE_REQUEST_RESPONSE_TYPE(slls_getJavaConfig, lsDocumentUri, GetJavaConfigResponse, "sonarlint/getJavaConfig");
 
 
-DEFINE_NOTIFICATION_TYPE(slls_setTraceNotification, SetTraceNotificationParams, "$/setTraceNotification")
\ No newline at end of file
+DEFINE_NOTIFICATION_TYPE(slls_setTraceNotification, SetTraceNotificationParams, "$/setTraceNotification")

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/InitializeParams.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/InitializeParams.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/InitializeParams.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,10 +6,10 @@
 #include "LibLsp/lsp/workspace/workspaceFolders.h"
 
 struct ClientInfo {
-	std::string name;
-	boost::optional<std::string> version;
-	
-	MAKE_SWAP_METHOD(ClientInfo,name,version);
+        std::string name;
+        boost::optional<std::string> version;
+
+        MAKE_SWAP_METHOD(ClientInfo,name,version);
 };
 MAKE_REFLECT_STRUCT(ClientInfo,name,version);
 
@@ -19,7 +19,7 @@
   // If the parent process is not alive then the server should exit (see exit
   // notification) its process.
   boost::optional<int> processId;
-	
+
   /**
    * Information about the client
    *
@@ -37,7 +37,7 @@
    * @since 3.16.0
    */
   boost::optional<std::string> locale;
-	
+
   // The rootPath of the workspace. Is null
   // if no folder is open.
   //
@@ -64,13 +64,13 @@
   boost::optional< std::string >clientName;
 
 
-	
+
   enum class lsTrace {
     // NOTE: serialized as a string, one of 'off' | 'messages' | 'verbose';
     Off,       // off
     Messages,  // messages
     Verbose    // verbose
-  	
+
   };
 
   // The initial trace setting. If omitted trace is disabled ('off').
@@ -117,9 +117,9 @@
   bool retry;
   void swap(lsInitializeError& arg) noexcept
   {
-	  auto tem = retry;
-	  retry = arg.retry;
-	  arg.retry = tem;
+          auto tem = retry;
+          retry = arg.retry;
+          arg.retry = tem;
   }
 };
 MAKE_REFLECT_STRUCT(lsInitializeError, retry);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/initialize.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/initialize.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/initialize.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -15,7 +15,7 @@
  */
   struct InitializeResult {
     lsServerCapabilities capabilities;
-	MAKE_SWAP_METHOD(InitializeResult, capabilities);
+        MAKE_SWAP_METHOD(InitializeResult, capabilities);
   };
 
 MAKE_REFLECT_STRUCT(InitializeResult, capabilities);
@@ -26,7 +26,7 @@
  * the server.
  *
  * If the server receives request or notification before the initialize request it should act as follows:
- * 	- for a request the respond should be errored with code: -32001. The message can be picked by the server.
+ *      - for a request the respond should be errored with code: -32001. The message can be picked by the server.
  *  - notifications should be dropped, except for the exit notification. This will allow the exit a server without an initialize request.
  *
  * Until the server has responded to the initialize request with an InitializeResult

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsClientCapabilities.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsClientCapabilities.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsClientCapabilities.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -10,17 +10,17 @@
  * @since 3.16.0
  */
 struct MarkdownClientCapabilities {
-	/**
-	 * The name of the parser.
-	 */
-	std::string parser;
+        /**
+         * The name of the parser.
+         */
+        std::string parser;
 
-	/**
-	 * The version of the parser.
-	 */
-	boost::optional<std::string>  version;
-	MAKE_SWAP_METHOD(MarkdownClientCapabilities, parser, version)
-	
+        /**
+         * The version of the parser.
+         */
+        boost::optional<std::string>  version;
+        MAKE_SWAP_METHOD(MarkdownClientCapabilities, parser, version)
+
 };
 MAKE_REFLECT_STRUCT(MarkdownClientCapabilities, parser, version)
 
@@ -32,7 +32,7 @@
   boost::optional<lsTextDocumentClientCapabilities> textDocument;
 
   /**
-	* Window specific client capabilities.
+        * Window specific client capabilities.
   */
   boost::optional<lsp::Any>  window;
   /**

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsServerCapabilities.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsServerCapabilities.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsServerCapabilities.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -16,24 +16,24 @@
  // Code Action options.
  //
 struct  CodeActionOptions : WorkDoneProgressOptions {
-	//
-	 // CodeActionKinds that this server may return.
-	 //
-	 // The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server
-	 // may list out every specific kind they provide.
-	 //
-	typedef  std::string CodeActionKind;
-	 std::vector<CodeActionKind> codeActionKinds;
+        //
+         // CodeActionKinds that this server may return.
+         //
+         // The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server
+         // may list out every specific kind they provide.
+         //
+        typedef  std::string CodeActionKind;
+         std::vector<CodeActionKind> codeActionKinds;
 
-	 MAKE_SWAP_METHOD(CodeActionOptions, workDoneProgress, codeActionKinds);
+         MAKE_SWAP_METHOD(CodeActionOptions, workDoneProgress, codeActionKinds);
 };
 MAKE_REFLECT_STRUCT(CodeActionOptions, workDoneProgress, codeActionKinds)
 struct CodeLensOptions : WorkDoneProgressOptions {
-	//
-	 // Code lens has a resolve provider as well.
-	 //
-	boost::optional<bool> resolveProvider ;
-	MAKE_SWAP_METHOD(CodeLensOptions, workDoneProgress, resolveProvider);
+        //
+         // Code lens has a resolve provider as well.
+         //
+        boost::optional<bool> resolveProvider ;
+        MAKE_SWAP_METHOD(CodeLensOptions, workDoneProgress, resolveProvider);
 };
 MAKE_REFLECT_STRUCT(CodeLensOptions, workDoneProgress, resolveProvider)
 
@@ -40,53 +40,53 @@
 
 // Format document on type options
 struct lsDocumentOnTypeFormattingOptions :WorkDoneProgressOptions {
-	// A character on which formatting should be triggered, like `}`.
-	std::string firstTriggerCharacter;
+        // A character on which formatting should be triggered, like `}`.
+        std::string firstTriggerCharacter;
 
-	// More trigger characters.
-	std::vector<std::string> moreTriggerCharacter;
-	MAKE_SWAP_METHOD(lsDocumentOnTypeFormattingOptions, workDoneProgress,
-		firstTriggerCharacter,
-		moreTriggerCharacter);
+        // More trigger characters.
+        std::vector<std::string> moreTriggerCharacter;
+        MAKE_SWAP_METHOD(lsDocumentOnTypeFormattingOptions, workDoneProgress,
+                firstTriggerCharacter,
+                moreTriggerCharacter);
 };
 MAKE_REFLECT_STRUCT(lsDocumentOnTypeFormattingOptions, workDoneProgress,
-	firstTriggerCharacter,
-	moreTriggerCharacter);
+        firstTriggerCharacter,
+        moreTriggerCharacter);
 struct RenameOptions : WorkDoneProgressOptions {
-	//
-	 // Renames should be checked and tested before being executed.
-	 //
-	boost::optional<bool> prepareProvider;
-	MAKE_SWAP_METHOD(RenameOptions, workDoneProgress, prepareProvider);
+        //
+         // Renames should be checked and tested before being executed.
+         //
+        boost::optional<bool> prepareProvider;
+        MAKE_SWAP_METHOD(RenameOptions, workDoneProgress, prepareProvider);
 };
 MAKE_REFLECT_STRUCT(RenameOptions,workDoneProgress,prepareProvider)
 
 struct DocumentFilter{
-	//
-	 // A language id, like `typescript`.
-	 //
-	boost::optional<std::string> language;
-	//
-	 // A Uri [scheme](#Uri.scheme), like `file` or `untitled`.
-	 //
-	boost::optional<std::string>scheme;
-	//
-	 // A glob pattern, like `*.{ts,js}`.
-	 //
-	 // Glob patterns can have the following syntax:
-	 // - `*` to match one or more characters in a path segment
-	 // - `?` to match on one character in a path segment
-	 // - `**` to match any number of path segments, including none
-	 // - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}
-	 //   matches all TypeScript and JavaScript files)
-	 // - `[]` to declare a range of characters to match in a path segment
-	 //   (e.g., `example.[0-9]` to match on `example.0`, `example.1`,...)
-	 // - `[!...]` to negate a range of characters to match in a path segment
-	 //   (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but
-	 //   not `example.0`)
-	 //
-	boost::optional<std::string>pattern;
-	MAKE_SWAP_METHOD(DocumentFilter, language, scheme, pattern)
+        //
+         // A language id, like `typescript`.
+         //
+        boost::optional<std::string> language;
+        //
+         // A Uri [scheme](#Uri.scheme), like `file` or `untitled`.
+         //
+        boost::optional<std::string>scheme;
+        //
+         // A glob pattern, like `*.{ts,js}`.
+         //
+         // Glob patterns can have the following syntax:
+         // - `*` to match one or more characters in a path segment
+         // - `?` to match on one character in a path segment
+         // - `**` to match any number of path segments, including none
+         // - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}
+         //   matches all TypeScript and JavaScript files)
+         // - `[]` to declare a range of characters to match in a path segment
+         //   (e.g., `example.[0-9]` to match on `example.0`, `example.1`,...)
+         // - `[!...]` to negate a range of characters to match in a path segment
+         //   (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but
+         //   not `example.0`)
+         //
+        boost::optional<std::string>pattern;
+        MAKE_SWAP_METHOD(DocumentFilter, language, scheme, pattern)
 };
 MAKE_REFLECT_STRUCT(DocumentFilter, language, scheme, pattern)
 
@@ -95,17 +95,17 @@
 
 // Document link options
 struct lsDocumentLinkOptions :WorkDoneProgressOptions {
-	// Document links have a resolve provider as well.
-	boost::optional<bool> resolveProvider;
-	MAKE_SWAP_METHOD(lsDocumentLinkOptions, workDoneProgress, resolveProvider);
+        // Document links have a resolve provider as well.
+        boost::optional<bool> resolveProvider;
+        MAKE_SWAP_METHOD(lsDocumentLinkOptions, workDoneProgress, resolveProvider);
 };
 MAKE_REFLECT_STRUCT(lsDocumentLinkOptions, workDoneProgress,resolveProvider);
 
 // Execute command options.
 struct lsExecuteCommandOptions : WorkDoneProgressOptions {
-	// The commands to be executed on the server
-	std::vector<std::string> commands;
-	MAKE_SWAP_METHOD(lsExecuteCommandOptions, workDoneProgress, commands);
+        // The commands to be executed on the server
+        std::vector<std::string> commands;
+        MAKE_SWAP_METHOD(lsExecuteCommandOptions, workDoneProgress, commands);
 };
 MAKE_REFLECT_STRUCT(lsExecuteCommandOptions, workDoneProgress, commands);
 
@@ -116,9 +116,9 @@
  // A document selector to identify the scope of the registration. If set to null
  // the document selector provided on the client side will be used.
  //
-	boost::optional<DocumentSelector>  documentSelector;
+        boost::optional<DocumentSelector>  documentSelector;
 
-	MAKE_SWAP_METHOD(TextDocumentRegistrationOptions, documentSelector);
+        MAKE_SWAP_METHOD(TextDocumentRegistrationOptions, documentSelector);
 };
 MAKE_REFLECT_STRUCT(TextDocumentRegistrationOptions, documentSelector);
 
@@ -127,12 +127,12 @@
  //
 struct StaticRegistrationOptions :public TextDocumentRegistrationOptions
 {
-	//
-	 // The id used to register the request. The id can be used to deregister
-	 // the request again. See also Registration#id.
-	 //
-	boost::optional<std::string> id;
-	MAKE_SWAP_METHOD(StaticRegistrationOptions, documentSelector, id)
+        //
+         // The id used to register the request. The id can be used to deregister
+         // the request again. See also Registration#id.
+         //
+        boost::optional<std::string> id;
+        MAKE_SWAP_METHOD(StaticRegistrationOptions, documentSelector, id)
 };
 MAKE_REFLECT_STRUCT(StaticRegistrationOptions, documentSelector,id)
 
@@ -143,22 +143,22 @@
  //
 
 struct WorkspaceFoldersOptions {
-	//
-	 // The server has support for workspace folders
-	 //
-	boost::optional<bool>  supported;
+        //
+         // The server has support for workspace folders
+         //
+        boost::optional<bool>  supported;
 
-	//
-	 // Whether the server wants to receive workspace folder
-	 // change notifications.
-	 //
-	 // If a string is provided, the string is treated as an ID
-	 // under which the notification is registered on the client
-	 // side. The ID can be used to unregister for these events
-	 // using the `client/unregisterCapability` request.
-	 //
-	boost::optional<std::pair<  boost::optional<std::string>, boost::optional<bool> > > changeNotifications;
-	MAKE_SWAP_METHOD(WorkspaceFoldersOptions, supported, changeNotifications);
+        //
+         // Whether the server wants to receive workspace folder
+         // change notifications.
+         //
+         // If a string is provided, the string is treated as an ID
+         // under which the notification is registered on the client
+         // side. The ID can be used to unregister for these events
+         // using the `client/unregisterCapability` request.
+         //
+        boost::optional<std::pair<  boost::optional<std::string>, boost::optional<bool> > > changeNotifications;
+        MAKE_SWAP_METHOD(WorkspaceFoldersOptions, supported, changeNotifications);
 };
 MAKE_REFLECT_STRUCT(WorkspaceFoldersOptions, supported, changeNotifications);
 
@@ -170,8 +170,8 @@
  //
 enum lsFileOperationPatternKind
 {
-	file,
-	folder
+        file,
+        folder
 };
 MAKE_REFLECT_TYPE_PROXY(lsFileOperationPatternKind)
 
@@ -182,11 +182,11 @@
  //
 struct lsFileOperationPatternOptions {
 
-	//
-	 // The pattern should be matched ignoring casing.
-	 //
-	boost::optional<bool> ignoreCase;
-	MAKE_SWAP_METHOD(lsFileOperationPatternOptions, ignoreCase)
+        //
+         // The pattern should be matched ignoring casing.
+         //
+        boost::optional<bool> ignoreCase;
+        MAKE_SWAP_METHOD(lsFileOperationPatternOptions, ignoreCase)
 };
 MAKE_REFLECT_STRUCT(lsFileOperationPatternOptions, ignoreCase)
 //
@@ -196,33 +196,33 @@
  // @since 3.16.0
  //
 struct lsFileOperationPattern {
-	//
-	 // The glob pattern to match. Glob patterns can have the following syntax:
-	 // - `*` to match one or more characters in a path segment
-	 // - `?` to match on one character in a path segment
-	 // - `**` to match any number of path segments, including none
-	 // - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}`
-	 //   matches all TypeScript and JavaScript files)
-	 // - `[]` to declare a range of characters to match in a path segment
-	 //   (e.g., `example.[0-9]` to match on `example.0`, `example.1`,...)
-	 // - `[!...]` to negate a range of characters to match in a path segment
-	 //   (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but
-	 //   not `example.0`)
-	 //
-	std::string glob;
+        //
+         // The glob pattern to match. Glob patterns can have the following syntax:
+         // - `*` to match one or more characters in a path segment
+         // - `?` to match on one character in a path segment
+         // - `**` to match any number of path segments, including none
+         // - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}`
+         //   matches all TypeScript and JavaScript files)
+         // - `[]` to declare a range of characters to match in a path segment
+         //   (e.g., `example.[0-9]` to match on `example.0`, `example.1`,...)
+         // - `[!...]` to negate a range of characters to match in a path segment
+         //   (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but
+         //   not `example.0`)
+         //
+        std::string glob;
 
-	//
-	 // Whether to match files or folders with this pattern.
-	 //
-	 // Matches both if undefined.
-	 //
-	boost::optional<lsFileOperationPatternKind> matches;
+        //
+         // Whether to match files or folders with this pattern.
+         //
+         // Matches both if undefined.
+         //
+        boost::optional<lsFileOperationPatternKind> matches;
 
-	//
-	 // Additional options used during matching.
-	 //
-	boost::optional<lsFileOperationPatternOptions> options ;
-	MAKE_SWAP_METHOD(lsFileOperationPattern, glob, matches, options)
+        //
+         // Additional options used during matching.
+         //
+        boost::optional<lsFileOperationPatternOptions> options ;
+        MAKE_SWAP_METHOD(lsFileOperationPattern, glob, matches, options)
 };
 MAKE_REFLECT_STRUCT(lsFileOperationPattern, glob, matches, options)
 //
@@ -233,16 +233,16 @@
  //
 struct lsFileOperationFilter {
 
-	//
-	 // A Uri like `file` or `untitled`.
-	 //
-	boost::optional<std::string>  scheme;
+        //
+         // A Uri like `file` or `untitled`.
+         //
+        boost::optional<std::string>  scheme;
 
-	//
-	 // The actual file operation pattern.
-	 //
-	boost::optional<lsFileOperationPattern>	pattern;
-	MAKE_SWAP_METHOD(lsFileOperationFilter, scheme, pattern)
+        //
+         // The actual file operation pattern.
+         //
+        boost::optional<lsFileOperationPattern> pattern;
+        MAKE_SWAP_METHOD(lsFileOperationFilter, scheme, pattern)
 };
 MAKE_REFLECT_STRUCT(lsFileOperationFilter, scheme, pattern)
 //
@@ -251,69 +251,69 @@
  // @since 3.16.0
  //
 struct lsFileOperationRegistrationOptions {
-	//
-	 // The actual filters.
-	 //
-	boost::optional<std::vector<lsFileOperationFilter>> filters;
-	MAKE_SWAP_METHOD(lsFileOperationRegistrationOptions, filters)
+        //
+         // The actual filters.
+         //
+        boost::optional<std::vector<lsFileOperationFilter>> filters;
+        MAKE_SWAP_METHOD(lsFileOperationRegistrationOptions, filters)
 };
 MAKE_REFLECT_STRUCT(lsFileOperationRegistrationOptions, filters)
 
 struct WorkspaceServerCapabilities {
-	//
-	 // The server supports workspace folder.
-	 //
-	 // Since 3.6.0
-	 //
-	WorkspaceFoldersOptions workspaceFolders;
+        //
+         // The server supports workspace folder.
+         //
+         // Since 3.6.0
+         //
+        WorkspaceFoldersOptions workspaceFolders;
 
 
-	//
-	 // The server is interested in file notifications/requests.
-	 //
-	 // @since 3.16.0
-	 //
-	struct  lsFileOperations
-	{
-		//
-		 // The server is interested in receiving didCreateFiles
-		 // notifications.
-		 //
-		boost::optional<lsFileOperationRegistrationOptions> didCreate;
+        //
+         // The server is interested in file notifications/requests.
+         //
+         // @since 3.16.0
+         //
+        struct  lsFileOperations
+        {
+                //
+                 // The server is interested in receiving didCreateFiles
+                 // notifications.
+                 //
+                boost::optional<lsFileOperationRegistrationOptions> didCreate;
 
-		//
-		 // The server is interested in receiving willCreateFiles requests.
-		 //
-		boost::optional<lsFileOperationRegistrationOptions> willCreate;
+                //
+                 // The server is interested in receiving willCreateFiles requests.
+                 //
+                boost::optional<lsFileOperationRegistrationOptions> willCreate;
 
-		//
-		 // The server is interested in receiving didRenameFiles
-		 // notifications.
-		 //
-		boost::optional<lsFileOperationRegistrationOptions> didRename;
+                //
+                 // The server is interested in receiving didRenameFiles
+                 // notifications.
+                 //
+                boost::optional<lsFileOperationRegistrationOptions> didRename;
 
-		//
-		 // The server is interested in receiving willRenameFiles requests.
-		 //
-		boost::optional<lsFileOperationRegistrationOptions> willRename;
+                //
+                 // The server is interested in receiving willRenameFiles requests.
+                 //
+                boost::optional<lsFileOperationRegistrationOptions> willRename;
 
-		//
-		 // The server is interested in receiving didDeleteFiles file
-		 // notifications.
-		 //
-		boost::optional<lsFileOperationRegistrationOptions> didDelete;
+                //
+                 // The server is interested in receiving didDeleteFiles file
+                 // notifications.
+                 //
+                boost::optional<lsFileOperationRegistrationOptions> didDelete;
 
-		//
-		 // The server is interested in receiving willDeleteFiles file
-		 // requests.
-		 //
-		boost::optional<lsFileOperationRegistrationOptions> willDelete;
-		MAKE_SWAP_METHOD(lsFileOperations, didCreate, willCreate, didRename, willRename, didDelete, willDelete)
-	};
-	boost::optional<lsFileOperations>fileOperations;
+                //
+                 // The server is interested in receiving willDeleteFiles file
+                 // requests.
+                 //
+                boost::optional<lsFileOperationRegistrationOptions> willDelete;
+                MAKE_SWAP_METHOD(lsFileOperations, didCreate, willCreate, didRename, willRename, didDelete, willDelete)
+        };
+        boost::optional<lsFileOperations>fileOperations;
 
 
-	MAKE_SWAP_METHOD(WorkspaceServerCapabilities, workspaceFolders, fileOperations)
+        MAKE_SWAP_METHOD(WorkspaceServerCapabilities, workspaceFolders, fileOperations)
 };
 MAKE_REFLECT_STRUCT(WorkspaceServerCapabilities, workspaceFolders, fileOperations)
 MAKE_REFLECT_STRUCT(WorkspaceServerCapabilities::lsFileOperations, didCreate, willCreate, didRename, willRename, didDelete, willDelete)
@@ -328,53 +328,53 @@
  //
 
 struct SemanticHighlightingServerCapabilities {
-	//
-	 // A "lookup table" of semantic highlighting <a href="https://manual.macromates.com/en/language_grammars">TextMate scopes</a>
-	 // supported by the language server. If not defined or empty, then the server does not support the semantic highlighting
-	 // feature. Otherwise, clients should reuse this "lookup table" when receiving semantic highlighting notifications from
-	 // the server.
-	 //
-	 std::vector< std::vector<std::string> > scopes;
-	 MAKE_SWAP_METHOD(SemanticHighlightingServerCapabilities, scopes)
+        //
+         // A "lookup table" of semantic highlighting <a href="https://manual.macromates.com/en/language_grammars">TextMate scopes</a>
+         // supported by the language server. If not defined or empty, then the server does not support the semantic highlighting
+         // feature. Otherwise, clients should reuse this "lookup table" when receiving semantic highlighting notifications from
+         // the server.
+         //
+         std::vector< std::vector<std::string> > scopes;
+         MAKE_SWAP_METHOD(SemanticHighlightingServerCapabilities, scopes)
 };
 MAKE_REFLECT_STRUCT(SemanticHighlightingServerCapabilities, scopes)
 
 struct SemanticTokensServerFull
 {
-	//
-	// The server supports deltas for full documents.
-	//
-	bool delta =false;
-	MAKE_SWAP_METHOD(SemanticTokensServerFull, delta)
+        //
+        // The server supports deltas for full documents.
+        //
+        bool delta =false;
+        MAKE_SWAP_METHOD(SemanticTokensServerFull, delta)
 };
 MAKE_REFLECT_STRUCT(SemanticTokensServerFull, delta)
 struct SemanticTokensWithRegistrationOptions
 {
-	SemanticTokensLegend legend;
+        SemanticTokensLegend legend;
 
-	//
-	 // Server supports providing semantic tokens for a specific range
-	 // of a document.
-	 //
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<lsp::Any> > >  range;
+        //
+         // Server supports providing semantic tokens for a specific range
+         // of a document.
+         //
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<lsp::Any> > >  range;
 
-	//
-	 // Server supports providing semantic tokens for a full document.
-	 //
-	boost::optional< std::pair< boost::optional<bool>,
-	boost::optional<SemanticTokensServerFull> > >  full;
+        //
+         // Server supports providing semantic tokens for a full document.
+         //
+        boost::optional< std::pair< boost::optional<bool>,
+        boost::optional<SemanticTokensServerFull> > >  full;
 
-	//
-	 // A document selector to identify the scope of the registration. If set to null
-	 // the document selector provided on the client side will be used.
-	 //
-	boost::optional < std::vector<DocumentFilter> > documentSelector;
-	//
-	 // The id used to register the request. The id can be used to deregister
-	 // the request again. See also Registration#id.
-	 //
-	boost::optional<std::string> id;
-	MAKE_SWAP_METHOD(SemanticTokensWithRegistrationOptions, legend, range, full, documentSelector, id)
+        //
+         // A document selector to identify the scope of the registration. If set to null
+         // the document selector provided on the client side will be used.
+         //
+        boost::optional < std::vector<DocumentFilter> > documentSelector;
+        //
+         // The id used to register the request. The id can be used to deregister
+         // the request again. See also Registration#id.
+         //
+        boost::optional<std::string> id;
+        MAKE_SWAP_METHOD(SemanticTokensWithRegistrationOptions, legend, range, full, documentSelector, id)
 };
 MAKE_REFLECT_STRUCT(SemanticTokensWithRegistrationOptions, legend, range, full, documentSelector ,id)
 
@@ -381,24 +381,24 @@
 using  DocumentColorOptions = WorkDoneProgressOptions;
 using  FoldingRangeOptions = WorkDoneProgressOptions;
 struct lsServerCapabilities {
-	// Defines how text documents are synced. Is either a detailed structure
-	// defining each notification or for backwards compatibility the
+        // Defines how text documents are synced. Is either a detailed structure
+        // defining each notification or for backwards compatibility the
 
-	// TextDocumentSyncKind number.
-	boost::optional< std::pair<boost::optional<lsTextDocumentSyncKind>,
-	boost::optional<lsTextDocumentSyncOptions> >> textDocumentSync;
+        // TextDocumentSyncKind number.
+        boost::optional< std::pair<boost::optional<lsTextDocumentSyncKind>,
+        boost::optional<lsTextDocumentSyncOptions> >> textDocumentSync;
 
-	// The server provides hover support.
-	boost::optional<bool>  hoverProvider;
+        // The server provides hover support.
+        boost::optional<bool>  hoverProvider;
 
-	// The server provides completion support.
-	boost::optional < lsCompletionOptions > completionProvider;
+        // The server provides completion support.
+        boost::optional < lsCompletionOptions > completionProvider;
 
-	// The server provides signature help support.
-	boost::optional < lsSignatureHelpOptions > signatureHelpProvider;
+        // The server provides signature help support.
+        boost::optional < lsSignatureHelpOptions > signatureHelpProvider;
 
-	// The server provides goto definition support.
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > definitionProvider;
+        // The server provides goto definition support.
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > definitionProvider;
 
 
   //
@@ -406,184 +406,184 @@
    //
    // Since 3.6.0
    //
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<StaticRegistrationOptions> > > typeDefinitionProvider ;
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<StaticRegistrationOptions> > > typeDefinitionProvider ;
 
-	// The server provides implementation support.
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<StaticRegistrationOptions> > >  implementationProvider ;
+        // The server provides implementation support.
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<StaticRegistrationOptions> > >  implementationProvider ;
 
-	// The server provides find references support.
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > referencesProvider ;
+        // The server provides find references support.
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > referencesProvider ;
 
-	// The server provides document highlight support.
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentHighlightProvider ;
+        // The server provides document highlight support.
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentHighlightProvider ;
 
-	// The server provides document symbol support.
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentSymbolProvider ;
+        // The server provides document symbol support.
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentSymbolProvider ;
 
-	// The server provides workspace symbol support.
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > workspaceSymbolProvider ;
+        // The server provides workspace symbol support.
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > workspaceSymbolProvider ;
 
-	// The server provides code actions.
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<CodeActionOptions> > > codeActionProvider ;
+        // The server provides code actions.
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<CodeActionOptions> > > codeActionProvider ;
 
-	// The server provides code lens.
-	boost::optional<CodeLensOptions> codeLensProvider;
+        // The server provides code lens.
+        boost::optional<CodeLensOptions> codeLensProvider;
 
-	// The server provides document formatting.
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentFormattingProvider ;
+        // The server provides document formatting.
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentFormattingProvider ;
 
-	// The server provides document range formatting.
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentRangeFormattingProvider ;
+        // The server provides document range formatting.
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<WorkDoneProgressOptions> > > documentRangeFormattingProvider ;
 
-	// The server provides document formatting on typing.
-	boost::optional<lsDocumentOnTypeFormattingOptions> documentOnTypeFormattingProvider;
+        // The server provides document formatting on typing.
+        boost::optional<lsDocumentOnTypeFormattingOptions> documentOnTypeFormattingProvider;
 
-	// The server provides rename support.
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<RenameOptions> > >  renameProvider;
+        // The server provides rename support.
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<RenameOptions> > >  renameProvider;
 
 
-	// The server provides document link support.
-	boost::optional<lsDocumentLinkOptions > documentLinkProvider;
+        // The server provides document link support.
+        boost::optional<lsDocumentLinkOptions > documentLinkProvider;
 
 
-	//
-	 // The server provides color provider support.
-	 //
-	 // @since 3.6.0
-	 //
-	boost::optional< std::pair< boost::optional<bool>, boost::optional<DocumentColorOptions> > >  colorProvider;
+        //
+         // The server provides color provider support.
+         //
+         // @since 3.6.0
+         //
+        boost::optional< std::pair< boost::optional<bool>, boost::optional<DocumentColorOptions> > >  colorProvider;
 
 
-	//
-		 // The server provides folding provider support.
-		 //
-		 // @since 3.10.0
-		 //
-	boost::optional <  std::pair< boost::optional<bool>, boost::optional<FoldingRangeOptions> >   > foldingRangeProvider;
+        //
+                 // The server provides folding provider support.
+                 //
+                 // @since 3.10.0
+                 //
+        boost::optional <  std::pair< boost::optional<bool>, boost::optional<FoldingRangeOptions> >   > foldingRangeProvider;
 
-	// The server provides execute command support.
-	boost::optional < lsExecuteCommandOptions >executeCommandProvider;
+        // The server provides execute command support.
+        boost::optional < lsExecuteCommandOptions >executeCommandProvider;
 
 
-	//
-	 // Workspace specific server capabilities
-	 //
-	boost::optional< WorkspaceServerCapabilities > workspace;
+        //
+         // Workspace specific server capabilities
+         //
+        boost::optional< WorkspaceServerCapabilities > workspace;
 
-	//
-	 // Semantic highlighting server capabilities.
-	 //
+        //
+         // Semantic highlighting server capabilities.
+         //
 
-	 boost::optional<	 SemanticHighlightingServerCapabilities >semanticHighlighting;
+         boost::optional<        SemanticHighlightingServerCapabilities >semanticHighlighting;
 
-	//
-	 // Server capability for calculating super- and subtype hierarchies.
-	 // The LS supports the type hierarchy language feature, if this capability is set to {@code true}.
-	 //
-	 // <p>
-	 // <b>Note:</b> the <a href=
-	 // "https://github.com/Microsoft/vscode-languageserver-node/pull/426">{@code textDocument/typeHierarchy}
-	 // language feature</a> is not yet part of the official LSP specification.
-	 //
+        //
+         // Server capability for calculating super- and subtype hierarchies.
+         // The LS supports the type hierarchy language feature, if this capability is set to {@code true}.
+         //
+         // <p>
+         // <b>Note:</b> the <a href=
+         // "https://github.com/Microsoft/vscode-languageserver-node/pull/426">{@code textDocument/typeHierarchy}
+         // language feature</a> is not yet part of the official LSP specification.
+         //
 
-	 boost::optional< std::pair< boost::optional<bool>,
-	boost::optional<StaticRegistrationOptions> > > typeHierarchyProvider;
+         boost::optional< std::pair< boost::optional<bool>,
+        boost::optional<StaticRegistrationOptions> > > typeHierarchyProvider;
 
-	//
-	 // The server provides Call Hierarchy support.
-	 //
+        //
+         // The server provides Call Hierarchy support.
+         //
 
-	 boost::optional< std::pair< boost::optional<bool>,
-	boost::optional<StaticRegistrationOptions> > > callHierarchyProvider;
+         boost::optional< std::pair< boost::optional<bool>,
+        boost::optional<StaticRegistrationOptions> > > callHierarchyProvider;
 
-	//
-	 // The server provides selection range support.
-	 //
-	 // Since 3.15.0
-	 //
-	 boost::optional< std::pair< boost::optional<bool>,
-	boost::optional<StaticRegistrationOptions> > > selectionRangeProvider;
+        //
+         // The server provides selection range support.
+         //
+         // Since 3.15.0
+         //
+         boost::optional< std::pair< boost::optional<bool>,
+        boost::optional<StaticRegistrationOptions> > > selectionRangeProvider;
 
-	 //
-	  // The server provides linked editing range support.
-	  //
-	  // Since 3.16.0
-	  //
-	 boost::optional< std::pair< boost::optional<bool>,
-		 boost::optional<StaticRegistrationOptions> > > linkedEditingRangeProvider;
+         //
+          // The server provides linked editing range support.
+          //
+          // Since 3.16.0
+          //
+         boost::optional< std::pair< boost::optional<bool>,
+                 boost::optional<StaticRegistrationOptions> > > linkedEditingRangeProvider;
 
 
-	 //
-	  // The server provides semantic tokens support.
-	  //
-	  // Since 3.16.0
-	  //
-	 boost::optional < SemanticTokensWithRegistrationOptions> semanticTokensProvider;
+         //
+          // The server provides semantic tokens support.
+          //
+          // Since 3.16.0
+          //
+         boost::optional < SemanticTokensWithRegistrationOptions> semanticTokensProvider;
 
-	 //
-	  // Whether server provides moniker support.
-	  //
-	  // Since 3.16.0
-	  //
-	 boost::optional< std::pair< boost::optional<bool>,
-		 boost::optional<StaticRegistrationOptions> > >  monikerProvider;
+         //
+          // Whether server provides moniker support.
+          //
+          // Since 3.16.0
+          //
+         boost::optional< std::pair< boost::optional<bool>,
+                 boost::optional<StaticRegistrationOptions> > >  monikerProvider;
 
-	boost::optional<lsp::Any> experimental;
+        boost::optional<lsp::Any> experimental;
 
 
-	MAKE_SWAP_METHOD(lsServerCapabilities,
-		textDocumentSync,
-		hoverProvider,
-		completionProvider,
-		signatureHelpProvider,
-		definitionProvider,
-		typeDefinitionProvider,
-		implementationProvider,
-		referencesProvider,
-		documentHighlightProvider,
-		documentSymbolProvider,
-		workspaceSymbolProvider,
-		codeActionProvider,
-		codeLensProvider,
-		documentFormattingProvider,
-		documentRangeFormattingProvider,
-		documentOnTypeFormattingProvider,
-		renameProvider,
-		documentLinkProvider,
-		executeCommandProvider,
-		workspace,
-		semanticHighlighting,
-		typeHierarchyProvider,
-		callHierarchyProvider,
-		selectionRangeProvider,
-		experimental, colorProvider, foldingRangeProvider,
-		linkedEditingRangeProvider, monikerProvider, semanticTokensProvider)
+        MAKE_SWAP_METHOD(lsServerCapabilities,
+                textDocumentSync,
+                hoverProvider,
+                completionProvider,
+                signatureHelpProvider,
+                definitionProvider,
+                typeDefinitionProvider,
+                implementationProvider,
+                referencesProvider,
+                documentHighlightProvider,
+                documentSymbolProvider,
+                workspaceSymbolProvider,
+                codeActionProvider,
+                codeLensProvider,
+                documentFormattingProvider,
+                documentRangeFormattingProvider,
+                documentOnTypeFormattingProvider,
+                renameProvider,
+                documentLinkProvider,
+                executeCommandProvider,
+                workspace,
+                semanticHighlighting,
+                typeHierarchyProvider,
+                callHierarchyProvider,
+                selectionRangeProvider,
+                experimental, colorProvider, foldingRangeProvider,
+                linkedEditingRangeProvider, monikerProvider, semanticTokensProvider)
 
 };
 MAKE_REFLECT_STRUCT(lsServerCapabilities,
-	textDocumentSync,
-	hoverProvider,
-	completionProvider,
-	signatureHelpProvider,
-	definitionProvider,
-	typeDefinitionProvider,
-	implementationProvider,
-	referencesProvider,
-	documentHighlightProvider,
-	documentSymbolProvider,
-	workspaceSymbolProvider,
-	codeActionProvider,
-	codeLensProvider,
-	documentFormattingProvider,
-	documentRangeFormattingProvider,
-	documentOnTypeFormattingProvider,
-	renameProvider,
-	documentLinkProvider,
-	executeCommandProvider,
-	workspace,
-	semanticHighlighting,
-	typeHierarchyProvider,
-	callHierarchyProvider,
-	selectionRangeProvider,
-	experimental, colorProvider, foldingRangeProvider,
-	linkedEditingRangeProvider, monikerProvider, semanticTokensProvider)
+        textDocumentSync,
+        hoverProvider,
+        completionProvider,
+        signatureHelpProvider,
+        definitionProvider,
+        typeDefinitionProvider,
+        implementationProvider,
+        referencesProvider,
+        documentHighlightProvider,
+        documentSymbolProvider,
+        workspaceSymbolProvider,
+        codeActionProvider,
+        codeLensProvider,
+        documentFormattingProvider,
+        documentRangeFormattingProvider,
+        documentOnTypeFormattingProvider,
+        renameProvider,
+        documentLinkProvider,
+        executeCommandProvider,
+        workspace,
+        semanticHighlighting,
+        typeHierarchyProvider,
+        callHierarchyProvider,
+        selectionRangeProvider,
+        experimental, colorProvider, foldingRangeProvider,
+        linkedEditingRangeProvider, monikerProvider, semanticTokensProvider)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsTextDocumentClientCapabilities.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsTextDocumentClientCapabilities.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsTextDocumentClientCapabilities.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -14,8 +14,8 @@
 
 struct  WorkDoneProgressOptions
 {
-	boost::optional<bool>workDoneProgress;
-	MAKE_SWAP_METHOD(WorkDoneProgressOptions, workDoneProgress);
+        boost::optional<bool>workDoneProgress;
+        MAKE_SWAP_METHOD(WorkDoneProgressOptions, workDoneProgress);
 };
 MAKE_REFLECT_STRUCT(WorkDoneProgressOptions, workDoneProgress);
 
@@ -58,9 +58,9 @@
   bool includeText = false;
   void swap(lsSaveOptions& arg)noexcept
   {
-	  auto temp = includeText;
-	  includeText = arg.includeText;
-	  arg.includeText = temp;
+          auto temp = includeText;
+          includeText = arg.includeText;
+          arg.includeText = temp;
   }
 };
 MAKE_REFLECT_STRUCT(lsSaveOptions, includeText);
@@ -114,11 +114,11 @@
   boost::optional<lsSaveOptions> save;
 
   MAKE_SWAP_METHOD(lsTextDocumentSyncOptions,
-	  openClose,
-	  change,
-	  willSave,
-	  willSaveWaitUntil,
-	  save);
+          openClose,
+          change,
+          willSave,
+          willSaveWaitUntil,
+          save);
 };
 MAKE_REFLECT_STRUCT(lsTextDocumentSyncOptions,
                     openClose,
@@ -128,78 +128,78 @@
                     save);
 
 struct SynchronizationCapabilities {
-	// Whether text document synchronization supports dynamic registration.
-	boost::optional<bool> dynamicRegistration;
+        // Whether text document synchronization supports dynamic registration.
+        boost::optional<bool> dynamicRegistration;
 
-	// The client supports sending will save notifications.
-	boost::optional<bool> willSave;
+        // The client supports sending will save notifications.
+        boost::optional<bool> willSave;
 
-	// The client supports sending a will save request and
-	// waits for a response providing text edits which will
-	// be applied to the document before it is saved.
-	boost::optional<bool> willSaveWaitUntil;
+        // The client supports sending a will save request and
+        // waits for a response providing text edits which will
+        // be applied to the document before it is saved.
+        boost::optional<bool> willSaveWaitUntil;
 
-	// The client supports did save notifications.
-	boost::optional<bool> didSave;
+        // The client supports did save notifications.
+        boost::optional<bool> didSave;
 
-	MAKE_SWAP_METHOD(SynchronizationCapabilities,
-		dynamicRegistration,
-		willSave,
-		willSaveWaitUntil,
-		didSave);
+        MAKE_SWAP_METHOD(SynchronizationCapabilities,
+                dynamicRegistration,
+                willSave,
+                willSaveWaitUntil,
+                didSave);
 };
 MAKE_REFLECT_STRUCT(SynchronizationCapabilities,
-	dynamicRegistration,
-	willSave,
-	willSaveWaitUntil,
-	didSave);
+        dynamicRegistration,
+        willSave,
+        willSaveWaitUntil,
+        didSave);
 
 struct CompletionItemKindCapabilities
 {
-	boost::optional<std::vector<lsCompletionItemKind> >valueSet;
-	MAKE_SWAP_METHOD(CompletionItemKindCapabilities, valueSet);
+        boost::optional<std::vector<lsCompletionItemKind> >valueSet;
+        MAKE_SWAP_METHOD(CompletionItemKindCapabilities, valueSet);
 };
 MAKE_REFLECT_STRUCT(CompletionItemKindCapabilities, valueSet);
 
 struct CompletionItemCapabilities {
-	// Client supports snippets as insert text.
-	//
-	// A snippet can define tab stops and placeholders with `$1`, `$2`
-	// and `${3:foo}`. `$0` defines the final tab stop, it defaults to
-	// the end of the snippet. Placeholders with equal identifiers are linked,
-	// that is typing in one will update others too.
-	boost::optional<bool> snippetSupport;
+        // Client supports snippets as insert text.
+        //
+        // A snippet can define tab stops and placeholders with `$1`, `$2`
+        // and `${3:foo}`. `$0` defines the final tab stop, it defaults to
+        // the end of the snippet. Placeholders with equal identifiers are linked,
+        // that is typing in one will update others too.
+        boost::optional<bool> snippetSupport;
 
         // Client supports commit characters on a completion item.
 
-	boost::optional<bool> commitCharactersSupport;
+        boost::optional<bool> commitCharactersSupport;
 
 
         // Client supports the following content formats for the documentation
         // property. The order describes the preferred format of the client.
 
-	boost::optional< std::vector<std::string> > documentationFormat;
+        boost::optional< std::vector<std::string> > documentationFormat;
 
         // Client supports the deprecated property on a completion item.
 
-	boost::optional<bool> deprecatedSupport;
+        boost::optional<bool> deprecatedSupport;
 
-	//
-	 // Client supports the preselect property on a completion item.
-	 //
-	boost::optional<bool> preselectSupport;
+        //
+         // Client supports the preselect property on a completion item.
+         //
+        boost::optional<bool> preselectSupport;
 
-	MAKE_SWAP_METHOD(CompletionItemCapabilities,
-		snippetSupport,
-		commitCharactersSupport,
-		documentationFormat,
-		deprecatedSupport, preselectSupport);
+        MAKE_SWAP_METHOD(CompletionItemCapabilities,
+                snippetSupport,
+                commitCharactersSupport,
+                documentationFormat,
+                deprecatedSupport, preselectSupport);
 };
 MAKE_REFLECT_STRUCT(CompletionItemCapabilities,
-	snippetSupport,
-	commitCharactersSupport,
-	documentationFormat,
-	deprecatedSupport, preselectSupport);
+        snippetSupport,
+        commitCharactersSupport,
+        documentationFormat,
+        deprecatedSupport, preselectSupport);
 
 
 //
@@ -206,49 +206,49 @@
  // Capabilities specific to the `textDocument/completion`
  //
 struct CompletionCapabilities {
-	// Whether completion supports dynamic registration.
-	boost::optional<bool> dynamicRegistration;
+        // Whether completion supports dynamic registration.
+        boost::optional<bool> dynamicRegistration;
 
 
 
-	// The client supports the following `CompletionItem` specific
-	// capabilities.
-	boost::optional<CompletionItemCapabilities> completionItem;
+        // The client supports the following `CompletionItem` specific
+        // capabilities.
+        boost::optional<CompletionItemCapabilities> completionItem;
 
-	//
-	 // The client supports the following `CompletionItemKind` specific
-	 // capabilities.
-	 //
-	boost::optional<CompletionItemKindCapabilities> completionItemKind;
+        //
+         // The client supports the following `CompletionItemKind` specific
+         // capabilities.
+         //
+        boost::optional<CompletionItemKindCapabilities> completionItemKind;
 
-	//
-	 // The client supports sending additional context information for a
-	 // `textDocument/completion` request.
-	 //
-	boost::optional<bool> contextSupport;
+        //
+         // The client supports sending additional context information for a
+         // `textDocument/completion` request.
+         //
+        boost::optional<bool> contextSupport;
 
 
-	MAKE_SWAP_METHOD(CompletionCapabilities,
-		dynamicRegistration,
-		completionItem, completionItemKind);
+        MAKE_SWAP_METHOD(CompletionCapabilities,
+                dynamicRegistration,
+                completionItem, completionItemKind);
 };
 
 MAKE_REFLECT_STRUCT(CompletionCapabilities,
-	dynamicRegistration,
-	completionItem , completionItemKind);
+        dynamicRegistration,
+        completionItem , completionItemKind);
 
 
 struct HoverCapabilities:public DynamicRegistrationCapabilities
 {
-	//
+        //
  // Client supports the following content formats for the content
  // property. The order describes the preferred format of the client.
  //
  // See {@link MarkupKind} for allowed values.
  //
-	boost::optional<std::vector<std::string>> contentFormat;
+        boost::optional<std::vector<std::string>> contentFormat;
 
-	MAKE_SWAP_METHOD(HoverCapabilities, dynamicRegistration, contentFormat);
+        MAKE_SWAP_METHOD(HoverCapabilities, dynamicRegistration, contentFormat);
 };
 MAKE_REFLECT_STRUCT(HoverCapabilities, dynamicRegistration, contentFormat);
 
@@ -255,72 +255,72 @@
 //
  // Client capabilities specific to parameter information.
  //
-struct	ParameterInformationCapabilities {
-	//
-	 // The client supports processing label offsets instead of a
-	 // simple label string.
-	 //
-	 // Since 3.14.0
-	 //
-	boost::optional<bool> labelOffsetSupport;
+struct  ParameterInformationCapabilities {
+        //
+         // The client supports processing label offsets instead of a
+         // simple label string.
+         //
+         // Since 3.14.0
+         //
+        boost::optional<bool> labelOffsetSupport;
 
-	MAKE_SWAP_METHOD(ParameterInformationCapabilities, labelOffsetSupport);
+        MAKE_SWAP_METHOD(ParameterInformationCapabilities, labelOffsetSupport);
 };
 MAKE_REFLECT_STRUCT(ParameterInformationCapabilities, labelOffsetSupport)
 
 
 struct SignatureInformationCapabilities {
-	//
-	 // Client supports the following content formats for the documentation
-	 // property. The order describes the preferred format of the client.
-	 //
-	 // See {@link MarkupKind} for allowed values.
-	 //
-	std::vector<std::string> documentationFormat;
+        //
+         // Client supports the following content formats for the documentation
+         // property. The order describes the preferred format of the client.
+         //
+         // See {@link MarkupKind} for allowed values.
+         //
+        std::vector<std::string> documentationFormat;
 
-	//
-	 // Client capabilities specific to parameter information.
-	 //
-	 ParameterInformationCapabilities parameterInformation;
+        //
+         // Client capabilities specific to parameter information.
+         //
+         ParameterInformationCapabilities parameterInformation;
 
-	 MAKE_SWAP_METHOD(SignatureInformationCapabilities, documentationFormat, parameterInformation)
+         MAKE_SWAP_METHOD(SignatureInformationCapabilities, documentationFormat, parameterInformation)
 };
 MAKE_REFLECT_STRUCT(SignatureInformationCapabilities,documentationFormat, parameterInformation)
 
 struct SignatureHelpCapabilities :public DynamicRegistrationCapabilities
 {
-	//
-	 // The client supports the following `SignatureInformation`
-	 // specific properties.
-	 //
-	boost::optional< SignatureInformationCapabilities  > signatureInformation;
+        //
+         // The client supports the following `SignatureInformation`
+         // specific properties.
+         //
+        boost::optional< SignatureInformationCapabilities  > signatureInformation;
 
-	MAKE_SWAP_METHOD(SignatureHelpCapabilities, dynamicRegistration, signatureInformation)
+        MAKE_SWAP_METHOD(SignatureHelpCapabilities, dynamicRegistration, signatureInformation)
 };
 MAKE_REFLECT_STRUCT(SignatureHelpCapabilities, dynamicRegistration, signatureInformation)
 
 struct DocumentSymbolCapabilities :public DynamicRegistrationCapabilities {
-	//
-	 // Specific capabilities for the `SymbolKind`.
-	 //
-	boost::optional<SymbolKindCapabilities>  symbolKind;
+        //
+         // Specific capabilities for the `SymbolKind`.
+         //
+        boost::optional<SymbolKindCapabilities>  symbolKind;
 
-	//
-	 // The client support hierarchical document symbols.
-	 //
-	 boost::optional<bool> hierarchicalDocumentSymbolSupport;
+        //
+         // The client support hierarchical document symbols.
+         //
+         boost::optional<bool> hierarchicalDocumentSymbolSupport;
 
-	 MAKE_SWAP_METHOD(DocumentSymbolCapabilities, dynamicRegistration, symbolKind, hierarchicalDocumentSymbolSupport)
+         MAKE_SWAP_METHOD(DocumentSymbolCapabilities, dynamicRegistration, symbolKind, hierarchicalDocumentSymbolSupport)
 };
 MAKE_REFLECT_STRUCT(DocumentSymbolCapabilities, dynamicRegistration, symbolKind, hierarchicalDocumentSymbolSupport)
 
 struct DeclarationCapabilities:public DynamicRegistrationCapabilities{
-	//
-	 // The client supports additional metadata in the form of declaration links.
-	 //
-	boost::optional<bool>linkSupport;
+        //
+         // The client supports additional metadata in the form of declaration links.
+         //
+        boost::optional<bool>linkSupport;
 
-	MAKE_SWAP_METHOD(DeclarationCapabilities, dynamicRegistration, linkSupport);
+        MAKE_SWAP_METHOD(DeclarationCapabilities, dynamicRegistration, linkSupport);
 };
 MAKE_REFLECT_STRUCT(DeclarationCapabilities, dynamicRegistration, linkSupport)
 
@@ -327,203 +327,203 @@
 
 struct CodeActionKindCapabilities
 {
-	//
-	 // The code action kind values the client supports. When this
-	 // property exists the client also guarantees that it will
-	 // handle values outside its set gracefully and falls back
-	 // to a default value when unknown.
-	 //
-	 // See {@link CodeActionKind} for allowed values.
-	 //
-	boost::optional< std::vector< std::string> >valueSet;
+        //
+         // The code action kind values the client supports. When this
+         // property exists the client also guarantees that it will
+         // handle values outside its set gracefully and falls back
+         // to a default value when unknown.
+         //
+         // See {@link CodeActionKind} for allowed values.
+         //
+        boost::optional< std::vector< std::string> >valueSet;
 
-	MAKE_SWAP_METHOD(CodeActionKindCapabilities, valueSet)
+        MAKE_SWAP_METHOD(CodeActionKindCapabilities, valueSet)
 };
 MAKE_REFLECT_STRUCT(CodeActionKindCapabilities,valueSet)
 
 struct CodeActionLiteralSupportCapabilities
 {
-	boost::optional<CodeActionKindCapabilities> codeActionKind;
+        boost::optional<CodeActionKindCapabilities> codeActionKind;
 
-	MAKE_SWAP_METHOD(CodeActionLiteralSupportCapabilities, codeActionKind)
+        MAKE_SWAP_METHOD(CodeActionLiteralSupportCapabilities, codeActionKind)
 };
 MAKE_REFLECT_STRUCT(CodeActionLiteralSupportCapabilities, codeActionKind)
 
 struct CodeActionCapabilities:public DynamicRegistrationCapabilities{
-	//
+        //
  // The client support code action literals as a valid
  // response of the `textDocument/codeAction` request.
  //
-	boost::optional<CodeActionLiteralSupportCapabilities> codeActionLiteralSupport;
+        boost::optional<CodeActionLiteralSupportCapabilities> codeActionLiteralSupport;
 
-	MAKE_SWAP_METHOD(CodeActionCapabilities, dynamicRegistration, codeActionLiteralSupport)
+        MAKE_SWAP_METHOD(CodeActionCapabilities, dynamicRegistration, codeActionLiteralSupport)
 };
 MAKE_REFLECT_STRUCT(CodeActionCapabilities,dynamicRegistration,codeActionLiteralSupport)
 
 struct RenameCapabilities :public DynamicRegistrationCapabilities {
-	//
+        //
  // The client support code action literals as a valid
  // response of the `textDocument/codeAction` request.
  //
-	boost::optional<bool> prepareSupport;
+        boost::optional<bool> prepareSupport;
 
-	MAKE_SWAP_METHOD(RenameCapabilities, dynamicRegistration, prepareSupport)
+        MAKE_SWAP_METHOD(RenameCapabilities, dynamicRegistration, prepareSupport)
 };
 MAKE_REFLECT_STRUCT(RenameCapabilities, dynamicRegistration, prepareSupport)
 
 struct  DiagnosticsTagSupport {
-	/**
-	 * The tags supported by the client.
-	 */
-	std::vector<DiagnosticTag> valueSet;
-	MAKE_SWAP_METHOD(DiagnosticsTagSupport, valueSet)
+        /**
+         * The tags supported by the client.
+         */
+        std::vector<DiagnosticTag> valueSet;
+        MAKE_SWAP_METHOD(DiagnosticsTagSupport, valueSet)
 };
 MAKE_REFLECT_STRUCT(DiagnosticsTagSupport, valueSet)
 
 struct PublishDiagnosticsClientCapabilities :public DynamicRegistrationCapabilities {
-	/**
+        /**
  * The client support code action literals as a valid
  * response of the `textDocument/codeAction` request.
  */
-	boost::optional<bool> relatedInformation;
+        boost::optional<bool> relatedInformation;
 
-	/**
-	 * Client supports the tag property to provide meta data about a diagnostic.
-	 * Clients supporting tags have to handle unknown tags gracefully.
-	 *
-	 * This property had been added and implemented as boolean before it was
-	 * added to the specification as {@link DiagnosticsTagSupport}. In order to
-	 * keep this implementation compatible with intermediate clients (including
-	 * vscode-language-client < 6.0.0) we add an either type here.
-	 *
-	 * Since 3.15
-	 */
-	boost::optional < std::pair<boost::optional<bool>, boost::optional<DiagnosticsTagSupport> > >  tagSupport;
+        /**
+         * Client supports the tag property to provide meta data about a diagnostic.
+         * Clients supporting tags have to handle unknown tags gracefully.
+         *
+         * This property had been added and implemented as boolean before it was
+         * added to the specification as {@link DiagnosticsTagSupport}. In order to
+         * keep this implementation compatible with intermediate clients (including
+         * vscode-language-client < 6.0.0) we add an either type here.
+         *
+         * Since 3.15
+         */
+        boost::optional < std::pair<boost::optional<bool>, boost::optional<DiagnosticsTagSupport> > >  tagSupport;
 
-	/**
-	 * Whether the client interprets the version property of the
-	 * `textDocument/publishDiagnostics` notification's parameter.
-	 *
-	 * Since 3.15.0
-	 */
-	boost::optional<bool> versionSupport;
+        /**
+         * Whether the client interprets the version property of the
+         * `textDocument/publishDiagnostics` notification's parameter.
+         *
+         * Since 3.15.0
+         */
+        boost::optional<bool> versionSupport;
 
-	/**
+        /**
  * Client supports a codeDescription property
  *
  * @since 3.16.0
  */
-	boost::optional<bool> codeDescriptionSupport ;
+        boost::optional<bool> codeDescriptionSupport ;
 
-	/**
-	 * Whether code action supports the `data` property which is
-	 * preserved between a `textDocument/publishDiagnostics` and
-	 * `textDocument/codeAction` request.
-	 *
-	 * @since 3.16.0
-	 */
-	boost::optional<bool> dataSupport ;
+        /**
+         * Whether code action supports the `data` property which is
+         * preserved between a `textDocument/publishDiagnostics` and
+         * `textDocument/codeAction` request.
+         *
+         * @since 3.16.0
+         */
+        boost::optional<bool> dataSupport ;
 
 
-	MAKE_SWAP_METHOD(PublishDiagnosticsClientCapabilities, dynamicRegistration, relatedInformation, tagSupport,versionSupport,codeDescriptionSupport,dataSupport)
+        MAKE_SWAP_METHOD(PublishDiagnosticsClientCapabilities, dynamicRegistration, relatedInformation, tagSupport,versionSupport,codeDescriptionSupport,dataSupport)
 };
 MAKE_REFLECT_STRUCT(PublishDiagnosticsClientCapabilities, dynamicRegistration, relatedInformation, tagSupport, versionSupport, codeDescriptionSupport, dataSupport)
 
 
 struct FoldingRangeCapabilities :public DynamicRegistrationCapabilities {
-	//
-	 // The maximum number of folding ranges that the client prefers to receive per document. The value serves as a
-	 // hint, servers are free to follow the limit.
-	 //
-	boost::optional<int> rangeLimit;
+        //
+         // The maximum number of folding ranges that the client prefers to receive per document. The value serves as a
+         // hint, servers are free to follow the limit.
+         //
+        boost::optional<int> rangeLimit;
 
-	//
-	 // If set, the client signals that it only supports folding complete lines. If set, client will
-	 // ignore specified `startCharacter` and `endCharacter` properties in a FoldingRange.
-	 //
-	boost::optional<bool> lineFoldingOnly;
-	MAKE_SWAP_METHOD(FoldingRangeCapabilities, dynamicRegistration, rangeLimit, lineFoldingOnly)
+        //
+         // If set, the client signals that it only supports folding complete lines. If set, client will
+         // ignore specified `startCharacter` and `endCharacter` properties in a FoldingRange.
+         //
+        boost::optional<bool> lineFoldingOnly;
+        MAKE_SWAP_METHOD(FoldingRangeCapabilities, dynamicRegistration, rangeLimit, lineFoldingOnly)
 };
 MAKE_REFLECT_STRUCT(FoldingRangeCapabilities, dynamicRegistration, rangeLimit,lineFoldingOnly)
 
 
 struct SemanticHighlightingCapabilities :public DynamicRegistrationCapabilities {
-	//
+        //
  // The client support code action literals as a valid
  // response of the `textDocument/codeAction` request.
  //
-	boost::optional<bool> semanticHighlighting;
+        boost::optional<bool> semanticHighlighting;
 
-	MAKE_SWAP_METHOD(SemanticHighlightingCapabilities, dynamicRegistration, semanticHighlighting)
+        MAKE_SWAP_METHOD(SemanticHighlightingCapabilities, dynamicRegistration, semanticHighlighting)
 };
 MAKE_REFLECT_STRUCT(SemanticHighlightingCapabilities, dynamicRegistration, semanticHighlighting)
 
 struct SemanticTokensClientCapabilitiesRequestsFull {
 
-	//
-	// The client will send the `textDocument/semanticTokens/full/delta` request if
-	// the server provides a corresponding handler.
-	//
-	bool delta = false;
-	MAKE_SWAP_METHOD(SemanticTokensClientCapabilitiesRequestsFull, delta)
+        //
+        // The client will send the `textDocument/semanticTokens/full/delta` request if
+        // the server provides a corresponding handler.
+        //
+        bool delta = false;
+        MAKE_SWAP_METHOD(SemanticTokensClientCapabilitiesRequestsFull, delta)
 };
 MAKE_REFLECT_STRUCT(SemanticTokensClientCapabilitiesRequestsFull, delta)
 
 struct SemanticTokensClientCapabilities :  public DynamicRegistrationCapabilities
 {
-	//export  TokenFormat = 'relative';
-	struct lsRequests
-	{
-		//
-		 // The client will send the `textDocument/semanticTokens/range` request
-		 // if the server provides a corresponding handler.
-		 //
-		boost::optional<std::pair< boost::optional<bool>,
-		boost::optional<SemanticTokensClientCapabilitiesRequestsFull>>>  range;
-		//
-		 // The client will send the `textDocument/semanticTokens/full` request
-		 // if the server provides a corresponding handler.
-		 //
-		boost::optional<std::pair< boost::optional<bool>, boost::optional<lsp::Any>>> full;
-		MAKE_SWAP_METHOD(lsRequests, range, full)
-	};
+        //export  TokenFormat = 'relative';
+        struct lsRequests
+        {
+                //
+                 // The client will send the `textDocument/semanticTokens/range` request
+                 // if the server provides a corresponding handler.
+                 //
+                boost::optional<std::pair< boost::optional<bool>,
+                boost::optional<SemanticTokensClientCapabilitiesRequestsFull>>>  range;
+                //
+                 // The client will send the `textDocument/semanticTokens/full` request
+                 // if the server provides a corresponding handler.
+                 //
+                boost::optional<std::pair< boost::optional<bool>, boost::optional<lsp::Any>>> full;
+                MAKE_SWAP_METHOD(lsRequests, range, full)
+        };
 
-	lsRequests requests;
-	//
-	 // The token types that the client supports.
-	 //
-	std::vector<std::string> tokenTypes;
+        lsRequests requests;
+        //
+         // The token types that the client supports.
+         //
+        std::vector<std::string> tokenTypes;
 
-	//
-	 // The token modifiers that the client supports.
-	 //
-	std::vector<std::string> tokenModifiers;
-	//
-	 // The formats the clients supports.
-	 //
-	std::vector<std::string> formats;
-	//
-	 // Whether the client supports tokens that can overlap each other.
-	 //
-	boost::optional < bool >overlappingTokenSupport;
+        //
+         // The token modifiers that the client supports.
+         //
+        std::vector<std::string> tokenModifiers;
+        //
+         // The formats the clients supports.
+         //
+        std::vector<std::string> formats;
+        //
+         // Whether the client supports tokens that can overlap each other.
+         //
+        boost::optional < bool >overlappingTokenSupport;
 
-	//
-	 // Whether the client supports tokens that can span multiple lines.
-	 //
-	boost::optional < bool > multilineTokenSupport;
+        //
+         // Whether the client supports tokens that can span multiple lines.
+         //
+        boost::optional < bool > multilineTokenSupport;
 
-	MAKE_SWAP_METHOD(SemanticTokensClientCapabilities, dynamicRegistration,requests, tokenTypes, tokenModifiers,
-		formats, overlappingTokenSupport, multilineTokenSupport)
+        MAKE_SWAP_METHOD(SemanticTokensClientCapabilities, dynamicRegistration,requests, tokenTypes, tokenModifiers,
+                formats, overlappingTokenSupport, multilineTokenSupport)
 
 };
 MAKE_REFLECT_STRUCT(SemanticTokensClientCapabilities::lsRequests, range,full)
 MAKE_REFLECT_STRUCT(SemanticTokensClientCapabilities, dynamicRegistration, requests, tokenTypes, tokenModifiers,
-	formats, overlappingTokenSupport, multilineTokenSupport)
+        formats, overlappingTokenSupport, multilineTokenSupport)
 
 // Text document specific client capabilities.
 struct lsTextDocumentClientCapabilities {
 
-	SynchronizationCapabilities synchronization;
+        SynchronizationCapabilities synchronization;
 
 
   // Capabilities specific to the `textDocument/completion`
@@ -641,10 +641,10 @@
   boost::optional< DynamicRegistrationCapabilities > selectionRange;
 
   //
-	 // Capabilities specific to the `textDocument/linkedEditingRange` request.
-	 //
-	 // @since 3.16.0
-	 //
+         // Capabilities specific to the `textDocument/linkedEditingRange` request.
+         //
+         // @since 3.16.0
+         //
   boost::optional< DynamicRegistrationCapabilities > linkedEditingRange;
 
   //
@@ -669,45 +669,45 @@
   boost::optional< DynamicRegistrationCapabilities >  moniker;
 
   MAKE_SWAP_METHOD(lsTextDocumentClientCapabilities,
-	  synchronization,
-	  completion,
-	  hover,
-	  signatureHelp,
-	  implementation,
-	  references,
-	  documentHighlight,
-	  documentSymbol,
-	  formatting,
-	  rangeFormatting,
-	  onTypeFormatting,
-	  declaration,
-	  definition, typeDefinition, implementation,
-	  codeAction,
-	  codeLens,
-	  documentLink, colorProvider,
-	  rename, publishDiagnostics, foldingRange,
-	  semanticHighlightingCapabilities, typeHierarchyCapabilities,
-	  callHierarchy, selectionRange , linkedEditingRange, semanticTokens, moniker)
+          synchronization,
+          completion,
+          hover,
+          signatureHelp,
+          implementation,
+          references,
+          documentHighlight,
+          documentSymbol,
+          formatting,
+          rangeFormatting,
+          onTypeFormatting,
+          declaration,
+          definition, typeDefinition, implementation,
+          codeAction,
+          codeLens,
+          documentLink, colorProvider,
+          rename, publishDiagnostics, foldingRange,
+          semanticHighlightingCapabilities, typeHierarchyCapabilities,
+          callHierarchy, selectionRange , linkedEditingRange, semanticTokens, moniker)
 };
 
 
 MAKE_REFLECT_STRUCT(lsTextDocumentClientCapabilities,
-	synchronization,
-	completion,
-	hover,
-	signatureHelp,
-	implementation,
-	references,
-	documentHighlight,
-	documentSymbol,
-	formatting,
-	rangeFormatting,
-	onTypeFormatting,
-	declaration,
-	definition, typeDefinition, implementation,
-	codeAction,
-	codeLens,
-	documentLink, colorProvider,
-	rename, publishDiagnostics, foldingRange,
-	semanticHighlightingCapabilities, typeHierarchyCapabilities,
-	callHierarchy, selectionRange, linkedEditingRange, semanticTokens, moniker)
+        synchronization,
+        completion,
+        hover,
+        signatureHelp,
+        implementation,
+        references,
+        documentHighlight,
+        documentSymbol,
+        formatting,
+        rangeFormatting,
+        onTypeFormatting,
+        declaration,
+        definition, typeDefinition, implementation,
+        codeAction,
+        codeLens,
+        documentLink, colorProvider,
+        rename, publishDiagnostics, foldingRange,
+        semanticHighlightingCapabilities, typeHierarchyCapabilities,
+        callHierarchy, selectionRange, linkedEditingRange, semanticTokens, moniker)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsWorkspaceClientCapabilites.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsWorkspaceClientCapabilites.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/lsWorkspaceClientCapabilites.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -21,81 +21,81 @@
 
 struct lschangeAnnotationSupport
 {
-	/**
-	 * Whether the client groups edits with equal labels into tree nodes,
-	 * for instance all edits labelled with "Changes in Strings" would
-	 * be a tree node.
-	 */
-	boost::optional<bool> groupsOnLabel;
-	MAKE_SWAP_METHOD(lschangeAnnotationSupport, groupsOnLabel)
+        /**
+         * Whether the client groups edits with equal labels into tree nodes,
+         * for instance all edits labelled with "Changes in Strings" would
+         * be a tree node.
+         */
+        boost::optional<bool> groupsOnLabel;
+        MAKE_SWAP_METHOD(lschangeAnnotationSupport, groupsOnLabel)
 };
 MAKE_REFLECT_STRUCT(lschangeAnnotationSupport, groupsOnLabel)
 
 struct WorkspaceEditCapabilities {
-	/**
-	 * The client supports versioned document changes in `WorkspaceEdit`s
-	 */
-	boost::optional<bool>  documentChanges;
+        /**
+         * The client supports versioned document changes in `WorkspaceEdit`s
+         */
+        boost::optional<bool>  documentChanges;
 
-	/**
-	 * The client supports resource changes
-	 * in `WorkspaceEdit`s.
-	 *
-	 * @deprecated Since LSP introduces resource operations, use {link #resourceOperations}
-	 */
+        /**
+         * The client supports resource changes
+         * in `WorkspaceEdit`s.
+         *
+         * @deprecated Since LSP introduces resource operations, use {link #resourceOperations}
+         */
 
-	boost::optional<bool> resourceChanges;
+        boost::optional<bool> resourceChanges;
 
-	/**
-	 * The resource operations the client supports. Clients should at least
-	 * support 'create', 'rename' and 'delete' files and folders.
-	 *
-	 * @since 3.13.0
-	 */
-	boost::optional< std::vector<std::string> > resourceOperations;
+        /**
+         * The resource operations the client supports. Clients should at least
+         * support 'create', 'rename' and 'delete' files and folders.
+         *
+         * @since 3.13.0
+         */
+        boost::optional< std::vector<std::string> > resourceOperations;
 
-	/**
-	 * The failure handling strategy of a client if applying the workspace edit
-	 * fails.
-	 *
-	 * See {@link FailureHandlingKind} for allowed values.
-	 */
-	boost::optional<std::string > failureHandling;
+        /**
+         * The failure handling strategy of a client if applying the workspace edit
+         * fails.
+         *
+         * See {@link FailureHandlingKind} for allowed values.
+         */
+        boost::optional<std::string > failureHandling;
 
-	/**
-	 * Whether the client normalizes line endings to the client specific
-	 * setting.
-	 * If set to `true` the client will normalize line ending characters
-	 * in a workspace edit to the client specific new line character(s).
-	 *
-	 * @since 3.16.0
-	 */
-	boost::optional<bool> normalizesLineEndings;;
+        /**
+         * Whether the client normalizes line endings to the client specific
+         * setting.
+         * If set to `true` the client will normalize line ending characters
+         * in a workspace edit to the client specific new line character(s).
+         *
+         * @since 3.16.0
+         */
+        boost::optional<bool> normalizesLineEndings;;
 
-	/**
-	 * Whether the client in general supports change annotations on text edits,
-	 * create file, rename file and delete file changes.
-	 *
-	 * @since 3.16.0
-	 */
-	boost::optional<lschangeAnnotationSupport> changeAnnotationSupport;
-	
-	MAKE_SWAP_METHOD(WorkspaceEditCapabilities, documentChanges, resourceChanges, resourceOperations, failureHandling, normalizesLineEndings, changeAnnotationSupport)
+        /**
+         * Whether the client in general supports change annotations on text edits,
+         * create file, rename file and delete file changes.
+         *
+         * @since 3.16.0
+         */
+        boost::optional<lschangeAnnotationSupport> changeAnnotationSupport;
 
+        MAKE_SWAP_METHOD(WorkspaceEditCapabilities, documentChanges, resourceChanges, resourceOperations, failureHandling, normalizesLineEndings, changeAnnotationSupport)
+
 };
 MAKE_REFLECT_STRUCT(WorkspaceEditCapabilities,documentChanges, resourceChanges, resourceOperations, failureHandling, normalizesLineEndings, changeAnnotationSupport)
 
 
 struct DynamicRegistrationCapabilities {
-	// Did foo notification supports dynamic registration.
-	boost::optional<bool> dynamicRegistration;
+        // Did foo notification supports dynamic registration.
+        boost::optional<bool> dynamicRegistration;
 
-	MAKE_SWAP_METHOD(DynamicRegistrationCapabilities,
-		dynamicRegistration);
+        MAKE_SWAP_METHOD(DynamicRegistrationCapabilities,
+                dynamicRegistration);
 };
 
 MAKE_REFLECT_STRUCT(DynamicRegistrationCapabilities,
-	dynamicRegistration);
+        dynamicRegistration);
 
 
 
@@ -102,9 +102,9 @@
 // Workspace specific client capabilities.
 struct SymbolKindCapabilities
 {
-	boost::optional< std::vector<lsSymbolKind> >  valueSet;
+        boost::optional< std::vector<lsSymbolKind> >  valueSet;
 
-	MAKE_SWAP_METHOD(SymbolKindCapabilities, valueSet)
+        MAKE_SWAP_METHOD(SymbolKindCapabilities, valueSet)
 
 
 };
@@ -114,67 +114,67 @@
 
 
 struct SymbolCapabilities :public DynamicRegistrationCapabilities {
-	/**
-	 * Specific capabilities for the `SymbolKind` in the `workspace/symbol` request.
-	 */
-	boost::optional<SymbolKindCapabilities>  symbolKind;
+        /**
+         * Specific capabilities for the `SymbolKind` in the `workspace/symbol` request.
+         */
+        boost::optional<SymbolKindCapabilities>  symbolKind;
 
-	MAKE_SWAP_METHOD(SymbolCapabilities,
-		symbolKind, dynamicRegistration)
+        MAKE_SWAP_METHOD(SymbolCapabilities,
+                symbolKind, dynamicRegistration)
 };
 MAKE_REFLECT_STRUCT(SymbolCapabilities,
-	symbolKind, dynamicRegistration)
+        symbolKind, dynamicRegistration)
 
 
 struct lsFileOperations
 {
-	/**
+        /**
  * Whether the client supports dynamic registration for file
  * requests/notifications.
  */
-	boost::optional<bool> dynamicRegistration ;
+        boost::optional<bool> dynamicRegistration ;
 
-	/**
-	 * The client has support for sending didCreateFiles notifications.
-	 */
-	boost::optional<bool>didCreate ;
+        /**
+         * The client has support for sending didCreateFiles notifications.
+         */
+        boost::optional<bool>didCreate ;
 
-	/**
-	 * The client has support for sending willCreateFiles requests.
-	 */
-	boost::optional<bool>willCreate ;
+        /**
+         * The client has support for sending willCreateFiles requests.
+         */
+        boost::optional<bool>willCreate ;
 
-	/**
-	 * The client has support for sending didRenameFiles notifications.
-	 */
-	boost::optional<bool>didRename ;
+        /**
+         * The client has support for sending didRenameFiles notifications.
+         */
+        boost::optional<bool>didRename ;
 
-	/**
-	 * The client has support for sending willRenameFiles requests.
-	 */
-	boost::optional<bool>willRename ;
+        /**
+         * The client has support for sending willRenameFiles requests.
+         */
+        boost::optional<bool>willRename ;
 
-	/**
-	 * The client has support for sending didDeleteFiles notifications.
-	 */
-	boost::optional<bool>didDelete ;
+        /**
+         * The client has support for sending didDeleteFiles notifications.
+         */
+        boost::optional<bool>didDelete ;
 
-	/**
-	 * The client has support for sending willDeleteFiles requests.
-	 */
-	boost::optional<bool> willDelete ;
-	MAKE_SWAP_METHOD(lsFileOperations, dynamicRegistration, didCreate, willCreate,
-		didRename, willRename, didDelete, willDelete)
+        /**
+         * The client has support for sending willDeleteFiles requests.
+         */
+        boost::optional<bool> willDelete ;
+        MAKE_SWAP_METHOD(lsFileOperations, dynamicRegistration, didCreate, willCreate,
+                didRename, willRename, didDelete, willDelete)
 };
 MAKE_REFLECT_STRUCT(lsFileOperations, dynamicRegistration, didCreate, willCreate,
-	didRename, willRename, didDelete, willDelete)
+        didRename, willRename, didDelete, willDelete)
 
 struct lsWorkspaceClientCapabilites {
   // The client supports applying batch edits to the workspace.
   boost::optional<bool> applyEdit;
 
- 
 
+
   // Capabilities specific to `WorkspaceEdit`s
   boost::optional<WorkspaceEditCapabilities> workspaceEdit;
 
@@ -211,11 +211,11 @@
 
 
   /**
-		 * Capabilities specific to the semantic token requests scoped to the
-		 * workspace.
-		 *
-		 * @since 3.16.0
-		 */
+                 * Capabilities specific to the semantic token requests scoped to the
+                 * workspace.
+                 *
+                 * @since 3.16.0
+                 */
   boost::optional<DynamicRegistrationCapabilities> semanticTokens ;
 
   /**
@@ -232,14 +232,14 @@
    * @since 3.16.0
    */
   boost::optional<lsFileOperations> fileOperations;
-	
+
   MAKE_SWAP_METHOD(lsWorkspaceClientCapabilites,
-	  applyEdit,
-	  workspaceEdit,
-	  didChangeConfiguration,
-	  didChangeWatchedFiles,
-	  symbol,executeCommand, workspaceFolders,
-	  configuration, semanticTokens, codeLens, fileOperations)
+          applyEdit,
+          workspaceEdit,
+          didChangeConfiguration,
+          didChangeWatchedFiles,
+          symbol,executeCommand, workspaceFolders,
+          configuration, semanticTokens, codeLens, fileOperations)
 };
 
 MAKE_REFLECT_STRUCT(lsWorkspaceClientCapabilites,
@@ -249,7 +249,7 @@
                     didChangeWatchedFiles,
                     symbol,
                     executeCommand,workspaceFolders,
-	configuration, semanticTokens, codeLens, fileOperations)
+        configuration, semanticTokens, codeLens, fileOperations)
 
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/progress.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/progress.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/general/progress.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,9 +8,9 @@
 //and partial result progress to support streaming of results.
 struct  ProgressParams
 {
-	std::pair<boost::optional<std::string> , boost::optional<int> > token;
-	lsp::Any value;
-	MAKE_SWAP_METHOD(ProgressParams, token, value)
+        std::pair<boost::optional<std::string> , boost::optional<int> > token;
+        lsp::Any value;
+        MAKE_SWAP_METHOD(ProgressParams, token, value)
 };
 MAKE_REFLECT_STRUCT(ProgressParams, token, value)
 DEFINE_NOTIFICATION_TYPE(Notify_Progress, ProgressParams, "$/progress");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/language/language.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/language/language.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/language/language.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -11,27 +11,27 @@
 #endif
 
 struct  StatusReport {
-	
-	std::string ToString() const
-	{
-		std::string info;
-		info += "type:" + type + "\n";
-		info += "message:" + message + "\n";
-		return info;
-	}
-	/**
-	 * The message type. See {
-	 *
-	 */
 
-	std::string  type;
-	/**
-	 * The actual message
-	 *
-	 */
+        std::string ToString() const
+        {
+                std::string info;
+                info += "type:" + type + "\n";
+                info += "message:" + message + "\n";
+                return info;
+        }
+        /**
+         * The message type. See {
+         *
+         */
 
-	std::string  message;
-	MAKE_SWAP_METHOD(StatusReport, type, message);
+        std::string  type;
+        /**
+         * The actual message
+         *
+         */
+
+        std::string  message;
+        MAKE_SWAP_METHOD(StatusReport, type, message);
 };
 MAKE_REFLECT_STRUCT(StatusReport, type, message);
 
@@ -44,25 +44,25 @@
 
 enum class MessageType {
 
-	/**
-	 * An error message.
-	 */
-	Error=(1),
+        /**
+         * An error message.
+         */
+        Error=(1),
 
-	/**
-	 * A warning message.
-	 */
-	 Warning=(2),
+        /**
+         * A warning message.
+         */
+         Warning=(2),
 
-	 /**
-	  * An information message.
-	  */
-	  Info=(3),
+         /**
+          * An information message.
+          */
+          Info=(3),
 
-	  /**
-	   * A log message.
-	   */
-	   Log=(4)
+          /**
+           * A log message.
+           */
+           Log=(4)
 };
 MAKE_REFLECT_TYPE_PROXY(MessageType);
 
@@ -70,36 +70,36 @@
 struct ActionableNotification {
 
 
-	
-	/**
-	 * The message type. See {
-	 *
-	 */
 
-	 MessageType severity;
-	/**
-	 * The actual message
-	 *
-	 */
+        /**
+         * The message type. See {
+         *
+         */
 
-	 std::string message;
+         MessageType severity;
+        /**
+         * The actual message
+         *
+         */
 
-	/**
-	 * Optional data
-	 *
-	 */
+         std::string message;
 
-	boost::optional<lsp::Any> data;
+        /**
+         * Optional data
+         *
+         */
 
+        boost::optional<lsp::Any> data;
 
-	/**
-	 * Optional commands
-	 *
-	 */
 
-	 std::vector<lsCommandWithAny> commands;
+        /**
+         * Optional commands
+         *
+         */
 
-	 MAKE_SWAP_METHOD(ActionableNotification, severity, message, data, commands)
+         std::vector<lsCommandWithAny> commands;
+
+         MAKE_SWAP_METHOD(ActionableNotification, severity, message, data, commands)
 };
 MAKE_REFLECT_STRUCT(ActionableNotification, severity, message, data, commands)
 
@@ -114,27 +114,27 @@
 
 
 struct  ProgressReport {
-	std::string ToString() const;
+        std::string ToString() const;
 
-	std::string id;
+        std::string id;
 
 
-	std::string task;
+        std::string task;
 
 
-	std::string subTask;
+        std::string subTask;
 
 
-	std::string status;
+        std::string status;
 
-	 int totalWork = 0;
+         int totalWork = 0;
 
 
-	 int workDone = 0;
+         int workDone = 0;
 
 
-	 bool complete = false;
-	 MAKE_SWAP_METHOD(ProgressReport, id, task, subTask, status, workDone, complete);
+         bool complete = false;
+         MAKE_SWAP_METHOD(ProgressReport, id, task, subTask, status, workDone, complete);
 };
 
 
@@ -147,24 +147,24 @@
 DEFINE_NOTIFICATION_TYPE(lang_progressReport, ProgressReport, "language/progressReport");
 
 enum EventType {
-	/**
-	 * classpath updated event.
-	 */
-	ClasspathUpdated = (100),
+        /**
+         * classpath updated event.
+         */
+        ClasspathUpdated = (100),
 
-	/**
-	 * projects imported event.
-	 */
-	 ProjectsImported = (200)
+        /**
+         * projects imported event.
+         */
+         ProjectsImported = (200)
 };
 
 struct EventNotification
 {
-	int eventType;
-	lsp::Any data;
-	std::string ToString() const;
-	MAKE_SWAP_METHOD(EventNotification, eventType, data)
+        int eventType;
+        lsp::Any data;
+        std::string ToString() const;
+        MAKE_SWAP_METHOD(EventNotification, eventType, data)
 };
 MAKE_REFLECT_STRUCT(EventNotification, eventType, data);
 
-DEFINE_NOTIFICATION_TYPE(lang_eventNotification, EventNotification, "language/eventNotification");
\ No newline at end of file
+DEFINE_NOTIFICATION_TYPE(lang_eventNotification, EventNotification, "language/eventNotification");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/location_type.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/location_type.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/location_type.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -4,15 +4,15 @@
 #include "lsRange.h"
 //Represents a location inside a resource, such as a line inside a text file.
 struct lsLocation {
-	lsLocation();
-	lsLocation(lsDocumentUri uri, lsRange range);
+        lsLocation();
+        lsLocation(lsDocumentUri uri, lsRange range);
 
-	bool operator==(const lsLocation& other) const;
-	bool operator<(const lsLocation& o) const;
+        bool operator==(const lsLocation& other) const;
+        bool operator<(const lsLocation& o) const;
 
-	lsDocumentUri uri;
-	lsRange range;
-	MAKE_SWAP_METHOD(lsLocation, uri, range)
+        lsDocumentUri uri;
+        lsRange range;
+        MAKE_SWAP_METHOD(lsLocation, uri, range)
 };
 MAKE_REFLECT_STRUCT(lsLocation, uri, range)
 
@@ -20,9 +20,9 @@
 
 struct LinkLocation :public lsLocation
 {
-	std::string displayName;
-	std::string kind;
-	MAKE_REFLECT_STRUCT(LinkLocation, uri, range, displayName, kind)
+        std::string displayName;
+        std::string kind;
+        MAKE_REFLECT_STRUCT(LinkLocation, uri, range, displayName, kind)
 };
 MAKE_REFLECT_STRUCT(LinkLocation, uri, range, displayName,kind)
 
@@ -29,35 +29,35 @@
 //Represents a link between a sourceand a target location.
 struct LocationLink
 {
-	/**
-	 * Span of the origin of this link.
-	 *
-	 * Used as the underlined span for mouse interaction. Defaults to the word range at
-	 * the mouse position.
-	 */
-	boost::optional<lsRange>  originSelectionRange;
+        /**
+         * Span of the origin of this link.
+         *
+         * Used as the underlined span for mouse interaction. Defaults to the word range at
+         * the mouse position.
+         */
+        boost::optional<lsRange>  originSelectionRange;
 
-	/**
-	 * The target resource identifier of this link.
-	 */
+        /**
+         * The target resource identifier of this link.
+         */
 
-	lsDocumentUri targetUri;
+        lsDocumentUri targetUri;
 
-	/**
-	 * The full target range of this link. If the target for example is a symbol then target range is the
-	 * range enclosing this symbol not including leading/trailing whitespace but everything else
-	 * like comments. This information is typically used to highlight the range in the editor.
-	 */
+        /**
+         * The full target range of this link. If the target for example is a symbol then target range is the
+         * range enclosing this symbol not including leading/trailing whitespace but everything else
+         * like comments. This information is typically used to highlight the range in the editor.
+         */
 
-	lsRange targetRange;
+        lsRange targetRange;
 
-	/**
-	 * The range that should be selected and revealed when this link is being followed, e.g the name of a function.
-	 * Must be contained by the the `targetRange`. See also `DocumentSymbol#range`
-	 */
+        /**
+         * The range that should be selected and revealed when this link is being followed, e.g the name of a function.
+         * Must be contained by the the `targetRange`. See also `DocumentSymbol#range`
+         */
 
-	lsRange targetSelectionRange;
+        lsRange targetSelectionRange;
 
-	MAKE_SWAP_METHOD(LocationLink, originSelectionRange, targetUri, targetRange, targetSelectionRange);
+        MAKE_SWAP_METHOD(LocationLink, originSelectionRange, targetUri, targetRange, targetSelectionRange);
 };
-MAKE_REFLECT_STRUCT(LocationLink, originSelectionRange, targetUri, targetRange, targetSelectionRange);
\ No newline at end of file
+MAKE_REFLECT_STRUCT(LocationLink, originSelectionRange, targetUri, targetRange, targetSelectionRange);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsAny.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -5,76 +5,76 @@
 #include "LibLsp/JsonRpc/message.h"
 namespace lsp
 {
-	struct Any
-	{
-		//! Type of JSON value
-		enum  Type {
-			kUnKnown=-1,
-			kNullType = 0,      //!< null
-			kFalseType = 1,     //!< false
-			kTrueType = 2,      //!< true
-			kObjectType = 3,    //!< object
-			kArrayType = 4,     //!< array 
-			kStringType = 5,    //!< string
-			kNumberType = 6     //!< number
-		};
+        struct Any
+        {
+                //! Type of JSON value
+                enum  Type {
+                        kUnKnown=-1,
+                        kNullType = 0,      //!< null
+                        kFalseType = 1,     //!< false
+                        kTrueType = 2,      //!< true
+                        kObjectType = 3,    //!< object
+                        kArrayType = 4,     //!< array
+                        kStringType = 5,    //!< string
+                        kNumberType = 6     //!< number
+                };
 
 
 
-		template <typename  T>
-		bool Get(T& value);
+                template <typename  T>
+                bool Get(T& value);
 
-		template <typename  T>
-		void Set(T& value);
+                template <typename  T>
+                void Set(T& value);
 
-		int GuessType();
-		int GetType();
+                int GuessType();
+                int GetType();
 
-		void Set(std::unique_ptr<LspMessage> value);
+                void Set(std::unique_ptr<LspMessage> value);
 
-		void SetJsonString(std::string&& _data, Type _type);
+                void SetJsonString(std::string&& _data, Type _type);
 
-		void SetJsonString(const std::string& _data, Type _type);
+                void SetJsonString(const std::string& _data, Type _type);
 
-		const std::string& Data()const
-		{
-			return  data;
-		}
+                const std::string& Data()const
+                {
+                        return  data;
+                }
 
-		void swap(Any& arg) noexcept;
+                void swap(Any& arg) noexcept;
 
-		/*
-		 *Example for GetFromMap
-			struct A{
-				std::string  visitor;
-				bool   verbose;
-			}
-			REFLECT_MAP_TO_STRUCT(A,visitor,verbose)
+                /*
+                 *Example for GetFromMap
+                        struct A{
+                                std::string  visitor;
+                                bool   verbose;
+                        }
+                        REFLECT_MAP_TO_STRUCT(A,visitor,verbose)
 
-			std::string data = "{\"visitor\":\"default\",\"verbose\":\"true\"};
-			lsp:Any any;
-			any.SetJsonString(data, static_cast<lsp::Any::Type>(-1));
-			A a_object;
-			any.GetFromMap(a_object);
-		*/
-		template <typename  T>
-		bool GetFromMap(T& value);
+                        std::string data = "{\"visitor\":\"default\",\"verbose\":\"true\"};
+                        lsp:Any any;
+                        any.SetJsonString(data, static_cast<lsp::Any::Type>(-1));
+                        A a_object;
+                        any.GetFromMap(a_object);
+                */
+                template <typename  T>
+                bool GetFromMap(T& value);
 
-		
-		template <typename  T>
-		bool GetForMapHelper(T& value);
-		bool GetForMapHelper(std::string& value);
-		bool GetForMapHelper(boost::optional<std::string>& value);
-	private:
-		std::unique_ptr<Reader> GetReader();
-		std::unique_ptr<Writer> GetWriter() const;
-		void SetData(std::unique_ptr<Writer>&);
 
-		std::string  data;
-		int jsonType = kUnKnown;
+                template <typename  T>
+                bool GetForMapHelper(T& value);
+                bool GetForMapHelper(std::string& value);
+                bool GetForMapHelper(boost::optional<std::string>& value);
+        private:
+                std::unique_ptr<Reader> GetReader();
+                std::unique_ptr<Writer> GetWriter() const;
+                void SetData(std::unique_ptr<Writer>&);
 
-	};
+                std::string  data;
+                int jsonType = kUnKnown;
 
+        };
+
 };
 
 
@@ -84,22 +84,22 @@
 template <typename T>
 void ReflectMember(std::map < std::string, lsp::Any>& visitor, const char* name, T& value) {
 
-	auto it = visitor.find(name);
-	if (it != visitor.end())
-	{
-		it->second.GetForMapHelper(value);
-	}
+        auto it = visitor.find(name);
+        if (it != visitor.end())
+        {
+                it->second.GetForMapHelper(value);
+        }
 }
 template <typename T>
 void ReflectMember(std::map < std::string, std::string>& visitor, const char* name, T& value) {
 
-	auto it = visitor.find(name);
-	if (it != visitor.end())
-	{
-		lsp::Any any;
-		any.SetJsonString(it->second, static_cast<lsp::Any::Type>(-1));
-		any.Get(value);
-	}
+        auto it = visitor.find(name);
+        if (it != visitor.end())
+        {
+                lsp::Any any;
+                any.SetJsonString(it->second, static_cast<lsp::Any::Type>(-1));
+                any.Get(value);
+        }
 }
 
 #define REFLECT_MAP_TO_STRUCT(type, ...)               \
@@ -111,49 +111,49 @@
 
 namespace lsp
 {
-	template <typename T>
-	bool Any::Get(T& value)
-	{
-		const auto visitor = GetReader();
-		Reflect(*visitor, value);
-		return true;
-	}
+        template <typename T>
+        bool Any::Get(T& value)
+        {
+                const auto visitor = GetReader();
+                Reflect(*visitor, value);
+                return true;
+        }
 
-	template <typename T>
-	void Any::Set(T& value)
-	{
-		auto visitor = GetWriter();
-		Reflect(*visitor, value);
-		SetData(visitor);
-	}
+        template <typename T>
+        void Any::Set(T& value)
+        {
+                auto visitor = GetWriter();
+                Reflect(*visitor, value);
+                SetData(visitor);
+        }
 
-	template <typename T>
-	bool Any::GetFromMap(T& value)
-	{
-		const auto visitor = GetReader();
-		std::map < std::string, lsp::Any> _temp;
-		Reflect(*visitor, _temp);
-		ReflectMap(_temp, value);
-		return true;
-	}
+        template <typename T>
+        bool Any::GetFromMap(T& value)
+        {
+                const auto visitor = GetReader();
+                std::map < std::string, lsp::Any> _temp;
+                Reflect(*visitor, _temp);
+                ReflectMap(_temp, value);
+                return true;
+        }
 
-	template <typename T>
-	bool Any::GetForMapHelper(T& value)
-	{
-		jsonType = GetType();
-		if (jsonType == kStringType)
-		{
-			auto copy = data;
-			copy.erase(copy.find_last_not_of('"') + 1);
-			copy.erase(0, copy.find_first_not_of('"'));
-			lsp::Any any;
-			any.SetJsonString(copy, kUnKnown);
-			any.Get(value);
-		}
-		else
-		{
-			Get(value);
-		}
-		return true;
-	}
+        template <typename T>
+        bool Any::GetForMapHelper(T& value)
+        {
+                jsonType = GetType();
+                if (jsonType == kStringType)
+                {
+                        auto copy = data;
+                        copy.erase(copy.find_last_not_of('"') + 1);
+                        copy.erase(0, copy.find_first_not_of('"'));
+                        lsp::Any any;
+                        any.SetJsonString(copy, kUnKnown);
+                        any.Get(value);
+                }
+                else
+                {
+                        Get(value);
+                }
+                return true;
+        }
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsCodeAction.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsCodeAction.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsCodeAction.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -13,37 +13,37 @@
 
 struct CodeAction
 {
-	/**
-	 * A short, human-readable, title for this code action.
-	 */
+        /**
+         * A short, human-readable, title for this code action.
+         */
 
-	std::string title;
+        std::string title;
 
-	/**
-	 * The kind of the code action.
-	 *
-	 * Used to filter code actions.
-	 */
-	boost::optional < std::string> kind;
+        /**
+         * The kind of the code action.
+         *
+         * Used to filter code actions.
+         */
+        boost::optional < std::string> kind;
 
-	/**
-	 * The diagnostics that this code action resolves.
-	 */
-	boost::optional < std::vector<lsDiagnostic>> diagnostics;
+        /**
+         * The diagnostics that this code action resolves.
+         */
+        boost::optional < std::vector<lsDiagnostic>> diagnostics;
 
-	/**
-	 * The workspace edit this code action performs.
-	 */
-	boost::optional < lsWorkspaceEdit >edit;
+        /**
+         * The workspace edit this code action performs.
+         */
+        boost::optional < lsWorkspaceEdit >edit;
 
-	/**
-	 * A command this code action executes. If a code action
-	 * provides a edit and a command, first the edit is
-	 * executed and then the command.
-	 */
-	 boost::optional< lsCommandWithAny >  command;
+        /**
+         * A command this code action executes. If a code action
+         * provides a edit and a command, first the edit is
+         * executed and then the command.
+         */
+         boost::optional< lsCommandWithAny >  command;
 
-	 MAKE_SWAP_METHOD(CodeAction, title, kind, diagnostics, edit, command)
+         MAKE_SWAP_METHOD(CodeAction, title, kind, diagnostics, edit, command)
 };
 MAKE_REFLECT_STRUCT(CodeAction, title, kind, diagnostics, edit, command)
 struct TextDocumentCodeAction
@@ -50,9 +50,9 @@
 
 {
 
-	typedef  std::pair<boost::optional<lsCommandWithAny>, boost::optional<CodeAction> > Either;
+        typedef  std::pair<boost::optional<lsCommandWithAny>, boost::optional<CodeAction> > Either;
 
 };
 
 
-extern  void Reflect(Reader& visitor, TextDocumentCodeAction::Either& value);
\ No newline at end of file
+extern  void Reflect(Reader& visitor, TextDocumentCodeAction::Either& value);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsCommand.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsCommand.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsCommand.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -15,29 +15,29 @@
 //extension code could handle the command.The protocol currently doesn\xA1\xAFt specify a set of well - known commands.
 template <typename AnyArray>
 struct lsCommand {
-	// Title of the command (ie, 'save')
-	std::string title;
-	// Actual command identifier.
-	std::string command;
-	// Arguments to run the command with.
-	// **NOTE** This must be serialized as an array. Use
-	// MAKE_REFLECT_STRUCT_WRITER_AS_ARRAY.
-	boost::optional<AnyArray> arguments;
+        // Title of the command (ie, 'save')
+        std::string title;
+        // Actual command identifier.
+        std::string command;
+        // Arguments to run the command with.
+        // **NOTE** This must be serialized as an array. Use
+        // MAKE_REFLECT_STRUCT_WRITER_AS_ARRAY.
+        boost::optional<AnyArray> arguments;
 
-	void swap(lsCommand<AnyArray>& arg) noexcept
-	{
-		title.swap(arg.title);
-		command.swap(arg.command);
-		arguments.swap(arg.arguments);
-	}
+        void swap(lsCommand<AnyArray>& arg) noexcept
+        {
+                title.swap(arg.title);
+                command.swap(arg.command);
+                arguments.swap(arg.arguments);
+        }
 };
 template <typename TVisitor, typename T>
 void Reflect(TVisitor& visitor, lsCommand<T>& value) {
-	REFLECT_MEMBER_START();
-	REFLECT_MEMBER(title);
-	REFLECT_MEMBER(command);
-	REFLECT_MEMBER(arguments);
-	REFLECT_MEMBER_END();
+        REFLECT_MEMBER_START();
+        REFLECT_MEMBER(title);
+        REFLECT_MEMBER(command);
+        REFLECT_MEMBER(arguments);
+        REFLECT_MEMBER_END();
 }
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsDocumentUri.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsDocumentUri.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsDocumentUri.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -2,24 +2,24 @@
 #include "LibLsp/JsonRpc/serializer.h"
 #include <string>
 struct lsDocumentUri {
-	static lsDocumentUri FromPath(const AbsolutePath& path);
+        static lsDocumentUri FromPath(const AbsolutePath& path);
 
-	lsDocumentUri();
-	
-	lsDocumentUri(const AbsolutePath& path);
-	lsDocumentUri(const lsDocumentUri& other);;
-	bool operator==(const lsDocumentUri& other) const;
-	bool operator==(const std::string& other) const;
-	void SetPath(const AbsolutePath& path);
-	std::string GetRawPath() const;
-	AbsolutePath GetAbsolutePath() const;
+        lsDocumentUri();
 
-	
-	std::string raw_uri_;
-	void swap(lsDocumentUri& arg) noexcept
-	{
-		raw_uri_.swap(arg.raw_uri_);
-	}
+        lsDocumentUri(const AbsolutePath& path);
+        lsDocumentUri(const lsDocumentUri& other);;
+        bool operator==(const lsDocumentUri& other) const;
+        bool operator==(const std::string& other) const;
+        void SetPath(const AbsolutePath& path);
+        std::string GetRawPath() const;
+        AbsolutePath GetAbsolutePath() const;
+
+
+        std::string raw_uri_;
+        void swap(lsDocumentUri& arg) noexcept
+        {
+                raw_uri_.swap(arg.raw_uri_);
+        }
 };
 extern void Reflect(Writer& visitor, lsDocumentUri& value);
 extern void Reflect(Reader& visitor, lsDocumentUri& value);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsFormattingOptions.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsFormattingOptions.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsFormattingOptions.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -3,41 +3,41 @@
 #include "LibLsp/JsonRpc/serializer.h"
 
 struct lsFormattingOptions {
-	struct KeyData {
-		boost::optional<bool> _boolean;
-		boost::optional<int32_t> _integer;
-		boost::optional<std::string> _string;
-	};
+        struct KeyData {
+                boost::optional<bool> _boolean;
+                boost::optional<int32_t> _integer;
+                boost::optional<std::string> _string;
+        };
 
-	// Size of a tab in spaces.
-	int tabSize =4;
-	// Prefer spaces over tabs.
-	bool insertSpaces = true;
+        // Size of a tab in spaces.
+        int tabSize =4;
+        // Prefer spaces over tabs.
+        bool insertSpaces = true;
 
-	/**
-		 * Trim trailing whitespace on a line.
-		 *
-		 * @since 3.15.0
-		 */
-	boost::optional<bool> trimTrailingWhitespace;
+        /**
+                 * Trim trailing whitespace on a line.
+                 *
+                 * @since 3.15.0
+                 */
+        boost::optional<bool> trimTrailingWhitespace;
 
-	/**
-	 * Insert a newline character at the end of the file if one does not exist.
-	 *
-	 * @since 3.15.0
-	 */
-	boost::optional<bool> insertFinalNewline;
+        /**
+         * Insert a newline character at the end of the file if one does not exist.
+         *
+         * @since 3.15.0
+         */
+        boost::optional<bool> insertFinalNewline;
 
-	/**
-	 * Trim all newlines after the final newline at the end of the file.
-	 *
-	 * @since 3.15.0
-	 */
-	boost::optional<bool> trimFinalNewlines;
-	boost::optional<KeyData> key;
+        /**
+         * Trim all newlines after the final newline at the end of the file.
+         *
+         * @since 3.15.0
+         */
+        boost::optional<bool> trimFinalNewlines;
+        boost::optional<KeyData> key;
     MAKE_SWAP_METHOD(lsFormattingOptions, tabSize, insertSpaces, trimTrailingWhitespace, insertFinalNewline, trimFinalNewlines, key)
 };
 MAKE_REFLECT_STRUCT(lsFormattingOptions, tabSize, insertSpaces, trimTrailingWhitespace, insertFinalNewline, trimFinalNewlines, key);
 
 extern void Reflect(Reader& visitor, lsFormattingOptions::KeyData& value);
-extern  void Reflect(Writer& visitor, lsFormattingOptions::KeyData& value);
\ No newline at end of file
+extern  void Reflect(Writer& visitor, lsFormattingOptions::KeyData& value);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsMarkedString.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsMarkedString.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsMarkedString.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -20,24 +20,24 @@
 // Note that markdown strings will be sanitized - that means html will be
 // escaped.
 struct lsMarkedString {
-	boost::optional<std::string> language;
-	std::string value;
+        boost::optional<std::string> language;
+        std::string value;
 };
 
 struct MarkupContent {
-	/**
-	 * The type of the Markup.
-	 */
+        /**
+         * The type of the Markup.
+         */
 
-	 std::string kind;
+         std::string kind;
 
-	/**
-	 * The content itself.
-	 */
-	
-	 std::string value;
+        /**
+         * The content itself.
+         */
 
-	 MAKE_SWAP_METHOD(MarkupContent, kind, value);
+         std::string value;
+
+         MAKE_SWAP_METHOD(MarkupContent, kind, value);
 };
 MAKE_REFLECT_STRUCT(MarkupContent,kind,value);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsPosition.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsPosition.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsPosition.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -11,30 +11,30 @@
 //A position is between two characters like an \xA1\xAEinsert\xA1\xAF cursor in a editor.Special values like
 //for example - 1 to denote the end of a line are not supported.
 struct lsPosition {
-	lsPosition();
-	lsPosition(int line, int character);
+        lsPosition();
+        lsPosition(int line, int character);
 
-	bool operator==(const lsPosition& other) const;
-	bool operator<(const lsPosition& other) const;
+        bool operator==(const lsPosition& other) const;
+        bool operator<(const lsPosition& other) const;
 
-	std::string ToString() const;
+        std::string ToString() const;
 
-	/**
-	 * Line position in a document (zero-based).
-	 */
-	// Note: these are 0-based.
-	unsigned line = 0;
-	/**
-	 * Character offset on a line in a document (zero-based). Assuming that
-	 * the line is represented as a string, the `character` value represents
-	 * the gap between the `character` and `character + 1`.
-	 *
-	 * If the character value is greater than the line length it defaults back
-	 * to the line length.
-	 */
-	unsigned character = 0;
-	static const lsPosition kZeroPosition;
+        /**
+         * Line position in a document (zero-based).
+         */
+        // Note: these are 0-based.
+        unsigned line = 0;
+        /**
+         * Character offset on a line in a document (zero-based). Assuming that
+         * the line is represented as a string, the `character` value represents
+         * the gap between the `character` and `character + 1`.
+         *
+         * If the character value is greater than the line length it defaults back
+         * to the line length.
+         */
+        unsigned character = 0;
+        static const lsPosition kZeroPosition;
 
-	MAKE_SWAP_METHOD(lsPosition, line, character)
+        MAKE_SWAP_METHOD(lsPosition, line, character)
 };
-MAKE_REFLECT_STRUCT(lsPosition, line, character);
\ No newline at end of file
+MAKE_REFLECT_STRUCT(lsPosition, line, character);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsRange.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsRange.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsRange.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -12,21 +12,21 @@
 //If you want to specify a range that contains a line including the line ending character(s)
 //then use an end position denoting the start of the next line.
 struct lsRange {
-	lsRange();
-	lsRange(lsPosition start, lsPosition end);
+        lsRange();
+        lsRange(lsPosition start, lsPosition end);
 
-	bool operator==(const lsRange& other) const;
-	bool operator<(const lsRange& other) const;
-	/**
-	 * The range's start position.
-	 */
-	lsPosition start;
-	/**
-	 * The range's end position.
-	 */
-	lsPosition end;
-	std::string ToString()const;
-	MAKE_SWAP_METHOD(lsRange, start, end)
+        bool operator==(const lsRange& other) const;
+        bool operator<(const lsRange& other) const;
+        /**
+         * The range's start position.
+         */
+        lsPosition start;
+        /**
+         * The range's end position.
+         */
+        lsPosition end;
+        std::string ToString()const;
+        MAKE_SWAP_METHOD(lsRange, start, end)
 };
 
-MAKE_REFLECT_STRUCT(lsRange, start, end)
\ No newline at end of file
+MAKE_REFLECT_STRUCT(lsRange, start, end)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsResponseError.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsResponseError.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsResponseError.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -5,113 +5,113 @@
 #include "LibLsp/lsp/lsAny.h"
 
 enum class lsErrorCodes:int32_t {
-	// Defined by JSON RPC
-	ParseError = -32700,
-	InvalidRequest = -32600,
-	MethodNotFound = -32601,
-	InvalidParams = -32602,
-	InternalError = -32603,
-	
-	/**
-	 * This is the start range of JSON RPC reserved error codes.
-	 * It doesn't denote a real error code. No LSP error codes should
-	 * be defined between the start and end range. For backwards
-	 * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`
-	 * are left in the range.
-	 *
-	 * @since 3.16.0
-	 */
-	jsonrpcReservedErrorRangeStart = -32099,
-	/** @deprecated use jsonrpcReservedErrorRangeStart */
-	serverErrorStart = jsonrpcReservedErrorRangeStart,
+        // Defined by JSON RPC
+        ParseError = -32700,
+        InvalidRequest = -32600,
+        MethodNotFound = -32601,
+        InvalidParams = -32602,
+        InternalError = -32603,
 
-	/**
-	 * This is the start range of JSON RPC reserved error codes.
-	 * It doesn't denote a real error code.
-	 *
-	 * @since 3.16.0
-	 */
-	jsonrpcReservedErrorRangeEnd = -32000,
-	/** @deprecated use jsonrpcReservedErrorRangeEnd */
-	serverErrorEnd = jsonrpcReservedErrorRangeEnd,
-	
-	/**
-	 * Error code indicating that a server received a notification or
-	 * request before the server has received the `initialize` request.
-	 */
-	ServerNotInitialized = -32002,
-	UnknownErrorCode = -32001,
+        /**
+         * This is the start range of JSON RPC reserved error codes.
+         * It doesn't denote a real error code. No LSP error codes should
+         * be defined between the start and end range. For backwards
+         * compatibility the `ServerNotInitialized` and the `UnknownErrorCode`
+         * are left in the range.
+         *
+         * @since 3.16.0
+         */
+        jsonrpcReservedErrorRangeStart = -32099,
+        /** @deprecated use jsonrpcReservedErrorRangeStart */
+        serverErrorStart = jsonrpcReservedErrorRangeStart,
 
-	/**
-	 * This is the start range of LSP reserved error codes.
-	 * It doesn't denote a real error code.
-	 *
-	 * @since 3.16.0
-	 */
-	lspReservedErrorRangeStart=  -32899,
+        /**
+         * This is the start range of JSON RPC reserved error codes.
+         * It doesn't denote a real error code.
+         *
+         * @since 3.16.0
+         */
+        jsonrpcReservedErrorRangeEnd = -32000,
+        /** @deprecated use jsonrpcReservedErrorRangeEnd */
+        serverErrorEnd = jsonrpcReservedErrorRangeEnd,
 
-	/**
-	 * The server cancelled the request. This error code should
-	 * only be used for requests that explicitly support being
-	 * server cancellable.
-	 *
-	 * @since 3.17.0
-	 */
-	ServerCancelled  = -32802,
-	
-	/**
-	 * The server detected that the content of a document got
-	 * modified outside normal conditions. A server should
-	 * NOT send this error code if it detects a content change
-	 * in it unprocessed messages. The result even computed
-	 * on an older state might still be useful for the client.
-	 *
-	 * If a client decides that a result is not of any use anymore
-	 * the client should cancel the request.
-	 */
-	 ContentModified  = -32801,
+        /**
+         * Error code indicating that a server received a notification or
+         * request before the server has received the `initialize` request.
+         */
+        ServerNotInitialized = -32002,
+        UnknownErrorCode = -32001,
 
-	/**
-	 * The client has canceled a request and a server as detected
-	 * the cancel.
-	 */
-	RequestCancelled  = -32800,
+        /**
+         * This is the start range of LSP reserved error codes.
+         * It doesn't denote a real error code.
+         *
+         * @since 3.16.0
+         */
+        lspReservedErrorRangeStart=  -32899,
 
-	/**
-	 * This is the end range of LSP reserved error codes.
-	 * It doesn't denote a real error code.
-	 *
-	 * @since 3.16.0
-	 */
-	lspReservedErrorRangeEnd  = -32800,
+        /**
+         * The server cancelled the request. This error code should
+         * only be used for requests that explicitly support being
+         * server cancellable.
+         *
+         * @since 3.17.0
+         */
+        ServerCancelled  = -32802,
 
-	
+        /**
+         * The server detected that the content of a document got
+         * modified outside normal conditions. A server should
+         * NOT send this error code if it detects a content change
+         * in it unprocessed messages. The result even computed
+         * on an older state might still be useful for the client.
+         *
+         * If a client decides that a result is not of any use anymore
+         * the client should cancel the request.
+         */
+         ContentModified  = -32801,
 
+        /**
+         * The client has canceled a request and a server as detected
+         * the cancel.
+         */
+        RequestCancelled  = -32800,
+
+        /**
+         * This is the end range of LSP reserved error codes.
+         * It doesn't denote a real error code.
+         *
+         * @since 3.16.0
+         */
+        lspReservedErrorRangeEnd  = -32800,
+
+
+
 };
 MAKE_REFLECT_TYPE_PROXY(lsErrorCodes);
 struct lsResponseError {
-	lsResponseError(): code(lsErrorCodes::UnknownErrorCode)
-	{
-	}
+        lsResponseError(): code(lsErrorCodes::UnknownErrorCode)
+        {
+        }
 
-	/**
-	 * A number indicating the error type that occurred.
-	 */
-	lsErrorCodes code;
-	// Short description.
-	/**
-	 * A string providing a short description of the error.
-	 */
-	std::string message;
+        /**
+         * A number indicating the error type that occurred.
+         */
+        lsErrorCodes code;
+        // Short description.
+        /**
+         * A string providing a short description of the error.
+         */
+        std::string message;
 
-	/**
-	 * A primitive or structured value that contains additional
-	 * information about the error. Can be omitted.
-	 */
-	boost::optional<lsp::Any> data;
-	std::string ToString();
-	void Write(Writer& visitor);
-	
-	MAKE_SWAP_METHOD(lsResponseError, code, message, data)
+        /**
+         * A primitive or structured value that contains additional
+         * information about the error. Can be omitted.
+         */
+        boost::optional<lsp::Any> data;
+        std::string ToString();
+        void Write(Writer& visitor);
+
+        MAKE_SWAP_METHOD(lsResponseError, code, message, data)
 };
-MAKE_REFLECT_STRUCT(lsResponseError, code, message, data)
\ No newline at end of file
+MAKE_REFLECT_STRUCT(lsResponseError, code, message, data)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentEdit.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentEdit.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentEdit.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,17 +8,17 @@
 
 
 struct lsTextDocumentEdit {
-		// The text document to change.
-		lsVersionedTextDocumentIdentifier textDocument;
-	
-		/**
-		 * The edits to be applied.
-		 *
-		 * @since 3.16.0 - support for AnnotatedTextEdit. This is guarded by the
-		 * client capability `workspace.workspaceEdit.changeAnnotationSupport`
-		 */
-		// The edits to be applied.
-		std::vector< lsAnnotatedTextEdit > edits;
-		MAKE_SWAP_METHOD(lsTextDocumentEdit, textDocument, edits);
+                // The text document to change.
+                lsVersionedTextDocumentIdentifier textDocument;
+
+                /**
+                 * The edits to be applied.
+                 *
+                 * @since 3.16.0 - support for AnnotatedTextEdit. This is guarded by the
+                 * client capability `workspace.workspaceEdit.changeAnnotationSupport`
+                 */
+                // The edits to be applied.
+                std::vector< lsAnnotatedTextEdit > edits;
+                MAKE_SWAP_METHOD(lsTextDocumentEdit, textDocument, edits);
 };
-MAKE_REFLECT_STRUCT(lsTextDocumentEdit, textDocument, edits);
\ No newline at end of file
+MAKE_REFLECT_STRUCT(lsTextDocumentEdit, textDocument, edits);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentIdentifier.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentIdentifier.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentIdentifier.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -5,10 +5,10 @@
 //Text documents are identified using a URI.On the protocol level,
 //URIs are passed as strings.The corresponding JSON structure looks like this:
 struct lsTextDocumentIdentifier {
-	/**
-	 * The text document's URI.
-	 */
-	lsDocumentUri uri;
+        /**
+         * The text document's URI.
+         */
+        lsDocumentUri uri;
     MAKE_SWAP_METHOD(lsTextDocumentIdentifier, uri)
 };
-MAKE_REFLECT_STRUCT(lsTextDocumentIdentifier, uri)
\ No newline at end of file
+MAKE_REFLECT_STRUCT(lsTextDocumentIdentifier, uri)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentItem.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentItem.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentItem.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,20 +7,20 @@
 
 //An item to transfer a text document from the client to the server.
 struct lsTextDocumentItem {
-	// The text document's URI.
-	lsDocumentUri uri;
+        // The text document's URI.
+        lsDocumentUri uri;
 
-	// The text document's language identifier.
-	std::string languageId;
+        // The text document's language identifier.
+        std::string languageId;
 
-	// The version number of this document (it will strictly increase after each
-	// change, including undo/redo).
-	int version = 0;
+        // The version number of this document (it will strictly increase after each
+        // change, including undo/redo).
+        int version = 0;
 
-	// The content of the opened text document.
-	std::string text;
+        // The content of the opened text document.
+        std::string text;
 
-	MAKE_SWAP_METHOD(lsTextDocumentItem, uri, languageId, version, text)
+        MAKE_SWAP_METHOD(lsTextDocumentItem, uri, languageId, version, text)
 };
 
-MAKE_REFLECT_STRUCT(lsTextDocumentItem, uri, languageId, version, text)
\ No newline at end of file
+MAKE_REFLECT_STRUCT(lsTextDocumentItem, uri, languageId, version, text)

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentPositionParams.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentPositionParams.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextDocumentPositionParams.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,18 +9,18 @@
  * A parameter literal used in requests to pass a text document and a position inside that document.
  */
 struct lsTextDocumentPositionParams {
-	// The text document.
-	lsTextDocumentIdentifier textDocument;
+        // The text document.
+        lsTextDocumentIdentifier textDocument;
 
-	// The position inside the text document.
-	lsPosition position;
+        // The position inside the text document.
+        lsPosition position;
 
-	/**
-	 * Legacy property to support protocol version 1.0 requests.
-	 */
-	boost::optional<lsDocumentUri> uri;
-	
+        /**
+         * Legacy property to support protocol version 1.0 requests.
+         */
+        boost::optional<lsDocumentUri> uri;
+
    MAKE_SWAP_METHOD(lsTextDocumentPositionParams, textDocument, position, uri);
-	
+
 };
 MAKE_REFLECT_STRUCT(lsTextDocumentPositionParams, textDocument, position, uri);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextEdit.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextEdit.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsTextEdit.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -17,24 +17,24 @@
  */
 struct lsChangeAnnotation
 {
-	/**
-	 * A human-readable string describing the actual change. The string
-	 * is rendered prominent in the user interface.
-	 */
-	std::string label;
+        /**
+         * A human-readable string describing the actual change. The string
+         * is rendered prominent in the user interface.
+         */
+        std::string label;
 
-	/**
-	 * A flag which indicates that user confirmation is needed
-	 * before applying the change.
-	 */
-	boost::optional<bool>  needsConfirmation;
+        /**
+         * A flag which indicates that user confirmation is needed
+         * before applying the change.
+         */
+        boost::optional<bool>  needsConfirmation;
 
-	/**
-	 * A human-readable string which is rendered less prominent in
-	 * the user interface.
-	 */
-	boost::optional < std::string >  description;
-	MAKE_REFLECT_STRUCT(lsChangeAnnotation, label, needsConfirmation, description)
+        /**
+         * A human-readable string which is rendered less prominent in
+         * the user interface.
+         */
+        boost::optional < std::string >  description;
+        MAKE_REFLECT_STRUCT(lsChangeAnnotation, label, needsConfirmation, description)
 };
 MAKE_REFLECT_STRUCT(lsChangeAnnotation, label, needsConfirmation, description)
 
@@ -64,23 +64,23 @@
 
 //A textual edit applicable to a text document.
 struct lsTextEdit {
-	// The range of the text document to be manipulated. To insert
-	// text into a document create a range where start === end.
-	lsRange range;
+        // The range of the text document to be manipulated. To insert
+        // text into a document create a range where start === end.
+        lsRange range;
 
-	// The string to be inserted. For delete operations use an
-	// empty string.
-	std::string newText;
+        // The string to be inserted. For delete operations use an
+        // empty string.
+        std::string newText;
 
-	/**
+        /**
  * The actual annotation identifier.
  */
-	boost::optional<lsChangeAnnotationIdentifier>  annotationId;
-	
+        boost::optional<lsChangeAnnotationIdentifier>  annotationId;
 
-		bool operator==(const lsTextEdit& that);
-	std::string ToString() const;
-	MAKE_SWAP_METHOD(lsTextEdit, range, newText, annotationId)
+
+                bool operator==(const lsTextEdit& that);
+        std::string ToString() const;
+        MAKE_SWAP_METHOD(lsTextEdit, range, newText, annotationId)
 };
 MAKE_REFLECT_STRUCT(lsTextEdit, range, newText, annotationId)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsVersionedTextDocumentIdentifier.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsVersionedTextDocumentIdentifier.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsVersionedTextDocumentIdentifier.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,13 +8,13 @@
 
 struct lsVersionedTextDocumentIdentifier
 {
-	lsDocumentUri uri;
-	// The version number of this document.  number | null
-	boost::optional<int> version;
+        lsDocumentUri uri;
+        // The version number of this document.  number | null
+        boost::optional<int> version;
 
-	lsTextDocumentIdentifier AsTextDocumentIdentifier() const;
+        lsTextDocumentIdentifier AsTextDocumentIdentifier() const;
 
-	MAKE_SWAP_METHOD(lsVersionedTextDocumentIdentifier, uri, version)
+        MAKE_SWAP_METHOD(lsVersionedTextDocumentIdentifier, uri, version)
 };
 MAKE_REFLECT_STRUCT(lsVersionedTextDocumentIdentifier, uri, version)
 
@@ -29,4 +29,4 @@
  * The version number of a document will increase after each change,
  * including undo/redo. The number doesn't need to be consecutive.
  */
-using   lsOptionalVersionedTextDocumentIdentifier = lsVersionedTextDocumentIdentifier;
\ No newline at end of file
+using   lsOptionalVersionedTextDocumentIdentifier = lsVersionedTextDocumentIdentifier;

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsWorkspaceEdit.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsWorkspaceEdit.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsWorkspaceEdit.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -20,36 +20,36 @@
 
 struct lsChangeAnnotations
 {
-	lsChangeAnnotation id;
-	MAKE_SWAP_METHOD(lsChangeAnnotations, id)
+        lsChangeAnnotation id;
+        MAKE_SWAP_METHOD(lsChangeAnnotations, id)
 };
 MAKE_REFLECT_STRUCT(lsChangeAnnotations, id)
 struct lsWorkspaceEdit {
-	// Holds changes to existing resources.
-	// changes ? : { [uri:string]: TextEdit[]; };
-	// std::unordered_map<lsDocumentUri, std::vector<lsTextEdit>> changes;
+        // Holds changes to existing resources.
+        // changes ? : { [uri:string]: TextEdit[]; };
+        // std::unordered_map<lsDocumentUri, std::vector<lsTextEdit>> changes;
 
-	// An array of `TextDocumentEdit`s to express changes to specific a specific
-	// version of a text document. Whether a client supports versioned document
-	// edits is expressed via `WorkspaceClientCapabilites.versionedWorkspaceEdit`.
-	//
-	boost::optional< std::map<std::string, std::vector<lsTextEdit> > >  changes;
-	typedef std::pair < boost::optional<lsTextDocumentEdit>, boost::optional<lsp::Any> > Either;
+        // An array of `TextDocumentEdit`s to express changes to specific a specific
+        // version of a text document. Whether a client supports versioned document
+        // edits is expressed via `WorkspaceClientCapabilites.versionedWorkspaceEdit`.
+        //
+        boost::optional< std::map<std::string, std::vector<lsTextEdit> > >  changes;
+        typedef std::pair < boost::optional<lsTextDocumentEdit>, boost::optional<lsp::Any> > Either;
 
-	boost::optional <  std::vector< Either > > documentChanges;
-	/**
-	 * A map of change annotations that can be referenced in
-	 * `AnnotatedTextEdit`s or create, rename and delete file / folder
-	 * operations.
-	 *
-	 * Whether clients honor this property depends on the client capability
-	 * `workspace.changeAnnotationSupport`.
-	 *
-	 * @since 3.16.0
-	 */
-	boost::optional< lsChangeAnnotations > changeAnnotations;
+        boost::optional <  std::vector< Either > > documentChanges;
+        /**
+         * A map of change annotations that can be referenced in
+         * `AnnotatedTextEdit`s or create, rename and delete file / folder
+         * operations.
+         *
+         * Whether clients honor this property depends on the client capability
+         * `workspace.changeAnnotationSupport`.
+         *
+         * @since 3.16.0
+         */
+        boost::optional< lsChangeAnnotations > changeAnnotations;
 
-	MAKE_SWAP_METHOD(lsWorkspaceEdit, changes, documentChanges, changeAnnotations)
+        MAKE_SWAP_METHOD(lsWorkspaceEdit, changes, documentChanges, changeAnnotations)
 };
 MAKE_REFLECT_STRUCT(lsWorkspaceEdit, changes, documentChanges, changeAnnotations)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_code_action.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_code_action.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_code_action.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -13,18 +13,18 @@
 };
 MAKE_REFLECT_STRUCT_WRITER_AS_ARRAY(CommandArgs, textDocumentUri, edits);
 inline void Reflect(Reader& visitor, CommandArgs& value) {
-	int i = 0;
-	visitor.IterArray([&](Reader& visitor) {
-		switch (i++) {
-		case 0:
-			Reflect(visitor, value.textDocumentUri);
-			break;
-		case 1:
-			Reflect(visitor, value.edits);
-			break;
+        int i = 0;
+        visitor.IterArray([&](Reader& visitor) {
+                switch (i++) {
+                case 0:
+                        Reflect(visitor, value.textDocumentUri);
+                        break;
+                case 1:
+                        Reflect(visitor, value.edits);
+                        break;
 
-		}
-		});
+                }
+                });
 }
 
 // codeLens

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_completion.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_completion.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_completion.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -57,8 +57,8 @@
 
 namespace lsp
 {
-	std::string ToString(lsCompletionItemKind);
-	std::string ToString(lsInsertTextFormat);
+        std::string ToString(lsCompletionItemKind);
+        std::string ToString(lsInsertTextFormat);
 }
 /**
  * The Completion request is sent from the client to the server to compute completion items at a given cursor position.
@@ -67,7 +67,7 @@
  * completion item is selected in the user class.
  */
 struct lsCompletionItem {
- 
+
   // The label of this completion item. By default
   // also the text that is inserted when selecting
   // this completion.
@@ -89,11 +89,11 @@
    * Indicates if this item is deprecated.
    */
   boost::optional< bool >deprecated;
-	
 
+
    /**
    * Select this item when showing.
-   * 
+   *
    * *Note* that only one completion item can be selected and that the
    * tool / client decides which item that is. The rule is that the *first
    * item of those that match best is selected.
@@ -177,18 +177,18 @@
   boost::optional<lsp::Any> data;
   std::string ToString();
   MAKE_SWAP_METHOD(lsCompletionItem,
-	  label,
-	  kind,
-	  detail,
-	  documentation,
-	  sortText,
-	  insertText,
-	  filterText,
-	  insertTextFormat,
-	  textEdit,
-	  deprecated, preselect, additionalTextEdits, commitCharacters,
-	  command, data);
-	
+          label,
+          kind,
+          detail,
+          documentation,
+          sortText,
+          insertText,
+          filterText,
+          insertTextFormat,
+          textEdit,
+          deprecated, preselect, additionalTextEdits, commitCharacters,
+          command, data);
+
 };
 
 
@@ -204,21 +204,21 @@
                     insertTextFormat,
                     textEdit,
                     deprecated, preselect, additionalTextEdits, commitCharacters,
-	command, data);
+        command, data);
 
 
 
 struct CompletionList {
-	// This list it not complete. Further typing should result in recomputing
-	// this list.
-	bool isIncomplete = false;
-	// The completion items.
-	std::vector<lsCompletionItem> items;
+        // This list it not complete. Further typing should result in recomputing
+        // this list.
+        bool isIncomplete = false;
+        // The completion items.
+        std::vector<lsCompletionItem> items;
 
-	void swap(CompletionList& arg) noexcept
-	{
-		items.swap(arg.items);
-		std::swap(isIncomplete, arg.isIncomplete);
-	}
+        void swap(CompletionList& arg) noexcept
+        {
+                items.swap(arg.items);
+                std::swap(isIncomplete, arg.isIncomplete);
+        }
 };
-MAKE_REFLECT_STRUCT(CompletionList, isIncomplete, items);
\ No newline at end of file
+MAKE_REFLECT_STRUCT(CompletionList, isIncomplete, items);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_diagnostic.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_diagnostic.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/lsp_diagnostic.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -28,20 +28,20 @@
  */
 enum class DiagnosticTag :uint8_t {
 
-	/**
-	 * Unused or unnecessary code.
-	 *
-	 * Clients are allowed to render diagnostics with this tag faded out instead of having
-	 * an error squiggle.
-	 */
-	Unnecessary=(1),
+        /**
+         * Unused or unnecessary code.
+         *
+         * Clients are allowed to render diagnostics with this tag faded out instead of having
+         * an error squiggle.
+         */
+        Unnecessary=(1),
 
-	/**
-	 * Deprecated or obsolete code.
-	 *
-	 * Clients are allowed to rendered diagnostics with this tag strike through.
-	 */
-	 Deprecated=(2),
+        /**
+         * Deprecated or obsolete code.
+         *
+         * Clients are allowed to rendered diagnostics with this tag strike through.
+         */
+         Deprecated=(2),
 };
 MAKE_REFLECT_TYPE_PROXY(DiagnosticTag);
 
@@ -56,19 +56,19 @@
  */
 
 struct DiagnosticRelatedInformation {
-	/**
-	 * The location of this related diagnostic information.
-	 */
+        /**
+         * The location of this related diagnostic information.
+         */
 
     lsLocation location;
 
-	/**
-	 * The message of this related diagnostic information.
-	 */
+        /**
+         * The message of this related diagnostic information.
+         */
 
-	 std::string message;
+         std::string message;
 
-	 MAKE_SWAP_METHOD(DiagnosticRelatedInformation, location, message)
+         MAKE_SWAP_METHOD(DiagnosticRelatedInformation, location, message)
 };
 MAKE_REFLECT_STRUCT(DiagnosticRelatedInformation, location, message)
 /**
@@ -77,11 +77,11 @@
  * @since 3.16.0
  */
 struct DiagnosticCodeDescription {
-	/**
-	 * An URI to open with more information about the diagnostic error.
-	 */
-	std::string href;
-	MAKE_SWAP_METHOD(DiagnosticCodeDescription, href)
+        /**
+         * An URI to open with more information about the diagnostic error.
+         */
+        std::string href;
+        MAKE_SWAP_METHOD(DiagnosticCodeDescription, href)
 };
 MAKE_REFLECT_STRUCT(DiagnosticCodeDescription, href)
 
@@ -114,8 +114,8 @@
    * @since 3.15.0
    */
   boost::optional<std::vector<DiagnosticTag>> tags;
-	
 
+
   /**
  * An array of related diagnostic information, e.g. when symbol-names within a scope collide
  * all definitions can be marked via this property.
@@ -142,8 +142,8 @@
 
 
 struct Rsp_Error : ResponseError<lsResponseError, Rsp_Error> {
-	
-	MAKE_SWAP_METHOD(Rsp_Error, jsonrpc, id, error)
+
+        MAKE_SWAP_METHOD(Rsp_Error, jsonrpc, id, error)
 };
 MAKE_REFLECT_STRUCT(Rsp_Error, jsonrpc, id, error)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/out_list.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/out_list.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/out_list.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -15,8 +15,8 @@
 
 namespace LocationListEither{
 
-	typedef  std::pair< boost::optional<std::vector<lsLocation>> , boost::optional<std::vector<LocationLink> > > Either;
-	
+        typedef  std::pair< boost::optional<std::vector<lsLocation>> , boost::optional<std::vector<LocationLink> > > Either;
+
 };
 extern  void Reflect(Reader& visitor, LocationListEither::Either& value);
 //DEFINE_RESPONCE_TYPE(Rsp_LocationListEither, LocationListEither::Either);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/symbol.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/symbol.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/symbol.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -3,45 +3,45 @@
 
 
 enum class lsSymbolKind : uint8_t {
-	Unknown = 0,
+        Unknown = 0,
 
-	File = 1,
-	Module = 2,
-	Namespace = 3,
-	Package = 4,
-	Class = 5,
-	Method = 6,
-	Property = 7,
-	Field = 8,
-	Constructor = 9,
-	Enum = 10,
-	Interface = 11,
-	Function = 12,
-	Variable = 13,
-	Constant = 14,
-	String = 15,
-	Number = 16,
-	Boolean = 17,
-	Array = 18,
-	Object = 19,
-	Key = 20,
-	Null = 21,
-	EnumMember = 22,
-	Struct = 23,
-	Event = 24,
-	Operator = 25,
+        File = 1,
+        Module = 2,
+        Namespace = 3,
+        Package = 4,
+        Class = 5,
+        Method = 6,
+        Property = 7,
+        Field = 8,
+        Constructor = 9,
+        Enum = 10,
+        Interface = 11,
+        Function = 12,
+        Variable = 13,
+        Constant = 14,
+        String = 15,
+        Number = 16,
+        Boolean = 17,
+        Array = 18,
+        Object = 19,
+        Key = 20,
+        Null = 21,
+        EnumMember = 22,
+        Struct = 23,
+        Event = 24,
+        Operator = 25,
 
-	// For C++, this is interpreted as "template parameter" (including
-	// non-type template parameters).
-	TypeParameter = 26,
+        // For C++, this is interpreted as "template parameter" (including
+        // non-type template parameters).
+        TypeParameter = 26,
 
-	// cquery extensions
-	// See also https://github.com/Microsoft/language-server-protocol/issues/344
-	// for new SymbolKind clang/Index/IndexSymbol.h clang::index::SymbolKind
-	TypeAlias = 252,
-	Parameter = 253,
-	StaticMethod = 254,
-	Macro = 255,
+        // cquery extensions
+        // See also https://github.com/Microsoft/language-server-protocol/issues/344
+        // for new SymbolKind clang/Index/IndexSymbol.h clang::index::SymbolKind
+        TypeAlias = 252,
+        Parameter = 253,
+        StaticMethod = 254,
+        Macro = 255,
 };
 MAKE_REFLECT_TYPE_PROXY(lsSymbolKind);
 
@@ -113,52 +113,52 @@
 
 
 struct lsDocumentSymbol {
-	/**
-	 * The name of this symbol.
-	 */
+        /**
+         * The name of this symbol.
+         */
 
-	std::string name;
+        std::string name;
 
-	/**
-	 * The kind of this symbol.
-	 */
-	
-	lsSymbolKind kind = lsSymbolKind::Unknown;
+        /**
+         * The kind of this symbol.
+         */
 
-	/**
-	 * The range enclosing this symbol not including leading/trailing whitespace but everything else
-	 * like comments. This information is typically used to determine if the clients cursor is
-	 * inside the symbol to reveal in the symbol in the UI.
-	 */
-	
-	lsRange range;
+        lsSymbolKind kind = lsSymbolKind::Unknown;
 
-	/**
-	 * The range that should be selected and revealed when this symbol is being picked, e.g the name of a function.
-	 * Must be contained by the `range`.
-	 */
-	
-	lsRange selectionRange;
+        /**
+         * The range enclosing this symbol not including leading/trailing whitespace but everything else
+         * like comments. This information is typically used to determine if the clients cursor is
+         * inside the symbol to reveal in the symbol in the UI.
+         */
 
-	/**
-	 * More detail for this symbol, e.g the signature of a function. If not provided the
-	 * name is used.
-	 */
-	boost::optional< std::string >  detail;
+        lsRange range;
 
-	/**
-	 * Indicates if this symbol is deprecated.
-	 */
-	boost::optional< bool > deprecated;
+        /**
+         * The range that should be selected and revealed when this symbol is being picked, e.g the name of a function.
+         * Must be contained by the `range`.
+         */
 
-	/**
-	 * Children of this symbol, e.g. properties of a class.
-	 */
-	boost::optional < std::vector<lsDocumentSymbol> > children;
+        lsRange selectionRange;
 
-	//internal use
-	int flags=0;
+        /**
+         * More detail for this symbol, e.g the signature of a function. If not provided the
+         * name is used.
+         */
+        boost::optional< std::string >  detail;
 
-	MAKE_SWAP_METHOD(lsDocumentSymbol, name, kind, range, selectionRange, detail, deprecated, children, flags);
+        /**
+         * Indicates if this symbol is deprecated.
+         */
+        boost::optional< bool > deprecated;
+
+        /**
+         * Children of this symbol, e.g. properties of a class.
+         */
+        boost::optional < std::vector<lsDocumentSymbol> > children;
+
+        //internal use
+        int flags=0;
+
+        MAKE_SWAP_METHOD(lsDocumentSymbol, name, kind, range, selectionRange, detail, deprecated, children, flags);
 };
-MAKE_REFLECT_STRUCT(lsDocumentSymbol, name, kind, range, selectionRange, detail, deprecated, children, flags);
\ No newline at end of file
+MAKE_REFLECT_STRUCT(lsDocumentSymbol, name, kind, range, selectionRange, detail, deprecated, children, flags);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/SemanticTokens.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/SemanticTokens.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/SemanticTokens.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -4,115 +4,115 @@
 #include "LibLsp/lsp/lsVersionedTextDocumentIdentifier.h"
 #include "LibLsp/JsonRpc/RequestInMessage.h"
 enum class HighlightingKind_clangD {
-	Variable = 0,
-	LocalVariable,
-	Parameter,
-	Function,
-	Method,
-	StaticMethod,
-	Field,
-	StaticField,
-	Class,
-	Interface,
-	Enum,
-	EnumConstant,
-	Typedef,
-	Type,
-	Unknown,
-	Namespace,
-	TemplateParameter,
-	Concept,
-	Primitive,
-	Macro,
+        Variable = 0,
+        LocalVariable,
+        Parameter,
+        Function,
+        Method,
+        StaticMethod,
+        Field,
+        StaticField,
+        Class,
+        Interface,
+        Enum,
+        EnumConstant,
+        Typedef,
+        Type,
+        Unknown,
+        Namespace,
+        TemplateParameter,
+        Concept,
+        Primitive,
+        Macro,
 
-	// This one is different from the other kinds as it's a line style
-	// rather than a token style.
-	InactiveCode,
+        // This one is different from the other kinds as it's a line style
+        // rather than a token style.
+        InactiveCode,
 
-	LastKind = InactiveCode
+        LastKind = InactiveCode
 };
 std::string toSemanticTokenType(HighlightingKind_clangD kind);
 
 enum class HighlightingModifier_clangD {
-	Declaration,
-	Deprecated,
-	Deduced,
-	Readonly,
-	Static,
-	Abstract,
-	DependentName,
-	DefaultLibrary,
+        Declaration,
+        Deprecated,
+        Deduced,
+        Readonly,
+        Static,
+        Abstract,
+        DependentName,
+        DefaultLibrary,
 
-	FunctionScope,
-	ClassScope,
-	FileScope,
-	GlobalScope,
+        FunctionScope,
+        ClassScope,
+        FileScope,
+        GlobalScope,
 
-	LastModifier = GlobalScope
+        LastModifier = GlobalScope
 };
 std::string toSemanticTokenModifier(HighlightingModifier_clangD modifier);
 
 enum  SemanticTokenType {
-	ls_namespace=0,// 'namespace',
-	/**
-	 * Represents a generic type. Acts as a fallback for types which
-	 * can't be mapped to a specific type like class or enum.
-	 */
-	 ls_type,// 'type',
-	 ls_class,// 'class',
-	 ls_enum,// 'enum',
-	 ls_interface,// 'interface',
-	 ls_struct,// 'struct',
-	 ls_typeParameter,// 'typeParameter',
-	 ls_parameter,// 'parameter',
-	 ls_variable,// 'variable',
-	 ls_property,// 'property',
-	 ls_enumMember,// 'enumMember',
-	 ls_event,// 'event',
-	 ls_function,// 'function',
-	 ls_method,// 'method',
-	 ls_macro,// 'macro',
-	 ls_keyword,// 'keyword',
-	 ls_modifier,// 'modifier',
-	 ls_comment,// 'comment',
-	 ls_string,// 'string',
-	 ls_number,// 'number',
-	 ls_regexp,// 'regexp',
-	 ls_operator,// 'operator'
-	 lastKind = ls_operator
+        ls_namespace=0,// 'namespace',
+        /**
+         * Represents a generic type. Acts as a fallback for types which
+         * can't be mapped to a specific type like class or enum.
+         */
+         ls_type,// 'type',
+         ls_class,// 'class',
+         ls_enum,// 'enum',
+         ls_interface,// 'interface',
+         ls_struct,// 'struct',
+         ls_typeParameter,// 'typeParameter',
+         ls_parameter,// 'parameter',
+         ls_variable,// 'variable',
+         ls_property,// 'property',
+         ls_enumMember,// 'enumMember',
+         ls_event,// 'event',
+         ls_function,// 'function',
+         ls_method,// 'method',
+         ls_macro,// 'macro',
+         ls_keyword,// 'keyword',
+         ls_modifier,// 'modifier',
+         ls_comment,// 'comment',
+         ls_string,// 'string',
+         ls_number,// 'number',
+         ls_regexp,// 'regexp',
+         ls_operator,// 'operator'
+         lastKind = ls_operator
 };
 std::string to_string(SemanticTokenType);
 unsigned toSemanticTokenType(std::vector<SemanticTokenType>& modifiers);
 
 enum TokenType_JDT {
-	PACKAGE_JDT=0,
-	CLASS_JDT,
-	INTERFACE_JDT,
-	ENUM_JDT,
-	ENUM_MEMBER_JDT,
-	TYPE_JDT,
-	TYPE_PARAMETER_JDT,
-	ANNOTATION_JDT,
-	ANNOTATION_MEMBER_JDT,
-	METHOD_JDT,
-	PROPERTY_JDT,
-	VARIABLE_JDT,
-	PARAMETER_JDT
+        PACKAGE_JDT=0,
+        CLASS_JDT,
+        INTERFACE_JDT,
+        ENUM_JDT,
+        ENUM_MEMBER_JDT,
+        TYPE_JDT,
+        TYPE_PARAMETER_JDT,
+        ANNOTATION_JDT,
+        ANNOTATION_MEMBER_JDT,
+        METHOD_JDT,
+        PROPERTY_JDT,
+        VARIABLE_JDT,
+        PARAMETER_JDT
 };
 std::string to_string(TokenType_JDT);
 
 enum SemanticTokenModifier {
-	ls_declaration=0,// 'declaration',
-	ls_definition,// 'definition',
-	ls_readonly,// 'readonly',
-	ls_static,// 'static',
-	ls_deprecated,// 'deprecated',
-	ls_abstract,// 'abstract',
-	ls_async,// 'async',
-	ls_modification,// 'modification',
-	ls_documentation,// 'documentation',
-	ls_defaultLibrary,// 'defaultLibrary'
-	LastModifier = ls_defaultLibrary
+        ls_declaration=0,// 'declaration',
+        ls_definition,// 'definition',
+        ls_readonly,// 'readonly',
+        ls_static,// 'static',
+        ls_deprecated,// 'deprecated',
+        ls_abstract,// 'abstract',
+        ls_async,// 'async',
+        ls_modification,// 'modification',
+        ls_documentation,// 'documentation',
+        ls_defaultLibrary,// 'defaultLibrary'
+        LastModifier = ls_defaultLibrary
 };
 std::string to_string(SemanticTokenModifier);
 unsigned  toSemanticTokenModifiers(std::vector<SemanticTokenModifier>&);
@@ -120,85 +120,85 @@
 /// This struct is not part of LSP, which just encodes lists of tokens as
 /// arrays of numbers directly.
 struct SemanticToken {
-	/// token line number, relative to the previous token
-	unsigned deltaLine = 0;
-	/// token start character, relative to the previous token
-	/// (relative to 0 or the previous token's start if they are on the same line)
-	unsigned deltaStart = 0;
-	/// the length of the token. A token cannot be multiline
-	unsigned length = 0;
-	/// will be looked up in `SemanticTokensLegend.tokenTypes`
-	unsigned tokenType = 0;
-	/// each set bit will be looked up in `SemanticTokensLegend.tokenModifiers`
-	unsigned tokenModifiers = 0;
+        /// token line number, relative to the previous token
+        unsigned deltaLine = 0;
+        /// token start character, relative to the previous token
+        /// (relative to 0 or the previous token's start if they are on the same line)
+        unsigned deltaStart = 0;
+        /// the length of the token. A token cannot be multiline
+        unsigned length = 0;
+        /// will be looked up in `SemanticTokensLegend.tokenTypes`
+        unsigned tokenType = 0;
+        /// each set bit will be looked up in `SemanticTokensLegend.tokenModifiers`
+        unsigned tokenModifiers = 0;
 };
 bool operator==(const SemanticToken&, const SemanticToken&);
 struct  SemanticTokens{
 
-	/**
-	* Tokens in a file are represented as an array of integers. The position of each token is expressed relative to
-	* the token before it, because most tokens remain stable relative to each other when edits are made in a file.
-	*
-	* ---
-	* In short, each token takes 5 integers to represent, so a specific token `i` in the file consists of the following array indices:
-	*  - at index `5*i`   - `deltaLine`: token line number, relative to the previous token
-	*  - at index `5*i+1` - `deltaStart`: token start character, relative to the previous token (relative to 0 or the previous token's start if they are on the same line)
-	*  - at index `5*i+2` - `length`: the length of the token. A token cannot be multiline.
-	*  - at index `5*i+3` - `tokenType`: will be looked up in `SemanticTokensLegend.tokenTypes`. We currently ask that `tokenType` < 65536.
-	*  - at index `5*i+4` - `tokenModifiers`: each set bit will be looked up in `SemanticTokensLegend.tokenModifiers`
-	*
-	* ---
-	* ### How to encode tokens
-	*
-	* Here is an example for encoding a file with 3 tokens in a uint32 array:
-	* ```
-	*    { line: 2, startChar:  5, length: 3, tokenType: "property",  tokenModifiers: ["private", "static"] },
-	*    { line: 2, startChar: 10, length: 4, tokenType: "type",      tokenModifiers: [] },
-	*    { line: 5, startChar:  2, length: 7, tokenType: "class",     tokenModifiers: [] }
-	* ```
-	*
-	* 1. First of all, a legend must be devised. This legend must be provided up-front and capture all possible token types.
-	* For this example, we will choose the following legend which must be passed in when registering the provider:
-	* ```
-	*    tokenTypes: ['property', 'type', 'class'],
-	*    tokenModifiers: ['private', 'static']
-	* ```
-	*
-	* 2. The first transformation step is to encode `tokenType` and `tokenModifiers` as integers using the legend. Token types are looked
-	* up by index, so a `tokenType` value of `1` means `tokenTypes[1]`. Multiple token modifiers can be set by using bit flags,
-	* so a `tokenModifier` value of `3` is first viewed as binary `0b00000011`, which means `[tokenModifiers[0], tokenModifiers[1]]` because
-	* bits 0 and 1 are set. Using this legend, the tokens now are:
-	* ```
-	*    { line: 2, startChar:  5, length: 3, tokenType: 0, tokenModifiers: 3 },
-	*    { line: 2, startChar: 10, length: 4, tokenType: 1, tokenModifiers: 0 },
-	*    { line: 5, startChar:  2, length: 7, tokenType: 2, tokenModifiers: 0 }
-	* ```
-	*
-	* 3. The next step is to represent each token relative to the previous token in the file. In this case, the second token
-	* is on the same line as the first token, so the `startChar` of the second token is made relative to the `startChar`
-	* of the first token, so it will be `10 - 5`. The third token is on a different line than the second token, so the
-	* `startChar` of the third token will not be altered:
-	* ```
-	*    { deltaLine: 2, deltaStartChar: 5, length: 3, tokenType: 0, tokenModifiers: 3 },
-	*    { deltaLine: 0, deltaStartChar: 5, length: 4, tokenType: 1, tokenModifiers: 0 },
-	*    { deltaLine: 3, deltaStartChar: 2, length: 7, tokenType: 2, tokenModifiers: 0 }
-	* ```
-	*
-	* 4. Finally, the last step is to inline each of the 5 fields for a token in a single array, which is a memory friendly representation:
-	* ```
-	*    // 1st token,  2nd token,  3rd token
-	*    [  2,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ]
-	* ```
-	*/
-	std::vector<int32_t> data;
-	static std::vector<int32_t> encodeTokens(std::vector<SemanticToken>& tokens);
+        /**
+        * Tokens in a file are represented as an array of integers. The position of each token is expressed relative to
+        * the token before it, because most tokens remain stable relative to each other when edits are made in a file.
+        *
+        * ---
+        * In short, each token takes 5 integers to represent, so a specific token `i` in the file consists of the following array indices:
+        *  - at index `5*i`   - `deltaLine`: token line number, relative to the previous token
+        *  - at index `5*i+1` - `deltaStart`: token start character, relative to the previous token (relative to 0 or the previous token's start if they are on the same line)
+        *  - at index `5*i+2` - `length`: the length of the token. A token cannot be multiline.
+        *  - at index `5*i+3` - `tokenType`: will be looked up in `SemanticTokensLegend.tokenTypes`. We currently ask that `tokenType` < 65536.
+        *  - at index `5*i+4` - `tokenModifiers`: each set bit will be looked up in `SemanticTokensLegend.tokenModifiers`
+        *
+        * ---
+        * ### How to encode tokens
+        *
+        * Here is an example for encoding a file with 3 tokens in a uint32 array:
+        * ```
+        *    { line: 2, startChar:  5, length: 3, tokenType: "property",  tokenModifiers: ["private", "static"] },
+        *    { line: 2, startChar: 10, length: 4, tokenType: "type",      tokenModifiers: [] },
+        *    { line: 5, startChar:  2, length: 7, tokenType: "class",     tokenModifiers: [] }
+        * ```
+        *
+        * 1. First of all, a legend must be devised. This legend must be provided up-front and capture all possible token types.
+        * For this example, we will choose the following legend which must be passed in when registering the provider:
+        * ```
+        *    tokenTypes: ['property', 'type', 'class'],
+        *    tokenModifiers: ['private', 'static']
+        * ```
+        *
+        * 2. The first transformation step is to encode `tokenType` and `tokenModifiers` as integers using the legend. Token types are looked
+        * up by index, so a `tokenType` value of `1` means `tokenTypes[1]`. Multiple token modifiers can be set by using bit flags,
+        * so a `tokenModifier` value of `3` is first viewed as binary `0b00000011`, which means `[tokenModifiers[0], tokenModifiers[1]]` because
+        * bits 0 and 1 are set. Using this legend, the tokens now are:
+        * ```
+        *    { line: 2, startChar:  5, length: 3, tokenType: 0, tokenModifiers: 3 },
+        *    { line: 2, startChar: 10, length: 4, tokenType: 1, tokenModifiers: 0 },
+        *    { line: 5, startChar:  2, length: 7, tokenType: 2, tokenModifiers: 0 }
+        * ```
+        *
+        * 3. The next step is to represent each token relative to the previous token in the file. In this case, the second token
+        * is on the same line as the first token, so the `startChar` of the second token is made relative to the `startChar`
+        * of the first token, so it will be `10 - 5`. The third token is on a different line than the second token, so the
+        * `startChar` of the third token will not be altered:
+        * ```
+        *    { deltaLine: 2, deltaStartChar: 5, length: 3, tokenType: 0, tokenModifiers: 3 },
+        *    { deltaLine: 0, deltaStartChar: 5, length: 4, tokenType: 1, tokenModifiers: 0 },
+        *    { deltaLine: 3, deltaStartChar: 2, length: 7, tokenType: 2, tokenModifiers: 0 }
+        * ```
+        *
+        * 4. Finally, the last step is to inline each of the 5 fields for a token in a single array, which is a memory friendly representation:
+        * ```
+        *    // 1st token,  2nd token,  3rd token
+        *    [  2,5,3,0,3,  0,5,4,1,0,  3,2,7,2,0 ]
+        * ```
+        */
+        std::vector<int32_t> data;
+        static std::vector<int32_t> encodeTokens(std::vector<SemanticToken>& tokens);
 
-	/**
-	 * An optional result id. If provided and clients support delta updating
-	 * the client will include the result id in the next semantic token request.
-	 * A server can then instead of computing all semantic tokens again simply
-	 * send a delta.
-	 */
+        /**
+         * An optional result id. If provided and clients support delta updating
+         * the client will include the result id in the next semantic token request.
+         * A server can then instead of computing all semantic tokens again simply
+         * send a delta.
+         */
    boost::optional<std::string> resultId;
    MAKE_SWAP_METHOD(SemanticTokens, data, resultId)
 };
@@ -206,9 +206,9 @@
 
 /// Body of textDocument/semanticTokens/full request.
 struct SemanticTokensParams {
-	/// The text document.
-	lsTextDocumentIdentifier textDocument;
-	MAKE_REFLECT_STRUCT(SemanticTokensParams, textDocument)
+        /// The text document.
+        lsTextDocumentIdentifier textDocument;
+        MAKE_REFLECT_STRUCT(SemanticTokensParams, textDocument)
 };
 MAKE_REFLECT_STRUCT(SemanticTokensParams, textDocument)
 
@@ -216,28 +216,28 @@
 /// Body of textDocument/semanticTokens/full/delta request.
 /// Requests the changes in semantic tokens since a previous response.
 struct SemanticTokensDeltaParams {
-	/// The text document.
-	lsTextDocumentIdentifier textDocument;
-	/**
-	 * The result id of a previous response. The result Id can either point to
-	 * a full response or a delta response depending on what was received last.
-	 */
-	std::string previousResultId;
+        /// The text document.
+        lsTextDocumentIdentifier textDocument;
+        /**
+         * The result id of a previous response. The result Id can either point to
+         * a full response or a delta response depending on what was received last.
+         */
+        std::string previousResultId;
 
-	MAKE_REFLECT_STRUCT(SemanticTokensDeltaParams, textDocument, previousResultId)
+        MAKE_REFLECT_STRUCT(SemanticTokensDeltaParams, textDocument, previousResultId)
 };
 MAKE_REFLECT_STRUCT(SemanticTokensDeltaParams, textDocument, previousResultId)
 
 /// Describes a a replacement of a contiguous range of semanticTokens.
 struct SemanticTokensEdit {
-	// LSP specifies `start` and `deleteCount` which are relative to the array
-	// encoding of the previous tokens.
-	// We use token counts instead, and translate when serializing this struct.
-	unsigned startToken = 0;
-	unsigned deleteTokens = 0;
-	std::vector<int32_t> tokens; // encoded as a flat integer array
+        // LSP specifies `start` and `deleteCount` which are relative to the array
+        // encoding of the previous tokens.
+        // We use token counts instead, and translate when serializing this struct.
+        unsigned startToken = 0;
+        unsigned deleteTokens = 0;
+        std::vector<int32_t> tokens; // encoded as a flat integer array
 
-	MAKE_REFLECT_STRUCT(SemanticTokensEdit, startToken, deleteTokens, tokens)
+        MAKE_REFLECT_STRUCT(SemanticTokensEdit, startToken, deleteTokens, tokens)
 };
 MAKE_REFLECT_STRUCT(SemanticTokensEdit, startToken, deleteTokens, tokens)
 
@@ -245,23 +245,23 @@
 /// This models LSP SemanticTokensDelta | SemanticTokens, which is the result of
 /// textDocument/semanticTokens/full/delta.
 struct SemanticTokensOrDelta {
-	boost::optional<std::string >  resultId;
-	/// Set if we computed edits relative to a previous set of tokens.
-	boost::optional< std::vector<SemanticTokensEdit> > edits;
-	/// Set if we computed a fresh set of tokens.
-	/// Set if we computed edits relative to a previous set of tokens.
-	boost::optional<std::vector<int32_t>> tokens; // encoded as integer array
-	MAKE_REFLECT_STRUCT(SemanticTokensOrDelta, resultId, edits, tokens)
+        boost::optional<std::string >  resultId;
+        /// Set if we computed edits relative to a previous set of tokens.
+        boost::optional< std::vector<SemanticTokensEdit> > edits;
+        /// Set if we computed a fresh set of tokens.
+        /// Set if we computed edits relative to a previous set of tokens.
+        boost::optional<std::vector<int32_t>> tokens; // encoded as integer array
+        MAKE_REFLECT_STRUCT(SemanticTokensOrDelta, resultId, edits, tokens)
 };
 MAKE_REFLECT_STRUCT(SemanticTokensOrDelta, resultId, edits, tokens)
 
-       
+
 struct SemanticTokensLegend {
-	std::vector<std::string> tokenTypes;
-	std::vector<std::string> tokenModifiers;
-	MAKE_REFLECT_STRUCT(SemanticTokensLegend, tokenTypes, tokenModifiers)
+        std::vector<std::string> tokenTypes;
+        std::vector<std::string> tokenModifiers;
+        MAKE_REFLECT_STRUCT(SemanticTokensLegend, tokenTypes, tokenModifiers)
 };
 MAKE_REFLECT_STRUCT(SemanticTokensLegend, tokenTypes, tokenModifiers)
 
 DEFINE_REQUEST_RESPONSE_TYPE(td_semanticTokens_full, SemanticTokensParams,boost::optional<SemanticTokens >,"textDocument/semanticTokens/full")
-DEFINE_REQUEST_RESPONSE_TYPE(td_semanticTokens_full_delta, SemanticTokensDeltaParams, boost::optional<SemanticTokensOrDelta >, "textDocument/semanticTokens/full/delta")
\ No newline at end of file
+DEFINE_REQUEST_RESPONSE_TYPE(td_semanticTokens_full_delta, SemanticTokensDeltaParams, boost::optional<SemanticTokensOrDelta >, "textDocument/semanticTokens/full/delta")

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/callHierarchy.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/callHierarchy.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/callHierarchy.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -12,56 +12,56 @@
 
 struct CallHierarchyPrepareParams
 {
-	lsTextDocumentIdentifier textDocument;
-	lsPosition position;
+        lsTextDocumentIdentifier textDocument;
+        lsPosition position;
 
-	MAKE_SWAP_METHOD(CallHierarchyPrepareParams,
-		textDocument,
-		position)
+        MAKE_SWAP_METHOD(CallHierarchyPrepareParams,
+                textDocument,
+                position)
 };
 MAKE_REFLECT_STRUCT(CallHierarchyPrepareParams,
-	textDocument,
-	position)
+        textDocument,
+        position)
 
 
 
-	/// Represents programming constructs like functions or constructors
-	/// in the context of call hierarchy.
+        /// Represents programming constructs like functions or constructors
+        /// in the context of call hierarchy.
 struct CallHierarchyItem {
-	/// The name of this item.
-	std::string name;
+        /// The name of this item.
+        std::string name;
 
-	/// The kind of this item.
-	SymbolKind kind;
+        /// The kind of this item.
+        SymbolKind kind;
 
-	/// Tags for this item.
-	boost::optional<std::vector<SymbolTag>>  tags;
+        /// Tags for this item.
+        boost::optional<std::vector<SymbolTag>>  tags;
 
-	/// More detaill for this item, e.g. the signature of a function.
-	boost::optional<std::string>  detail;
+        /// More detaill for this item, e.g. the signature of a function.
+        boost::optional<std::string>  detail;
 
-	/// The resource identifier of this item.
-	lsDocumentUri uri;
+        /// The resource identifier of this item.
+        lsDocumentUri uri;
 
-	/**
-	 * The range enclosing this symbol not including leading/trailing whitespace
-	 * but everything else, e.g. comments and code.
-	 */
-	lsRange range;
+        /**
+         * The range enclosing this symbol not including leading/trailing whitespace
+         * but everything else, e.g. comments and code.
+         */
+        lsRange range;
 
-	/**
-	 * The range that should be selected and revealed when this symbol is being
-	 * picked, e.g. the name of a function. Must be contained by the
-	 * [`range`](#CallHierarchyItem.range).
-	 */
-	lsRange selectionRange;
+        /**
+         * The range that should be selected and revealed when this symbol is being
+         * picked, e.g. the name of a function. Must be contained by the
+         * [`range`](#CallHierarchyItem.range).
+         */
+        lsRange selectionRange;
 
-	/**
-	 * A data entry field that is preserved between a call hierarchy prepare and
-	 * incoming calls or outgoing calls requests.
-	 */
-	boost::optional<lsp::Any>  data;
-	MAKE_SWAP_METHOD(CallHierarchyItem, name, kind, tags, detail, uri, range, selectionRange, data)
+        /**
+         * A data entry field that is preserved between a call hierarchy prepare and
+         * incoming calls or outgoing calls requests.
+         */
+        boost::optional<lsp::Any>  data;
+        MAKE_SWAP_METHOD(CallHierarchyItem, name, kind, tags, detail, uri, range, selectionRange, data)
 };
 MAKE_REFLECT_STRUCT(CallHierarchyItem, name, kind, tags, detail, uri, range, selectionRange, data)
 
@@ -69,8 +69,8 @@
 
 /// The parameter of a `callHierarchy/incomingCalls` request.
 struct CallHierarchyIncomingCallsParams {
-	CallHierarchyItem item;
-	MAKE_SWAP_METHOD(CallHierarchyIncomingCallsParams,item)
+        CallHierarchyItem item;
+        MAKE_SWAP_METHOD(CallHierarchyIncomingCallsParams,item)
 };
 MAKE_REFLECT_STRUCT(CallHierarchyIncomingCallsParams, item)
 
@@ -77,13 +77,13 @@
 
 /// Represents an incoming call, e.g. a caller of a method or constructor.
 struct CallHierarchyIncomingCall {
-	/// The item that makes the call.
-	CallHierarchyItem from;
+        /// The item that makes the call.
+        CallHierarchyItem from;
 
-	/// The range at which the calls appear.
-	/// This is relative to the caller denoted by `From`.
-	std::vector<lsRange> fromRanges;
-	MAKE_SWAP_METHOD(CallHierarchyIncomingCall, from, fromRanges)
+        /// The range at which the calls appear.
+        /// This is relative to the caller denoted by `From`.
+        std::vector<lsRange> fromRanges;
+        MAKE_SWAP_METHOD(CallHierarchyIncomingCall, from, fromRanges)
 };
 MAKE_REFLECT_STRUCT(CallHierarchyIncomingCall, from, fromRanges)
 
@@ -92,8 +92,8 @@
 
 /// The parameter of a `callHierarchy/outgoingCalls` request.
 struct CallHierarchyOutgoingCallsParams {
-	CallHierarchyItem item;
-	MAKE_SWAP_METHOD(CallHierarchyOutgoingCallsParams, item)
+        CallHierarchyItem item;
+        MAKE_SWAP_METHOD(CallHierarchyOutgoingCallsParams, item)
 };
 MAKE_REFLECT_STRUCT(CallHierarchyOutgoingCallsParams, item)
 
@@ -100,22 +100,22 @@
 /// Represents an outgoing call, e.g. calling a getter from a method or
 /// a method from a constructor etc.
 struct CallHierarchyOutgoingCall {
-	/// The item that is called.
-	CallHierarchyItem to;
+        /// The item that is called.
+        CallHierarchyItem to;
 
-	/// The range at which this item is called.
-	/// This is the range relative to the caller, and not `To`.
-	std::vector<lsRange> fromRanges;
-	MAKE_SWAP_METHOD(CallHierarchyOutgoingCall, to, fromRanges)
+        /// The range at which this item is called.
+        /// This is the range relative to the caller, and not `To`.
+        std::vector<lsRange> fromRanges;
+        MAKE_SWAP_METHOD(CallHierarchyOutgoingCall, to, fromRanges)
 };
 MAKE_REFLECT_STRUCT(CallHierarchyOutgoingCall, to, fromRanges)
 
 
 DEFINE_REQUEST_RESPONSE_TYPE(td_prepareCallHierarchy, CallHierarchyPrepareParams,
-	boost::optional<std::vector<CallHierarchyItem>>, "textDocument/prepareCallHierarchy")
+        boost::optional<std::vector<CallHierarchyItem>>, "textDocument/prepareCallHierarchy")
 
 DEFINE_REQUEST_RESPONSE_TYPE(td_incomingCalls, CallHierarchyIncomingCallsParams,
-	boost::optional<std::vector<CallHierarchyIncomingCall>>, "callHierarchy/incomingCalls")
+        boost::optional<std::vector<CallHierarchyIncomingCall>>, "callHierarchy/incomingCalls")
 
 DEFINE_REQUEST_RESPONSE_TYPE(td_outgoingCalls, CallHierarchyOutgoingCallsParams,
-	boost::optional<std::vector<CallHierarchyOutgoingCall>>, "callHierarchy/CallHierarchyOutgoingCall")
\ No newline at end of file
+        boost::optional<std::vector<CallHierarchyOutgoingCall>>, "callHierarchy/CallHierarchyOutgoingCall")

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_action.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_action.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_action.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,24 +7,24 @@
 
 namespace  QuickAssistProcessor {
 
-	extern const char* SPLIT_JOIN_VARIABLE_DECLARATION_ID;//$NON-NLS-1$
-	extern const char* CONVERT_FOR_LOOP_ID;// ;// "org.eclipse.jdt.ls.correction.convertForLoop.assist"; //$NON-NLS-1$
-	extern const char* ASSIGN_TO_LOCAL_ID ;// "org.eclipse.jdt.ls.correction.assignToLocal.assist"; //$NON-NLS-1$
-	extern const char* ASSIGN_TO_FIELD_ID ;// "org.eclipse.jdt.ls.correction.assignToField.assist"; //$NON-NLS-1$
-	extern const char* ASSIGN_PARAM_TO_FIELD_ID ;// "org.eclipse.jdt.ls.correction.assignParamToField.assist"; //$NON-NLS-1$
-	extern const char* ASSIGN_ALL_PARAMS_TO_NEW_FIELDS_ID ;// "org.eclipse.jdt.ls.correction.assignAllParamsToNewFields.assist"; //$NON-NLS-1$
-	extern const char* ADD_BLOCK_ID ;// "org.eclipse.jdt.ls.correction.addBlock.assist"; //$NON-NLS-1$
-	extern const char* EXTRACT_LOCAL_ID ;// "org.eclipse.jdt.ls.correction.extractLocal.assist"; //$NON-NLS-1$
-	extern const char* EXTRACT_LOCAL_NOT_REPLACE_ID ;// "org.eclipse.jdt.ls.correction.extractLocalNotReplaceOccurrences.assist"; //$NON-NLS-1$
-	extern const char* EXTRACT_CONSTANT_ID ;// "org.eclipse.jdt.ls.correction.extractConstant.assist"; //$NON-NLS-1$
-	extern const char* INLINE_LOCAL_ID ;// "org.eclipse.jdt.ls.correction.inlineLocal.assist"; //$NON-NLS-1$
-	extern const char* CONVERT_LOCAL_TO_FIELD_ID ;// "org.eclipse.jdt.ls.correction.convertLocalToField.assist"; //$NON-NLS-1$
-	extern const char* CONVERT_ANONYMOUS_TO_LOCAL_ID ;// "org.eclipse.jdt.ls.correction.convertAnonymousToLocal.assist"; //$NON-NLS-1$
-	extern const char* CONVERT_TO_STRING_BUFFER_ID ;// "org.eclipse.jdt.ls.correction.convertToStringBuffer.assist"; //$NON-NLS-1$
-	extern const char* CONVERT_TO_MESSAGE_FORMAT_ID ;// "org.eclipse.jdt.ls.correction.convertToMessageFormat.assist"; //$NON-NLS-1$;
-	extern const char* EXTRACT_METHOD_INPLACE_ID ;// "org.eclipse.jdt.ls.correction.extractMethodInplace.assist"; //$NON-NLS-1$;
+        extern const char* SPLIT_JOIN_VARIABLE_DECLARATION_ID;//$NON-NLS-1$
+        extern const char* CONVERT_FOR_LOOP_ID;// ;// "org.eclipse.jdt.ls.correction.convertForLoop.assist"; //$NON-NLS-1$
+        extern const char* ASSIGN_TO_LOCAL_ID ;// "org.eclipse.jdt.ls.correction.assignToLocal.assist"; //$NON-NLS-1$
+        extern const char* ASSIGN_TO_FIELD_ID ;// "org.eclipse.jdt.ls.correction.assignToField.assist"; //$NON-NLS-1$
+        extern const char* ASSIGN_PARAM_TO_FIELD_ID ;// "org.eclipse.jdt.ls.correction.assignParamToField.assist"; //$NON-NLS-1$
+        extern const char* ASSIGN_ALL_PARAMS_TO_NEW_FIELDS_ID ;// "org.eclipse.jdt.ls.correction.assignAllParamsToNewFields.assist"; //$NON-NLS-1$
+        extern const char* ADD_BLOCK_ID ;// "org.eclipse.jdt.ls.correction.addBlock.assist"; //$NON-NLS-1$
+        extern const char* EXTRACT_LOCAL_ID ;// "org.eclipse.jdt.ls.correction.extractLocal.assist"; //$NON-NLS-1$
+        extern const char* EXTRACT_LOCAL_NOT_REPLACE_ID ;// "org.eclipse.jdt.ls.correction.extractLocalNotReplaceOccurrences.assist"; //$NON-NLS-1$
+        extern const char* EXTRACT_CONSTANT_ID ;// "org.eclipse.jdt.ls.correction.extractConstant.assist"; //$NON-NLS-1$
+        extern const char* INLINE_LOCAL_ID ;// "org.eclipse.jdt.ls.correction.inlineLocal.assist"; //$NON-NLS-1$
+        extern const char* CONVERT_LOCAL_TO_FIELD_ID ;// "org.eclipse.jdt.ls.correction.convertLocalToField.assist"; //$NON-NLS-1$
+        extern const char* CONVERT_ANONYMOUS_TO_LOCAL_ID ;// "org.eclipse.jdt.ls.correction.convertAnonymousToLocal.assist"; //$NON-NLS-1$
+        extern const char* CONVERT_TO_STRING_BUFFER_ID ;// "org.eclipse.jdt.ls.correction.convertToStringBuffer.assist"; //$NON-NLS-1$
+        extern const char* CONVERT_TO_MESSAGE_FORMAT_ID ;// "org.eclipse.jdt.ls.correction.convertToMessageFormat.assist"; //$NON-NLS-1$;
+        extern const char* EXTRACT_METHOD_INPLACE_ID ;// "org.eclipse.jdt.ls.correction.extractMethodInplace.assist"; //$NON-NLS-1$;
 
-	extern const char* CONVERT_ANONYMOUS_CLASS_TO_NESTED_COMMAND ;// "convertAnonymousClassToNestedCommand";
+        extern const char* CONVERT_ANONYMOUS_CLASS_TO_NESTED_COMMAND ;// "convertAnonymousClassToNestedCommand";
 };
 /**
  * The code action request is sent from the client to the server to compute

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_lens.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_lens.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/code_lens.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -4,7 +4,7 @@
 #include "LibLsp/JsonRpc/lsResponseMessage.h"
 
 struct lsDocumentCodeLensParams {
-	
+
 /**
  * The document to request code lens for.
  */
@@ -18,15 +18,15 @@
 
 
 struct lsCodeLens {
-	// The range in which this code lens is valid. Should only span a single line.
-	lsRange range;
-	// The command this code lens represents.
-	boost::optional<lsCommandWithAny> command;
-	// A data entry field that is preserved on a code lens item between
-	// a code lens and a code lens resolve request.
-	boost::optional< lsp::Any> data;
+        // The range in which this code lens is valid. Should only span a single line.
+        lsRange range;
+        // The command this code lens represents.
+        boost::optional<lsCommandWithAny> command;
+        // A data entry field that is preserved on a code lens item between
+        // a code lens and a code lens resolve request.
+        boost::optional< lsp::Any> data;
 
-	MAKE_SWAP_METHOD(lsCodeLens, range, command, data)
+        MAKE_SWAP_METHOD(lsCodeLens, range, command, data)
 };
 MAKE_REFLECT_STRUCT(lsCodeLens, range, command, data)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/colorPresentation.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/colorPresentation.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/colorPresentation.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -12,48 +12,48 @@
 
 struct ColorPresentationParams {
 
-	/**
+        /**
    * The text document.
    */
-	lsTextDocumentIdentifier textDocument;
+        lsTextDocumentIdentifier textDocument;
 
-	/**
-	 * The range in the document where this color appers.
-	 */
+        /**
+         * The range in the document where this color appers.
+         */
 
-	lsRange range;
+        lsRange range;
 
-	/**
-	 * The actual color value for this color range.
-	 */
+        /**
+         * The actual color value for this color range.
+         */
 
-	TextDocument::Color color;
-	MAKE_SWAP_METHOD(ColorPresentationParams, textDocument, range, color)
+        TextDocument::Color color;
+        MAKE_SWAP_METHOD(ColorPresentationParams, textDocument, range, color)
 };
 MAKE_REFLECT_STRUCT(ColorPresentationParams, textDocument, range, color)
 
 
 struct ColorPresentation {
-	/**
-	 * The label of this color presentation. It will be shown on the color
-	 * picker header. By default this is also the text that is inserted when selecting
-	 * this color presentation.
-	 */
+        /**
+         * The label of this color presentation. It will be shown on the color
+         * picker header. By default this is also the text that is inserted when selecting
+         * this color presentation.
+         */
 
-	 std::string label;
+         std::string label;
 
-	/**
-	 * An edit which is applied to a document when selecting
-	 * this presentation for the color.  When `null` the label is used.
-	 */
-	 lsTextEdit textEdit;
+        /**
+         * An edit which is applied to a document when selecting
+         * this presentation for the color.  When `null` the label is used.
+         */
+         lsTextEdit textEdit;
 
-	/**
-	 * An optional array of additional text edits that are applied when
-	 * selecting this color presentation. Edits must not overlap with the main edit nor with themselves.
-	 */
-	std::vector<lsTextEdit> additionalTextEdits;
-	MAKE_SWAP_METHOD(ColorPresentation, label, textEdit, additionalTextEdits)
+        /**
+         * An optional array of additional text edits that are applied when
+         * selecting this color presentation. Edits must not overlap with the main edit nor with themselves.
+         */
+        std::vector<lsTextEdit> additionalTextEdits;
+        MAKE_SWAP_METHOD(ColorPresentation, label, textEdit, additionalTextEdits)
 };
 MAKE_REFLECT_STRUCT(ColorPresentation, label, textEdit, additionalTextEdits)
 
@@ -60,4 +60,4 @@
 
 
 DEFINE_REQUEST_RESPONSE_TYPE(td_colorPresentation,
-	ColorPresentationParams, std::vector<ColorPresentation>, "textDocument/colorPresentation")
\ No newline at end of file
+        ColorPresentationParams, std::vector<ColorPresentation>, "textDocument/colorPresentation")

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/completion.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/completion.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/completion.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -41,9 +41,9 @@
   // send this using
   // `ClientCapabilities.textDocument.completion.contextSupport === true`
   boost::optional<lsCompletionContext> context;
-	
+
   MAKE_SWAP_METHOD(lsCompletionParams, textDocument, position, context);
-	
+
 };
 MAKE_REFLECT_STRUCT(lsCompletionParams, textDocument, position, context);
 
@@ -56,9 +56,9 @@
 
 
 namespace TextDocumentComplete{
-	
-	typedef  std::pair< boost::optional<std::vector<lsCompletionItem>>, boost::optional<CompletionList> > Either;
-	
+
+        typedef  std::pair< boost::optional<std::vector<lsCompletionItem>>, boost::optional<CompletionList> > Either;
+
 };
 extern  void Reflect(Reader& visitor, TextDocumentComplete::Either& value);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/didRenameFiles.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/didRenameFiles.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/didRenameFiles.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,31 +9,31 @@
 
 class FileRenameEvent {
 public:
-	std::string oldUri;
-	std::string newUri;
+        std::string oldUri;
+        std::string newUri;
 
-	FileRenameEvent() {
-	}
+        FileRenameEvent() {
+        }
 
-	FileRenameEvent(std::string oldUri, std::string newUri) {
-		this->oldUri = oldUri;
-		this->newUri = newUri;
-	}
-	MAKE_SWAP_METHOD(FileRenameEvent, oldUri, newUri);
+        FileRenameEvent(std::string oldUri, std::string newUri) {
+                this->oldUri = oldUri;
+                this->newUri = newUri;
+        }
+        MAKE_SWAP_METHOD(FileRenameEvent, oldUri, newUri);
 };
 MAKE_REFLECT_STRUCT(FileRenameEvent, oldUri, newUri);
 
 class FileRenameParams {
 public:
-	std::vector <FileRenameEvent> files;
+        std::vector <FileRenameEvent> files;
 
-	FileRenameParams() {
-	}
+        FileRenameParams() {
+        }
 
-	FileRenameParams(std::vector<FileRenameEvent>& files) {
-		this->files = files;
-	}
-	MAKE_SWAP_METHOD(FileRenameParams, files);
+        FileRenameParams(std::vector<FileRenameEvent>& files) {
+                this->files = files;
+        }
+        MAKE_SWAP_METHOD(FileRenameParams, files);
 };
 MAKE_REFLECT_STRUCT(FileRenameParams, files);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_change.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_change.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_change.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,38 +8,38 @@
 #include "LibLsp/lsp/lsRange.h"
 #include "LibLsp/lsp/lsDocumentUri.h"
 struct lsTextDocumentContentChangeEvent {
-	// The range of the document that changed.
-	boost::optional<lsRange> range;
-	// The length of the range that got replaced.
-	boost::optional<int> rangeLength;
-	// The new text of the range/document.
-	std::string text;
+        // The range of the document that changed.
+        boost::optional<lsRange> range;
+        // The length of the range that got replaced.
+        boost::optional<int> rangeLength;
+        // The new text of the range/document.
+        std::string text;
 
-	MAKE_SWAP_METHOD(lsTextDocumentContentChangeEvent, range, rangeLength, text);
+        MAKE_SWAP_METHOD(lsTextDocumentContentChangeEvent, range, rangeLength, text);
 };
 MAKE_REFLECT_STRUCT(lsTextDocumentContentChangeEvent, range, rangeLength, text);
 
 
 struct lsTextDocumentDidChangeParams {
-	lsVersionedTextDocumentIdentifier textDocument;
-	std::vector<lsTextDocumentContentChangeEvent> contentChanges;
+        lsVersionedTextDocumentIdentifier textDocument;
+        std::vector<lsTextDocumentContentChangeEvent> contentChanges;
 
-	/**
-	 * Legacy property to support protocol version 1.0 requests.
-	 */
-	
-	boost::optional<lsDocumentUri>  uri;
-	
-	void swap(lsTextDocumentDidChangeParams& arg) noexcept
-	{
-		uri.swap(arg.uri);
-		contentChanges.swap(arg.contentChanges);
-		textDocument.swap(arg.textDocument);
-	}
+        /**
+         * Legacy property to support protocol version 1.0 requests.
+         */
+
+        boost::optional<lsDocumentUri>  uri;
+
+        void swap(lsTextDocumentDidChangeParams& arg) noexcept
+        {
+                uri.swap(arg.uri);
+                contentChanges.swap(arg.contentChanges);
+                textDocument.swap(arg.textDocument);
+        }
 };
 MAKE_REFLECT_STRUCT(lsTextDocumentDidChangeParams,
-	textDocument,
-	contentChanges, uri);
+        textDocument,
+        contentChanges, uri);
 
 /**
  * The document change notification is sent from the client to the server to

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_close.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_close.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_close.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -11,11 +11,11 @@
 
   struct Params {
     lsTextDocumentIdentifier textDocument;
-	void swap(Params& arg) noexcept
-	{
-		textDocument.swap(arg.textDocument);
-	}
-  	
+        void swap(Params& arg) noexcept
+        {
+                textDocument.swap(arg.textDocument);
+        }
+
   };
 
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_open.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_open.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_open.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -11,15 +11,15 @@
   struct Params {
     lsTextDocumentItem textDocument;
 
- 
 
+
    /**
   * Legacy property to support protocol version 1.0 requests.
   */
     boost::optional<std::string> text;
-  	
+
    MAKE_SWAP_METHOD(TextDocumentDidOpen::Params, textDocument, text);
-  
+
   };
 
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_save.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_save.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/did_save.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -15,7 +15,7 @@
     // when the save notifcation was requested.
     boost::optional<std::string>  text;
 
-	MAKE_SWAP_METHOD(TextDocumentDidSave::Params, textDocument, text);
+        MAKE_SWAP_METHOD(TextDocumentDidSave::Params, textDocument, text);
   };
 
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/documentColor.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/documentColor.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/documentColor.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,12 +7,12 @@
 #include "LibLsp/lsp/lsRange.h"
 #include <vector>
 struct DocumentColorParams {
-	/**
-	 * The text document.
-	 */
+        /**
+         * The text document.
+         */
 
-	 lsTextDocumentIdentifier textDocument;
-	 MAKE_SWAP_METHOD(DocumentColorParams, textDocument);
+         lsTextDocumentIdentifier textDocument;
+         MAKE_SWAP_METHOD(DocumentColorParams, textDocument);
 };
 MAKE_REFLECT_STRUCT(DocumentColorParams, textDocument);
 
@@ -28,46 +28,46 @@
  */
 
 namespace TextDocument {
-	struct  Color {
-		/**
-		 * The red component of this color in the range [0-1].
-		 */
-		double red = 0;
+        struct  Color {
+                /**
+                 * The red component of this color in the range [0-1].
+                 */
+                double red = 0;
 
-		/**
-		 * The green component of this color in the range [0-1].
-		 */
-		double green = 0;
+                /**
+                 * The green component of this color in the range [0-1].
+                 */
+                double green = 0;
 
-		/**
-		 * The blue component of this color in the range [0-1].
-		 */
-		double blue = 0;
+                /**
+                 * The blue component of this color in the range [0-1].
+                 */
+                double blue = 0;
 
-		/**
-		 * The alpha component of this color in the range [0-1].
-		 */
-		double alpha = 0;
-		MAKE_SWAP_METHOD(TextDocument::Color, red, green, blue, alpha)
-	};
+                /**
+                 * The alpha component of this color in the range [0-1].
+                 */
+                double alpha = 0;
+                MAKE_SWAP_METHOD(TextDocument::Color, red, green, blue, alpha)
+        };
 }
 MAKE_REFLECT_STRUCT(TextDocument::Color, red, green, blue, alpha)
 
 
 struct ColorInformation {
-	/**
-	 * The range in the document where this color appers.
-	 */
+        /**
+         * The range in the document where this color appers.
+         */
 
-	lsRange range;
+        lsRange range;
 
-	/**
-	 * The actual color value for this color range.
-	 */
+        /**
+         * The actual color value for this color range.
+         */
 
-	TextDocument::Color color;
-	MAKE_SWAP_METHOD(ColorInformation, range, color)
+        TextDocument::Color color;
+        MAKE_SWAP_METHOD(ColorInformation, range, color)
 };
 MAKE_REFLECT_STRUCT(ColorInformation,range,color)
 
-DEFINE_REQUEST_RESPONSE_TYPE(td_documentColor, DocumentColorParams,std::vector<ColorInformation>, "textDocument/documentColor");
\ No newline at end of file
+DEFINE_REQUEST_RESPONSE_TYPE(td_documentColor, DocumentColorParams,std::vector<ColorInformation>, "textDocument/documentColor");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_link.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_link.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_link.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,7 +9,7 @@
   struct Params {
     // The document to provide document links for.
     lsTextDocumentIdentifier textDocument;
-	MAKE_SWAP_METHOD(Params, textDocument)
+        MAKE_SWAP_METHOD(Params, textDocument)
   };
 
 };
@@ -27,9 +27,9 @@
   boost::optional<lsDocumentUri> target;
 
   boost::optional<lsp::Any> data;
-	
+
   MAKE_SWAP_METHOD(lsDocumentLink, range, target, data)
-	
+
 };
 MAKE_REFLECT_STRUCT(lsDocumentLink, range, target,data);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_symbol.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_symbol.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/document_symbol.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -18,7 +18,7 @@
 
 
 struct  TextDocumentDocumentSymbol{
-	typedef  std::pair< boost::optional<lsSymbolInformation>  , boost::optional<lsDocumentSymbol> > Either;
+        typedef  std::pair< boost::optional<lsSymbolInformation>  , boost::optional<lsDocumentSymbol> > Either;
 };
 void Reflect(Reader& visitor, TextDocumentDocumentSymbol::Either& value);
 
@@ -42,14 +42,14 @@
  * </p>
  */
 
-//DEFINE_REQUEST_RESPONSE_TYPE(td_symbol, 
-//	lsDocumentSymbolParams,
-//	std::vector<TextDocumentDocumentSymbol::Either> );
+//DEFINE_REQUEST_RESPONSE_TYPE(td_symbol,
+//      lsDocumentSymbolParams,
+//      std::vector<TextDocumentDocumentSymbol::Either> );
 //
 
-DEFINE_REQUEST_RESPONSE_TYPE(td_symbol, 
-	lsDocumentSymbolParams,
-	std::vector< lsDocumentSymbol >,"textDocument/documentSymbol" );
+DEFINE_REQUEST_RESPONSE_TYPE(td_symbol,
+        lsDocumentSymbolParams,
+        std::vector< lsDocumentSymbol >,"textDocument/documentSymbol" );
 
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/foldingRange.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/foldingRange.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/foldingRange.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,47 +9,47 @@
 
 
 struct FoldingRangeRequestParams {
-	/**
-	 * The text document.
-	 */
+        /**
+         * The text document.
+         */
 
-	lsTextDocumentIdentifier textDocument;
-	MAKE_SWAP_METHOD(FoldingRangeRequestParams, textDocument)
+        lsTextDocumentIdentifier textDocument;
+        MAKE_SWAP_METHOD(FoldingRangeRequestParams, textDocument)
 };
 MAKE_REFLECT_STRUCT(FoldingRangeRequestParams, textDocument)
 
 
 struct FoldingRange {
-	/**
-	 * The zero-based line number from where the folded range starts.
-	 */
-	 int startLine;
+        /**
+         * The zero-based line number from where the folded range starts.
+         */
+         int startLine;
 
-	/**
-	 * The zero-based line number where the folded range ends.
-	 */
-	 int endLine;
+        /**
+         * The zero-based line number where the folded range ends.
+         */
+         int endLine;
 
-	/**
-	 * The zero-based character offset from where the folded range starts. If not defined, defaults
-	 * to the length of the start line.
-	 */
-	 int startCharacter;
+        /**
+         * The zero-based character offset from where the folded range starts. If not defined, defaults
+         * to the length of the start line.
+         */
+         int startCharacter;
 
-	/**
-	 * The zero-based character offset before the folded range ends. If not defined, defaults to the
-	 * length of the end line.
-	 */
-	 int endCharacter;
+        /**
+         * The zero-based character offset before the folded range ends. If not defined, defaults to the
+         * length of the end line.
+         */
+         int endCharacter;
 
-	/**
-	 * Describes the kind of the folding range such as `comment' or 'region'. The kind
-	 * is used to categorize folding ranges and used by commands like 'Fold all comments'. See
-	 * FoldingRangeKind for an enumeration of standardized kinds.
-	 */
-	std::string kind;
+        /**
+         * Describes the kind of the folding range such as `comment' or 'region'. The kind
+         * is used to categorize folding ranges and used by commands like 'Fold all comments'. See
+         * FoldingRangeKind for an enumeration of standardized kinds.
+         */
+        std::string kind;
 
-	MAKE_SWAP_METHOD(FoldingRange, startLine, endLine, startCharacter, endCharacter, kind)
+        MAKE_SWAP_METHOD(FoldingRange, startLine, endLine, startCharacter, endCharacter, kind)
 };
 MAKE_REFLECT_STRUCT(FoldingRange,startLine,endLine,startCharacter,endCharacter,kind)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/formatting.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/formatting.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/formatting.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,15 +8,15 @@
 namespace  TextDocumentFormatting  {
 
   struct Params {
-	/**
-	 * The document to format.
-	*/
+        /**
+         * The document to format.
+        */
     lsTextDocumentIdentifier textDocument;
-	/**
-	 * The format options.
-	 */
+        /**
+         * The format options.
+         */
     lsFormattingOptions options;
-	MAKE_SWAP_METHOD(Params, textDocument, options);
+        MAKE_SWAP_METHOD(Params, textDocument, options);
   };
 
 };
@@ -28,5 +28,5 @@
  * Registration Options: TextDocumentRegistrationOptions
  */
 DEFINE_REQUEST_RESPONSE_TYPE(td_formatting, TextDocumentFormatting::Params,
-	std::vector<lsTextEdit>, "textDocument/formatting");
+        std::vector<lsTextEdit>, "textDocument/formatting");
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/highlight.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/highlight.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/highlight.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -14,5 +14,5 @@
  */
 
 DEFINE_REQUEST_RESPONSE_TYPE(td_highlight, lsTextDocumentPositionParams,
-	std::vector<lsDocumentHighlight>, "textDocument/documentHighlight");
+        std::vector<lsDocumentHighlight>, "textDocument/documentHighlight");
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/hover.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/hover.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/hover.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -16,21 +16,21 @@
 
 namespace TextDocumentHover
 {
-	typedef  boost::optional< std::vector< std::pair<boost::optional<std::string>, boost::optional<lsMarkedString>> > > Left;
-	typedef   std::pair< Left, boost::optional<MarkupContent> >  Either;
-	struct Result {
-		/**
-		 * The hover's content as markdown
-		 */
-		Either  contents;
-		
-		/**
-		 * An boost::optional range
-		 */
-		boost::optional<lsRange> range;
+        typedef  boost::optional< std::vector< std::pair<boost::optional<std::string>, boost::optional<lsMarkedString>> > > Left;
+        typedef   std::pair< Left, boost::optional<MarkupContent> >  Either;
+        struct Result {
+                /**
+                 * The hover's content as markdown
+                 */
+                Either  contents;
 
-		MAKE_SWAP_METHOD(Result, contents, range)
-	};
+                /**
+                 * An boost::optional range
+                 */
+                boost::optional<lsRange> range;
+
+                MAKE_SWAP_METHOD(Result, contents, range)
+        };
 }
 MAKE_REFLECT_STRUCT(TextDocumentHover::Result, contents, range);
 
@@ -44,12 +44,12 @@
 //
 //};
 //MAKE_REFLECT_STRUCT(Rsp_TextDocumentHover,
-//	jsonrpc,
-//	id,
-//	result);
+//      jsonrpc,
+//      id,
+//      result);
 
 //MAKE_REFLECT_STRUCT_OPTIONALS_MANDATORY(Rsp_TextDocumentHover,
 //                                        jsonrpc,
-//										 id,
+//                                                                               id,
 //                                        result);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/linkedEditingRange.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/linkedEditingRange.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/linkedEditingRange.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -12,40 +12,40 @@
 
 struct LinkedEditingRangeParams
 {
-	lsTextDocumentIdentifier textDocument;
-	lsPosition position;
+        lsTextDocumentIdentifier textDocument;
+        lsPosition position;
 
-	MAKE_SWAP_METHOD(LinkedEditingRangeParams,
-		textDocument,
-		position)
+        MAKE_SWAP_METHOD(LinkedEditingRangeParams,
+                textDocument,
+                position)
 };
 MAKE_REFLECT_STRUCT(LinkedEditingRangeParams,
-	textDocument,
-	position)
+        textDocument,
+        position)
 
 
 struct LinkedEditingRanges
 {
-	/**
+        /**
  * A list of ranges that can be renamed together. The ranges must have
  * identical length and contain identical text content. The ranges cannot overlap.
  */
   std::vector<lsRange> ranges;
 
-	/**
-	 * An optional word pattern (regular expression) that describes valid contents for
-	 * the given ranges. If no pattern is provided, the client configuration's word
-	 * pattern will be used.
-	 */
- 
-	boost::optional<std::string> wordPattern;
-	MAKE_SWAP_METHOD(LinkedEditingRanges,
-		ranges,
-		wordPattern)
+        /**
+         * An optional word pattern (regular expression) that describes valid contents for
+         * the given ranges. If no pattern is provided, the client configuration's word
+         * pattern will be used.
+         */
+
+        boost::optional<std::string> wordPattern;
+        MAKE_SWAP_METHOD(LinkedEditingRanges,
+                ranges,
+                wordPattern)
 };
 
 MAKE_REFLECT_STRUCT(LinkedEditingRanges,
-	ranges,
-	wordPattern)
+        ranges,
+        wordPattern)
 DEFINE_REQUEST_RESPONSE_TYPE(td_linkedEditingRange, LinkedEditingRangeParams,
-	boost::optional<std::vector<LinkedEditingRanges >>,"textDocument/linkedEditingRange")
\ No newline at end of file
+        boost::optional<std::vector<LinkedEditingRanges >>,"textDocument/linkedEditingRange")

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/onTypeFormatting.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/onTypeFormatting.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/onTypeFormatting.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -17,20 +17,20 @@
 
   lsPosition position;
 
-	 /**
-	  * The character that has been typed.
-	  */
+         /**
+          * The character that has been typed.
+          */
 
   std::string ch;
 
   MAKE_SWAP_METHOD(lsDocumentOnTypeFormattingParams,
-	  textDocument,
-	  position,
-	  options, ch);
+          textDocument,
+          position,
+          options, ch);
 };
 MAKE_REFLECT_STRUCT(lsDocumentOnTypeFormattingParams,
                     textDocument,
-					position,
+                                        position,
                     options,ch);
 
 /**
@@ -40,5 +40,5 @@
  * Registration Options: TextDocumentRegistrationOptions
  */
 DEFINE_REQUEST_RESPONSE_TYPE(td_onTypeFormatting,
-	lsDocumentOnTypeFormattingParams, std::vector<lsTextEdit>, "textDocument/onTypeFormatting");
+        lsDocumentOnTypeFormattingParams, std::vector<lsTextEdit>, "textDocument/onTypeFormatting");
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/prepareRename.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/prepareRename.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/prepareRename.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -13,20 +13,20 @@
  * Registration Options: TextDocumentRegistrationOptions
  */
 struct PrepareRenameResult{
-	/**
-	 * The range of the string to rename
-	 */
-	
-	 lsRange range;
+        /**
+         * The range of the string to rename
+         */
 
+         lsRange range;
+
 /**
  * A placeholder text of the string content to be renamed.
  */
 
-	std::string placeholder;
-	
-	MAKE_SWAP_METHOD(PrepareRenameResult, range, placeholder)
-	
+        std::string placeholder;
+
+        MAKE_SWAP_METHOD(PrepareRenameResult, range, placeholder)
+
 };
 MAKE_REFLECT_STRUCT(PrepareRenameResult,range,placeholder)
 
@@ -36,5 +36,5 @@
 extern void  Reflect(Reader& visitor, TextDocumentPrepareRenameResult& value);
 
 
-DEFINE_REQUEST_RESPONSE_TYPE(td_prepareRename, 
-	lsTextDocumentPositionParams, TextDocumentPrepareRenameResult, "textDocument/prepareRename");
\ No newline at end of file
+DEFINE_REQUEST_RESPONSE_TYPE(td_prepareRename,
+        lsTextDocumentPositionParams, TextDocumentPrepareRenameResult, "textDocument/prepareRename");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/publishDiagnostics.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/publishDiagnostics.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/publishDiagnostics.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -11,14 +11,14 @@
 
     // An array of diagnostic information items.
     std::vector<lsDiagnostic> diagnostics;
-	MAKE_SWAP_METHOD(Params,uri,diagnostics);
+        MAKE_SWAP_METHOD(Params,uri,diagnostics);
   };
 
-  
+
 };
 MAKE_REFLECT_STRUCT(TextDocumentPublishDiagnostics::Params,
-	uri,
-	diagnostics);
+        uri,
+        diagnostics);
 
 /**
  * Diagnostics notifications are sent from the server to the client to

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/range_formatting.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/range_formatting.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/range_formatting.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -13,9 +13,9 @@
   lsFormattingOptions options;
 
   MAKE_SWAP_METHOD(lsTextDocumentRangeFormattingParams,
-	  textDocument,
-	  range,
-	  options)
+          textDocument,
+          range,
+          options)
 };
 MAKE_REFLECT_STRUCT(lsTextDocumentRangeFormattingParams,
                     textDocument,
@@ -29,7 +29,7 @@
  * Registration Options: TextDocumentRegistrationOptions
  */
 DEFINE_REQUEST_RESPONSE_TYPE(td_rangeFormatting, lsTextDocumentRangeFormattingParams, std::vector<lsTextEdit>,
-	"textDocument/rangeFormatting");
+        "textDocument/rangeFormatting");
 
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/references.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/references.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/references.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -13,16 +13,16 @@
     // Include the declaration of the current symbol.
     boost::optional<bool>  includeDeclaration;
    MAKE_REFLECT_STRUCT(lsReferenceContext,
-	   includeDeclaration)
+           includeDeclaration)
   };
   struct Params {
     lsTextDocumentIdentifier textDocument;
     lsPosition position;
     lsReferenceContext context;
-	MAKE_SWAP_METHOD(Params,
-		textDocument,
-		position,
-		context)
+        MAKE_SWAP_METHOD(Params,
+                textDocument,
+                position,
+                context)
 
   };
 
@@ -44,5 +44,5 @@
  *
  * Registration Options: TextDocumentRegistrationOptions
  */
-DEFINE_REQUEST_RESPONSE_TYPE(td_references, TextDocumentReferences::Params, 
+DEFINE_REQUEST_RESPONSE_TYPE(td_references, TextDocumentReferences::Params,
     std::vector<lsLocation>, "textDocument/references");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/rename.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/rename.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/rename.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -20,10 +20,10 @@
     // request must return a [ResponseError](#ResponseError) with an
     // appropriate message set.
     std::string newName;
-	MAKE_SWAP_METHOD(Params,
-		textDocument,
-		position,
-		newName);
+        MAKE_SWAP_METHOD(Params,
+                textDocument,
+                position,
+                newName);
   };
 
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/resolveTypeHierarchy.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/resolveTypeHierarchy.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/resolveTypeHierarchy.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,23 +9,23 @@
 #include "typeHierarchy.h"
 
 struct ResolveTypeHierarchyItemParams {
-	/**
-	 * The hierarchy item to resolve.
-	 */
+        /**
+         * The hierarchy item to resolve.
+         */
 
-	TypeHierarchyItem item;
+        TypeHierarchyItem item;
 
-	/**
-	 * The number of hierarchy levels to resolve. {@code 0} indicates no hierarchy level.
-	 */
-	boost::optional<int>  resolve;
+        /**
+         * The number of hierarchy levels to resolve. {@code 0} indicates no hierarchy level.
+         */
+        boost::optional<int>  resolve;
 
-	/**
-	 * The direction of the type hierarchy resolution.
-	 */
+        /**
+         * The direction of the type hierarchy resolution.
+         */
 
-	TypeHierarchyDirection direction;
-	MAKE_SWAP_METHOD(ResolveTypeHierarchyItemParams, item, resolve, direction)
+        TypeHierarchyDirection direction;
+        MAKE_SWAP_METHOD(ResolveTypeHierarchyItemParams, item, resolve, direction)
 };
 MAKE_REFLECT_STRUCT(ResolveTypeHierarchyItemParams,item,resolve,direction)
 DEFINE_REQUEST_RESPONSE_TYPE(typeHierarchy_resolve, ResolveTypeHierarchyItemParams, TypeHierarchyItem, "typeHierarchy/resolve")

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/selectionRange.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/selectionRange.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/selectionRange.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,35 +8,35 @@
 #include "LibLsp/lsp/lsTextDocumentIdentifier.h"
 
 struct SelectionRangeParams {
-	/**
-	 * The text document.
-	 */
+        /**
+         * The text document.
+         */
 
-	lsTextDocumentIdentifier textDocument;
+        lsTextDocumentIdentifier textDocument;
 
-	/**
-	 * The positions inside the text document.
-	 */
+        /**
+         * The positions inside the text document.
+         */
 
-	std::vector<lsPosition> positions;
-	
-	MAKE_SWAP_METHOD(SelectionRangeParams, textDocument, positions)
-	
+        std::vector<lsPosition> positions;
+
+        MAKE_SWAP_METHOD(SelectionRangeParams, textDocument, positions)
+
 };
 MAKE_REFLECT_STRUCT(SelectionRangeParams, textDocument, positions)
 
 struct SelectionRange {
-	/**
-	 * The [range](#Range) of this selection range.
-	 */
+        /**
+         * The [range](#Range) of this selection range.
+         */
 
-	lsRange range;
+        lsRange range;
 
-	/**
-	 * The parent selection range containing this range. Therefore `parent.range` must contain `this.range`.
-	 */
-	boost::optional<SelectionRange*> parent;
-	MAKE_SWAP_METHOD(SelectionRange, range, parent)
+        /**
+         * The parent selection range containing this range. Therefore `parent.range` must contain `this.range`.
+         */
+        boost::optional<SelectionRange*> parent;
+        MAKE_SWAP_METHOD(SelectionRange, range, parent)
 };
 
 extern  void Reflect(Reader& visitor, boost::optional<SelectionRange*>& value);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/semanticHighlighting.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/semanticHighlighting.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/semanticHighlighting.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -10,19 +10,19 @@
  */
 
 struct SemanticHighlightingInformation {
-	/**
-	 * The zero-based line position in the text document.
-	 */
-	int line = 0;
+        /**
+         * The zero-based line position in the text document.
+         */
+        int line = 0;
 
-	/**
-	 * A base64 encoded string representing every single highlighted ranges in the line with its start position, length
-	 * and the "lookup table" index of of the semantic highlighting <a href="https://manual.macromates.com/en/language_grammars">
-	 * TextMate scopes</a>. If the {@code tokens} is empty or not defined, then no highlighted positions are available for the line.
-	 */
-	 std::string tokens;
+        /**
+         * A base64 encoded string representing every single highlighted ranges in the line with its start position, length
+         * and the "lookup table" index of of the semantic highlighting <a href="https://manual.macromates.com/en/language_grammars">
+         * TextMate scopes</a>. If the {@code tokens} is empty or not defined, then no highlighted positions are available for the line.
+         */
+         std::string tokens;
 
-	 MAKE_SWAP_METHOD(SemanticHighlightingInformation, line, tokens)
+         MAKE_SWAP_METHOD(SemanticHighlightingInformation, line, tokens)
 };
 
 MAKE_REFLECT_STRUCT(SemanticHighlightingInformation, line, tokens);
@@ -32,35 +32,35 @@
  */
 
 struct SemanticHighlightingParams {
-	/**
-	 * The text document that has to be decorated with the semantic highlighting information.
-	 */
-	
-	 lsVersionedTextDocumentIdentifier textDocument;
+        /**
+         * The text document that has to be decorated with the semantic highlighting information.
+         */
 
-	/**
-	 * An array of semantic highlighting information.
-	 */
+         lsVersionedTextDocumentIdentifier textDocument;
 
-	 std::vector<SemanticHighlightingInformation> lines;
-	
-	 MAKE_SWAP_METHOD(SemanticHighlightingParams, textDocument, lines)
-	
+        /**
+         * An array of semantic highlighting information.
+         */
+
+         std::vector<SemanticHighlightingInformation> lines;
+
+         MAKE_SWAP_METHOD(SemanticHighlightingParams, textDocument, lines)
+
 };
 MAKE_REFLECT_STRUCT(SemanticHighlightingParams, textDocument, lines);
 /**
-	 * The {@code textDocument/semanticHighlighting} notification is pushed from the server to the client
-	 * to inform the client about additional semantic highlighting information that has to be applied
-	 * on the text document. It is the server's responsibility to decide which lines are included in
-	 * the highlighting information. In other words, the server is capable of sending only a delta
-	 * information. For instance, after opening the text document ({@code DidOpenTextDocumentNotification})
-	 * the server sends the semantic highlighting information for the entire document, but if the server
-	 * receives a {@code DidChangeTextDocumentNotification}, it pushes the information only about
-	 * the affected lines in the document.
-	 *
-	 * <p>
-	 * <b>Note:</b> the <a href=
-	 * "https://github.com/Microsoft/vscode-languageserver-node/pull/367">{@code textDocument/semanticHighlighting}
-	 * language feature</a> is not yet part of the official LSP specification.
-	 */
-DEFINE_NOTIFICATION_TYPE(Notify_semanticHighlighting, SemanticHighlightingParams, "textDocument/semanticHighlighting");
\ No newline at end of file
+         * The {@code textDocument/semanticHighlighting} notification is pushed from the server to the client
+         * to inform the client about additional semantic highlighting information that has to be applied
+         * on the text document. It is the server's responsibility to decide which lines are included in
+         * the highlighting information. In other words, the server is capable of sending only a delta
+         * information. For instance, after opening the text document ({@code DidOpenTextDocumentNotification})
+         * the server sends the semantic highlighting information for the entire document, but if the server
+         * receives a {@code DidChangeTextDocumentNotification}, it pushes the information only about
+         * the affected lines in the document.
+         *
+         * <p>
+         * <b>Note:</b> the <a href=
+         * "https://github.com/Microsoft/vscode-languageserver-node/pull/367">{@code textDocument/semanticHighlighting}
+         * language feature</a> is not yet part of the official LSP specification.
+         */
+DEFINE_NOTIFICATION_TYPE(Notify_semanticHighlighting, SemanticHighlightingParams, "textDocument/semanticHighlighting");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/signature_help.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/signature_help.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/signature_help.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,8 +6,8 @@
 #include "LibLsp/lsp/lsMarkedString.h"
 #include "LibLsp/lsp/lsTextDocumentPositionParams.h"
 
-extern  void Reflect(Reader& visitor, 
-	std::pair<boost::optional<std::string>, boost::optional<MarkupContent>>& value);
+extern  void Reflect(Reader& visitor,
+        std::pair<boost::optional<std::string>, boost::optional<MarkupContent>>& value);
 
 
 
@@ -72,9 +72,9 @@
 
 
   MAKE_SWAP_METHOD(lsSignatureHelp,
-	  signatures,
-	  activeSignature,
-	  activeParameter)
+          signatures,
+          activeSignature,
+          activeParameter)
 };
 MAKE_REFLECT_STRUCT(lsSignatureHelp,
                     signatures,
@@ -89,4 +89,4 @@
  *
  * Registration Options: SignatureHelpRegistrationOptions
  */
-DEFINE_REQUEST_RESPONSE_TYPE(td_signatureHelp, lsTextDocumentPositionParams, lsSignatureHelp, "textDocument/signatureHelp");
\ No newline at end of file
+DEFINE_REQUEST_RESPONSE_TYPE(td_signatureHelp, lsTextDocumentPositionParams, lsSignatureHelp, "textDocument/signatureHelp");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/typeHierarchy.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/typeHierarchy.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/typeHierarchy.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,34 +6,34 @@
 #include "LibLsp/lsp/symbol.h"
 #include "LibLsp/lsp/lsAny.h"
 /**
-	 * The {@code textDocument/typeHierarchy} request is sent from the client to the
-	 * server to retrieve a {@link TypeHierarchyItem type hierarchy item} based on
-	 * the {@link TypeHierarchyParams cursor position in the text document}. This
-	 * request would also allow to specify if the item should be resolved and
-	 * whether sub- or supertypes are to be resolved. If no type hierarchy item can
-	 * be found under the given text document position, resolves to {@code null}.
-	 *
-	 * <p>
-	 * <b>Note:</b> the <a href=
-	 * "https://github.com/Microsoft/vscode-languageserver-node/pull/426">{@code textDocument/typeHierarchy}
-	 * language feature</a> is not yet part of the official LSP specification.
-	 */
+         * The {@code textDocument/typeHierarchy} request is sent from the client to the
+         * server to retrieve a {@link TypeHierarchyItem type hierarchy item} based on
+         * the {@link TypeHierarchyParams cursor position in the text document}. This
+         * request would also allow to specify if the item should be resolved and
+         * whether sub- or supertypes are to be resolved. If no type hierarchy item can
+         * be found under the given text document position, resolves to {@code null}.
+         *
+         * <p>
+         * <b>Note:</b> the <a href=
+         * "https://github.com/Microsoft/vscode-languageserver-node/pull/426">{@code textDocument/typeHierarchy}
+         * language feature</a> is not yet part of the official LSP specification.
+         */
 enum class TypeHierarchyDirection :  uint32_t{
 
-	/**
-	 * Flag for retrieving/resolving the subtypes. Value: {@code 0}.
-	 */
-	Children = 0,
+        /**
+         * Flag for retrieving/resolving the subtypes. Value: {@code 0}.
+         */
+        Children = 0,
 
-	/**
-	 * Flag to use when retrieving/resolving the supertypes. Value: {@code 1}.
-	 */
-	 Parents =1,
+        /**
+         * Flag to use when retrieving/resolving the supertypes. Value: {@code 1}.
+         */
+         Parents =1,
 
-	 /**
-	  * Flag for resolving both the super- and subtypes. Value: {@code 2}.
-	  */
-	  Both=2
+         /**
+          * Flag for resolving both the super- and subtypes. Value: {@code 2}.
+          */
+          Both=2
 };
 void Reflect(Reader& reader, TypeHierarchyDirection& value);
 
@@ -42,10 +42,10 @@
 
 struct TypeHierarchyParams :public lsTextDocumentPositionParams
 {
-	boost::optional<int>  resolve;
-	boost::optional<TypeHierarchyDirection> direction ;
-	
-	MAKE_SWAP_METHOD(TypeHierarchyParams, textDocument, position, resolve, direction)
+        boost::optional<int>  resolve;
+        boost::optional<TypeHierarchyDirection> direction ;
+
+        MAKE_SWAP_METHOD(TypeHierarchyParams, textDocument, position, resolve, direction)
 };
 MAKE_REFLECT_STRUCT(TypeHierarchyParams,  textDocument, position, resolve, direction);
 
@@ -58,76 +58,76 @@
  */
 
 struct  TypeHierarchyItem {
-	/**
-	 * The human readable name of the hierarchy item.
-	 */
+        /**
+         * The human readable name of the hierarchy item.
+         */
 
-	std::string name;
+        std::string name;
 
-	/**
-	 * Optional detail for the hierarchy item. It can be, for instance, the signature of a function or method.
-	 */
-	boost::optional<std::string>
-	 detail;
+        /**
+         * Optional detail for the hierarchy item. It can be, for instance, the signature of a function or method.
+         */
+        boost::optional<std::string>
+         detail;
 
-	/**
-	 * The kind of the hierarchy item. For instance, class or interface.
-	 */
+        /**
+         * The kind of the hierarchy item. For instance, class or interface.
+         */
 
-	SymbolKind kind;
+        SymbolKind kind;
 
-	/**
-	 * {@code true} if the hierarchy item is deprecated. Otherwise, {@code false}. It is {@code false} by default.
-	 */
-	
-	boost::optional<bool> deprecated;
+        /**
+         * {@code true} if the hierarchy item is deprecated. Otherwise, {@code false}. It is {@code false} by default.
+         */
 
-	/**
-	 * The URI of the text document where this type hierarchy item belongs to.
-	 */
+        boost::optional<bool> deprecated;
 
-	lsDocumentUri uri;
+        /**
+         * The URI of the text document where this type hierarchy item belongs to.
+         */
 
-	/**
-	 * The range enclosing this type hierarchy item not including leading/trailing whitespace but everything else
-	 * like comments. This information is typically used to determine if the clients cursor is inside the type
-	 * hierarchy item to reveal in the symbol in the UI.
-	 *
-	 * @see TypeHierarchyItem#selectionRange
-	 */
+        lsDocumentUri uri;
 
-	lsRange range;
+        /**
+         * The range enclosing this type hierarchy item not including leading/trailing whitespace but everything else
+         * like comments. This information is typically used to determine if the clients cursor is inside the type
+         * hierarchy item to reveal in the symbol in the UI.
+         *
+         * @see TypeHierarchyItem#selectionRange
+         */
 
-	/**
-	 * The range that should be selected and revealed when this type hierarchy item is being picked, e.g the name of a function.
-	 * Must be contained by the the {@link TypeHierarchyItem#getRange range}.
-	 *
-	 * @see TypeHierarchyItem#range
-	 */
+        lsRange range;
 
-	lsRange selectionRange;
+        /**
+         * The range that should be selected and revealed when this type hierarchy item is being picked, e.g the name of a function.
+         * Must be contained by the the {@link TypeHierarchyItem#getRange range}.
+         *
+         * @see TypeHierarchyItem#range
+         */
 
-	/**
-	 * If this type hierarchy item is resolved, it contains the direct parents. Could be empty if the item does not have any
-	 * direct parents. If not defined, the parents have not been resolved yet.
-	 */
-	boost::optional< std::vector<TypeHierarchyItem> >  parents;
+        lsRange selectionRange;
 
-	/**
-	 * If this type hierarchy item is resolved, it contains the direct children of the current item.
-	 * Could be empty if the item does not have any descendants. If not defined, the children have not been resolved.
-	 */
-	boost::optional< std::vector<TypeHierarchyItem> >  children;
+        /**
+         * If this type hierarchy item is resolved, it contains the direct parents. Could be empty if the item does not have any
+         * direct parents. If not defined, the parents have not been resolved yet.
+         */
+        boost::optional< std::vector<TypeHierarchyItem> >  parents;
 
-	/**
+        /**
+         * If this type hierarchy item is resolved, it contains the direct children of the current item.
+         * Could be empty if the item does not have any descendants. If not defined, the children have not been resolved.
+         */
+        boost::optional< std::vector<TypeHierarchyItem> >  children;
+
+        /**
  * An boost::optional data field can be used to identify a type hierarchy item in a resolve request.
  */
-	boost::optional<lsp::Any> data;
+        boost::optional<lsp::Any> data;
 
-	MAKE_SWAP_METHOD(TypeHierarchyItem, name, detail, kind, deprecated, uri, range, selectionRange, parents, children, data)
+        MAKE_SWAP_METHOD(TypeHierarchyItem, name, detail, kind, deprecated, uri, range, selectionRange, parents, children, data)
 };
 MAKE_REFLECT_STRUCT(TypeHierarchyItem, name, detail, kind, deprecated, uri, range, selectionRange, parents, children, data);
 
 
 
-DEFINE_REQUEST_RESPONSE_TYPE(td_typeHierarchy, TypeHierarchyParams, TypeHierarchyItem, "textDocument/typeHierarchy");
\ No newline at end of file
+DEFINE_REQUEST_RESPONSE_TYPE(td_typeHierarchy, TypeHierarchyParams, TypeHierarchyItem, "textDocument/typeHierarchy");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/type_definition.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/type_definition.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/type_definition.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -13,4 +13,4 @@
  * Since version 3.6.0
  */
 DEFINE_REQUEST_RESPONSE_TYPE(td_typeDefinition,
-	lsTextDocumentPositionParams, LocationListEither::Either, "textDocument/typeDefinition");
\ No newline at end of file
+        lsTextDocumentPositionParams, LocationListEither::Either, "textDocument/typeDefinition");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/willSave.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/willSave.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/textDocument/willSave.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,32 +8,32 @@
 
 namespace WillSaveTextDocumentParams {
 
-	/**
-	 * Represents reasons why a text document is saved.
-	 */
-	enum class TextDocumentSaveReason {
+        /**
+         * Represents reasons why a text document is saved.
+         */
+        enum class TextDocumentSaveReason {
 
-		/**
-		 * Manually triggered, e.g. by the user pressing save, by starting debugging,
-		 * or by an API call.
-		 */
-		Manual=(1),
+                /**
+                 * Manually triggered, e.g. by the user pressing save, by starting debugging,
+                 * or by an API call.
+                 */
+                Manual=(1),
 
-		/**
-		 * Automatic after a delay.
-		 */
-		 AfterDelay=(2),
+                /**
+                 * Automatic after a delay.
+                 */
+                 AfterDelay=(2),
 
-		 /**
-		  * When the editor lost focus.
-		  */
-		  FocusOut=(3)
-	};
-	
+                 /**
+                  * When the editor lost focus.
+                  */
+                  FocusOut=(3)
+        };
+
   struct Params {
-	  /**
-	   * The document that will be saved.
-	   */
+          /**
+           * The document that will be saved.
+           */
     lsTextDocumentIdentifier textDocument;
 
    /*
@@ -40,9 +40,9 @@
    * A reason why a text document is saved.
    */
 
-	  boost::optional<TextDocumentSaveReason>  reason;
+          boost::optional<TextDocumentSaveReason>  reason;
 
-		MAKE_SWAP_METHOD(Params, textDocument, reason);
+                MAKE_SWAP_METHOD(Params, textDocument, reason);
   };
 
 };
@@ -67,5 +67,5 @@
  * Registration Options: TextDocumentRegistrationOptions
  */
 DEFINE_REQUEST_RESPONSE_TYPE(td_willSaveWaitUntil,
-	WillSaveTextDocumentParams::Params, std::vector<lsTextEdit>, "textDocument/willSaveWaitUntil");
+        WillSaveTextDocumentParams::Params, std::vector<lsTextEdit>, "textDocument/willSaveWaitUntil");
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/utils.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/utils.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/utils.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -15,8 +15,8 @@
 
 namespace lsp
 {
-	
 
+
 // Returns true if |value| starts/ends with |start| or |ending|.
 bool StartsWith(std::string value, std::string start);
 bool EndsWith(std::string value, std::string ending);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/windows/MessageNotify.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/windows/MessageNotify.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/windows/MessageNotify.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -11,20 +11,20 @@
 /**
   * The message type.
  */
-	
-	lsMessageType type = lsMessageType::Error;
-	
+
+        lsMessageType type = lsMessageType::Error;
+
 /**
  * The actual message.
  */
-	std::string message;
-	
-	void swap(MessageParams& arg) noexcept {
-		lsMessageType temp = type;
-		type = arg.type;
-		arg.type = temp;
-		message.swap(arg.message);
-	}
+        std::string message;
+
+        void swap(MessageParams& arg) noexcept {
+                lsMessageType temp = type;
+                type = arg.type;
+                arg.type = temp;
+                message.swap(arg.message);
+        }
 };
 MAKE_REFLECT_STRUCT(MessageParams, type, message)
 
@@ -49,24 +49,24 @@
  * answer from the client.
  */
 struct MessageActionItem {
-	/**
-	 * A short title like 'Retry', 'Open Log' etc.
-	 */
+        /**
+         * A short title like 'Retry', 'Open Log' etc.
+         */
 
-	std::string title;
-	MAKE_SWAP_METHOD(MessageActionItem, title)
+        std::string title;
+        MAKE_SWAP_METHOD(MessageActionItem, title)
 };
 MAKE_REFLECT_STRUCT(MessageActionItem, title);
 
 
 struct ShowMessageRequestParams :public MessageParams {
-	/**
-	 * The message action items to present.
-	 */
-	std::vector<MessageActionItem> actions;
-	
-	MAKE_SWAP_METHOD(ShowMessageRequestParams, type, message, actions)
+        /**
+         * The message action items to present.
+         */
+        std::vector<MessageActionItem> actions;
 
+        MAKE_SWAP_METHOD(ShowMessageRequestParams, type, message, actions)
+
 };
 MAKE_REFLECT_STRUCT(ShowMessageRequestParams, type, message, actions)
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/working_files.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/working_files.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/working_files.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -44,9 +44,9 @@
   bool GetFileBufferContent(const AbsolutePath& filename, std::wstring& out)
   {
       auto  file = GetFileByFilename(filename);
-  	  if(!file)
+          if(!file)
           return false;
-	return GetFileBufferContent(file, out);
+        return GetFileBufferContent(file, out);
   }
   bool  GetFileBufferContent(const AbsolutePath& filename,std::string& out)
   {

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/applyEdit.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/applyEdit.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/applyEdit.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,20 +8,20 @@
 
 struct  ApplyWorkspaceEditParams
 {
-	/**
-	 * The edits to apply.
-	 */
+        /**
+         * The edits to apply.
+         */
 
-	lsWorkspaceEdit edit;
+        lsWorkspaceEdit edit;
 
-	/**
-	 * An optional label of the workspace edit. This label is
-	 * presented in the user interface for example on an undo
-	 * stack to undo the workspace edit.
-	 */
-	std::string label;
+        /**
+         * An optional label of the workspace edit. This label is
+         * presented in the user interface for example on an undo
+         * stack to undo the workspace edit.
+         */
+        std::string label;
 
-	MAKE_SWAP_METHOD(ApplyWorkspaceEditParams, edit, label)
+        MAKE_SWAP_METHOD(ApplyWorkspaceEditParams, edit, label)
 };
 /**
  * The workspace/applyEdit request is sent from the server to the client to modify resource on the client side.
@@ -32,9 +32,9 @@
 
 struct  ApplyWorkspaceEditResponse
 {
-	bool applied;
-	boost::optional<std::string> failureReason;
-	MAKE_SWAP_METHOD(ApplyWorkspaceEditResponse, applied, failureReason)
+        bool applied;
+        boost::optional<std::string> failureReason;
+        MAKE_SWAP_METHOD(ApplyWorkspaceEditResponse, applied, failureReason)
 };
 MAKE_REFLECT_STRUCT(ApplyWorkspaceEditResponse, applied, failureReason);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/configuration.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/configuration.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/configuration.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,22 +7,22 @@
 
 
 struct ConfigurationItem {
-	/**
-	 * The scope to get the configuration section for.
-	 */
-	lsDocumentUri scopeUri;
+        /**
+         * The scope to get the configuration section for.
+         */
+        lsDocumentUri scopeUri;
 
-	/**
-	 * The configuration section asked for.
-	 */
-	std::string section;
-	MAKE_SWAP_METHOD(ConfigurationItem, scopeUri, section);
+        /**
+         * The configuration section asked for.
+         */
+        std::string section;
+        MAKE_SWAP_METHOD(ConfigurationItem, scopeUri, section);
 };
 MAKE_REFLECT_STRUCT(ConfigurationItem, scopeUri, section);
 struct ConfigurationParams
 {
-	std::vector<ConfigurationItem> items;
-	MAKE_SWAP_METHOD(ConfigurationParams, items)
+        std::vector<ConfigurationItem> items;
+        MAKE_SWAP_METHOD(ConfigurationParams, items)
 };
 
 MAKE_REFLECT_STRUCT(ConfigurationParams, items);
@@ -34,4 +34,4 @@
  * order of the passed ConfigurationItems (e.g. the first item in the response is the
  * result for the first configuration item in the params).
  */
-DEFINE_REQUEST_RESPONSE_TYPE(WorkspaceConfiguration, ConfigurationParams,std::vector<lsp::Any>, "workspace/configuration");
\ No newline at end of file
+DEFINE_REQUEST_RESPONSE_TYPE(WorkspaceConfiguration, ConfigurationParams,std::vector<lsp::Any>, "workspace/configuration");

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/didChangeWorkspaceFolders.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/didChangeWorkspaceFolders.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/didChangeWorkspaceFolders.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -5,30 +5,30 @@
  * The workspace folder change event.
  */
 struct WorkspaceFoldersChangeEvent {
-	/**
-	 * The array of added workspace folders
-	 */
+        /**
+         * The array of added workspace folders
+         */
 
-	std::vector<WorkspaceFolder> added;
+        std::vector<WorkspaceFolder> added;
 
-	/**
-	 * The array of the removed workspace folders
-	 */
+        /**
+         * The array of the removed workspace folders
+         */
 
-	std::vector <WorkspaceFolder> removed;
-	MAKE_SWAP_METHOD(WorkspaceFoldersChangeEvent, added, removed);
-	
+        std::vector <WorkspaceFolder> removed;
+        MAKE_SWAP_METHOD(WorkspaceFoldersChangeEvent, added, removed);
+
 };
 MAKE_REFLECT_STRUCT(WorkspaceFoldersChangeEvent, added, removed);
 
 struct DidChangeWorkspaceFoldersParams {
-	/**
-	 * The actual workspace folder change event.
-	 */
+        /**
+         * The actual workspace folder change event.
+         */
 
-	WorkspaceFoldersChangeEvent event;
-	
-	MAKE_SWAP_METHOD(DidChangeWorkspaceFoldersParams, event);
+        WorkspaceFoldersChangeEvent event;
+
+        MAKE_SWAP_METHOD(DidChangeWorkspaceFoldersParams, event);
 };
 MAKE_REFLECT_STRUCT(DidChangeWorkspaceFoldersParams, event);
 
@@ -40,8 +40,8 @@
  * and ClientCapabilities/workspace/workspaceFolders are true; or if the server has
  * registered to receive this notification it first.
  */
-DEFINE_NOTIFICATION_TYPE(Notify_WorkspaceDidChangeWorkspaceFolders, 
-	DidChangeWorkspaceFoldersParams, "workspace/didChangeWorkspaceFolders");
+DEFINE_NOTIFICATION_TYPE(Notify_WorkspaceDidChangeWorkspaceFolders,
+        DidChangeWorkspaceFoldersParams, "workspace/didChangeWorkspaceFolders");
 
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/did_change_configuration.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/did_change_configuration.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/did_change_configuration.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -9,11 +9,11 @@
 
 
 struct lsDidChangeConfigurationParams {
-	/**
-	  * The actual changed settings.
-	  */
-	lsp::Any settings;
-	MAKE_SWAP_METHOD(lsDidChangeConfigurationParams, settings);
+        /**
+          * The actual changed settings.
+          */
+        lsp::Any settings;
+        MAKE_SWAP_METHOD(lsDidChangeConfigurationParams, settings);
 };
 
 MAKE_REFLECT_STRUCT(lsDidChangeConfigurationParams, settings);

Modified: trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/workspaceFolders.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/workspaceFolders.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/LibLsp/lsp/workspace/workspaceFolders.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -5,18 +5,18 @@
 
 #include "LibLsp/lsp/lsDocumentUri.h"
 struct WorkspaceFolder {
-	/**
-	 * The associated URI for this workspace folder.
-	 */
+        /**
+         * The associated URI for this workspace folder.
+         */
 
-	lsDocumentUri uri;
+        lsDocumentUri uri;
 
-	/**
-	 * The name of the workspace folder. Defaults to the uri's basename.
-	 */
-	std::string name;
+        /**
+         * The name of the workspace folder. Defaults to the uri's basename.
+         */
+        std::string name;
 
-	MAKE_SWAP_METHOD(WorkspaceFolder, uri, name)
+        MAKE_SWAP_METHOD(WorkspaceFolder, uri, name)
 };
 MAKE_REFLECT_STRUCT(WorkspaceFolder, uri, name);
 
@@ -29,6 +29,6 @@
  *         an empty array if a workspace is open but no folders are configured,
  *         the workspace folders otherwise.
  */
-DEFINE_REQUEST_RESPONSE_TYPE(WorkspaceFolders, 
-	boost::optional<JsonNull>, boost::optional<std::vector< WorkspaceFolder>>, "workspace/workspaceFolders");
+DEFINE_REQUEST_RESPONSE_TYPE(WorkspaceFolders,
+        boost::optional<JsonNull>, boost::optional<std::vector< WorkspaceFolder>>, "workspace/workspaceFolders");
 

Deleted: trunk/Build/source/utils/asymptote/LspCpp/include/optional.hpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/include/optional.hpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/include/optional.hpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,1846 +0,0 @@
-//
-// Copyright (c) 2014-2021 Martin Moene
-//
-// https://github.com/martinmoene/optional-lite
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#pragma once
-
-#ifndef NONSTD_OPTIONAL_LITE_HPP
-#define NONSTD_OPTIONAL_LITE_HPP
-
-#define optional_lite_MAJOR  3
-#define optional_lite_MINOR  5
-#define optional_lite_PATCH  0
-
-#define optional_lite_VERSION  optional_STRINGIFY(optional_lite_MAJOR) "." optional_STRINGIFY(optional_lite_MINOR) "." optional_STRINGIFY(optional_lite_PATCH)
-
-#define optional_STRINGIFY(  x )  optional_STRINGIFY_( x )
-#define optional_STRINGIFY_( x )  #x
-
-// optional-lite configuration:
-
-#define optional_OPTIONAL_DEFAULT  0
-#define optional_OPTIONAL_NONSTD   1
-#define optional_OPTIONAL_STD      2
-
-// tweak header support:
-
-#ifdef __has_include
-# if __has_include(<nonstd/optional.tweak.hpp>)
-#  include <nonstd/optional.tweak.hpp>
-# endif
-#define optional_HAVE_TWEAK_HEADER  1
-#else
-#define optional_HAVE_TWEAK_HEADER  0
-//# pragma message("optional.hpp: Note: Tweak header not supported.")
-#endif
-
-// optional selection and configuration:
-
-#if !defined( optional_CONFIG_SELECT_OPTIONAL )
-# define optional_CONFIG_SELECT_OPTIONAL  ( optional_HAVE_STD_OPTIONAL ? optional_OPTIONAL_STD : optional_OPTIONAL_NONSTD )
-#endif
-
-// Control presence of extensions:
-
-#ifndef optional_CONFIG_NO_EXTENSIONS
-#define optional_CONFIG_NO_EXTENSIONS  0
-#endif
-
-// Control presence of exception handling (try and auto discover):
-
-#ifndef optional_CONFIG_NO_EXCEPTIONS
-# if defined(_MSC_VER)
-# include <cstddef>     // for _HAS_EXCEPTIONS
-# endif
-# if defined(__cpp_exceptions) || defined(__EXCEPTIONS) || (_HAS_EXCEPTIONS)
-#  define optional_CONFIG_NO_EXCEPTIONS  0
-# else
-#  define optional_CONFIG_NO_EXCEPTIONS  1
-# endif
-#endif
-
-// C++ language version detection (C++20 is speculative):
-// Note: VC14.0/1900 (VS2015) lacks too much from C++14.
-
-#ifndef   optional_CPLUSPLUS
-# if defined(_MSVC_LANG ) && !defined(__clang__)
-#  define optional_CPLUSPLUS  (_MSC_VER == 1900 ? 201103L : _MSVC_LANG )
-# else
-#  define optional_CPLUSPLUS  __cplusplus
-# endif
-#endif
-
-#define optional_CPP98_OR_GREATER  ( optional_CPLUSPLUS >= 199711L )
-#define optional_CPP11_OR_GREATER  ( optional_CPLUSPLUS >= 201103L )
-#define optional_CPP11_OR_GREATER_ ( optional_CPLUSPLUS >= 201103L )
-#define optional_CPP14_OR_GREATER  ( optional_CPLUSPLUS >= 201402L )
-#define optional_CPP17_OR_GREATER  ( optional_CPLUSPLUS >= 201703L )
-#define optional_CPP20_OR_GREATER  ( optional_CPLUSPLUS >= 202000L )
-
-// C++ language version (represent 98 as 3):
-
-#define optional_CPLUSPLUS_V  ( optional_CPLUSPLUS / 100 - (optional_CPLUSPLUS > 200000 ? 2000 : 1994) )
-
-// Use C++17 std::optional if available and requested:
-
-#if optional_CPP17_OR_GREATER && defined(__has_include )
-# if __has_include( <optional> )
-#  define optional_HAVE_STD_OPTIONAL  1
-# else
-#  define optional_HAVE_STD_OPTIONAL  0
-# endif
-#else
-# define  optional_HAVE_STD_OPTIONAL  0
-#endif
-
-#define optional_USES_STD_OPTIONAL  ( (optional_CONFIG_SELECT_OPTIONAL == optional_OPTIONAL_STD) || ((optional_CONFIG_SELECT_OPTIONAL == optional_OPTIONAL_DEFAULT) && optional_HAVE_STD_OPTIONAL) )
-
-//
-// in_place: code duplicated in any-lite, expected-lite, optional-lite, value-ptr-lite, variant-lite:
-//
-
-#ifndef nonstd_lite_HAVE_IN_PLACE_TYPES
-#define nonstd_lite_HAVE_IN_PLACE_TYPES  1
-
-// C++17 std::in_place in <utility>:
-
-#if optional_CPP17_OR_GREATER
-
-#include <utility>
-
-namespace nonstd {
-
-using std::in_place;
-using std::in_place_type;
-using std::in_place_index;
-using std::in_place_t;
-using std::in_place_type_t;
-using std::in_place_index_t;
-
-#define nonstd_lite_in_place_t(      T)  std::in_place_t
-#define nonstd_lite_in_place_type_t( T)  std::in_place_type_t<T>
-#define nonstd_lite_in_place_index_t(K)  std::in_place_index_t<K>
-
-#define nonstd_lite_in_place(      T)    std::in_place_t{}
-#define nonstd_lite_in_place_type( T)    std::in_place_type_t<T>{}
-#define nonstd_lite_in_place_index(K)    std::in_place_index_t<K>{}
-
-} // namespace nonstd
-
-#else // optional_CPP17_OR_GREATER
-
-#include <cstddef>
-
-namespace nonstd {
-namespace detail {
-
-template< class T >
-struct in_place_type_tag {};
-
-template< std::size_t K >
-struct in_place_index_tag {};
-
-} // namespace detail
-
-struct in_place_t {};
-
-template< class T >
-inline in_place_t in_place( detail::in_place_type_tag<T> /*unused*/ = detail::in_place_type_tag<T>() )
-{
-    return in_place_t();
-}
-
-template< std::size_t K >
-inline in_place_t in_place( detail::in_place_index_tag<K> /*unused*/ = detail::in_place_index_tag<K>() )
-{
-    return in_place_t();
-}
-
-template< class T >
-inline in_place_t in_place_type( detail::in_place_type_tag<T> /*unused*/ = detail::in_place_type_tag<T>() )
-{
-    return in_place_t();
-}
-
-template< std::size_t K >
-inline in_place_t in_place_index( detail::in_place_index_tag<K> /*unused*/ = detail::in_place_index_tag<K>() )
-{
-    return in_place_t();
-}
-
-// mimic templated typedef:
-
-#define nonstd_lite_in_place_t(      T)  nonstd::in_place_t(&)( nonstd::detail::in_place_type_tag<T>  )
-#define nonstd_lite_in_place_type_t( T)  nonstd::in_place_t(&)( nonstd::detail::in_place_type_tag<T>  )
-#define nonstd_lite_in_place_index_t(K)  nonstd::in_place_t(&)( nonstd::detail::in_place_index_tag<K> )
-
-#define nonstd_lite_in_place(      T)    nonstd::in_place_type<T>
-#define nonstd_lite_in_place_type( T)    nonstd::in_place_type<T>
-#define nonstd_lite_in_place_index(K)    nonstd::in_place_index<K>
-
-} // namespace nonstd
-
-#endif // optional_CPP17_OR_GREATER
-#endif // nonstd_lite_HAVE_IN_PLACE_TYPES
-
-//
-// Using std::optional:
-//
-
-#if optional_USES_STD_OPTIONAL
-
-#include <optional>
-
-namespace nonstd {
-
-    using std::optional;
-    using std::bad_optional_access;
-    using std::hash;
-
-    using std::nullopt;
-    using std::nullopt_t;
-
-    using std::operator==;
-    using std::operator!=;
-    using std::operator<;
-    using std::operator<=;
-    using std::operator>;
-    using std::operator>=;
-    using std::make_optional;
-    using std::swap;
-}
-
-#else // optional_USES_STD_OPTIONAL
-
-#include <cassert>
-#include <utility>
-
-// optional-lite alignment configuration:
-
-#ifndef  optional_CONFIG_MAX_ALIGN_HACK
-# define optional_CONFIG_MAX_ALIGN_HACK  0
-#endif
-
-#ifndef  optional_CONFIG_ALIGN_AS
-// no default, used in #if defined()
-#endif
-
-#ifndef  optional_CONFIG_ALIGN_AS_FALLBACK
-# define optional_CONFIG_ALIGN_AS_FALLBACK  double
-#endif
-
-// Compiler warning suppression:
-
-#if defined(__clang__)
-# pragma clang diagnostic push
-# pragma clang diagnostic ignored "-Wundef"
-#elif defined(__GNUC__)
-# pragma GCC   diagnostic push
-# pragma GCC   diagnostic ignored "-Wundef"
-#elif defined(_MSC_VER )
-# pragma warning( push )
-#endif
-
-// half-open range [lo..hi):
-#define optional_BETWEEN( v, lo, hi ) ( (lo) <= (v) && (v) < (hi) )
-
-// Compiler versions:
-//
-// MSVC++  6.0  _MSC_VER == 1200  optional_COMPILER_MSVC_VERSION ==  60  (Visual Studio 6.0)
-// MSVC++  7.0  _MSC_VER == 1300  optional_COMPILER_MSVC_VERSION ==  70  (Visual Studio .NET 2002)
-// MSVC++  7.1  _MSC_VER == 1310  optional_COMPILER_MSVC_VERSION ==  71  (Visual Studio .NET 2003)
-// MSVC++  8.0  _MSC_VER == 1400  optional_COMPILER_MSVC_VERSION ==  80  (Visual Studio 2005)
-// MSVC++  9.0  _MSC_VER == 1500  optional_COMPILER_MSVC_VERSION ==  90  (Visual Studio 2008)
-// MSVC++ 10.0  _MSC_VER == 1600  optional_COMPILER_MSVC_VERSION == 100  (Visual Studio 2010)
-// MSVC++ 11.0  _MSC_VER == 1700  optional_COMPILER_MSVC_VERSION == 110  (Visual Studio 2012)
-// MSVC++ 12.0  _MSC_VER == 1800  optional_COMPILER_MSVC_VERSION == 120  (Visual Studio 2013)
-// MSVC++ 14.0  _MSC_VER == 1900  optional_COMPILER_MSVC_VERSION == 140  (Visual Studio 2015)
-// MSVC++ 14.1  _MSC_VER >= 1910  optional_COMPILER_MSVC_VERSION == 141  (Visual Studio 2017)
-// MSVC++ 14.2  _MSC_VER >= 1920  optional_COMPILER_MSVC_VERSION == 142  (Visual Studio 2019)
-
-#if defined(_MSC_VER ) && !defined(__clang__)
-# define optional_COMPILER_MSVC_VER      (_MSC_VER )
-# define optional_COMPILER_MSVC_VERSION  (_MSC_VER / 10 - 10 * ( 5 + (_MSC_VER < 1900 ) ) )
-#else
-# define optional_COMPILER_MSVC_VER      0
-# define optional_COMPILER_MSVC_VERSION  0
-#endif
-
-#define optional_COMPILER_VERSION( major, minor, patch )  ( 10 * (10 * (major) + (minor) ) + (patch) )
-
-#if defined(__GNUC__) && !defined(__clang__)
-# define optional_COMPILER_GNUC_VERSION   optional_COMPILER_VERSION(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
-#else
-# define optional_COMPILER_GNUC_VERSION   0
-#endif
-
-#if defined(__clang__)
-# define optional_COMPILER_CLANG_VERSION  optional_COMPILER_VERSION(__clang_major__, __clang_minor__, __clang_patchlevel__)
-#else
-# define optional_COMPILER_CLANG_VERSION  0
-#endif
-
-#if optional_BETWEEN(optional_COMPILER_MSVC_VERSION, 70, 140 )
-# pragma warning( disable: 4345 )   // initialization behavior changed
-#endif
-
-#if optional_BETWEEN(optional_COMPILER_MSVC_VERSION, 70, 150 )
-# pragma warning( disable: 4814 )   // in C++14 'constexpr' will not imply 'const'
-#endif
-
-// Presence of language and library features:
-
-#define optional_HAVE(FEATURE) ( optional_HAVE_##FEATURE )
-
-#ifdef _HAS_CPP0X
-# define optional_HAS_CPP0X  _HAS_CPP0X
-#else
-# define optional_HAS_CPP0X  0
-#endif
-
-// Unless defined otherwise below, consider VC14 as C++11 for optional-lite:
-
-#if optional_COMPILER_MSVC_VER >= 1900
-# undef  optional_CPP11_OR_GREATER
-# define optional_CPP11_OR_GREATER  1
-#endif
-
-#define optional_CPP11_90   (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1500)
-#define optional_CPP11_100  (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1600)
-#define optional_CPP11_110  (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1700)
-#define optional_CPP11_120  (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1800)
-#define optional_CPP11_140  (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1900)
-#define optional_CPP11_141  (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1910)
-
-#define optional_CPP14_000  (optional_CPP14_OR_GREATER)
-#define optional_CPP17_000  (optional_CPP17_OR_GREATER)
-
-// clang >= 2.9, gcc >= 4.9, msvc >= vc14.0/1900 (vs15):
-#define optional_CPP11_140_C290_G490    ((optional_CPP11_OR_GREATER_ && (optional_COMPILER_CLANG_VERSION >= 290 || optional_COMPILER_GNUC_VERSION >= 490)) || (optional_COMPILER_MSVC_VER >= 1900))
-
-// clang >= 3.5, msvc >= vc11 (vs12):
-#define optional_CPP11_110_C350         ( optional_CPP11_110 && !optional_BETWEEN( optional_COMPILER_CLANG_VERSION, 1, 350 ) )
-
-// clang >= 3.5, gcc >= 5.0, msvc >= vc11 (vs12):
-#define optional_CPP11_110_C350_G500 \
-    (  optional_CPP11_110 && \
-    !( optional_BETWEEN( optional_COMPILER_CLANG_VERSION, 1, 350 ) \
-    || optional_BETWEEN( optional_COMPILER_GNUC_VERSION , 1, 500 ) ) )
-
-// Presence of C++11 language features:
-
-#define optional_HAVE_CONSTEXPR_11      optional_CPP11_140
-#define optional_HAVE_IS_DEFAULT        optional_CPP11_140
-#define optional_HAVE_NOEXCEPT          optional_CPP11_140
-#define optional_HAVE_NULLPTR           optional_CPP11_100
-#define optional_HAVE_REF_QUALIFIER     optional_CPP11_140_C290_G490
-#define optional_HAVE_STATIC_ASSERT     optional_CPP11_110
-#define optional_HAVE_INITIALIZER_LIST  optional_CPP11_140
-
-// Presence of C++14 language features:
-
-#define optional_HAVE_CONSTEXPR_14      optional_CPP14_000
-
-// Presence of C++17 language features:
-
-#define optional_HAVE_NODISCARD         optional_CPP17_000
-
-// Presence of C++ library features:
-
-#define optional_HAVE_CONDITIONAL       optional_CPP11_120
-#define optional_HAVE_REMOVE_CV         optional_CPP11_120
-#define optional_HAVE_TYPE_TRAITS       optional_CPP11_90
-
-#define optional_HAVE_TR1_TYPE_TRAITS   (!! optional_COMPILER_GNUC_VERSION )
-#define optional_HAVE_TR1_ADD_POINTER   (!! optional_COMPILER_GNUC_VERSION )
-
-#define optional_HAVE_IS_ASSIGNABLE                     optional_CPP11_110_C350
-#define optional_HAVE_IS_MOVE_CONSTRUCTIBLE             optional_CPP11_110_C350
-#define optional_HAVE_IS_NOTHROW_MOVE_ASSIGNABLE        optional_CPP11_110_C350
-#define optional_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE     optional_CPP11_110_C350
-#define optional_HAVE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE   optional_CPP11_110_C350_G500
-#define optional_HAVE_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE   optional_CPP11_110_C350_G500
-
-// C++ feature usage:
-
-#if optional_HAVE( CONSTEXPR_11 )
-# define optional_constexpr  constexpr
-#else
-# define optional_constexpr  /*constexpr*/
-#endif
-
-#if optional_HAVE( IS_DEFAULT )
-# define optional_is_default  = default;
-#else
-# define optional_is_default  {}
-#endif
-
-#if optional_HAVE( CONSTEXPR_14 )
-# define optional_constexpr14  constexpr
-#else
-# define optional_constexpr14  /*constexpr*/
-#endif
-
-#if optional_HAVE( NODISCARD )
-# define optional_nodiscard  [[nodiscard]]
-#else
-# define optional_nodiscard  /*[[nodiscard]]*/
-#endif
-
-#if optional_HAVE( NOEXCEPT )
-# define optional_noexcept  noexcept
-#else
-# define optional_noexcept  /*noexcept*/
-#endif
-
-#if optional_HAVE( NULLPTR )
-# define optional_nullptr  nullptr
-#else
-# define optional_nullptr  NULL
-#endif
-
-#if optional_HAVE( REF_QUALIFIER )
-// NOLINTNEXTLINE( bugprone-macro-parentheses )
-# define optional_ref_qual  &
-# define optional_refref_qual  &&
-#else
-# define optional_ref_qual  /*&*/
-# define optional_refref_qual  /*&&*/
-#endif
-
-#if optional_HAVE( STATIC_ASSERT )
-# define optional_static_assert(expr, text)    static_assert(expr, text);
-#else
-# define optional_static_assert(expr, text)  /*static_assert(expr, text);*/
-#endif
-
-// additional includes:
-
-#if optional_CONFIG_NO_EXCEPTIONS
-// already included: <cassert>
-#else
-# include <stdexcept>
-#endif
-
-#if optional_CPP11_OR_GREATER
-# include <functional>
-#endif
-
-#if optional_HAVE( INITIALIZER_LIST )
-# include <initializer_list>
-#endif
-
-#if optional_HAVE( TYPE_TRAITS )
-# include <type_traits>
-#elif optional_HAVE( TR1_TYPE_TRAITS )
-# include <tr1/type_traits>
-#endif
-
-// Method enabling
-
-#if optional_CPP11_OR_GREATER
-
-#define optional_REQUIRES_0(...) \
-    template< bool B = (__VA_ARGS__), typename std::enable_if<B, int>::type = 0 >
-
-#define optional_REQUIRES_T(...) \
-    , typename std::enable_if< (__VA_ARGS__), int >::type = 0
-
-#define optional_REQUIRES_R(R, ...) \
-    typename std::enable_if< (__VA_ARGS__), R>::type
-
-#define optional_REQUIRES_A(...) \
-    , typename std::enable_if< (__VA_ARGS__), void*>::type = nullptr
-
-#endif
-
-//
-// optional:
-//
-
-namespace nonstd { namespace optional_lite {
-
-namespace std11 {
-
-template< class T, T v > struct integral_constant { enum { value = v }; };
-template< bool B       > struct bool_constant : integral_constant<bool, B>{};
-
-typedef bool_constant< true  > true_type;
-typedef bool_constant< false > false_type;
-
-#if optional_CPP11_OR_GREATER
-    using std::move;
-#else
-    template< typename T > T & move( T & t ) { return t; }
-#endif
-
-#if optional_HAVE( CONDITIONAL )
-    using std::conditional;
-#else
-    template< bool B, typename T, typename F > struct conditional              { typedef T type; };
-    template<         typename T, typename F > struct conditional<false, T, F> { typedef F type; };
-#endif // optional_HAVE_CONDITIONAL
-
-#if optional_HAVE( IS_ASSIGNABLE )
-    using std::is_assignable;
-#else
-    template< class T, class U > struct is_assignable : std11::true_type{};
-#endif
-
-#if optional_HAVE( IS_MOVE_CONSTRUCTIBLE )
-    using std::is_move_constructible;
-#else
-    template< class T > struct is_move_constructible : std11::true_type{};
-#endif
-
-#if optional_HAVE( IS_NOTHROW_MOVE_ASSIGNABLE )
-    using std::is_nothrow_move_assignable;
-#else
-    template< class T > struct is_nothrow_move_assignable : std11::true_type{};
-#endif
-
-#if optional_HAVE( IS_NOTHROW_MOVE_CONSTRUCTIBLE )
-    using std::is_nothrow_move_constructible;
-#else
-    template< class T > struct is_nothrow_move_constructible : std11::true_type{};
-#endif
-
-#if optional_HAVE( IS_TRIVIALLY_COPY_CONSTRUCTIBLE )
-    using std::is_trivially_copy_constructible;
-#else
-    template< class T > struct is_trivially_copy_constructible : std11::true_type{};
-#endif
-
-#if optional_HAVE( IS_TRIVIALLY_MOVE_CONSTRUCTIBLE )
-    using std::is_trivially_move_constructible;
-#else
-    template< class T > struct is_trivially_move_constructible : std11::true_type{};
-#endif
-
-} // namespace std11
-
-#if optional_CPP11_OR_GREATER
-
-/// type traits C++17:
-
-namespace std17 {
-
-#if optional_CPP17_OR_GREATER
-
-using std::is_swappable;
-using std::is_nothrow_swappable;
-
-#elif optional_CPP11_OR_GREATER
-
-namespace detail {
-
-using std::swap;
-
-struct is_swappable
-{
-    template< typename T, typename = decltype( swap( std::declval<T&>(), std::declval<T&>() ) ) >
-    static std11::true_type test( int /*unused*/ );
-
-    template< typename >
-    static std11::false_type test(...);
-};
-
-struct is_nothrow_swappable
-{
-    // wrap noexcept(expr) in separate function as work-around for VC140 (VS2015):
-
-    template< typename T >
-    static constexpr bool satisfies()
-    {
-        return noexcept( swap( std::declval<T&>(), std::declval<T&>() ) );
-    }
-
-    template< typename T >
-    static auto test( int /*unused*/ ) -> std11::integral_constant<bool, satisfies<T>()>{}
-
-    template< typename >
-    static auto test(...) -> std11::false_type;
-};
-
-} // namespace detail
-
-// is [nothow] swappable:
-
-template< typename T >
-struct is_swappable : decltype( detail::is_swappable::test<T>(0) ){};
-
-template< typename T >
-struct is_nothrow_swappable : decltype( detail::is_nothrow_swappable::test<T>(0) ){};
-
-#endif // optional_CPP17_OR_GREATER
-
-} // namespace std17
-
-/// type traits C++20:
-
-namespace std20 {
-
-template< typename T >
-struct remove_cvref
-{
-    typedef typename std::remove_cv< typename std::remove_reference<T>::type >::type type;
-};
-
-} // namespace std20
-
-#endif // optional_CPP11_OR_GREATER
-
-/// class optional
-
-template< typename T >
-class optional;
-
-namespace detail {
-
-// C++11 emulation:
-
-struct nulltype{};
-
-template< typename Head, typename Tail >
-struct typelist
-{
-    typedef Head head;
-    typedef Tail tail;
-};
-
-#if optional_CONFIG_MAX_ALIGN_HACK
-
-// Max align, use most restricted type for alignment:
-
-#define optional_UNIQUE(  name )       optional_UNIQUE2( name, __LINE__ )
-#define optional_UNIQUE2( name, line ) optional_UNIQUE3( name, line )
-#define optional_UNIQUE3( name, line ) name ## line
-
-#define optional_ALIGN_TYPE( type ) \
-    type optional_UNIQUE( _t ); struct_t< type > optional_UNIQUE( _st )
-
-template< typename T >
-struct struct_t { T _; };
-
-union max_align_t
-{
-    optional_ALIGN_TYPE( char );
-    optional_ALIGN_TYPE( short int );
-    optional_ALIGN_TYPE( int );
-    optional_ALIGN_TYPE( long int  );
-    optional_ALIGN_TYPE( float  );
-    optional_ALIGN_TYPE( double );
-    optional_ALIGN_TYPE( long double );
-    optional_ALIGN_TYPE( char * );
-    optional_ALIGN_TYPE( short int * );
-    optional_ALIGN_TYPE( int *  );
-    optional_ALIGN_TYPE( long int * );
-    optional_ALIGN_TYPE( float * );
-    optional_ALIGN_TYPE( double * );
-    optional_ALIGN_TYPE( long double * );
-    optional_ALIGN_TYPE( void * );
-
-#ifdef HAVE_LONG_LONG
-    optional_ALIGN_TYPE( long long );
-#endif
-
-    struct Unknown;
-
-    Unknown ( * optional_UNIQUE(_) )( Unknown );
-    Unknown * Unknown::* optional_UNIQUE(_);
-    Unknown ( Unknown::* optional_UNIQUE(_) )( Unknown );
-
-    struct_t< Unknown ( * )( Unknown)         > optional_UNIQUE(_);
-    struct_t< Unknown * Unknown::*            > optional_UNIQUE(_);
-    struct_t< Unknown ( Unknown::* )(Unknown) > optional_UNIQUE(_);
-};
-
-#undef optional_UNIQUE
-#undef optional_UNIQUE2
-#undef optional_UNIQUE3
-
-#undef optional_ALIGN_TYPE
-
-#elif defined( optional_CONFIG_ALIGN_AS ) // optional_CONFIG_MAX_ALIGN_HACK
-
-// Use user-specified type for alignment:
-
-#define optional_ALIGN_AS( unused ) \
-    optional_CONFIG_ALIGN_AS
-
-#else // optional_CONFIG_MAX_ALIGN_HACK
-
-// Determine POD type to use for alignment:
-
-#define optional_ALIGN_AS( to_align ) \
-    typename type_of_size< alignment_types, alignment_of< to_align >::value >::type
-
-template< typename T >
-struct alignment_of;
-
-template< typename T >
-struct alignment_of_hack
-{
-    char c;
-    T t;
-    alignment_of_hack();
-};
-
-template< size_t A, size_t S >
-struct alignment_logic
-{
-    enum { value = A < S ? A : S };
-};
-
-template< typename T >
-struct alignment_of
-{
-    enum { value = alignment_logic<
-        sizeof( alignment_of_hack<T> ) - sizeof(T), sizeof(T) >::value };
-};
-
-template< typename List, size_t N >
-struct type_of_size
-{
-    typedef typename std11::conditional<
-        N == sizeof( typename List::head ),
-            typename List::head,
-            typename type_of_size<typename List::tail, N >::type >::type type;
-};
-
-template< size_t N >
-struct type_of_size< nulltype, N >
-{
-    typedef optional_CONFIG_ALIGN_AS_FALLBACK type;
-};
-
-template< typename T>
-struct struct_t { T _; };
-
-#define optional_ALIGN_TYPE( type ) \
-    typelist< type , typelist< struct_t< type >
-
-struct Unknown;
-
-typedef
-    optional_ALIGN_TYPE( char ),
-    optional_ALIGN_TYPE( short ),
-    optional_ALIGN_TYPE( int ),
-    optional_ALIGN_TYPE( long ),
-    optional_ALIGN_TYPE( float ),
-    optional_ALIGN_TYPE( double ),
-    optional_ALIGN_TYPE( long double ),
-
-    optional_ALIGN_TYPE( char *),
-    optional_ALIGN_TYPE( short * ),
-    optional_ALIGN_TYPE( int * ),
-    optional_ALIGN_TYPE( long * ),
-    optional_ALIGN_TYPE( float * ),
-    optional_ALIGN_TYPE( double * ),
-    optional_ALIGN_TYPE( long double * ),
-
-    optional_ALIGN_TYPE( Unknown ( * )( Unknown ) ),
-    optional_ALIGN_TYPE( Unknown * Unknown::*     ),
-    optional_ALIGN_TYPE( Unknown ( Unknown::* )( Unknown ) ),
-
-    nulltype
-    > > > > > > >    > > > > > > >
-    > > > > > > >    > > > > > > >
-    > > > > > >
-    alignment_types;
-
-#undef optional_ALIGN_TYPE
-
-#endif // optional_CONFIG_MAX_ALIGN_HACK
-
-/// C++03 constructed union to hold value.
-
-template< typename T >
-union storage_t
-{
-//private:
-//    template< typename > friend class optional;
-
-    typedef T value_type;
-
-    storage_t() optional_is_default
-
-    explicit storage_t( value_type const & v )
-    {
-        construct_value( v );
-    }
-
-    void construct_value( value_type const & v )
-    {
-        ::new( value_ptr() ) value_type( v );
-    }
-
-#if optional_CPP11_OR_GREATER
-
-    explicit storage_t( value_type && v )
-    {
-        construct_value( std::move( v ) );
-    }
-
-    void construct_value( value_type && v )
-    {
-        ::new( value_ptr() ) value_type( std::move( v ) );
-    }
-
-    template< class... Args >
-    storage_t( nonstd_lite_in_place_t(T), Args&&... args )
-    {
-        emplace( std::forward<Args>(args)... );
-    }
-
-    template< class... Args >
-    void emplace( Args&&... args )
-    {
-        ::new( value_ptr() ) value_type( std::forward<Args>(args)... );
-    }
-
-    template< class U, class... Args >
-    void emplace( std::initializer_list<U> il, Args&&... args )
-    {
-        ::new( value_ptr() ) value_type( il, std::forward<Args>(args)... );
-    }
-
-#endif
-
-    void destruct_value()
-    {
-        value_ptr()->~T();
-    }
-
-    optional_nodiscard value_type const * value_ptr() const
-    {
-        return as<value_type>();
-    }
-
-    value_type * value_ptr()
-    {
-        return as<value_type>();
-    }
-
-    optional_nodiscard value_type const & value() const optional_ref_qual
-    {
-        return * value_ptr();
-    }
-
-    value_type & value() optional_ref_qual
-    {
-        return * value_ptr();
-    }
-
-#if optional_HAVE( REF_QUALIFIER )
-
-    optional_nodiscard value_type const && value() const optional_refref_qual
-    {
-        return std::move( value() );
-    }
-
-    value_type && value() optional_refref_qual
-    {
-        return std::move( value() );
-    }
-
-#endif
-
-#if optional_CPP11_OR_GREATER
-
-    using aligned_storage_t = typename std::aligned_storage< sizeof(value_type), alignof(value_type) >::type;
-    aligned_storage_t data;
-
-#elif optional_CONFIG_MAX_ALIGN_HACK
-
-    typedef struct { unsigned char data[ sizeof(value_type) ]; } aligned_storage_t;
-
-    max_align_t hack;
-    aligned_storage_t data;
-
-#else
-    typedef optional_ALIGN_AS(value_type) align_as_type;
-
-    typedef struct { align_as_type data[ 1 + ( sizeof(value_type) - 1 ) / sizeof(align_as_type) ]; } aligned_storage_t;
-    aligned_storage_t data;
-
-#   undef optional_ALIGN_AS
-
-#endif // optional_CONFIG_MAX_ALIGN_HACK
-
-    optional_nodiscard void * ptr() optional_noexcept
-    {
-        return &data;
-    }
-
-    optional_nodiscard void const * ptr() const optional_noexcept
-    {
-        return &data;
-    }
-
-    template <typename U>
-    optional_nodiscard U * as()
-    {
-        return reinterpret_cast<U*>( ptr() );
-    }
-
-    template <typename U>
-    optional_nodiscard U const * as() const
-    {
-        return reinterpret_cast<U const *>( ptr() );
-    }
-};
-
-} // namespace detail
-
-/// disengaged state tag
-
-struct nullopt_t
-{
-    struct init{};
-    explicit optional_constexpr nullopt_t( init /*unused*/ ) optional_noexcept {}
-};
-
-#if optional_HAVE( CONSTEXPR_11 )
-constexpr nullopt_t nullopt{ nullopt_t::init{} };
-#else
-// extra parenthesis to prevent the most vexing parse:
-const nullopt_t nullopt(( nullopt_t::init() ));
-#endif
-
-/// optional access error
-
-#if ! optional_CONFIG_NO_EXCEPTIONS
-
-class bad_optional_access : public std::logic_error
-{
-public:
-  explicit bad_optional_access()
-  : logic_error( "bad optional access" ) {}
-};
-
-#endif //optional_CONFIG_NO_EXCEPTIONS
-
-/// optional
-
-template< typename T>
-class optional
-{
-    optional_static_assert(( !std::is_same<typename std::remove_cv<T>::type, nullopt_t>::value  ),
-        "T in optional<T> must not be of type 'nullopt_t'.")
-
-    optional_static_assert(( !std::is_same<typename std::remove_cv<T>::type, in_place_t>::value ),
-        "T in optional<T> must not be of type 'in_place_t'.")
-
-    optional_static_assert(( std::is_object<T>::value && std::is_destructible<T>::value && !std::is_array<T>::value ),
-        "T in optional<T> must meet the Cpp17Destructible requirements.")
-
-private:
-    template< typename > friend class optional;
-
-    typedef void (optional::*safe_bool)() const;
-
-public:
-    typedef T value_type;
-
-     // x.x.3.1, constructors
-
-    // 1a - default construct
-    optional_constexpr optional() optional_noexcept
-    : has_value_( false )
-    , contained()
-    {}
-
-    // 1b - construct explicitly empty
-    // NOLINTNEXTLINE( google-explicit-constructor, hicpp-explicit-conversions )
-    optional_constexpr optional( nullopt_t /*unused*/ ) optional_noexcept
-    : has_value_( false )
-    , contained()
-    {}
-
-    // 2 - copy-construct
-#if optional_CPP11_OR_GREATER
-    // template< typename U = T
-    //     optional_REQUIRES_T(
-    //         std::is_copy_constructible<U>::value
-    //         || std11::is_trivially_copy_constructible<U>::value
-    //     )
-    // >
-#endif
-    optional_constexpr14 optional( optional const & other )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( other.contained.value() );
-        }
-    }
-
-#if optional_CPP11_OR_GREATER
-
-    // 3 (C++11) - move-construct from optional
-    template< typename U = T
-        optional_REQUIRES_T(
-            std11::is_move_constructible<U>::value
-            || std11::is_trivially_move_constructible<U>::value
-        )
-    >
-    optional_constexpr14 optional( optional && other )
-    // NOLINTNEXTLINE( performance-noexcept-move-constructor )
-        noexcept( std11::is_nothrow_move_constructible<T>::value )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( std::move( other.contained.value() ) );
-        }
-    }
-
-    // 4a (C++11) - explicit converting copy-construct from optional
-    template< typename U
-        optional_REQUIRES_T(
-            std::is_constructible<T, U const &>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            && !std::is_convertible<               U const & , T>::value /*=> explicit */
-        )
-    >
-    explicit optional( optional<U> const & other )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( T{ other.contained.value() } );
-        }
-    }
-#endif // optional_CPP11_OR_GREATER
-
-    // 4b (C++98 and later) - non-explicit converting copy-construct from optional
-    template< typename U
-#if optional_CPP11_OR_GREATER
-        optional_REQUIRES_T(
-            std::is_constructible<T, U const &>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            &&  std::is_convertible<               U const & , T>::value /*=> non-explicit */
-        )
-#endif // optional_CPP11_OR_GREATER
-    >
-    // NOLINTNEXTLINE( google-explicit-constructor, hicpp-explicit-conversions )
-    /*non-explicit*/ optional( optional<U> const & other )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( other.contained.value() );
-        }
-    }
-
-#if optional_CPP11_OR_GREATER
-
-    // 5a (C++11) - explicit converting move-construct from optional
-    template< typename U
-        optional_REQUIRES_T(
-            std::is_constructible<T, U &&>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            && !std::is_convertible<                     U &&, T>::value /*=> explicit */
-        )
-    >
-    explicit optional( optional<U> && other
-    )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( T{ std::move( other.contained.value() ) } );
-        }
-    }
-
-    // 5a (C++11) - non-explicit converting move-construct from optional
-    template< typename U
-        optional_REQUIRES_T(
-            std::is_constructible<T, U &&>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            &&  std::is_convertible<                     U &&, T>::value /*=> non-explicit */
-        )
-    >
-    // NOLINTNEXTLINE( google-explicit-constructor, hicpp-explicit-conversions )
-    /*non-explicit*/ optional( optional<U> && other )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( std::move( other.contained.value() ) );
-        }
-    }
-
-    // 6 (C++11) - in-place construct
-    template< typename... Args
-        optional_REQUIRES_T(
-            std::is_constructible<T, Args&&...>::value
-        )
-    >
-    optional_constexpr explicit optional( nonstd_lite_in_place_t(T), Args&&... args )
-    : has_value_( true )
-    , contained( in_place, std::forward<Args>(args)... )
-    {}
-
-    // 7 (C++11) - in-place construct,  initializer-list
-    template< typename U, typename... Args
-        optional_REQUIRES_T(
-            std::is_constructible<T, std::initializer_list<U>&, Args&&...>::value
-        )
-    >
-    optional_constexpr explicit optional( nonstd_lite_in_place_t(T), std::initializer_list<U> il, Args&&... args )
-    : has_value_( true )
-    , contained( T( il, std::forward<Args>(args)...) )
-    {}
-
-    // 8a (C++11) - explicit move construct from value
-    template< typename U = T
-        optional_REQUIRES_T(
-            std::is_constructible<T, U&&>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, nonstd_lite_in_place_t(U)>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, optional<T>>::value
-            && !std::is_convertible<U&&, T>::value /*=> explicit */
-        )
-    >
-    optional_constexpr explicit optional( U && value )
-    : has_value_( true )
-    , contained( nonstd_lite_in_place(T), std::forward<U>( value ) )
-    {}
-
-    // 8b (C++11) - non-explicit move construct from value
-    template< typename U = T
-        optional_REQUIRES_T(
-            std::is_constructible<T, U&&>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, nonstd_lite_in_place_t(U)>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, optional<T>>::value
-            && std::is_convertible<U&&, T>::value /*=> non-explicit */
-        )
-    >
-    // NOLINTNEXTLINE( google-explicit-constructor, hicpp-explicit-conversions )
-    optional_constexpr /*non-explicit*/ optional( U && value )
-    : has_value_( true )
-    , contained( nonstd_lite_in_place(T), std::forward<U>( value ) )
-    {}
-
-#else // optional_CPP11_OR_GREATER
-
-    // 8 (C++98)
-    optional( value_type const & value )
-    : has_value_( true )
-    , contained( value )
-    {}
-
-#endif // optional_CPP11_OR_GREATER
-
-    // x.x.3.2, destructor
-
-    ~optional()
-    {
-        if ( has_value() )
-        {
-            contained.destruct_value();
-        }
-    }
-
-    // x.x.3.3, assignment
-
-    // 1 (C++98and later) -  assign explicitly empty
-    optional & operator=( nullopt_t /*unused*/) optional_noexcept
-    {
-        reset();
-        return *this;
-    }
-
-    // 2 (C++98and later) - copy-assign from optional
-#if optional_CPP11_OR_GREATER
-    // NOLINTNEXTLINE( cppcoreguidelines-c-copy-assignment-signature, misc-unconventional-assign-operator )
-    optional_REQUIRES_R(
-        optional &,
-        true
-//      std::is_copy_constructible<T>::value
-//      && std::is_copy_assignable<T>::value
-    )
-    operator=( optional const & other )
-        noexcept(
-            std11::is_nothrow_move_assignable<T>::value
-            && std11::is_nothrow_move_constructible<T>::value
-        )
-#else
-    optional & operator=( optional const & other )
-#endif
-    {
-        if      ( (has_value() == true ) && (other.has_value() == false) ) { reset(); }
-        else if ( (has_value() == false) && (other.has_value() == true ) ) { initialize( *other ); }
-        else if ( (has_value() == true ) && (other.has_value() == true ) ) { contained.value() = *other; }
-        return *this;
-    }
-
-#if optional_CPP11_OR_GREATER
-
-    // 3 (C++11) - move-assign from optional
-    // NOLINTNEXTLINE( cppcoreguidelines-c-copy-assignment-signature, misc-unconventional-assign-operator )
-    optional_REQUIRES_R(
-        optional &,
-        true
-//      std11::is_move_constructible<T>::value
-//      && std::is_move_assignable<T>::value
-    )
-    operator=( optional && other ) noexcept
-    {
-        if      ( (has_value() == true ) && (other.has_value() == false) ) { reset(); }
-        else if ( (has_value() == false) && (other.has_value() == true ) ) { initialize( std::move( *other ) ); }
-        else if ( (has_value() == true ) && (other.has_value() == true ) ) { contained.value() = std::move( *other ); }
-        return *this;
-    }
-
-    // 4 (C++11) - move-assign from value
-    template< typename U = T >
-        // NOLINTNEXTLINE( cppcoreguidelines-c-copy-assignment-signature, misc-unconventional-assign-operator )
-        optional_REQUIRES_R(
-            optional &,
-            std::is_constructible<T , U>::value
-            && std11::is_assignable<T&, U>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, nonstd_lite_in_place_t(U)>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, optional<T>>::value
-            && !(std::is_scalar<T>::value && std::is_same<T, typename std::decay<U>::type>::value)
-        )
-    operator=( U && value )
-    {
-        if ( has_value() )
-        {
-            contained.value() = std::forward<U>( value );
-        }
-        else
-        {
-            initialize( T( std::forward<U>( value ) ) );
-        }
-        return *this;
-    }
-
-#else // optional_CPP11_OR_GREATER
-
-    // 4 (C++98) - copy-assign from value
-    template< typename U /*= T*/ >
-    optional & operator=( U const & value )
-    {
-        if ( has_value() ) contained.value() = value;
-        else               initialize( T( value ) );
-        return *this;
-    }
-
-#endif // optional_CPP11_OR_GREATER
-
-    // 5 (C++98 and later) - converting copy-assign from optional
-    template< typename U >
-#if optional_CPP11_OR_GREATER
-        // NOLINTNEXTLINE( cppcoreguidelines-c-copy-assignment-signature, misc-unconventional-assign-operator )
-        optional_REQUIRES_R(
-            optional&,
-            std::is_constructible<  T , U const &>::value
-            &&  std11::is_assignable< T&, U const &>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            && !std11::is_assignable<  T&, optional<U> &          >::value
-            && !std11::is_assignable<  T&, optional<U> &&         >::value
-            && !std11::is_assignable<  T&, optional<U> const &    >::value
-            && !std11::is_assignable<  T&, optional<U> const &&   >::value
-        )
-#else
-    optional&
-#endif // optional_CPP11_OR_GREATER
-    operator=( optional<U> const & other )
-    {
-        return *this = optional( other );
-    }
-
-#if optional_CPP11_OR_GREATER
-
-    // 6 (C++11) -  converting move-assign from optional
-    template< typename U >
-        // NOLINTNEXTLINE( cppcoreguidelines-c-copy-assignment-signature, misc-unconventional-assign-operator )
-        optional_REQUIRES_R(
-            optional&,
-            std::is_constructible<  T , U>::value
-            &&  std11::is_assignable< T&, U>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            && !std11::is_assignable<  T&, optional<U> &          >::value
-            && !std11::is_assignable<  T&, optional<U> &&         >::value
-            && !std11::is_assignable<  T&, optional<U> const &    >::value
-            && !std11::is_assignable<  T&, optional<U> const &&   >::value
-        )
-    operator=( optional<U> && other )
-    {
-        return *this = optional( std::move( other ) );
-    }
-
-    // 7 (C++11) - emplace
-    template< typename... Args
-        optional_REQUIRES_T(
-            std::is_constructible<T, Args&&...>::value
-        )
-    >
-    T& emplace( Args&&... args )
-    {
-        *this = nullopt;
-        contained.emplace( std::forward<Args>(args)...  );
-        has_value_ = true;
-        return contained.value();
-    }
-
-    // 8 (C++11) - emplace, initializer-list
-    template< typename U, typename... Args
-        optional_REQUIRES_T(
-            std::is_constructible<T, std::initializer_list<U>&, Args&&...>::value
-        )
-    >
-    T& emplace( std::initializer_list<U> il, Args&&... args )
-    {
-        *this = nullopt;
-        contained.emplace( il, std::forward<Args>(args)...  );
-        has_value_ = true;
-        return contained.value();
-    }
-
-#endif // optional_CPP11_OR_GREATER
-
-    // x.x.3.4, swap
-
-    void swap( optional & other )
-#if optional_CPP11_OR_GREATER
-        noexcept(
-            std11::is_nothrow_move_constructible<T>::value
-            && std17::is_nothrow_swappable<T>::value
-        )
-#endif
-    {
-        using std::swap;
-        if      ( (has_value() == true ) && (other.has_value() == true ) ) { swap( **this, *other ); }
-        else if ( (has_value() == false) && (other.has_value() == true ) ) { initialize( std11::move(*other) ); other.reset(); }
-        else if ( (has_value() == true ) && (other.has_value() == false) ) { other.initialize( std11::move(**this) ); reset(); }
-    }
-
-    // x.x.3.5, observers
-
-    optional_constexpr value_type const * operator ->() const
-    {
-        return assert( has_value() ),
-            contained.value_ptr();
-    }
-
-    optional_constexpr14 value_type * operator ->()
-    {
-        return assert( has_value() ),
-            contained.value_ptr();
-    }
-
-    optional_constexpr value_type const & operator *() const optional_ref_qual
-    {
-        return assert( has_value() ),
-            contained.value();
-    }
-
-    optional_constexpr14 value_type & operator *() optional_ref_qual
-    {
-        return assert( has_value() ),
-            contained.value();
-    }
-
-#if optional_HAVE( REF_QUALIFIER )
-
-    optional_constexpr value_type const && operator *() const optional_refref_qual
-    {
-        return std::move( **this );
-    }
-
-    optional_constexpr14 value_type && operator *() optional_refref_qual
-    {
-        return std::move( **this );
-    }
-
-#endif
-
-#if optional_CPP11_OR_GREATER
-    optional_constexpr explicit operator bool() const optional_noexcept
-    {
-        return has_value();
-    }
-#else
-    optional_constexpr operator safe_bool() const optional_noexcept
-    {
-        return has_value() ? &optional::this_type_does_not_support_comparisons : 0;
-    }
-#endif
-
-    // NOLINTNEXTLINE( modernize-use-nodiscard )
-    /*optional_nodiscard*/ optional_constexpr bool has_value() const optional_noexcept
-    {
-        return has_value_;
-    }
-
-    // NOLINTNEXTLINE( modernize-use-nodiscard )
-    /*optional_nodiscard*/ optional_constexpr14 value_type const & value() const optional_ref_qual
-    {
-#if optional_CONFIG_NO_EXCEPTIONS
-        assert( has_value() );
-#else
-        if ( ! has_value() )
-        {
-            throw bad_optional_access();
-        }
-#endif
-        return contained.value();
-    }
-
-    optional_constexpr14 value_type & value() optional_ref_qual
-    {
-#if optional_CONFIG_NO_EXCEPTIONS
-        assert( has_value() );
-#else
-        if ( ! has_value() )
-        {
-            throw bad_optional_access();
-        }
-#endif
-        return contained.value();
-    }
-
-#if optional_HAVE( REF_QUALIFIER )  &&  ( !optional_COMPILER_GNUC_VERSION || optional_COMPILER_GNUC_VERSION >= 490 )
-
-    // NOLINTNEXTLINE( modernize-use-nodiscard )
-    /*optional_nodiscard*/ optional_constexpr value_type const && value() const optional_refref_qual
-    {
-        return std::move( value() );
-    }
-
-    optional_constexpr14 value_type && value() optional_refref_qual
-    {
-        return std::move( value() );
-    }
-
-#endif
-
-#if optional_HAVE( REF_QUALIFIER )
-
-    template< typename U >
-    optional_constexpr value_type value_or( U && v ) const optional_ref_qual
-    {
-        return has_value() ? contained.value() : static_cast<T>(std::forward<U>( v ) );
-    }
-
-    template< typename U >
-    optional_constexpr14 value_type value_or( U && v ) optional_refref_qual
-    {
-#if optional_COMPILER_CLANG_VERSION
-        return has_value() ? /*std::move*/( contained.value() ) : static_cast<T>(std::forward<U>( v ) );
-#else
-        return has_value() ? std::move( contained.value() ) : static_cast<T>(std::forward<U>( v ) );
-#endif
-    }
-
-#else
-
-    template< typename U >
-    optional_constexpr value_type value_or( U const & v ) const
-    {
-        return has_value() ? contained.value() : static_cast<value_type>( v );
-    }
-
-#endif // optional_HAVE( REF_QUALIFIER )
-
-#if !optional_CONFIG_NO_EXTENSIONS
-#if  optional_HAVE( REF_QUALIFIER )
-
-    template< typename F >
-    optional_constexpr value_type value_or_eval( F f ) const &
-    {
-        return has_value() ? contained.value() : f();
-    }
-
-    template< typename F >
-    optional_constexpr14 value_type value_or_eval( F f ) &&
-    {
-        if ( has_value() )
-        {
-            return std::move( contained.value() );
-        }
-        else
-        {
-            return f();
-        }
-    }
-
-#else
-
-    template< typename F >
-    optional_constexpr value_type value_or_eval( F f ) const
-    {
-        return has_value() ? contained.value() : f();
-    }
-
-#endif //  optional_HAVE( REF_QUALIFIER )
-#endif // !optional_CONFIG_NO_EXTENSIONS
-
-    // x.x.3.6, modifiers
-
-    void reset() optional_noexcept
-    {
-        if ( has_value() )
-        {
-            contained.destruct_value();
-        }
-
-        has_value_ = false;
-    }
-
-private:
-    void this_type_does_not_support_comparisons() const {}
-
-    template< typename V >
-    void initialize( V const & value )
-    {
-        assert( ! has_value()  );
-        contained.construct_value( value );
-        has_value_ = true;
-    }
-
-#if optional_CPP11_OR_GREATER
-    template< typename V >
-    void initialize( V && value )
-    {
-        assert( ! has_value()  );
-        contained.construct_value( std::move( value ) );
-        has_value_ = true;
-    }
-
-#endif
-
-private:
-    bool has_value_;
-    detail::storage_t< value_type > contained;
-
-};
-
-// Relational operators
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator==( optional<T> const & x, optional<U> const & y )
-{
-    return bool(x) != bool(y) ? false : !bool( x ) ? true : *x == *y;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator!=( optional<T> const & x, optional<U> const & y )
-{
-    return !(x == y);
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<( optional<T> const & x, optional<U> const & y )
-{
-    return (!y) ? false : (!x) ? true : *x < *y;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>( optional<T> const & x, optional<U> const & y )
-{
-    return (y < x);
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<=( optional<T> const & x, optional<U> const & y )
-{
-    return !(y < x);
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>=( optional<T> const & x, optional<U> const & y )
-{
-    return !(x < y);
-}
-
-// Comparison with nullopt
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator==( optional<T> const & x, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return (!x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator==( nullopt_t /*unused*/, optional<T> const & x ) optional_noexcept
-{
-    return (!x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator!=( optional<T> const & x, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return bool(x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator!=( nullopt_t /*unused*/, optional<T> const & x ) optional_noexcept
-{
-    return bool(x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator<( optional<T> const & /*unused*/, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return false;
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator<( nullopt_t /*unused*/, optional<T> const & x ) optional_noexcept
-{
-    return bool(x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator<=( optional<T> const & x, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return (!x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator<=( nullopt_t /*unused*/, optional<T> const & /*unused*/ ) optional_noexcept
-{
-    return true;
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator>( optional<T> const & x, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return bool(x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator>( nullopt_t /*unused*/, optional<T> const & /*unused*/ ) optional_noexcept
-{
-    return false;
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator>=( optional<T> const & /*unused*/, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return true;
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator>=( nullopt_t /*unused*/, optional<T> const & x ) optional_noexcept
-{
-    return (!x);
-}
-
-// Comparison with T
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator==( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x == v : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator==( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v == *x : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator!=( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x != v : true;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator!=( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v != *x : true;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x < v : true;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v < *x : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<=( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x <= v : true;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<=( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v <= *x : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x > v : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v > *x : true;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>=( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x >= v : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>=( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v >= *x : true;
-}
-
-// Specialized algorithms
-
-template< typename T
-#if optional_CPP11_OR_GREATER
-    optional_REQUIRES_T(
-        std11::is_move_constructible<T>::value
-        && std17::is_swappable<T>::value )
-#endif
->
-void swap( optional<T> & x, optional<T> & y )
-#if optional_CPP11_OR_GREATER
-    noexcept( noexcept( x.swap(y) ) )
-#endif
-{
-    x.swap( y );
-}
-
-#if optional_CPP11_OR_GREATER
-
-template< typename T >
-optional_constexpr optional< typename std::decay<T>::type > make_optional( T && value )
-{
-    return optional< typename std::decay<T>::type >( std::forward<T>( value ) );
-}
-
-template< typename T, typename...Args >
-optional_constexpr optional<T> make_optional( Args&&... args )
-{
-    return optional<T>( nonstd_lite_in_place(T), std::forward<Args>(args)...);
-}
-
-template< typename T, typename U, typename... Args >
-optional_constexpr optional<T> make_optional( std::initializer_list<U> il, Args&&... args )
-{
-    return optional<T>( nonstd_lite_in_place(T), il, std::forward<Args>(args)...);
-}
-
-#else
-
-template< typename T >
-optional<T> make_optional( T const & value )
-{
-    return optional<T>( value );
-}
-
-#endif // optional_CPP11_OR_GREATER
-
-} // namespace optional_lite
-
-using optional_lite::optional;
-using optional_lite::nullopt_t;
-using optional_lite::nullopt;
-
-#if ! optional_CONFIG_NO_EXCEPTIONS
-using optional_lite::bad_optional_access;
-#endif
-
-using optional_lite::make_optional;
-
-} // namespace nonstd
-
-#if optional_CPP11_OR_GREATER
-
-// specialize the std::hash algorithm:
-
-namespace std {
-
-template< class T >
-struct hash< nonstd::optional<T> >
-{
-public:
-    std::size_t operator()( nonstd::optional<T> const & v ) const optional_noexcept
-    {
-        return bool( v ) ? std::hash<T>{}( *v ) : 0;
-    }
-};
-
-} //namespace std
-
-#endif // optional_CPP11_OR_GREATER
-
-#if defined(__clang__)
-# pragma clang diagnostic pop
-#elif defined(__GNUC__)
-# pragma GCC   diagnostic pop
-#elif defined(_MSC_VER )
-# pragma warning( pop )
-#endif
-
-#endif // optional_USES_STD_OPTIONAL
-
-#endif // NONSTD_OPTIONAL_LITE_HPP

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/Endpoint.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/Endpoint.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/Endpoint.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -4,30 +4,30 @@
 
 bool GenericEndpoint::notify(std::unique_ptr<LspMessage> msg)
 {
-	auto findIt = method2notification.find(msg->GetMethodType());
+        auto findIt = method2notification.find(msg->GetMethodType());
 
-	if (findIt != method2notification.end())
-	{
-		return  findIt->second(std::move(msg));
-	}
-	std::string info = "can't find method2notification for notification:\n" + msg->ToJson() + "\n";
-	log.log(lsp::Log::Level::SEVERE, info);
-	return false;
+        if (findIt != method2notification.end())
+        {
+                return  findIt->second(std::move(msg));
+        }
+        std::string info = "can't find method2notification for notification:\n" + msg->ToJson() + "\n";
+        log.log(lsp::Log::Level::SEVERE, info);
+        return false;
 }
 
 bool GenericEndpoint::onResponse(const std::string& method, std::unique_ptr<LspMessage>msg)
 {
-	auto findIt = method2response.find(method);
+        auto findIt = method2response.find(method);
 
-	if (findIt != method2response.end())
-	{
-		return  findIt->second(std::move(msg));
-	}
-	
-	std::string info = "can't find method2response for response:\n" + msg->ToJson() + "\n";
-	log.log(lsp::Log::Level::SEVERE, info);
-	
-	return false;
+        if (findIt != method2response.end())
+        {
+                return  findIt->second(std::move(msg));
+        }
+
+        std::string info = "can't find method2response for response:\n" + msg->ToJson() + "\n";
+        log.log(lsp::Log::Level::SEVERE, info);
+
+        return false;
 }
 
 
@@ -34,13 +34,13 @@
 
 bool GenericEndpoint::onRequest(std::unique_ptr<LspMessage> request)
 {
-	auto findIt = method2request.find(request->GetMethodType());
+        auto findIt = method2request.find(request->GetMethodType());
 
-	if (findIt != method2request.end())
-	{
-		return  findIt->second(std::move(request));
-	}
-	std::string info = "can't find method2request for request:\n" + request->ToJson() + "\n";
-	log.log(lsp::Log::Level::SEVERE, info);
-	return false;
+        if (findIt != method2request.end())
+        {
+                return  findIt->second(std::move(request));
+        }
+        std::string info = "can't find method2request for request:\n" + request->ToJson() + "\n";
+        log.log(lsp::Log::Level::SEVERE, info);
+        return false;
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/MessageJsonHandler.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/MessageJsonHandler.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/MessageJsonHandler.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -6,52 +6,52 @@
 
 std::unique_ptr<LspMessage> MessageJsonHandler::parseResponseMessage(const std::string& method, Reader& r)
 {
-	auto findIt = method2response.find(method);
-	
-	if( findIt != method2response.end())
-	{
-		return  findIt->second(r);
-	}
-	return nullptr;
+        auto findIt = method2response.find(method);
+
+        if( findIt != method2response.end())
+        {
+                return  findIt->second(r);
+        }
+        return nullptr;
 }
 
 std::unique_ptr<LspMessage> MessageJsonHandler::parseRequstMessage(const std::string& method, Reader&r)
 {
-	auto findIt = method2request.find(method);
+        auto findIt = method2request.find(method);
 
-	if (findIt != method2request.end())
-	{
-		return  findIt->second(r);
-	}
-	return nullptr;
+        if (findIt != method2request.end())
+        {
+                return  findIt->second(r);
+        }
+        return nullptr;
 }
 
 bool MessageJsonHandler::resovleResponseMessage(Reader&r, std::pair<std::string, std::unique_ptr<LspMessage>>& result)
 {
-	for (auto& handler : method2response)
-	{
-		try
-		{
-			auto msg =  handler.second(r);
-			result.first = handler.first;
-			result.second = std::move(msg);
-			return true;
-		}
-		catch (...)
-		{
+        for (auto& handler : method2response)
+        {
+                try
+                {
+                        auto msg =  handler.second(r);
+                        result.first = handler.first;
+                        result.second = std::move(msg);
+                        return true;
+                }
+                catch (...)
+                {
 
-		}
-	}
-	return false;
+                }
+        }
+        return false;
 }
 
 std::unique_ptr<LspMessage> MessageJsonHandler::parseNotificationMessage(const std::string& method, Reader& r)
 {
-	auto findIt = method2notification.find(method);
+        auto findIt = method2notification.find(method);
 
-	if (findIt != method2notification.end())
-	{
-		return  findIt->second(r);
-	}
-	return nullptr;
+        if (findIt != method2notification.end())
+        {
+                return  findIt->second(r);
+        }
+        return nullptr;
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/RemoteEndPoint.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -14,10 +14,10 @@
 #include "LibLsp/JsonRpc/GCThreadContext.h"
 #include "LibLsp/JsonRpc/ScopeExit.h"
 #include "LibLsp/JsonRpc/stream.h"
+#include <atomic>
+#include <boost/asio/thread_pool.hpp>
+#include <boost/asio/post.hpp>
 
-#define BOOST_BIND_GLOBAL_PLACEHOLDERS
-#include "boost/threadpool.hpp"
-#include <atomic>
 namespace lsp {
 
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
@@ -71,70 +71,70 @@
 //     ways that preserve the context. (Like runAsync() or TUScheduler).
 //
 
-	/// A canceller requests cancellation of a task, when called.
-	/// Calling it again has no effect.
-	using Canceler = std::function<void()>;
+        /// A canceller requests cancellation of a task, when called.
+        /// Calling it again has no effect.
+        using Canceler = std::function<void()>;
 
-	// We don't want a cancelable scope to "shadow" an enclosing one.
-	struct CancelState {
-		std::shared_ptr<std::atomic<int>> cancelled;
-		const CancelState* parent = nullptr;
-		lsRequestId id;
-	};
-	static Key<CancelState> g_stateKey;
+        // We don't want a cancelable scope to "shadow" an enclosing one.
+        struct CancelState {
+                std::shared_ptr<std::atomic<int>> cancelled;
+                const CancelState* parent = nullptr;
+                lsRequestId id;
+        };
+        static Key<CancelState> g_stateKey;
 
-	/// Defines a new task whose cancellation may be requested.
-	/// The returned Context defines the scope of the task.
-	/// When the context is active, getCancelledMonitor() is 0 until the Canceler is
-	/// invoked, and equal to Reason afterwards.
-	/// Conventionally, Reason may be the LSP error code to return.
-	std::pair<Context, Canceler> cancelableTask(const lsRequestId& id,int reason = 1){
-		assert(reason != 0 && "Can't detect cancellation if Reason is zero");
-		CancelState state;
-		state.id = id;
-		state.cancelled = std::make_shared<std::atomic<int>>();
-		state.parent = Context::current().get(g_stateKey);
-		return {
-			Context::current().derive(g_stateKey, state),
-			[reason, cancelled(state.cancelled)] { *cancelled = reason; },
-		};
-	}
-	/// If the current context is within a cancelled task, returns the reason.
+        /// Defines a new task whose cancellation may be requested.
+        /// The returned Context defines the scope of the task.
+        /// When the context is active, getCancelledMonitor() is 0 until the Canceler is
+        /// invoked, and equal to Reason afterwards.
+        /// Conventionally, Reason may be the LSP error code to return.
+        std::pair<Context, Canceler> cancelableTask(const lsRequestId& id,int reason = 1){
+                assert(reason != 0 && "Can't detect cancellation if Reason is zero");
+                CancelState state;
+                state.id = id;
+                state.cancelled = std::make_shared<std::atomic<int>>();
+                state.parent = Context::current().get(g_stateKey);
+                return {
+                        Context::current().derive(g_stateKey, state),
+                        [reason, cancelled(state.cancelled)] { *cancelled = reason; },
+                };
+        }
+        /// If the current context is within a cancelled task, returns the reason.
 /// (If the context is within multiple nested tasks, true if any are cancelled).
 /// Always zero if there is no active cancelable task.
 /// This isn't free (context lookup) - don't call it in a tight loop.
-	boost::optional<CancelMonitor> getCancelledMonitor(const lsRequestId& id, const Context& ctx = Context::current()){
-		for (const CancelState* state = ctx.get(g_stateKey); state != nullptr;
-			state = state->parent)
-		{
-			if (id != state->id)continue;
-			const std::shared_ptr<std::atomic<int> > cancelled = state->cancelled;
-			std::function<int()> temp = [=]{
-				return cancelled->load();
-			};
-			return std::move(temp);
-		}
+        boost::optional<CancelMonitor> getCancelledMonitor(const lsRequestId& id, const Context& ctx = Context::current()){
+                for (const CancelState* state = ctx.get(g_stateKey); state != nullptr;
+                        state = state->parent)
+                {
+                        if (id != state->id)continue;
+                        const std::shared_ptr<std::atomic<int> > cancelled = state->cancelled;
+                        std::function<int()> temp = [=]{
+                                return cancelled->load();
+                        };
+                        return std::move(temp);
+                }
 
-		return {};
-	}
+                return {};
+        }
 } // namespace lsp
 
 using namespace  lsp;
 class PendingRequestInfo
 {
-	using   RequestCallBack = std::function< bool(std::unique_ptr<LspMessage>) >;
+        using   RequestCallBack = std::function< bool(std::unique_ptr<LspMessage>) >;
 public:
-	PendingRequestInfo(const std::string& md,
-		const RequestCallBack& callback);
-	PendingRequestInfo(const std::string& md);
-	PendingRequestInfo() {}
-	std::string method;
-	RequestCallBack futureInfo;
+        PendingRequestInfo(const std::string& md,
+                const RequestCallBack& callback);
+        PendingRequestInfo(const std::string& md);
+        PendingRequestInfo() {}
+        std::string method;
+        RequestCallBack futureInfo;
 };
 
 PendingRequestInfo::PendingRequestInfo(const std::string& _md,
-	const	RequestCallBack& callback) : method(_md),
-	futureInfo(callback)
+        const   RequestCallBack& callback) : method(_md),
+        futureInfo(callback)
 {
 }
 
@@ -143,102 +143,118 @@
 }
 struct RemoteEndPoint::Data
 {
-	explicit Data(lsp::Log& _log , RemoteEndPoint* owner)
-          : m_id(0), next_request_cookie(0), message_producer(new StreamMessageProducer(*owner)), log(_log)
-	{
+        explicit Data(uint8_t workers,lsp::Log& _log , RemoteEndPoint* owner)
+          : max_workers(workers), m_id(0),next_request_cookie(0), message_producer(new StreamMessageProducer(*owner)), log(_log)
+        {
 
-	}
-	~Data()
-	{
-	   delete	message_producer;
-	}
-	std::atomic<unsigned> m_id;
-	boost::threadpool::pool tp;
-	// Method calls may be cancelled by ID, so keep track of their state.
+        }
+        ~Data()
+        {
+           delete       message_producer;
+        }
+    uint8_t max_workers;
+        std::atomic<int> m_id;
+    std::shared_ptr<boost::asio::thread_pool> tp;
+        // Method calls may be cancelled by ID, so keep track of their state.
  // This needs a mutex: handlers may finish on a different thread, and that's
  // when we clean up entries in the map.
-	mutable std::mutex request_cancelers_mutex;
+        mutable std::mutex request_cancelers_mutex;
 
-	std::map< lsRequestId, std::pair<Canceler, /*Cookie*/ unsigned> > requestCancelers;
+        std::map< lsRequestId, std::pair<Canceler, /*Cookie*/ unsigned> > requestCancelers;
 
-	std::atomic<unsigned>  next_request_cookie; // To disambiguate reused IDs, see below.
-	void onCancel(Notify_Cancellation::notify* notify) {
-		std::lock_guard<std::mutex> Lock(request_cancelers_mutex);
-		const auto it = requestCancelers.find(notify->params.id);
-		if (it != requestCancelers.end())
-			it->second.first(); // Invoke the canceler.
-	}
+        std::atomic<unsigned>  next_request_cookie; // To disambiguate reused IDs, see below.
+        void onCancel(Notify_Cancellation::notify* notify) {
+                std::lock_guard<std::mutex> Lock(request_cancelers_mutex);
+                const auto it = requestCancelers.find(notify->params.id);
+                if (it != requestCancelers.end())
+                        it->second.first(); // Invoke the canceler.
+        }
 
-	// We run cancelable requests in a context that does two things:
-	//  - allows cancellation using requestCancelers[ID]
-	//  - cleans up the entry in requestCancelers when it's no longer needed
-	// If a client reuses an ID, the last wins and the first cannot be canceled.
-	Context cancelableRequestContext(lsRequestId id) {
-		auto task = cancelableTask(id,
-			/*Reason=*/static_cast<int>(lsErrorCodes::RequestCancelled));
-		unsigned cookie;
-		{
-			std::lock_guard<std::mutex> Lock(request_cancelers_mutex);
-			cookie = next_request_cookie.fetch_add(1, std::memory_order_relaxed);
-			requestCancelers[id] = { std::move(task.second), cookie };
-		}
-		// When the request ends, we can clean up the entry we just added.
-		// The cookie lets us check that it hasn't been overwritten due to ID
-		// reuse.
-		return task.first.derive(lsp::make_scope_exit([this, id, cookie] {
-			std::lock_guard<std::mutex> lock(request_cancelers_mutex);
-			const auto& it = requestCancelers.find(id);
-			if (it != requestCancelers.end() && it->second.second == cookie)
-				requestCancelers.erase(it);
-			}));
-	}
+        // We run cancelable requests in a context that does two things:
+        //  - allows cancellation using requestCancelers[ID]
+        //  - cleans up the entry in requestCancelers when it's no longer needed
+        // If a client reuses an ID, the last wins and the first cannot be canceled.
+        Context cancelableRequestContext(lsRequestId id) {
+                auto task = cancelableTask(id,
+                        /*Reason=*/static_cast<int>(lsErrorCodes::RequestCancelled));
+                unsigned cookie;
+                {
+                        std::lock_guard<std::mutex> Lock(request_cancelers_mutex);
+                        cookie = next_request_cookie.fetch_add(1, std::memory_order_relaxed);
+                        requestCancelers[id] = { std::move(task.second), cookie };
+                }
+                // When the request ends, we can clean up the entry we just added.
+                // The cookie lets us check that it hasn't been overwritten due to ID
+                // reuse.
+                return task.first.derive(lsp::make_scope_exit([this, id, cookie] {
+                        std::lock_guard<std::mutex> lock(request_cancelers_mutex);
+                        const auto& it = requestCancelers.find(id);
+                        if (it != requestCancelers.end() && it->second.second == cookie)
+                                requestCancelers.erase(it);
+                        }));
+        }
 
-	std::map <lsRequestId, std::shared_ptr<PendingRequestInfo>>  _client_request_futures;
-	StreamMessageProducer* message_producer;
-	std::atomic<bool> quit{};
-	lsp::Log& log;
-	std::shared_ptr<lsp::istream>  input;
-	std::shared_ptr<lsp::ostream>  output;
+        std::map <lsRequestId, std::shared_ptr<PendingRequestInfo>>  _client_request_futures;
+        StreamMessageProducer* message_producer;
+        std::atomic<bool> quit{};
+        lsp::Log& log;
+        std::shared_ptr<lsp::istream>  input;
+        std::shared_ptr<lsp::ostream>  output;
 
-	void pendingRequest(RequestInMessage& info, GenericResponseHandler&& handler)
-	{
-		auto id = m_id.fetch_add(1, std::memory_order_relaxed);
-		info.id.set(id);
-		std::lock_guard<std::mutex> lock(m_requsetInfo);
-		_client_request_futures[info.id] = std::make_shared<PendingRequestInfo>(info.method, handler);
+    std::mutex m_requestInfo;
 
-	}
-	const std::shared_ptr<const PendingRequestInfo> getRequestInfo(const lsRequestId& _id)
-	{
-		std::lock_guard<std::mutex> lock(m_requsetInfo);
-		auto findIt = _client_request_futures.find(_id);
-		if (findIt != _client_request_futures.end())
-		{
-			return findIt->second;
-		}
-		return  nullptr;
-	}
+        bool pendingRequest(RequestInMessage& info, GenericResponseHandler&& handler)
+        {
+        bool ret = true;
+        std::lock_guard<std::mutex> lock(m_requestInfo);
+        if(!info.id.has_value()){
+            auto id = getNextRequestId();
+            info.id.set(id);
+        }
+        else{
+            if(_client_request_futures.find(info.id) != _client_request_futures.end()){
+                ret =  false;
+            }
+        }
+        _client_request_futures[info.id] = std::make_shared<PendingRequestInfo>(info.method, handler);
+        return ret;
+        }
+        const std::shared_ptr<const PendingRequestInfo> getRequestInfo(const lsRequestId& _id)
+        {
+                std::lock_guard<std::mutex> lock(m_requestInfo);
+                auto findIt = _client_request_futures.find(_id);
+                if (findIt != _client_request_futures.end())
+                {
+                        return findIt->second;
+                }
+                return  nullptr;
+        }
 
-	std::mutex m_requsetInfo;
-	void removeRequestInfo(const lsRequestId& _id)
-	{
-		std::lock_guard<std::mutex> lock(m_requsetInfo);
-		auto findIt = _client_request_futures.find(_id);
-		if (findIt != _client_request_futures.end())
-		{
-			_client_request_futures.erase(findIt);
-		}
-	}
-	void clear()
-	{
-		{
-			std::lock_guard<std::mutex> lock(m_requsetInfo);
-			_client_request_futures.clear();
+        void removeRequestInfo(const lsRequestId& _id)
+        {
+                std::lock_guard<std::mutex> lock(m_requestInfo);
+                auto findIt = _client_request_futures.find(_id);
+                if (findIt != _client_request_futures.end())
+                {
+                        _client_request_futures.erase(findIt);
+                }
+        }
+        void clear()
+        {
+                {
+                        std::lock_guard<std::mutex> lock(m_requestInfo);
+                        _client_request_futures.clear();
+                }
+        if(tp){
+            tp->stop();
+        }
+                quit.store(true, std::memory_order_relaxed);
+        }
 
-		}
-		tp.clear();
-		quit.store(true, std::memory_order_relaxed);
-	}
+    int getNextRequestId()
+    {
+        return m_id.fetch_add(1, std::memory_order_relaxed);
+    }
 };
 
 namespace
@@ -245,355 +261,370 @@
 {
 void WriterMsg(std::shared_ptr<lsp::ostream>&  output, LspMessage& msg)
 {
-	const auto& s = msg.ToJson();
-	const auto value =
-		std::string("Content-Length: ") + std::to_string(s.size()) + "\r\n\r\n" + s;
-	output->write(value);
-	output->flush();
+        const auto& s = msg.ToJson();
+        const auto value =
+                std::string("Content-Length: ") + std::to_string(s.size()) + "\r\n\r\n" + s;
+        output->write(value);
+        output->flush();
 }
 
 bool isResponseMessage(JsonReader& visitor)
 {
 
-	if (!visitor.HasMember("id"))
-	{
-		return false;
-	}
+        if (!visitor.HasMember("id"))
+        {
+                return false;
+        }
 
-	if (!visitor.HasMember("result") && !visitor.HasMember("error"))
-	{
-		return false;
-	}
+        if (!visitor.HasMember("result") && !visitor.HasMember("error"))
+        {
+                return false;
+        }
 
-	return true;
+        return true;
 }
 
 bool isRequestMessage(JsonReader& visitor)
 {
-	if (!visitor.HasMember("method"))
-	{
-		return false;
-	}
-	if (!visitor["method"]->IsString())
-	{
-		return false;
-	}
-	if (!visitor.HasMember("id"))
-	{
-		return false;
-	}
-	return true;
+        if (!visitor.HasMember("method"))
+        {
+                return false;
+        }
+        if (!visitor["method"]->IsString())
+        {
+                return false;
+        }
+        if (!visitor.HasMember("id"))
+        {
+                return false;
+        }
+        return true;
 }
 bool isNotificationMessage(JsonReader& visitor)
 {
-	if (!visitor.HasMember("method"))
-	{
-		return false;
-	}
-	if (!visitor["method"]->IsString())
-	{
-		return false;
-	}
-	if (visitor.HasMember("id"))
-	{
-		return false;
-	}
-	return true;
+        if (!visitor.HasMember("method"))
+        {
+                return false;
+        }
+        if (!visitor["method"]->IsString())
+        {
+                return false;
+        }
+        if (visitor.HasMember("id"))
+        {
+                return false;
+        }
+        return true;
 }
 }
 
 CancelMonitor RemoteEndPoint::getCancelMonitor(const lsRequestId& id)
 {
-	auto  monitor =  getCancelledMonitor(id);
-	if(monitor.has_value())
-	{
-		return  monitor.value();
-	}
-	return [] {
-		return 0;
-	};
+        auto  monitor =  getCancelledMonitor(id);
+        if(monitor.has_value())
+        {
+                return  monitor.value();
+        }
+        return [] {
+                return 0;
+        };
 
 }
 
 RemoteEndPoint::RemoteEndPoint(
-	const std::shared_ptr < MessageJsonHandler >& json_handler,const std::shared_ptr < Endpoint>& localEndPoint, lsp::Log& _log, uint8_t max_workers):
-    d_ptr(new Data(_log,this)),jsonHandler(json_handler), local_endpoint(localEndPoint)
+        const std::shared_ptr < MessageJsonHandler >& json_handler,const std::shared_ptr < Endpoint>& localEndPoint, lsp::Log& _log, uint8_t max_workers):
+    d_ptr(new Data(max_workers,_log,this)),jsonHandler(json_handler), local_endpoint(localEndPoint)
 {
-	jsonHandler->method2notification[Notify_Cancellation::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_Cancellation::notify::ReflectReader(visitor);
-	};
+        jsonHandler->method2notification[Notify_Cancellation::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_Cancellation::notify::ReflectReader(visitor);
+        };
 
-	d_ptr->quit.store(false, std::memory_order_relaxed);
-	d_ptr->tp.size_controller().resize(max_workers);
+        d_ptr->quit.store(false, std::memory_order_relaxed);
+
 }
 
 RemoteEndPoint::~RemoteEndPoint()
 {
-	delete d_ptr;
-	d_ptr->quit.store(true, std::memory_order_relaxed);
+        delete d_ptr;
+        d_ptr->quit.store(true, std::memory_order_relaxed);
 }
 
 bool RemoteEndPoint::dispatch(const std::string& content)
 {
-		rapidjson::Document document;
-		document.Parse(content.c_str(), content.length());
-		if (document.HasParseError())
-		{
-			std::string info ="lsp msg format error:";
-			rapidjson::GetParseErrorFunc GetParseError = rapidjson::GetParseError_En; // or whatever
-			info+= GetParseError(document.GetParseError());
-			info += "\n";
-			info += "ErrorContext offset:\n";
-			info += content.substr(document.GetErrorOffset());
-			d_ptr->log.log(Log::Level::SEVERE, info);
+                rapidjson::Document document;
+                document.Parse(content.c_str(), content.length());
+                if (document.HasParseError())
+                {
+                        std::string info ="lsp msg format error:";
+                        rapidjson::GetParseErrorFunc GetParseError = rapidjson::GetParseError_En; // or whatever
+                        info+= GetParseError(document.GetParseError());
+                        info += "\n";
+                        info += "ErrorContext offset:\n";
+                        info += content.substr(document.GetErrorOffset());
+                        d_ptr->log.log(Log::Level::SEVERE, info);
 
-			return false;
-		}
+                        return false;
+                }
 
-		JsonReader visitor{ &document };
-		if (!visitor.HasMember("jsonrpc") ||
-			std::string(visitor["jsonrpc"]->GetString()) != "2.0")
-		{
-			std::string reason;
-			reason = "Reason:Bad or missing jsonrpc version\n";
-			reason += "content:\n" + content;
-			d_ptr->log.log(Log::Level::SEVERE, reason);
-			return  false;
+                JsonReader visitor{ &document };
+                if (!visitor.HasMember("jsonrpc") ||
+                        std::string(visitor["jsonrpc"]->GetString()) != "2.0")
+                {
+                        std::string reason;
+                        reason = "Reason:Bad or missing jsonrpc version\n";
+                        reason += "content:\n" + content;
+                        d_ptr->log.log(Log::Level::SEVERE, reason);
+                        return  false;
 
-		}
-		LspMessage::Kind _kind = LspMessage::NOTIFICATION_MESSAGE;
-		try {
-			if (isRequestMessage(visitor))
-			{
-				_kind = LspMessage::REQUEST_MESSAGE;
-				auto msg = jsonHandler->parseRequstMessage(visitor["method"]->GetString(), visitor);
-				if (msg) {
-					mainLoop(std::move(msg));
-				}
-				else {
-					std::string info = "Unknown support request message when consumer message:\n";
-					info += content;
-					d_ptr->log.log(Log::Level::WARNING, info);
-					return false;
-				}
-			}
-			else if (isResponseMessage(visitor))
-			{
-				_kind = LspMessage::RESPONCE_MESSAGE;
-				lsRequestId id;
-				ReflectMember(visitor, "id", id);
+                }
+                LspMessage::Kind _kind = LspMessage::NOTIFICATION_MESSAGE;
+                try {
+                        if (isRequestMessage(visitor))
+                        {
+                                _kind = LspMessage::REQUEST_MESSAGE;
+                                auto msg = jsonHandler->parseRequstMessage(visitor["method"]->GetString(), visitor);
+                                if (msg) {
+                                        mainLoop(std::move(msg));
+                                }
+                                else {
+                                        std::string info = "Unknown support request message when consumer message:\n";
+                                        info += content;
+                                        d_ptr->log.log(Log::Level::WARNING, info);
+                                        return false;
+                                }
+                        }
+                        else if (isResponseMessage(visitor))
+                        {
+                                _kind = LspMessage::RESPONCE_MESSAGE;
+                                lsRequestId id;
+                                ReflectMember(visitor, "id", id);
 
-				auto msgInfo = d_ptr->getRequestInfo(id);
-				if (!msgInfo)
-				{
-					std::pair<std::string, std::unique_ptr<LspMessage>> result;
-					auto b = jsonHandler->resovleResponseMessage(visitor, result);
-					if (b)
-					{
-						result.second->SetMethodType(result.first.c_str());
-						mainLoop(std::move(result.second));
-					}
-					else
-					{
-						std::string info = "Unknown response message :\n";
-						info += content;
-						d_ptr->log.log(Log::Level::INFO, info);
-					}
-				}
-				else
-				{
+                                auto msgInfo = d_ptr->getRequestInfo(id);
+                                if (!msgInfo)
+                                {
+                    std::string info = "Unknown response message :\n";
+                    info += content;
+                    d_ptr->log.log(Log::Level::INFO, info);
+                                }
+                                else
+                                {
 
-					auto msg = jsonHandler->parseResponseMessage(msgInfo->method, visitor);
-					if (msg) {
-						mainLoop(std::move(msg));
-					}
-					else
-					{
-						std::string info = "Unknown response message :\n";
-						info += content;
-						d_ptr->log.log(Log::Level::SEVERE, info);
-						return  false;
-					}
+                                        auto msg = jsonHandler->parseResponseMessage(msgInfo->method, visitor);
+                                        if (msg) {
+                                                mainLoop(std::move(msg));
+                                        }
+                                        else
+                                        {
+                                                std::string info = "Unknown response message :\n";
+                                                info += content;
+                                                d_ptr->log.log(Log::Level::SEVERE, info);
+                                                return  false;
+                                        }
 
-				}
-			}
-			else if (isNotificationMessage(visitor))
-			{
-				auto msg = jsonHandler->parseNotificationMessage(visitor["method"]->GetString(), visitor);
-				if (!msg)
-				{
-					std::string info = "Unknown notification message :\n";
-					info += content;
-					d_ptr->log.log(Log::Level::SEVERE, info);
-					return  false;
-				}
-				mainLoop(std::move(msg));
-			}
-			else
-			{
-				std::string info = "Unknown lsp message when consumer message:\n";
-				info += content;
-				d_ptr->log.log(Log::Level::WARNING, info);
-				return false;
-			}
-		}
-		catch (std::exception& e)
-		{
+                                }
+                        }
+                        else if (isNotificationMessage(visitor))
+                        {
+                                auto msg = jsonHandler->parseNotificationMessage(visitor["method"]->GetString(), visitor);
+                                if (!msg)
+                                {
+                                        std::string info = "Unknown notification message :\n";
+                                        info += content;
+                                        d_ptr->log.log(Log::Level::SEVERE, info);
+                                        return  false;
+                                }
+                                mainLoop(std::move(msg));
+                        }
+                        else
+                        {
+                                std::string info = "Unknown lsp message when consumer message:\n";
+                                info += content;
+                                d_ptr->log.log(Log::Level::WARNING, info);
+                                return false;
+                        }
+                }
+                catch (std::exception& e)
+                {
 
-			std::string info = "Exception  when process ";
-			if(_kind==LspMessage::REQUEST_MESSAGE)
-			{
-				info += "request";
-			}
-			if (_kind == LspMessage::RESPONCE_MESSAGE)
-			{
-				info += "response";
-			}
-			else
-			{
-				info += "notification";
-			}
-			info += " message:\n";
-			info += e.what();
-			std::string reason = "Reason:" + info + "\n";
-			reason += "content:\n" + content;
-			d_ptr->log.log(Log::Level::SEVERE, reason);
-			return false;
-		}
-	return  true;
+                        std::string info = "Exception  when process ";
+                        if(_kind==LspMessage::REQUEST_MESSAGE)
+                        {
+                                info += "request";
+                        }
+                        if (_kind == LspMessage::RESPONCE_MESSAGE)
+                        {
+                                info += "response";
+                        }
+                        else
+                        {
+                                info += "notification";
+                        }
+                        info += " message:\n";
+                        info += e.what();
+                        std::string reason = "Reason:" + info + "\n";
+                        reason += "content:\n" + content;
+                        d_ptr->log.log(Log::Level::SEVERE, reason);
+                        return false;
+                }
+        return  true;
 }
 
 
 
-void RemoteEndPoint::internalSendRequest( RequestInMessage& info, GenericResponseHandler handler)
+bool RemoteEndPoint::internalSendRequest(RequestInMessage& info, GenericResponseHandler handler)
 {
-	std::lock_guard<std::mutex> lock(m_sendMutex);
-	if (!d_ptr->output || d_ptr->output->bad())
-	{
-		std::string desc = "Output isn't good any more:\n";
-		d_ptr->log.log(Log::Level::INFO, desc);
-		return ;
-	}
-	d_ptr->pendingRequest(info, std::move(handler));
-	WriterMsg(d_ptr->output, info);
+        std::lock_guard<std::mutex> lock(m_sendMutex);
+        if (!d_ptr->output || d_ptr->output->bad())
+        {
+                std::string desc = "Output isn't good any more:\n";
+                d_ptr->log.log(Log::Level::WARNING, desc);
+                return false;
+        }
+        if(!d_ptr->pendingRequest(info, std::move(handler)))
+    {
+        std::string desc = "Duplicate id  which of request:";
+        desc += info.ToJson();
+        desc += "\n";
+        d_ptr->log.log(Log::Level::WARNING, desc);
+    }
+        WriterMsg(d_ptr->output, info);
+    return true;
 }
 
-
+int RemoteEndPoint::getNextRequestId(){
+    return   d_ptr->getNextRequestId();
+}
+bool RemoteEndPoint::cancelRequest(const lsRequestId& id){
+    if(!isWorking()){
+        return false;
+    }
+    auto msgInfo = d_ptr->getRequestInfo(id);
+    if (msgInfo){
+        Notify_Cancellation::notify cancel_notify;
+        cancel_notify.params.id = id;
+        send(cancel_notify);
+        return true;
+    }
+    return false;
+}
 std::unique_ptr<LspMessage> RemoteEndPoint::internalWaitResponse(RequestInMessage& request, unsigned time_out)
 {
-	auto  eventFuture = std::make_shared< Condition< LspMessage > >();
-	internalSendRequest(request, [=](std::unique_ptr<LspMessage> data)
-	{
-		eventFuture->notify(std::move(data));
-		return  true;
-	});
-	return   eventFuture->wait(time_out);
+        auto  eventFuture = std::make_shared< Condition< LspMessage > >();
+        internalSendRequest(request, [=](std::unique_ptr<LspMessage> data)
+        {
+                eventFuture->notify(std::move(data));
+                return  true;
+        });
+        return   eventFuture->wait(time_out);
 }
 
 void RemoteEndPoint::mainLoop(std::unique_ptr<LspMessage>msg)
 {
-	if(d_ptr->quit.load(std::memory_order_relaxed))
-	{
-		return;
-	}
-	const auto _kind = msg->GetKid();
-	if (_kind == LspMessage::REQUEST_MESSAGE)
-	{
-		auto req = static_cast<RequestInMessage*>(msg.get());
-		// Calls can be canceled by the client. Add cancellation context.
-		WithContext WithCancel(d_ptr->cancelableRequestContext(req->id));
-		local_endpoint->onRequest(std::move(msg));
-	}
+        if(d_ptr->quit.load(std::memory_order_relaxed))
+        {
+                return;
+        }
+        const auto _kind = msg->GetKid();
+        if (_kind == LspMessage::REQUEST_MESSAGE)
+        {
+                auto req = static_cast<RequestInMessage*>(msg.get());
+                // Calls can be canceled by the client. Add cancellation context.
+                WithContext WithCancel(d_ptr->cancelableRequestContext(req->id));
+                local_endpoint->onRequest(std::move(msg));
+        }
 
-	else if (_kind == LspMessage::RESPONCE_MESSAGE)
-	{
-		auto response = static_cast<ResponseInMessage*>(msg.get());
-		auto msgInfo = d_ptr->getRequestInfo(response->id);
-		if (!msgInfo)
-		{
-			const auto _method_desc = msg->GetMethodType();
-			local_endpoint->onResponse(_method_desc, std::move(msg));
-		}
-		else
-		{
-			bool needLocal = true;
-			if (msgInfo->futureInfo)
-			{
-				if (msgInfo->futureInfo(std::move(msg)))
-				{
-					needLocal = false;
-				}
-			}
-			if (needLocal)
-			{
-				local_endpoint->onResponse(msgInfo->method, std::move(msg));
-			}
-			d_ptr->removeRequestInfo(response->id);
-		}
-	}
-	else if (_kind == LspMessage::NOTIFICATION_MESSAGE)
-	{
-		if (strcmp(Notify_Cancellation::notify::kMethodInfo, msg->GetMethodType())==0)
-		{
-			d_ptr->onCancel(static_cast<Notify_Cancellation::notify*>(msg.get()));
-		}
-		else
-		{
-			local_endpoint->notify(std::move(msg));
-		}
+        else if (_kind == LspMessage::RESPONCE_MESSAGE)
+        {
+                const auto id = static_cast<ResponseInMessage*>(msg.get())->id;
+                auto msgInfo = d_ptr->getRequestInfo(id);
+                if (!msgInfo)
+                {
+                        const auto _method_desc = msg->GetMethodType();
+                        local_endpoint->onResponse(_method_desc, std::move(msg));
+                }
+                else
+                {
+                        bool needLocal = true;
+                        if (msgInfo->futureInfo)
+                        {
+                                if (msgInfo->futureInfo(std::move(msg)))
+                                {
+                                        needLocal = false;
+                                }
+                        }
+                        if (needLocal)
+                        {
+                                local_endpoint->onResponse(msgInfo->method, std::move(msg));
+                        }
+                        d_ptr->removeRequestInfo(id);
+                }
+        }
+        else if (_kind == LspMessage::NOTIFICATION_MESSAGE)
+        {
+                if (strcmp(Notify_Cancellation::notify::kMethodInfo, msg->GetMethodType())==0)
+                {
+                        d_ptr->onCancel(static_cast<Notify_Cancellation::notify*>(msg.get()));
+                }
+                else
+                {
+                        local_endpoint->notify(std::move(msg));
+                }
 
-	}
-	else
-	{
-		std::string info = "Unknown lsp message  when process  message  in mainLoop:\n";
-		d_ptr->log.log(Log::Level::WARNING, info);
-	}
+        }
+        else
+        {
+                std::string info = "Unknown lsp message  when process  message  in mainLoop:\n";
+                d_ptr->log.log(Log::Level::WARNING, info);
+        }
 }
 
 void RemoteEndPoint::handle(std::vector<MessageIssue>&& issue)
 {
-	for(auto& it : issue)
-	{
-		d_ptr->log.log(it.code, it.text);
-	}
+        for(auto& it : issue)
+        {
+                d_ptr->log.log(it.code, it.text);
+        }
 }
 
 void RemoteEndPoint::handle(MessageIssue&& issue)
 {
-	d_ptr->log.log(issue.code, issue.text);
+        d_ptr->log.log(issue.code, issue.text);
 }
 
 
 void RemoteEndPoint::startProcessingMessages(std::shared_ptr<lsp::istream> r,
-	std::shared_ptr<lsp::ostream> w)
+        std::shared_ptr<lsp::ostream> w)
 {
-	d_ptr->quit.store(false, std::memory_order_relaxed);
-	d_ptr->input = r;
-	d_ptr->output = w;
-	d_ptr->message_producer->bind(r);
-	message_producer_thread_ = std::make_shared<std::thread>([&]()
+        d_ptr->quit.store(false, std::memory_order_relaxed);
+        d_ptr->input = r;
+        d_ptr->output = w;
+        d_ptr->message_producer->bind(r);
+    d_ptr->tp = std::make_shared<boost::asio::thread_pool>(d_ptr->max_workers);
+        message_producer_thread_ = std::make_shared<std::thread>([&]()
    {
-		d_ptr->message_producer->listen([&](std::string&& content){
-			const auto temp = std::make_shared<std::string>(std::move(content));
-				d_ptr->tp.schedule([this, temp]{
+                d_ptr->message_producer->listen([&](std::string&& content){
+                        const auto temp = std::make_shared<std::string>(std::move(content));
+            boost::asio::post(*d_ptr->tp,
+                        [this, temp]{
 #ifdef USEGC
                         GCThreadContext gcContext;
 #endif
 
-						dispatch(*temp);
-				});
-		});
-	});
+                                                dispatch(*temp);
+                                });
+                });
+        });
 }
 
-void RemoteEndPoint::Stop()
+void RemoteEndPoint::stop()
 {
-	if(message_producer_thread_ && message_producer_thread_->joinable())
-	{
-		message_producer_thread_->detach();
-	}
-	d_ptr->clear();
+        if(message_producer_thread_ && message_producer_thread_->joinable())
+        {
+                message_producer_thread_->detach();
+        message_producer_thread_ = nullptr;
+        }
+        d_ptr->clear();
 
 }
 
@@ -600,13 +631,19 @@
 void RemoteEndPoint::sendMsg( LspMessage& msg)
 {
 
-	std::lock_guard<std::mutex> lock(m_sendMutex);
-	if (!d_ptr->output || d_ptr->output->bad())
-	{
-		std::string info = "Output isn't good any more:\n";
-		d_ptr->log.log(Log::Level::INFO, info);
-		return;
-	}
-	WriterMsg(d_ptr->output, msg);
+        std::lock_guard<std::mutex> lock(m_sendMutex);
+        if (!d_ptr->output || d_ptr->output->bad())
+        {
+                std::string info = "Output isn't good any more:\n";
+                d_ptr->log.log(Log::Level::INFO, info);
+                return;
+        }
+        WriterMsg(d_ptr->output, msg);
 
 }
+
+bool RemoteEndPoint::isWorking() const {
+    if (message_producer_thread_ && message_producer_thread_->joinable())
+        return true;
+    return  false;
+}

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/StreamMessageProducer.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/StreamMessageProducer.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/StreamMessageProducer.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -7,185 +7,185 @@
 
 bool StartsWith(std::string value, std::string start);
 bool StartsWith(std::string value, std::string start) {
-	if (start.size() > value.size())
-		return false;
-	return std::equal(start.begin(), start.end(), value.begin());
+        if (start.size() > value.size())
+                return false;
+        return std::equal(start.begin(), start.end(), value.begin());
 }
 
 using  namespace std;
 namespace
 {
-	string JSONRPC_VERSION = "2.0";
-	string CONTENT_LENGTH_HEADER = "Content-Length";
-	string CONTENT_TYPE_HEADER = "Content-Type";
-	string JSON_MIME_TYPE = "application/json";
-	string CRLF = "\r\n";
+        string JSONRPC_VERSION = "2.0";
+        string CONTENT_LENGTH_HEADER = "Content-Length";
+        string CONTENT_TYPE_HEADER = "Content-Type";
+        string JSON_MIME_TYPE = "application/json";
+        string CRLF = "\r\n";
 
 }
 
   void StreamMessageProducer::parseHeader(std::string& line, StreamMessageProducer::Headers& headers)
   {
-	  int sepIndex = line.find(':');
-	  if (sepIndex >= 0) {
-		  auto key = line.substr(0, sepIndex);
-	      if(key == CONTENT_LENGTH_HEADER)
-	      {	
-			headers.contentLength = atoi(line.substr(sepIndex + 1).data());
-	      }
-		  else if(key == CONTENT_TYPE_HEADER)
-		  {
-			  int charsetIndex = line.find("charset=");
-			  if (charsetIndex >= 0)
-				  headers.charset = line.substr(charsetIndex + 8);
-		  }
-	  }
+          int sepIndex = line.find(':');
+          if (sepIndex >= 0) {
+                  auto key = line.substr(0, sepIndex);
+              if(key == CONTENT_LENGTH_HEADER)
+              {
+                        headers.contentLength = atoi(line.substr(sepIndex + 1).data());
+              }
+                  else if(key == CONTENT_TYPE_HEADER)
+                  {
+                          int charsetIndex = line.find("charset=");
+                          if (charsetIndex >= 0)
+                                  headers.charset = line.substr(charsetIndex + 8);
+                  }
+          }
   }
-  
 
+
 void StreamMessageProducer::listen(MessageConsumer callBack)
 {
-  	if(!input)
-		return;
-  	
-	keepRunning = true;
-	bool newLine = false;
-	Headers headers;
-	string headerBuilder ;
-	string debugBuilder ;
-	// Read the content length. It is terminated by the "\r\n" sequence.
-	while (keepRunning) 
-	{
-		if(input->bad())
-		{
-			std::string info = "Input stream is bad.";
-			auto what = input->what();
-			if (what.size())
-			{
-				info += "Reason:";
-				info += input->what();
-			}
-			MessageIssue issue(info, lsp::Log::Level::SEVERE);
-			issueHandler.handle(std::move(issue));
-			return;
-		}
-		if(input->fail())
-		{
-			std::string info = "Input fail.";
-			auto what = input->what();
-			if(what.size())
-			{
-				info += "Reason:";
-				info += input->what();
-			}
-			MessageIssue issue(info, lsp::Log::Level::WARNING);
-			issueHandler.handle(std::move(issue));
-			if(input->need_to_clear_the_state())
-				input->clear();
-			else
-			{
-				return;
-			}
-		}
-		int c = input->get();
-		if (c == EOF) {
-			// End of input stream has been reached
-			keepRunning = false;
-		}
-		else 
-		{
+        if(!input)
+                return;
 
-			debugBuilder.push_back((char)c);
-			if (c == '\n') 
-			{
-				if (newLine) {
-					// Two consecutive newlines have been read, which signals the start of the message content
-					if (headers.contentLength <= 0) 
-					{
-						string info = "Unexpected token:" + debugBuilder;
-						info = +"  (expected Content-Length: sequence);";
-						 MessageIssue issue(info, lsp::Log::Level::WARNING);
-						 issueHandler.handle(std::move(issue));
-					}
-					else {
-						bool result = handleMessage(headers,callBack);
-						if (!result)
-							keepRunning = false;
-						newLine = false;
-					}
-					headers.clear();
-					debugBuilder.clear();
-				}
-				else if (!headerBuilder.empty()) {
-					// A single newline ends a header line
-					parseHeader(headerBuilder, headers);
-					headerBuilder.clear();
-				}
-				newLine = true;
-			}
-			else if (c != '\r') {
-				// Add the input to the current header line
-				
-				headerBuilder.push_back((char)c);
-				newLine = false;
-			}
-		}
-	}
+        keepRunning = true;
+        bool newLine = false;
+        Headers headers;
+        string headerBuilder ;
+        string debugBuilder ;
+        // Read the content length. It is terminated by the "\r\n" sequence.
+        while (keepRunning)
+        {
+                if(input->bad())
+                {
+                        std::string info = "Input stream is bad.";
+                        auto what = input->what();
+                        if (what.size())
+                        {
+                                info += "Reason:";
+                                info += input->what();
+                        }
+                        MessageIssue issue(info, lsp::Log::Level::SEVERE);
+                        issueHandler.handle(std::move(issue));
+                        return;
+                }
+                if(input->fail())
+                {
+                        std::string info = "Input fail.";
+                        auto what = input->what();
+                        if(what.size())
+                        {
+                                info += "Reason:";
+                                info += input->what();
+                        }
+                        MessageIssue issue(info, lsp::Log::Level::WARNING);
+                        issueHandler.handle(std::move(issue));
+                        if(input->need_to_clear_the_state())
+                                input->clear();
+                        else
+                        {
+                                return;
+                        }
+                }
+                int c = input->get();
+                if (c == EOF) {
+                        // End of input stream has been reached
+                        keepRunning = false;
+                }
+                else
+                {
 
+                        debugBuilder.push_back((char)c);
+                        if (c == '\n')
+                        {
+                                if (newLine) {
+                                        // Two consecutive newlines have been read, which signals the start of the message content
+                                        if (headers.contentLength <= 0)
+                                        {
+                                                string info = "Unexpected token:" + debugBuilder;
+                                                info = +"  (expected Content-Length: sequence);";
+                                                 MessageIssue issue(info, lsp::Log::Level::WARNING);
+                                                 issueHandler.handle(std::move(issue));
+                                        }
+                                        else {
+                                                bool result = handleMessage(headers,callBack);
+                                                if (!result)
+                                                        keepRunning = false;
+                                                newLine = false;
+                                        }
+                                        headers.clear();
+                                        debugBuilder.clear();
+                                }
+                                else if (!headerBuilder.empty()) {
+                                        // A single newline ends a header line
+                                        parseHeader(headerBuilder, headers);
+                                        headerBuilder.clear();
+                                }
+                                newLine = true;
+                        }
+                        else if (c != '\r') {
+                                // Add the input to the current header line
+
+                                headerBuilder.push_back((char)c);
+                                newLine = false;
+                        }
+                }
+        }
+
 }
 
 void StreamMessageProducer::bind(std::shared_ptr<lsp::istream>_in)
 {
-	input = _in;
+        input = _in;
 }
 
 bool StreamMessageProducer::handleMessage(Headers& headers ,MessageConsumer callBack)
 {
-	 		 // Read content.
-	auto content_length = headers.contentLength;
- 	 std::string content(content_length,0);
- 	 auto data = &content[0];
-	 input->read(data, content_length);
-	 if (input->bad())
-	 {
-		 std::string info = "Input stream is bad.";
-		 auto what = input->what();
-		 if (!what.empty())
-		 {
-			 info += "Reason:";
-			 info += input->what();
-		 }
-		 MessageIssue issue(info, lsp::Log::Level::SEVERE);
-		 issueHandler.handle(std::move(issue));
-		 return false;
-	 }
+                         // Read content.
+        auto content_length = headers.contentLength;
+         std::string content(content_length,0);
+         auto data = &content[0];
+         input->read(data, content_length);
+         if (input->bad())
+         {
+                 std::string info = "Input stream is bad.";
+                 auto what = input->what();
+                 if (!what.empty())
+                 {
+                         info += "Reason:";
+                         info += input->what();
+                 }
+                 MessageIssue issue(info, lsp::Log::Level::SEVERE);
+                 issueHandler.handle(std::move(issue));
+                 return false;
+         }
 
-	 if (input->eof())
-	 {
-		 MessageIssue issue("No more input when reading content body", lsp::Log::Level::INFO);
-		 issueHandler.handle(std::move(issue));
-		 return false;
-	 }
-	 if (input->fail())
-	 {
-		 std::string info = "Input fail.";
-		 auto what = input->what();
-		 if (!what.empty())
-		 {
-			 info += "Reason:";
-			 info += input->what();
-		 }
-		 MessageIssue issue(info, lsp::Log::Level::WARNING);
-		 issueHandler.handle(std::move(issue));
-		 if (input->need_to_clear_the_state())
-			 input->clear();
-		 else
-		 {
-			 return false;
-		 }
-	 }
+         if (input->eof())
+         {
+                 MessageIssue issue("No more input when reading content body", lsp::Log::Level::INFO);
+                 issueHandler.handle(std::move(issue));
+                 return false;
+         }
+         if (input->fail())
+         {
+                 std::string info = "Input fail.";
+                 auto what = input->what();
+                 if (!what.empty())
+                 {
+                         info += "Reason:";
+                         info += input->what();
+                 }
+                 MessageIssue issue(info, lsp::Log::Level::WARNING);
+                 issueHandler.handle(std::move(issue));
+                 if (input->need_to_clear_the_state())
+                         input->clear();
+                 else
+                 {
+                         return false;
+                 }
+         }
 
-	 callBack(std::move(content));
- 	
-	return true;
+         callBack(std::move(content));
+
+        return true;
 }
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/TcpServer.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -11,39 +11,39 @@
 
 
 namespace lsp {
-	struct tcp_connect_session;
+        struct tcp_connect_session;
 
 
-		class tcp_stream_wrapper :public istream, public ostream
-	    {
-	    public:
-		    tcp_stream_wrapper(tcp_connect_session& _w);
+                class tcp_stream_wrapper :public istream, public ostream
+            {
+            public:
+                    tcp_stream_wrapper(tcp_connect_session& _w);
 
-	        tcp_connect_session& session;
-	        std::atomic<bool> quit{};
-	        std::shared_ptr < MultiQueueWaiter> request_waiter;
-	        ThreadedQueue< char > on_request;
+                tcp_connect_session& session;
+                std::atomic<bool> quit{};
+                std::shared_ptr < MultiQueueWaiter> request_waiter;
+                ThreadedQueue< char > on_request;
             std::string error_message;
 
 
-	        bool fail() override
-	        {
-	            return  bad();
-	        }
+                bool fail() override
+                {
+                    return  bad();
+                }
 
 
 
-	        bool eof() override
-	        {
-	            return  bad();
-	        }
-	        bool good() override
-	        {
-	            return  !bad();
-	        }
-	        tcp_stream_wrapper& read(char* str, std::streamsize count)
+                bool eof() override
+                {
+                    return  bad();
+                }
+                bool good() override
+                {
+                    return  !bad();
+                }
+                tcp_stream_wrapper& read(char* str, std::streamsize count)
                   override
-	        {
+                {
                 auto some = on_request.TryDequeueSome(static_cast<size_t>( count ));
                 memcpy(str,some.data(),some.size());
                 for (std::streamsize i = some.size(); i < count; ++i)
@@ -51,41 +51,41 @@
                     str[i] = static_cast<char>(get());
                 }
 
-	            return *this;
-	        }
-	        int get() override
-	        {
-	            return on_request.Dequeue();
-	        }
+                    return *this;
+                }
+                int get() override
+                {
+                    return on_request.Dequeue();
+                }
 
-	        bool bad() override;
+                bool bad() override;
 
-	        tcp_stream_wrapper& write(const std::string& c) override;
+                tcp_stream_wrapper& write(const std::string& c) override;
 
-	        tcp_stream_wrapper& write(std::streamsize _s) override;
+                tcp_stream_wrapper& write(std::streamsize _s) override;
 
-	        tcp_stream_wrapper& flush() override
-	        {
-	            return *this;
-	        }
-	        void reset_state()
-	        {
-	            return;
-	        }
+                tcp_stream_wrapper& flush() override
+                {
+                    return *this;
+                }
+                void reset_state()
+                {
+                    return;
+                }
 
-		    void clear() override
-	        {
+                    void clear() override
+                {
 
-	        }
+                }
 
-		    std::string what() override;
-		    bool need_to_clear_the_state() override
-		    {
+                    std::string what() override;
+                    bool need_to_clear_the_state() override
+                    {
                 return false;
-		    }
-	    };
-	    struct tcp_connect_session:std::enable_shared_from_this<tcp_connect_session>
-	    {
+                    }
+            };
+            struct tcp_connect_session:std::enable_shared_from_this<tcp_connect_session>
+            {
             /// Buffer for incoming data.
             std::array<unsigned char, 8192> buffer_;
             boost::asio::ip::tcp::socket socket_;
@@ -93,7 +93,7 @@
             boost::asio::io_context::strand strand_;
             std::shared_ptr<tcp_stream_wrapper>  proxy_;
             explicit tcp_connect_session(boost::asio::io_context& io_context, boost::asio::ip::tcp::socket&& _socket)
-	            : socket_(std::move(_socket)), strand_(io_context), proxy_(new tcp_stream_wrapper(*this))
+                    : socket_(std::move(_socket)), strand_(io_context), proxy_(new tcp_stream_wrapper(*this))
             {
                 do_read();
             }
@@ -127,22 +127,22 @@
 
                 }));
             }
-	    };
+            };
 
-	tcp_stream_wrapper::tcp_stream_wrapper(tcp_connect_session& _w): session(_w)
-	{
-	}
+        tcp_stream_wrapper::tcp_stream_wrapper(tcp_connect_session& _w): session(_w)
+        {
+        }
 
-	bool tcp_stream_wrapper::bad()
+        bool tcp_stream_wrapper::bad()
     {
         return !session.socket_.is_open();
     }
 
-	tcp_stream_wrapper& tcp_stream_wrapper::write(const std::string& c)
-	{
-		session.do_write(c);
-		return *this;
-	}
+        tcp_stream_wrapper& tcp_stream_wrapper::write(const std::string& c)
+        {
+                session.do_write(c);
+                return *this;
+        }
 
     tcp_stream_wrapper& tcp_stream_wrapper::write(std::streamsize _s)
     {
@@ -150,8 +150,8 @@
         return *this;
     }
 
-	std::string tcp_stream_wrapper::what()
-	{
+        std::string tcp_stream_wrapper::what()
+        {
         if (error_message.size())
             return error_message;
 
@@ -159,21 +159,21 @@
        {
            return  "Socket is not open.";
        }
-		return {};
-	}
+                return {};
+        }
 
     struct TcpServer::Data
     {
         Data(
             lsp::Log& log, uint32_t _max_workers) :
-		    acceptor_(io_context_), _log(log)
-	    {
-	    }
+                    acceptor_(io_context_), _log(log)
+            {
+            }
 
-	    ~Data()
-	    {
+            ~Data()
+            {
 
-	    }
+            }
         /// The io_context used to perform asynchronous operations.
         boost::asio::io_context io_context_;
 
@@ -187,10 +187,10 @@
 
     };
 
-	    TcpServer::~TcpServer()
-	    {
+            TcpServer::~TcpServer()
+            {
             delete d_ptr;
-	    }
+            }
 
         TcpServer::TcpServer(const std::string& address, const std::string& port,
             std::shared_ptr < MessageJsonHandler> json_handler,
@@ -238,7 +238,7 @@
         {
             try
             {
-            	if(d_ptr->work)
+                if(d_ptr->work)
                     d_ptr->work.reset();
 
                 do_stop();
@@ -262,17 +262,17 @@
 
                     if (!ec)
                     {
-                    	if(d_ptr->_connect_session)
-                    	{
-                    		if(d_ptr->_connect_session->socket_.is_open())
-                    		{
+                        if(d_ptr->_connect_session)
+                        {
+                                if(d_ptr->_connect_session->socket_.is_open())
+                                {
                                 std::string desc = "Disconnect previous client " + d_ptr->_connect_session->socket_.local_endpoint().address().to_string();
                                 d_ptr->_log.log(lsp::Log::Level::INFO, desc);
                                 d_ptr->_connect_session->socket_.close();
-                    		}
+                                }
 
-                            point.Stop();
-                    	}
+                            point.stop();
+                        }
                         auto local_point = socket.local_endpoint();
 
                         std::string desc = ("New client " + local_point.address().to_string() + " connect.");
@@ -289,7 +289,7 @@
         {
             d_ptr->acceptor_.close();
 
-           point.Stop();
+            point.stop();
 
         }
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/WebSocketServer.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/WebSocketServer.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/WebSocketServer.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -115,11 +115,11 @@
 
         void close()
         {
-        	if(ws_.is_open())
-        	{
-        		boost::system::error_code ec;
-        		ws_.close(websocket::close_code::normal, ec);
-        	}
+                if(ws_.is_open())
+                {
+                        boost::system::error_code ec;
+                        ws_.close(websocket::close_code::normal, ec);
+                }
 
         }
     };
@@ -126,18 +126,18 @@
 
     //------------------------------------------------------------------------------
 
-	    struct WebSocketServer::Data
-	    {
+            struct WebSocketServer::Data
+            {
             Data(const std::string& user_agent, lsp::Log& log) :
-			    acceptor_(io_context_), user_agent_(user_agent), _log(log)
+                            acceptor_(io_context_), user_agent_(user_agent), _log(log)
 
-		    {
-		    }
+                    {
+                    }
 
-	    	~Data()
-		    {
+                ~Data()
+                    {
 
-		    }
+                    }
             /// The io_context used to perform asynchronous operations.
             boost::asio::io_context io_context_;
 
@@ -151,68 +151,68 @@
             std::string user_agent_;
             lsp::Log& _log;
 
-	    };
+            };
 
     websocket_stream_wrapper::websocket_stream_wrapper(boost::beast::websocket::stream<boost::beast::tcp_stream>& _w):
-	    ws_(_w), request_waiter(new MultiQueueWaiter()),
-	    on_request(request_waiter)
+            ws_(_w), request_waiter(new MultiQueueWaiter()),
+            on_request(request_waiter)
     {
     }
 
     bool websocket_stream_wrapper::fail()
     {
-	    return bad();
+            return bad();
     }
 
     bool websocket_stream_wrapper::eof()
     {
-	    return bad();
+            return bad();
     }
 
     bool websocket_stream_wrapper::good()
     {
-	    return !bad();
+            return !bad();
     }
 
     websocket_stream_wrapper& websocket_stream_wrapper::read(char* str, std::streamsize count)
     {
-	    auto some = on_request.TryDequeueSome(static_cast<size_t>(count));
+            auto some = on_request.TryDequeueSome(static_cast<size_t>(count));
         memcpy(str,some.data(),some.size());
         for (std::streamsize i = some.size(); i < count; ++i)
         {
             str[i] = static_cast<char>(get());
         }
-	    return *this;
+            return *this;
     }
 
     int websocket_stream_wrapper::get()
     {
-	    return on_request.Dequeue();
+            return on_request.Dequeue();
     }
 
     bool websocket_stream_wrapper::bad()
     {
-	    return !ws_.next_layer().socket().is_open();
+            return !ws_.next_layer().socket().is_open();
     }
 
     websocket_stream_wrapper& websocket_stream_wrapper::write(const std::string& c)
     {
-	    ws_.write(boost::asio::buffer(std::string(c)));
-	    return *this;
+            ws_.write(boost::asio::buffer(std::string(c)));
+            return *this;
     }
 
 
     websocket_stream_wrapper& websocket_stream_wrapper::write(std::streamsize _s)
     {
-	    std::ostringstream temp;
-	    temp << _s;
-	    ws_.write(boost::asio::buffer(temp.str()));
-	    return *this;
+            std::ostringstream temp;
+            temp << _s;
+            ws_.write(boost::asio::buffer(temp.str()));
+            return *this;
     }
 
     websocket_stream_wrapper& websocket_stream_wrapper::flush()
     {
-	    return *this;
+            return *this;
     }
 
     void websocket_stream_wrapper::clear()
@@ -224,17 +224,17 @@
             if (!error_message.empty())
                      return  error_message;
 
-	    if (!ws_.next_layer().socket().is_open())
-	    {
-		    return "Socket is not open.";
-	    }
-	    return {};
+            if (!ws_.next_layer().socket().is_open())
+            {
+                    return "Socket is not open.";
+            }
+            return {};
     }
 
     WebSocketServer::~WebSocketServer()
-	    {
+            {
             delete d_ptr;
-	    }
+            }
 
         WebSocketServer::WebSocketServer(const std::string& user_agent, const std::string& address, const std::string& port,
             std::shared_ptr < MessageJsonHandler> json_handler,
@@ -282,7 +282,7 @@
         {
             try
             {
-            	if(d_ptr->work)
+                if(d_ptr->work)
                     d_ptr->work.reset();
 
                 do_stop();
@@ -305,17 +305,17 @@
                     }
                     if (!ec)
                     {
-                    	if(d_ptr->_server_session)
-                    	{
-	                        try
-	                        {
+                        if(d_ptr->_server_session)
+                        {
+                                try
+                                {
                                 d_ptr->_server_session->close();
-                                point.Stop();
-	                        }
-	                        catch (...)
-	                        {
-	                        }
-                    	}
+                                point.stop();
+                                }
+                                catch (...)
+                                {
+                                }
+                        }
                         d_ptr->_server_session = std::make_shared<server_session>(std::move(socket), d_ptr->user_agent_);
                         d_ptr->_server_session->run();
 
@@ -330,7 +330,7 @@
         {
             d_ptr->acceptor_.close();
 
-          point.Stop();
+            point.stop();
 
         }
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/message.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/message.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/message.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,81 +8,81 @@
 #include "LibLsp/JsonRpc/json.h"
 
 void LspMessage::Write(std::ostream& out) {
-	rapidjson::StringBuffer output;
-	rapidjson::Writer<rapidjson::StringBuffer> writer(output);
-	JsonWriter json_writer{ &writer };
-	ReflectWriter(json_writer);
+        rapidjson::StringBuffer output;
+        rapidjson::Writer<rapidjson::StringBuffer> writer(output);
+        JsonWriter json_writer{ &writer };
+        ReflectWriter(json_writer);
 
-	const auto value = std::string("Content-Length: ") + std::to_string(output.GetSize()) + "\r\n\r\n" + output.GetString();
-	out << value;
-	out.flush();
+        const auto value = std::string("Content-Length: ") + std::to_string(output.GetSize()) + "\r\n\r\n" + output.GetString();
+        out << value;
+        out.flush();
 }
 
 std::string LspMessage::ToJson() {
-	rapidjson::StringBuffer output;
-	rapidjson::Writer<rapidjson::StringBuffer> writer(output);
-	JsonWriter json_writer{ &writer };
-	this->ReflectWriter(json_writer);
-	return  output.GetString();
+        rapidjson::StringBuffer output;
+        rapidjson::Writer<rapidjson::StringBuffer> writer(output);
+        JsonWriter json_writer{ &writer };
+        this->ReflectWriter(json_writer);
+        return  output.GetString();
 }
 
 void Reflect(Reader& visitor, lsRequestId& value) {
-	if (visitor.IsInt()) {
-		value.type = lsRequestId::kInt;
-		value.value = visitor.GetInt();
-	}
-	else if (visitor.IsInt64()) {
-		value.type = lsRequestId::kInt;
-		// `lsRequestId.value` is an `int`, so we're forced to truncate.
-		value.value = static_cast<int>(visitor.GetInt64());
-	}
-	else if (visitor.IsString()) {
-		value.type = lsRequestId::kString;
-		value.k_string = visitor.GetString();
-		value.value = atoi(value.k_string.c_str());
-		
-	}
-	else {
-		value.type = lsRequestId::kNone;
-		value.value = -1;
-	}
+        if (visitor.IsInt()) {
+                value.type = lsRequestId::kInt;
+                value.value = visitor.GetInt();
+        }
+        else if (visitor.IsInt64()) {
+                value.type = lsRequestId::kInt;
+                // `lsRequestId.value` is an `int`, so we're forced to truncate.
+                value.value = static_cast<int>(visitor.GetInt64());
+        }
+        else if (visitor.IsString()) {
+                value.type = lsRequestId::kString;
+                value.k_string = visitor.GetString();
+                value.value = atoi(value.k_string.c_str());
+
+        }
+        else {
+                value.type = lsRequestId::kNone;
+                value.value = -1;
+        }
 }
 
 void Reflect(Writer& visitor, lsRequestId& value) {
-	switch (value.type) {
-	case lsRequestId::kNone:
-		visitor.Null();
-		break;
-	case lsRequestId::kInt:
-		visitor.Int(value.value);
-		break;
-	case lsRequestId::kString:
-		
-		if(value.k_string.empty())
-		{
-			std::string str = std::to_string(value.value);
-			visitor.String(str.c_str(), str.length());
-		}
-		else
-		{
-			visitor.String(value.k_string.c_str(), value.k_string.length());
-		}
-		break;
-	}
+        switch (value.type) {
+        case lsRequestId::kNone:
+                visitor.Null();
+                break;
+        case lsRequestId::kInt:
+                visitor.Int(value.value);
+                break;
+        case lsRequestId::kString:
+
+                if(value.k_string.empty())
+                {
+                        std::string str = std::to_string(value.value);
+                        visitor.String(str.c_str(), str.length());
+                }
+                else
+                {
+                        visitor.String(value.k_string.c_str(), value.k_string.length());
+                }
+                break;
+        }
 }
 
 std::string ToString(const lsRequestId& id) {
-	if (id.type != lsRequestId::kNone)
-	{
-		if(id.type == lsRequestId::kString)
-		{
-			if (!id.k_string.empty())
-				return id.k_string;
-		}
-		return std::to_string(id.value);
-	}
-	
-	return "";
+        if (id.type != lsRequestId::kNone)
+        {
+                if(id.type == lsRequestId::kString)
+                {
+                        if (!id.k_string.empty())
+                                return id.k_string;
+                }
+                return std::to_string(id.value);
+        }
+
+        return "";
 }
 
 

Deleted: trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/optional.hpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/optional.hpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/optional.hpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,1846 +0,0 @@
-//
-// Copyright (c) 2014-2021 Martin Moene
-//
-// https://github.com/martinmoene/optional-lite
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#pragma once
-
-#ifndef NONSTD_OPTIONAL_LITE_HPP
-#define NONSTD_OPTIONAL_LITE_HPP
-
-#define optional_lite_MAJOR  3
-#define optional_lite_MINOR  5
-#define optional_lite_PATCH  0
-
-#define optional_lite_VERSION  optional_STRINGIFY(optional_lite_MAJOR) "." optional_STRINGIFY(optional_lite_MINOR) "." optional_STRINGIFY(optional_lite_PATCH)
-
-#define optional_STRINGIFY(  x )  optional_STRINGIFY_( x )
-#define optional_STRINGIFY_( x )  #x
-
-// optional-lite configuration:
-
-#define optional_OPTIONAL_DEFAULT  0
-#define optional_OPTIONAL_NONSTD   1
-#define optional_OPTIONAL_STD      2
-
-// tweak header support:
-
-#ifdef __has_include
-# if __has_include(<nonstd/optional.tweak.hpp>)
-#  include <nonstd/optional.tweak.hpp>
-# endif
-#define optional_HAVE_TWEAK_HEADER  1
-#else
-#define optional_HAVE_TWEAK_HEADER  0
-//# pragma message("optional.hpp: Note: Tweak header not supported.")
-#endif
-
-// optional selection and configuration:
-
-#if !defined( optional_CONFIG_SELECT_OPTIONAL )
-# define optional_CONFIG_SELECT_OPTIONAL  ( optional_HAVE_STD_OPTIONAL ? optional_OPTIONAL_STD : optional_OPTIONAL_NONSTD )
-#endif
-
-// Control presence of extensions:
-
-#ifndef optional_CONFIG_NO_EXTENSIONS
-#define optional_CONFIG_NO_EXTENSIONS  0
-#endif
-
-// Control presence of exception handling (try and auto discover):
-
-#ifndef optional_CONFIG_NO_EXCEPTIONS
-# if defined(_MSC_VER)
-# include <cstddef>     // for _HAS_EXCEPTIONS
-# endif
-# if defined(__cpp_exceptions) || defined(__EXCEPTIONS) || (_HAS_EXCEPTIONS)
-#  define optional_CONFIG_NO_EXCEPTIONS  0
-# else
-#  define optional_CONFIG_NO_EXCEPTIONS  1
-# endif
-#endif
-
-// C++ language version detection (C++20 is speculative):
-// Note: VC14.0/1900 (VS2015) lacks too much from C++14.
-
-#ifndef   optional_CPLUSPLUS
-# if defined(_MSVC_LANG ) && !defined(__clang__)
-#  define optional_CPLUSPLUS  (_MSC_VER == 1900 ? 201103L : _MSVC_LANG )
-# else
-#  define optional_CPLUSPLUS  __cplusplus
-# endif
-#endif
-
-#define optional_CPP98_OR_GREATER  ( optional_CPLUSPLUS >= 199711L )
-#define optional_CPP11_OR_GREATER  ( optional_CPLUSPLUS >= 201103L )
-#define optional_CPP11_OR_GREATER_ ( optional_CPLUSPLUS >= 201103L )
-#define optional_CPP14_OR_GREATER  ( optional_CPLUSPLUS >= 201402L )
-#define optional_CPP17_OR_GREATER  ( optional_CPLUSPLUS >= 201703L )
-#define optional_CPP20_OR_GREATER  ( optional_CPLUSPLUS >= 202000L )
-
-// C++ language version (represent 98 as 3):
-
-#define optional_CPLUSPLUS_V  ( optional_CPLUSPLUS / 100 - (optional_CPLUSPLUS > 200000 ? 2000 : 1994) )
-
-// Use C++17 std::optional if available and requested:
-
-#if optional_CPP17_OR_GREATER && defined(__has_include )
-# if __has_include( <optional> )
-#  define optional_HAVE_STD_OPTIONAL  1
-# else
-#  define optional_HAVE_STD_OPTIONAL  0
-# endif
-#else
-# define  optional_HAVE_STD_OPTIONAL  0
-#endif
-
-#define optional_USES_STD_OPTIONAL  ( (optional_CONFIG_SELECT_OPTIONAL == optional_OPTIONAL_STD) || ((optional_CONFIG_SELECT_OPTIONAL == optional_OPTIONAL_DEFAULT) && optional_HAVE_STD_OPTIONAL) )
-
-//
-// in_place: code duplicated in any-lite, expected-lite, optional-lite, value-ptr-lite, variant-lite:
-//
-
-#ifndef nonstd_lite_HAVE_IN_PLACE_TYPES
-#define nonstd_lite_HAVE_IN_PLACE_TYPES  1
-
-// C++17 std::in_place in <utility>:
-
-#if optional_CPP17_OR_GREATER
-
-#include <utility>
-
-namespace nonstd {
-
-using std::in_place;
-using std::in_place_type;
-using std::in_place_index;
-using std::in_place_t;
-using std::in_place_type_t;
-using std::in_place_index_t;
-
-#define nonstd_lite_in_place_t(      T)  std::in_place_t
-#define nonstd_lite_in_place_type_t( T)  std::in_place_type_t<T>
-#define nonstd_lite_in_place_index_t(K)  std::in_place_index_t<K>
-
-#define nonstd_lite_in_place(      T)    std::in_place_t{}
-#define nonstd_lite_in_place_type( T)    std::in_place_type_t<T>{}
-#define nonstd_lite_in_place_index(K)    std::in_place_index_t<K>{}
-
-} // namespace nonstd
-
-#else // optional_CPP17_OR_GREATER
-
-#include <cstddef>
-
-namespace nonstd {
-namespace detail {
-
-template< class T >
-struct in_place_type_tag {};
-
-template< std::size_t K >
-struct in_place_index_tag {};
-
-} // namespace detail
-
-struct in_place_t {};
-
-template< class T >
-inline in_place_t in_place( detail::in_place_type_tag<T> /*unused*/ = detail::in_place_type_tag<T>() )
-{
-    return in_place_t();
-}
-
-template< std::size_t K >
-inline in_place_t in_place( detail::in_place_index_tag<K> /*unused*/ = detail::in_place_index_tag<K>() )
-{
-    return in_place_t();
-}
-
-template< class T >
-inline in_place_t in_place_type( detail::in_place_type_tag<T> /*unused*/ = detail::in_place_type_tag<T>() )
-{
-    return in_place_t();
-}
-
-template< std::size_t K >
-inline in_place_t in_place_index( detail::in_place_index_tag<K> /*unused*/ = detail::in_place_index_tag<K>() )
-{
-    return in_place_t();
-}
-
-// mimic templated typedef:
-
-#define nonstd_lite_in_place_t(      T)  nonstd::in_place_t(&)( nonstd::detail::in_place_type_tag<T>  )
-#define nonstd_lite_in_place_type_t( T)  nonstd::in_place_t(&)( nonstd::detail::in_place_type_tag<T>  )
-#define nonstd_lite_in_place_index_t(K)  nonstd::in_place_t(&)( nonstd::detail::in_place_index_tag<K> )
-
-#define nonstd_lite_in_place(      T)    nonstd::in_place_type<T>
-#define nonstd_lite_in_place_type( T)    nonstd::in_place_type<T>
-#define nonstd_lite_in_place_index(K)    nonstd::in_place_index<K>
-
-} // namespace nonstd
-
-#endif // optional_CPP17_OR_GREATER
-#endif // nonstd_lite_HAVE_IN_PLACE_TYPES
-
-//
-// Using std::optional:
-//
-
-#if optional_USES_STD_OPTIONAL
-
-#include <optional>
-
-namespace nonstd {
-
-    using std::optional;
-    using std::bad_optional_access;
-    using std::hash;
-
-    using std::nullopt;
-    using std::nullopt_t;
-
-    using std::operator==;
-    using std::operator!=;
-    using std::operator<;
-    using std::operator<=;
-    using std::operator>;
-    using std::operator>=;
-    using std::make_optional;
-    using std::swap;
-}
-
-#else // optional_USES_STD_OPTIONAL
-
-#include <cassert>
-#include <utility>
-
-// optional-lite alignment configuration:
-
-#ifndef  optional_CONFIG_MAX_ALIGN_HACK
-# define optional_CONFIG_MAX_ALIGN_HACK  0
-#endif
-
-#ifndef  optional_CONFIG_ALIGN_AS
-// no default, used in #if defined()
-#endif
-
-#ifndef  optional_CONFIG_ALIGN_AS_FALLBACK
-# define optional_CONFIG_ALIGN_AS_FALLBACK  double
-#endif
-
-// Compiler warning suppression:
-
-#if defined(__clang__)
-# pragma clang diagnostic push
-# pragma clang diagnostic ignored "-Wundef"
-#elif defined(__GNUC__)
-# pragma GCC   diagnostic push
-# pragma GCC   diagnostic ignored "-Wundef"
-#elif defined(_MSC_VER )
-# pragma warning( push )
-#endif
-
-// half-open range [lo..hi):
-#define optional_BETWEEN( v, lo, hi ) ( (lo) <= (v) && (v) < (hi) )
-
-// Compiler versions:
-//
-// MSVC++  6.0  _MSC_VER == 1200  optional_COMPILER_MSVC_VERSION ==  60  (Visual Studio 6.0)
-// MSVC++  7.0  _MSC_VER == 1300  optional_COMPILER_MSVC_VERSION ==  70  (Visual Studio .NET 2002)
-// MSVC++  7.1  _MSC_VER == 1310  optional_COMPILER_MSVC_VERSION ==  71  (Visual Studio .NET 2003)
-// MSVC++  8.0  _MSC_VER == 1400  optional_COMPILER_MSVC_VERSION ==  80  (Visual Studio 2005)
-// MSVC++  9.0  _MSC_VER == 1500  optional_COMPILER_MSVC_VERSION ==  90  (Visual Studio 2008)
-// MSVC++ 10.0  _MSC_VER == 1600  optional_COMPILER_MSVC_VERSION == 100  (Visual Studio 2010)
-// MSVC++ 11.0  _MSC_VER == 1700  optional_COMPILER_MSVC_VERSION == 110  (Visual Studio 2012)
-// MSVC++ 12.0  _MSC_VER == 1800  optional_COMPILER_MSVC_VERSION == 120  (Visual Studio 2013)
-// MSVC++ 14.0  _MSC_VER == 1900  optional_COMPILER_MSVC_VERSION == 140  (Visual Studio 2015)
-// MSVC++ 14.1  _MSC_VER >= 1910  optional_COMPILER_MSVC_VERSION == 141  (Visual Studio 2017)
-// MSVC++ 14.2  _MSC_VER >= 1920  optional_COMPILER_MSVC_VERSION == 142  (Visual Studio 2019)
-
-#if defined(_MSC_VER ) && !defined(__clang__)
-# define optional_COMPILER_MSVC_VER      (_MSC_VER )
-# define optional_COMPILER_MSVC_VERSION  (_MSC_VER / 10 - 10 * ( 5 + (_MSC_VER < 1900 ) ) )
-#else
-# define optional_COMPILER_MSVC_VER      0
-# define optional_COMPILER_MSVC_VERSION  0
-#endif
-
-#define optional_COMPILER_VERSION( major, minor, patch )  ( 10 * (10 * (major) + (minor) ) + (patch) )
-
-#if defined(__GNUC__) && !defined(__clang__)
-# define optional_COMPILER_GNUC_VERSION   optional_COMPILER_VERSION(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
-#else
-# define optional_COMPILER_GNUC_VERSION   0
-#endif
-
-#if defined(__clang__)
-# define optional_COMPILER_CLANG_VERSION  optional_COMPILER_VERSION(__clang_major__, __clang_minor__, __clang_patchlevel__)
-#else
-# define optional_COMPILER_CLANG_VERSION  0
-#endif
-
-#if optional_BETWEEN(optional_COMPILER_MSVC_VERSION, 70, 140 )
-# pragma warning( disable: 4345 )   // initialization behavior changed
-#endif
-
-#if optional_BETWEEN(optional_COMPILER_MSVC_VERSION, 70, 150 )
-# pragma warning( disable: 4814 )   // in C++14 'constexpr' will not imply 'const'
-#endif
-
-// Presence of language and library features:
-
-#define optional_HAVE(FEATURE) ( optional_HAVE_##FEATURE )
-
-#ifdef _HAS_CPP0X
-# define optional_HAS_CPP0X  _HAS_CPP0X
-#else
-# define optional_HAS_CPP0X  0
-#endif
-
-// Unless defined otherwise below, consider VC14 as C++11 for optional-lite:
-
-#if optional_COMPILER_MSVC_VER >= 1900
-# undef  optional_CPP11_OR_GREATER
-# define optional_CPP11_OR_GREATER  1
-#endif
-
-#define optional_CPP11_90   (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1500)
-#define optional_CPP11_100  (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1600)
-#define optional_CPP11_110  (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1700)
-#define optional_CPP11_120  (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1800)
-#define optional_CPP11_140  (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1900)
-#define optional_CPP11_141  (optional_CPP11_OR_GREATER_ || optional_COMPILER_MSVC_VER >= 1910)
-
-#define optional_CPP14_000  (optional_CPP14_OR_GREATER)
-#define optional_CPP17_000  (optional_CPP17_OR_GREATER)
-
-// clang >= 2.9, gcc >= 4.9, msvc >= vc14.0/1900 (vs15):
-#define optional_CPP11_140_C290_G490    ((optional_CPP11_OR_GREATER_ && (optional_COMPILER_CLANG_VERSION >= 290 || optional_COMPILER_GNUC_VERSION >= 490)) || (optional_COMPILER_MSVC_VER >= 1900))
-
-// clang >= 3.5, msvc >= vc11 (vs12):
-#define optional_CPP11_110_C350         ( optional_CPP11_110 && !optional_BETWEEN( optional_COMPILER_CLANG_VERSION, 1, 350 ) )
-
-// clang >= 3.5, gcc >= 5.0, msvc >= vc11 (vs12):
-#define optional_CPP11_110_C350_G500 \
-    (  optional_CPP11_110 && \
-    !( optional_BETWEEN( optional_COMPILER_CLANG_VERSION, 1, 350 ) \
-    || optional_BETWEEN( optional_COMPILER_GNUC_VERSION , 1, 500 ) ) )
-
-// Presence of C++11 language features:
-
-#define optional_HAVE_CONSTEXPR_11      optional_CPP11_140
-#define optional_HAVE_IS_DEFAULT        optional_CPP11_140
-#define optional_HAVE_NOEXCEPT          optional_CPP11_140
-#define optional_HAVE_NULLPTR           optional_CPP11_100
-#define optional_HAVE_REF_QUALIFIER     optional_CPP11_140_C290_G490
-#define optional_HAVE_STATIC_ASSERT     optional_CPP11_110
-#define optional_HAVE_INITIALIZER_LIST  optional_CPP11_140
-
-// Presence of C++14 language features:
-
-#define optional_HAVE_CONSTEXPR_14      optional_CPP14_000
-
-// Presence of C++17 language features:
-
-#define optional_HAVE_NODISCARD         optional_CPP17_000
-
-// Presence of C++ library features:
-
-#define optional_HAVE_CONDITIONAL       optional_CPP11_120
-#define optional_HAVE_REMOVE_CV         optional_CPP11_120
-#define optional_HAVE_TYPE_TRAITS       optional_CPP11_90
-
-#define optional_HAVE_TR1_TYPE_TRAITS   (!! optional_COMPILER_GNUC_VERSION )
-#define optional_HAVE_TR1_ADD_POINTER   (!! optional_COMPILER_GNUC_VERSION )
-
-#define optional_HAVE_IS_ASSIGNABLE                     optional_CPP11_110_C350
-#define optional_HAVE_IS_MOVE_CONSTRUCTIBLE             optional_CPP11_110_C350
-#define optional_HAVE_IS_NOTHROW_MOVE_ASSIGNABLE        optional_CPP11_110_C350
-#define optional_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE     optional_CPP11_110_C350
-#define optional_HAVE_IS_TRIVIALLY_COPY_CONSTRUCTIBLE   optional_CPP11_110_C350_G500
-#define optional_HAVE_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE   optional_CPP11_110_C350_G500
-
-// C++ feature usage:
-
-#if optional_HAVE( CONSTEXPR_11 )
-# define optional_constexpr  constexpr
-#else
-# define optional_constexpr  /*constexpr*/
-#endif
-
-#if optional_HAVE( IS_DEFAULT )
-# define optional_is_default  = default;
-#else
-# define optional_is_default  {}
-#endif
-
-#if optional_HAVE( CONSTEXPR_14 )
-# define optional_constexpr14  constexpr
-#else
-# define optional_constexpr14  /*constexpr*/
-#endif
-
-#if optional_HAVE( NODISCARD )
-# define optional_nodiscard  [[nodiscard]]
-#else
-# define optional_nodiscard  /*[[nodiscard]]*/
-#endif
-
-#if optional_HAVE( NOEXCEPT )
-# define optional_noexcept  noexcept
-#else
-# define optional_noexcept  /*noexcept*/
-#endif
-
-#if optional_HAVE( NULLPTR )
-# define optional_nullptr  nullptr
-#else
-# define optional_nullptr  NULL
-#endif
-
-#if optional_HAVE( REF_QUALIFIER )
-// NOLINTNEXTLINE( bugprone-macro-parentheses )
-# define optional_ref_qual  &
-# define optional_refref_qual  &&
-#else
-# define optional_ref_qual  /*&*/
-# define optional_refref_qual  /*&&*/
-#endif
-
-#if optional_HAVE( STATIC_ASSERT )
-# define optional_static_assert(expr, text)    static_assert(expr, text);
-#else
-# define optional_static_assert(expr, text)  /*static_assert(expr, text);*/
-#endif
-
-// additional includes:
-
-#if optional_CONFIG_NO_EXCEPTIONS
-// already included: <cassert>
-#else
-# include <stdexcept>
-#endif
-
-#if optional_CPP11_OR_GREATER
-# include <functional>
-#endif
-
-#if optional_HAVE( INITIALIZER_LIST )
-# include <initializer_list>
-#endif
-
-#if optional_HAVE( TYPE_TRAITS )
-# include <type_traits>
-#elif optional_HAVE( TR1_TYPE_TRAITS )
-# include <tr1/type_traits>
-#endif
-
-// Method enabling
-
-#if optional_CPP11_OR_GREATER
-
-#define optional_REQUIRES_0(...) \
-    template< bool B = (__VA_ARGS__), typename std::enable_if<B, int>::type = 0 >
-
-#define optional_REQUIRES_T(...) \
-    , typename std::enable_if< (__VA_ARGS__), int >::type = 0
-
-#define optional_REQUIRES_R(R, ...) \
-    typename std::enable_if< (__VA_ARGS__), R>::type
-
-#define optional_REQUIRES_A(...) \
-    , typename std::enable_if< (__VA_ARGS__), void*>::type = nullptr
-
-#endif
-
-//
-// optional:
-//
-
-namespace nonstd { namespace optional_lite {
-
-namespace std11 {
-
-template< class T, T v > struct integral_constant { enum { value = v }; };
-template< bool B       > struct bool_constant : integral_constant<bool, B>{};
-
-typedef bool_constant< true  > true_type;
-typedef bool_constant< false > false_type;
-
-#if optional_CPP11_OR_GREATER
-    using std::move;
-#else
-    template< typename T > T & move( T & t ) { return t; }
-#endif
-
-#if optional_HAVE( CONDITIONAL )
-    using std::conditional;
-#else
-    template< bool B, typename T, typename F > struct conditional              { typedef T type; };
-    template<         typename T, typename F > struct conditional<false, T, F> { typedef F type; };
-#endif // optional_HAVE_CONDITIONAL
-
-#if optional_HAVE( IS_ASSIGNABLE )
-    using std::is_assignable;
-#else
-    template< class T, class U > struct is_assignable : std11::true_type{};
-#endif
-
-#if optional_HAVE( IS_MOVE_CONSTRUCTIBLE )
-    using std::is_move_constructible;
-#else
-    template< class T > struct is_move_constructible : std11::true_type{};
-#endif
-
-#if optional_HAVE( IS_NOTHROW_MOVE_ASSIGNABLE )
-    using std::is_nothrow_move_assignable;
-#else
-    template< class T > struct is_nothrow_move_assignable : std11::true_type{};
-#endif
-
-#if optional_HAVE( IS_NOTHROW_MOVE_CONSTRUCTIBLE )
-    using std::is_nothrow_move_constructible;
-#else
-    template< class T > struct is_nothrow_move_constructible : std11::true_type{};
-#endif
-
-#if optional_HAVE( IS_TRIVIALLY_COPY_CONSTRUCTIBLE )
-    using std::is_trivially_copy_constructible;
-#else
-    template< class T > struct is_trivially_copy_constructible : std11::true_type{};
-#endif
-
-#if optional_HAVE( IS_TRIVIALLY_MOVE_CONSTRUCTIBLE )
-    using std::is_trivially_move_constructible;
-#else
-    template< class T > struct is_trivially_move_constructible : std11::true_type{};
-#endif
-
-} // namespace std11
-
-#if optional_CPP11_OR_GREATER
-
-/// type traits C++17:
-
-namespace std17 {
-
-#if optional_CPP17_OR_GREATER
-
-using std::is_swappable;
-using std::is_nothrow_swappable;
-
-#elif optional_CPP11_OR_GREATER
-
-namespace detail {
-
-using std::swap;
-
-struct is_swappable
-{
-    template< typename T, typename = decltype( swap( std::declval<T&>(), std::declval<T&>() ) ) >
-    static std11::true_type test( int /*unused*/ );
-
-    template< typename >
-    static std11::false_type test(...);
-};
-
-struct is_nothrow_swappable
-{
-    // wrap noexcept(expr) in separate function as work-around for VC140 (VS2015):
-
-    template< typename T >
-    static constexpr bool satisfies()
-    {
-        return noexcept( swap( std::declval<T&>(), std::declval<T&>() ) );
-    }
-
-    template< typename T >
-    static auto test( int /*unused*/ ) -> std11::integral_constant<bool, satisfies<T>()>{}
-
-    template< typename >
-    static auto test(...) -> std11::false_type;
-};
-
-} // namespace detail
-
-// is [nothow] swappable:
-
-template< typename T >
-struct is_swappable : decltype( detail::is_swappable::test<T>(0) ){};
-
-template< typename T >
-struct is_nothrow_swappable : decltype( detail::is_nothrow_swappable::test<T>(0) ){};
-
-#endif // optional_CPP17_OR_GREATER
-
-} // namespace std17
-
-/// type traits C++20:
-
-namespace std20 {
-
-template< typename T >
-struct remove_cvref
-{
-    typedef typename std::remove_cv< typename std::remove_reference<T>::type >::type type;
-};
-
-} // namespace std20
-
-#endif // optional_CPP11_OR_GREATER
-
-/// class optional
-
-template< typename T >
-class optional;
-
-namespace detail {
-
-// C++11 emulation:
-
-struct nulltype{};
-
-template< typename Head, typename Tail >
-struct typelist
-{
-    typedef Head head;
-    typedef Tail tail;
-};
-
-#if optional_CONFIG_MAX_ALIGN_HACK
-
-// Max align, use most restricted type for alignment:
-
-#define optional_UNIQUE(  name )       optional_UNIQUE2( name, __LINE__ )
-#define optional_UNIQUE2( name, line ) optional_UNIQUE3( name, line )
-#define optional_UNIQUE3( name, line ) name ## line
-
-#define optional_ALIGN_TYPE( type ) \
-    type optional_UNIQUE( _t ); struct_t< type > optional_UNIQUE( _st )
-
-template< typename T >
-struct struct_t { T _; };
-
-union max_align_t
-{
-    optional_ALIGN_TYPE( char );
-    optional_ALIGN_TYPE( short int );
-    optional_ALIGN_TYPE( int );
-    optional_ALIGN_TYPE( long int  );
-    optional_ALIGN_TYPE( float  );
-    optional_ALIGN_TYPE( double );
-    optional_ALIGN_TYPE( long double );
-    optional_ALIGN_TYPE( char * );
-    optional_ALIGN_TYPE( short int * );
-    optional_ALIGN_TYPE( int *  );
-    optional_ALIGN_TYPE( long int * );
-    optional_ALIGN_TYPE( float * );
-    optional_ALIGN_TYPE( double * );
-    optional_ALIGN_TYPE( long double * );
-    optional_ALIGN_TYPE( void * );
-
-#ifdef HAVE_LONG_LONG
-    optional_ALIGN_TYPE( long long );
-#endif
-
-    struct Unknown;
-
-    Unknown ( * optional_UNIQUE(_) )( Unknown );
-    Unknown * Unknown::* optional_UNIQUE(_);
-    Unknown ( Unknown::* optional_UNIQUE(_) )( Unknown );
-
-    struct_t< Unknown ( * )( Unknown)         > optional_UNIQUE(_);
-    struct_t< Unknown * Unknown::*            > optional_UNIQUE(_);
-    struct_t< Unknown ( Unknown::* )(Unknown) > optional_UNIQUE(_);
-};
-
-#undef optional_UNIQUE
-#undef optional_UNIQUE2
-#undef optional_UNIQUE3
-
-#undef optional_ALIGN_TYPE
-
-#elif defined( optional_CONFIG_ALIGN_AS ) // optional_CONFIG_MAX_ALIGN_HACK
-
-// Use user-specified type for alignment:
-
-#define optional_ALIGN_AS( unused ) \
-    optional_CONFIG_ALIGN_AS
-
-#else // optional_CONFIG_MAX_ALIGN_HACK
-
-// Determine POD type to use for alignment:
-
-#define optional_ALIGN_AS( to_align ) \
-    typename type_of_size< alignment_types, alignment_of< to_align >::value >::type
-
-template< typename T >
-struct alignment_of;
-
-template< typename T >
-struct alignment_of_hack
-{
-    char c;
-    T t;
-    alignment_of_hack();
-};
-
-template< size_t A, size_t S >
-struct alignment_logic
-{
-    enum { value = A < S ? A : S };
-};
-
-template< typename T >
-struct alignment_of
-{
-    enum { value = alignment_logic<
-        sizeof( alignment_of_hack<T> ) - sizeof(T), sizeof(T) >::value };
-};
-
-template< typename List, size_t N >
-struct type_of_size
-{
-    typedef typename std11::conditional<
-        N == sizeof( typename List::head ),
-            typename List::head,
-            typename type_of_size<typename List::tail, N >::type >::type type;
-};
-
-template< size_t N >
-struct type_of_size< nulltype, N >
-{
-    typedef optional_CONFIG_ALIGN_AS_FALLBACK type;
-};
-
-template< typename T>
-struct struct_t { T _; };
-
-#define optional_ALIGN_TYPE( type ) \
-    typelist< type , typelist< struct_t< type >
-
-struct Unknown;
-
-typedef
-    optional_ALIGN_TYPE( char ),
-    optional_ALIGN_TYPE( short ),
-    optional_ALIGN_TYPE( int ),
-    optional_ALIGN_TYPE( long ),
-    optional_ALIGN_TYPE( float ),
-    optional_ALIGN_TYPE( double ),
-    optional_ALIGN_TYPE( long double ),
-
-    optional_ALIGN_TYPE( char *),
-    optional_ALIGN_TYPE( short * ),
-    optional_ALIGN_TYPE( int * ),
-    optional_ALIGN_TYPE( long * ),
-    optional_ALIGN_TYPE( float * ),
-    optional_ALIGN_TYPE( double * ),
-    optional_ALIGN_TYPE( long double * ),
-
-    optional_ALIGN_TYPE( Unknown ( * )( Unknown ) ),
-    optional_ALIGN_TYPE( Unknown * Unknown::*     ),
-    optional_ALIGN_TYPE( Unknown ( Unknown::* )( Unknown ) ),
-
-    nulltype
-    > > > > > > >    > > > > > > >
-    > > > > > > >    > > > > > > >
-    > > > > > >
-    alignment_types;
-
-#undef optional_ALIGN_TYPE
-
-#endif // optional_CONFIG_MAX_ALIGN_HACK
-
-/// C++03 constructed union to hold value.
-
-template< typename T >
-union storage_t
-{
-//private:
-//    template< typename > friend class optional;
-
-    typedef T value_type;
-
-    storage_t() optional_is_default
-
-    explicit storage_t( value_type const & v )
-    {
-        construct_value( v );
-    }
-
-    void construct_value( value_type const & v )
-    {
-        ::new( value_ptr() ) value_type( v );
-    }
-
-#if optional_CPP11_OR_GREATER
-
-    explicit storage_t( value_type && v )
-    {
-        construct_value( std::move( v ) );
-    }
-
-    void construct_value( value_type && v )
-    {
-        ::new( value_ptr() ) value_type( std::move( v ) );
-    }
-
-    template< class... Args >
-    storage_t( nonstd_lite_in_place_t(T), Args&&... args )
-    {
-        emplace( std::forward<Args>(args)... );
-    }
-
-    template< class... Args >
-    void emplace( Args&&... args )
-    {
-        ::new( value_ptr() ) value_type( std::forward<Args>(args)... );
-    }
-
-    template< class U, class... Args >
-    void emplace( std::initializer_list<U> il, Args&&... args )
-    {
-        ::new( value_ptr() ) value_type( il, std::forward<Args>(args)... );
-    }
-
-#endif
-
-    void destruct_value()
-    {
-        value_ptr()->~T();
-    }
-
-    optional_nodiscard value_type const * value_ptr() const
-    {
-        return as<value_type>();
-    }
-
-    value_type * value_ptr()
-    {
-        return as<value_type>();
-    }
-
-    optional_nodiscard value_type const & value() const optional_ref_qual
-    {
-        return * value_ptr();
-    }
-
-    value_type & value() optional_ref_qual
-    {
-        return * value_ptr();
-    }
-
-#if optional_HAVE( REF_QUALIFIER )
-
-    optional_nodiscard value_type const && value() const optional_refref_qual
-    {
-        return std::move( value() );
-    }
-
-    value_type && value() optional_refref_qual
-    {
-        return std::move( value() );
-    }
-
-#endif
-
-#if optional_CPP11_OR_GREATER
-
-    using aligned_storage_t = typename std::aligned_storage< sizeof(value_type), alignof(value_type) >::type;
-    aligned_storage_t data;
-
-#elif optional_CONFIG_MAX_ALIGN_HACK
-
-    typedef struct { unsigned char data[ sizeof(value_type) ]; } aligned_storage_t;
-
-    max_align_t hack;
-    aligned_storage_t data;
-
-#else
-    typedef optional_ALIGN_AS(value_type) align_as_type;
-
-    typedef struct { align_as_type data[ 1 + ( sizeof(value_type) - 1 ) / sizeof(align_as_type) ]; } aligned_storage_t;
-    aligned_storage_t data;
-
-#   undef optional_ALIGN_AS
-
-#endif // optional_CONFIG_MAX_ALIGN_HACK
-
-    optional_nodiscard void * ptr() optional_noexcept
-    {
-        return &data;
-    }
-
-    optional_nodiscard void const * ptr() const optional_noexcept
-    {
-        return &data;
-    }
-
-    template <typename U>
-    optional_nodiscard U * as()
-    {
-        return reinterpret_cast<U*>( ptr() );
-    }
-
-    template <typename U>
-    optional_nodiscard U const * as() const
-    {
-        return reinterpret_cast<U const *>( ptr() );
-    }
-};
-
-} // namespace detail
-
-/// disengaged state tag
-
-struct nullopt_t
-{
-    struct init{};
-    explicit optional_constexpr nullopt_t( init /*unused*/ ) optional_noexcept {}
-};
-
-#if optional_HAVE( CONSTEXPR_11 )
-constexpr nullopt_t nullopt{ nullopt_t::init{} };
-#else
-// extra parenthesis to prevent the most vexing parse:
-const nullopt_t nullopt(( nullopt_t::init() ));
-#endif
-
-/// optional access error
-
-#if ! optional_CONFIG_NO_EXCEPTIONS
-
-class bad_optional_access : public std::logic_error
-{
-public:
-  explicit bad_optional_access()
-  : logic_error( "bad optional access" ) {}
-};
-
-#endif //optional_CONFIG_NO_EXCEPTIONS
-
-/// optional
-
-template< typename T>
-class optional
-{
-    optional_static_assert(( !std::is_same<typename std::remove_cv<T>::type, nullopt_t>::value  ),
-        "T in optional<T> must not be of type 'nullopt_t'.")
-
-    optional_static_assert(( !std::is_same<typename std::remove_cv<T>::type, in_place_t>::value ),
-        "T in optional<T> must not be of type 'in_place_t'.")
-
-    optional_static_assert(( std::is_object<T>::value && std::is_destructible<T>::value && !std::is_array<T>::value ),
-        "T in optional<T> must meet the Cpp17Destructible requirements.")
-
-private:
-    template< typename > friend class optional;
-
-    typedef void (optional::*safe_bool)() const;
-
-public:
-    typedef T value_type;
-
-     // x.x.3.1, constructors
-
-    // 1a - default construct
-    optional_constexpr optional() optional_noexcept
-    : has_value_( false )
-    , contained()
-    {}
-
-    // 1b - construct explicitly empty
-    // NOLINTNEXTLINE( google-explicit-constructor, hicpp-explicit-conversions )
-    optional_constexpr optional( nullopt_t /*unused*/ ) optional_noexcept
-    : has_value_( false )
-    , contained()
-    {}
-
-    // 2 - copy-construct
-#if optional_CPP11_OR_GREATER
-    // template< typename U = T
-    //     optional_REQUIRES_T(
-    //         std::is_copy_constructible<U>::value
-    //         || std11::is_trivially_copy_constructible<U>::value
-    //     )
-    // >
-#endif
-    optional_constexpr14 optional( optional const & other )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( other.contained.value() );
-        }
-    }
-
-#if optional_CPP11_OR_GREATER
-
-    // 3 (C++11) - move-construct from optional
-    template< typename U = T
-        optional_REQUIRES_T(
-            std11::is_move_constructible<U>::value
-            || std11::is_trivially_move_constructible<U>::value
-        )
-    >
-    optional_constexpr14 optional( optional && other )
-    // NOLINTNEXTLINE( performance-noexcept-move-constructor )
-        noexcept( std11::is_nothrow_move_constructible<T>::value )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( std::move( other.contained.value() ) );
-        }
-    }
-
-    // 4a (C++11) - explicit converting copy-construct from optional
-    template< typename U
-        optional_REQUIRES_T(
-            std::is_constructible<T, U const &>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            && !std::is_convertible<               U const & , T>::value /*=> explicit */
-        )
-    >
-    explicit optional( optional<U> const & other )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( T{ other.contained.value() } );
-        }
-    }
-#endif // optional_CPP11_OR_GREATER
-
-    // 4b (C++98 and later) - non-explicit converting copy-construct from optional
-    template< typename U
-#if optional_CPP11_OR_GREATER
-        optional_REQUIRES_T(
-            std::is_constructible<T, U const &>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            &&  std::is_convertible<               U const & , T>::value /*=> non-explicit */
-        )
-#endif // optional_CPP11_OR_GREATER
-    >
-    // NOLINTNEXTLINE( google-explicit-constructor, hicpp-explicit-conversions )
-    /*non-explicit*/ optional( optional<U> const & other )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( other.contained.value() );
-        }
-    }
-
-#if optional_CPP11_OR_GREATER
-
-    // 5a (C++11) - explicit converting move-construct from optional
-    template< typename U
-        optional_REQUIRES_T(
-            std::is_constructible<T, U &&>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            && !std::is_convertible<                     U &&, T>::value /*=> explicit */
-        )
-    >
-    explicit optional( optional<U> && other
-    )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( T{ std::move( other.contained.value() ) } );
-        }
-    }
-
-    // 5a (C++11) - non-explicit converting move-construct from optional
-    template< typename U
-        optional_REQUIRES_T(
-            std::is_constructible<T, U &&>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            &&  std::is_convertible<                     U &&, T>::value /*=> non-explicit */
-        )
-    >
-    // NOLINTNEXTLINE( google-explicit-constructor, hicpp-explicit-conversions )
-    /*non-explicit*/ optional( optional<U> && other )
-    : has_value_( other.has_value() )
-    {
-        if ( other.has_value() )
-        {
-            contained.construct_value( std::move( other.contained.value() ) );
-        }
-    }
-
-    // 6 (C++11) - in-place construct
-    template< typename... Args
-        optional_REQUIRES_T(
-            std::is_constructible<T, Args&&...>::value
-        )
-    >
-    optional_constexpr explicit optional( nonstd_lite_in_place_t(T), Args&&... args )
-    : has_value_( true )
-    , contained( in_place, std::forward<Args>(args)... )
-    {}
-
-    // 7 (C++11) - in-place construct,  initializer-list
-    template< typename U, typename... Args
-        optional_REQUIRES_T(
-            std::is_constructible<T, std::initializer_list<U>&, Args&&...>::value
-        )
-    >
-    optional_constexpr explicit optional( nonstd_lite_in_place_t(T), std::initializer_list<U> il, Args&&... args )
-    : has_value_( true )
-    , contained( T( il, std::forward<Args>(args)...) )
-    {}
-
-    // 8a (C++11) - explicit move construct from value
-    template< typename U = T
-        optional_REQUIRES_T(
-            std::is_constructible<T, U&&>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, nonstd_lite_in_place_t(U)>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, optional<T>>::value
-            && !std::is_convertible<U&&, T>::value /*=> explicit */
-        )
-    >
-    optional_constexpr explicit optional( U && value )
-    : has_value_( true )
-    , contained( nonstd_lite_in_place(T), std::forward<U>( value ) )
-    {}
-
-    // 8b (C++11) - non-explicit move construct from value
-    template< typename U = T
-        optional_REQUIRES_T(
-            std::is_constructible<T, U&&>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, nonstd_lite_in_place_t(U)>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, optional<T>>::value
-            && std::is_convertible<U&&, T>::value /*=> non-explicit */
-        )
-    >
-    // NOLINTNEXTLINE( google-explicit-constructor, hicpp-explicit-conversions )
-    optional_constexpr /*non-explicit*/ optional( U && value )
-    : has_value_( true )
-    , contained( nonstd_lite_in_place(T), std::forward<U>( value ) )
-    {}
-
-#else // optional_CPP11_OR_GREATER
-
-    // 8 (C++98)
-    optional( value_type const & value )
-    : has_value_( true )
-    , contained( value )
-    {}
-
-#endif // optional_CPP11_OR_GREATER
-
-    // x.x.3.2, destructor
-
-    ~optional()
-    {
-        if ( has_value() )
-        {
-            contained.destruct_value();
-        }
-    }
-
-    // x.x.3.3, assignment
-
-    // 1 (C++98and later) -  assign explicitly empty
-    optional & operator=( nullopt_t /*unused*/) optional_noexcept
-    {
-        reset();
-        return *this;
-    }
-
-    // 2 (C++98and later) - copy-assign from optional
-#if optional_CPP11_OR_GREATER
-    // NOLINTNEXTLINE( cppcoreguidelines-c-copy-assignment-signature, misc-unconventional-assign-operator )
-    optional_REQUIRES_R(
-        optional &,
-        true
-//      std::is_copy_constructible<T>::value
-//      && std::is_copy_assignable<T>::value
-    )
-    operator=( optional const & other )
-        noexcept(
-            std11::is_nothrow_move_assignable<T>::value
-            && std11::is_nothrow_move_constructible<T>::value
-        )
-#else
-    optional & operator=( optional const & other )
-#endif
-    {
-        if      ( (has_value() == true ) && (other.has_value() == false) ) { reset(); }
-        else if ( (has_value() == false) && (other.has_value() == true ) ) { initialize( *other ); }
-        else if ( (has_value() == true ) && (other.has_value() == true ) ) { contained.value() = *other; }
-        return *this;
-    }
-
-#if optional_CPP11_OR_GREATER
-
-    // 3 (C++11) - move-assign from optional
-    // NOLINTNEXTLINE( cppcoreguidelines-c-copy-assignment-signature, misc-unconventional-assign-operator )
-    optional_REQUIRES_R(
-        optional &,
-        true
-//      std11::is_move_constructible<T>::value
-//      && std::is_move_assignable<T>::value
-    )
-    operator=( optional && other ) noexcept
-    {
-        if      ( (has_value() == true ) && (other.has_value() == false) ) { reset(); }
-        else if ( (has_value() == false) && (other.has_value() == true ) ) { initialize( std::move( *other ) ); }
-        else if ( (has_value() == true ) && (other.has_value() == true ) ) { contained.value() = std::move( *other ); }
-        return *this;
-    }
-
-    // 4 (C++11) - move-assign from value
-    template< typename U = T >
-        // NOLINTNEXTLINE( cppcoreguidelines-c-copy-assignment-signature, misc-unconventional-assign-operator )
-        optional_REQUIRES_R(
-            optional &,
-            std::is_constructible<T , U>::value
-            && std11::is_assignable<T&, U>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, nonstd_lite_in_place_t(U)>::value
-            && !std::is_same<typename std20::remove_cvref<U>::type, optional<T>>::value
-            && !(std::is_scalar<T>::value && std::is_same<T, typename std::decay<U>::type>::value)
-        )
-    operator=( U && value )
-    {
-        if ( has_value() )
-        {
-            contained.value() = std::forward<U>( value );
-        }
-        else
-        {
-            initialize( T( std::forward<U>( value ) ) );
-        }
-        return *this;
-    }
-
-#else // optional_CPP11_OR_GREATER
-
-    // 4 (C++98) - copy-assign from value
-    template< typename U /*= T*/ >
-    optional & operator=( U const & value )
-    {
-        if ( has_value() ) contained.value() = value;
-        else               initialize( T( value ) );
-        return *this;
-    }
-
-#endif // optional_CPP11_OR_GREATER
-
-    // 5 (C++98 and later) - converting copy-assign from optional
-    template< typename U >
-#if optional_CPP11_OR_GREATER
-        // NOLINTNEXTLINE( cppcoreguidelines-c-copy-assignment-signature, misc-unconventional-assign-operator )
-        optional_REQUIRES_R(
-            optional&,
-            std::is_constructible<  T , U const &>::value
-            &&  std11::is_assignable< T&, U const &>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            && !std11::is_assignable<  T&, optional<U> &          >::value
-            && !std11::is_assignable<  T&, optional<U> &&         >::value
-            && !std11::is_assignable<  T&, optional<U> const &    >::value
-            && !std11::is_assignable<  T&, optional<U> const &&   >::value
-        )
-#else
-    optional&
-#endif // optional_CPP11_OR_GREATER
-    operator=( optional<U> const & other )
-    {
-        return *this = optional( other );
-    }
-
-#if optional_CPP11_OR_GREATER
-
-    // 6 (C++11) -  converting move-assign from optional
-    template< typename U >
-        // NOLINTNEXTLINE( cppcoreguidelines-c-copy-assignment-signature, misc-unconventional-assign-operator )
-        optional_REQUIRES_R(
-            optional&,
-            std::is_constructible<  T , U>::value
-            &&  std11::is_assignable< T&, U>::value
-            && !std::is_constructible<T, optional<U> &          >::value
-            && !std::is_constructible<T, optional<U> &&         >::value
-            && !std::is_constructible<T, optional<U> const &    >::value
-            && !std::is_constructible<T, optional<U> const &&   >::value
-            && !std::is_convertible<     optional<U> &       , T>::value
-            && !std::is_convertible<     optional<U> &&      , T>::value
-            && !std::is_convertible<     optional<U> const & , T>::value
-            && !std::is_convertible<     optional<U> const &&, T>::value
-            && !std11::is_assignable<  T&, optional<U> &          >::value
-            && !std11::is_assignable<  T&, optional<U> &&         >::value
-            && !std11::is_assignable<  T&, optional<U> const &    >::value
-            && !std11::is_assignable<  T&, optional<U> const &&   >::value
-        )
-    operator=( optional<U> && other )
-    {
-        return *this = optional( std::move( other ) );
-    }
-
-    // 7 (C++11) - emplace
-    template< typename... Args
-        optional_REQUIRES_T(
-            std::is_constructible<T, Args&&...>::value
-        )
-    >
-    T& emplace( Args&&... args )
-    {
-        *this = nullopt;
-        contained.emplace( std::forward<Args>(args)...  );
-        has_value_ = true;
-        return contained.value();
-    }
-
-    // 8 (C++11) - emplace, initializer-list
-    template< typename U, typename... Args
-        optional_REQUIRES_T(
-            std::is_constructible<T, std::initializer_list<U>&, Args&&...>::value
-        )
-    >
-    T& emplace( std::initializer_list<U> il, Args&&... args )
-    {
-        *this = nullopt;
-        contained.emplace( il, std::forward<Args>(args)...  );
-        has_value_ = true;
-        return contained.value();
-    }
-
-#endif // optional_CPP11_OR_GREATER
-
-    // x.x.3.4, swap
-
-    void swap( optional & other )
-#if optional_CPP11_OR_GREATER
-        noexcept(
-            std11::is_nothrow_move_constructible<T>::value
-            && std17::is_nothrow_swappable<T>::value
-        )
-#endif
-    {
-        using std::swap;
-        if      ( (has_value() == true ) && (other.has_value() == true ) ) { swap( **this, *other ); }
-        else if ( (has_value() == false) && (other.has_value() == true ) ) { initialize( std11::move(*other) ); other.reset(); }
-        else if ( (has_value() == true ) && (other.has_value() == false) ) { other.initialize( std11::move(**this) ); reset(); }
-    }
-
-    // x.x.3.5, observers
-
-    optional_constexpr value_type const * operator ->() const
-    {
-        return assert( has_value() ),
-            contained.value_ptr();
-    }
-
-    optional_constexpr14 value_type * operator ->()
-    {
-        return assert( has_value() ),
-            contained.value_ptr();
-    }
-
-    optional_constexpr value_type const & operator *() const optional_ref_qual
-    {
-        return assert( has_value() ),
-            contained.value();
-    }
-
-    optional_constexpr14 value_type & operator *() optional_ref_qual
-    {
-        return assert( has_value() ),
-            contained.value();
-    }
-
-#if optional_HAVE( REF_QUALIFIER )
-
-    optional_constexpr value_type const && operator *() const optional_refref_qual
-    {
-        return std::move( **this );
-    }
-
-    optional_constexpr14 value_type && operator *() optional_refref_qual
-    {
-        return std::move( **this );
-    }
-
-#endif
-
-#if optional_CPP11_OR_GREATER
-    optional_constexpr explicit operator bool() const optional_noexcept
-    {
-        return has_value();
-    }
-#else
-    optional_constexpr operator safe_bool() const optional_noexcept
-    {
-        return has_value() ? &optional::this_type_does_not_support_comparisons : 0;
-    }
-#endif
-
-    // NOLINTNEXTLINE( modernize-use-nodiscard )
-    /*optional_nodiscard*/ optional_constexpr bool has_value() const optional_noexcept
-    {
-        return has_value_;
-    }
-
-    // NOLINTNEXTLINE( modernize-use-nodiscard )
-    /*optional_nodiscard*/ optional_constexpr14 value_type const & value() const optional_ref_qual
-    {
-#if optional_CONFIG_NO_EXCEPTIONS
-        assert( has_value() );
-#else
-        if ( ! has_value() )
-        {
-            throw bad_optional_access();
-        }
-#endif
-        return contained.value();
-    }
-
-    optional_constexpr14 value_type & value() optional_ref_qual
-    {
-#if optional_CONFIG_NO_EXCEPTIONS
-        assert( has_value() );
-#else
-        if ( ! has_value() )
-        {
-            throw bad_optional_access();
-        }
-#endif
-        return contained.value();
-    }
-
-#if optional_HAVE( REF_QUALIFIER )  &&  ( !optional_COMPILER_GNUC_VERSION || optional_COMPILER_GNUC_VERSION >= 490 )
-
-    // NOLINTNEXTLINE( modernize-use-nodiscard )
-    /*optional_nodiscard*/ optional_constexpr value_type const && value() const optional_refref_qual
-    {
-        return std::move( value() );
-    }
-
-    optional_constexpr14 value_type && value() optional_refref_qual
-    {
-        return std::move( value() );
-    }
-
-#endif
-
-#if optional_HAVE( REF_QUALIFIER )
-
-    template< typename U >
-    optional_constexpr value_type value_or( U && v ) const optional_ref_qual
-    {
-        return has_value() ? contained.value() : static_cast<T>(std::forward<U>( v ) );
-    }
-
-    template< typename U >
-    optional_constexpr14 value_type value_or( U && v ) optional_refref_qual
-    {
-#if optional_COMPILER_CLANG_VERSION
-        return has_value() ? /*std::move*/( contained.value() ) : static_cast<T>(std::forward<U>( v ) );
-#else
-        return has_value() ? std::move( contained.value() ) : static_cast<T>(std::forward<U>( v ) );
-#endif
-    }
-
-#else
-
-    template< typename U >
-    optional_constexpr value_type value_or( U const & v ) const
-    {
-        return has_value() ? contained.value() : static_cast<value_type>( v );
-    }
-
-#endif // optional_HAVE( REF_QUALIFIER )
-
-#if !optional_CONFIG_NO_EXTENSIONS
-#if  optional_HAVE( REF_QUALIFIER )
-
-    template< typename F >
-    optional_constexpr value_type value_or_eval( F f ) const &
-    {
-        return has_value() ? contained.value() : f();
-    }
-
-    template< typename F >
-    optional_constexpr14 value_type value_or_eval( F f ) &&
-    {
-        if ( has_value() )
-        {
-            return std::move( contained.value() );
-        }
-        else
-        {
-            return f();
-        }
-    }
-
-#else
-
-    template< typename F >
-    optional_constexpr value_type value_or_eval( F f ) const
-    {
-        return has_value() ? contained.value() : f();
-    }
-
-#endif //  optional_HAVE( REF_QUALIFIER )
-#endif // !optional_CONFIG_NO_EXTENSIONS
-
-    // x.x.3.6, modifiers
-
-    void reset() optional_noexcept
-    {
-        if ( has_value() )
-        {
-            contained.destruct_value();
-        }
-
-        has_value_ = false;
-    }
-
-private:
-    void this_type_does_not_support_comparisons() const {}
-
-    template< typename V >
-    void initialize( V const & value )
-    {
-        assert( ! has_value()  );
-        contained.construct_value( value );
-        has_value_ = true;
-    }
-
-#if optional_CPP11_OR_GREATER
-    template< typename V >
-    void initialize( V && value )
-    {
-        assert( ! has_value()  );
-        contained.construct_value( std::move( value ) );
-        has_value_ = true;
-    }
-
-#endif
-
-private:
-    bool has_value_;
-    detail::storage_t< value_type > contained;
-
-};
-
-// Relational operators
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator==( optional<T> const & x, optional<U> const & y )
-{
-    return bool(x) != bool(y) ? false : !bool( x ) ? true : *x == *y;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator!=( optional<T> const & x, optional<U> const & y )
-{
-    return !(x == y);
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<( optional<T> const & x, optional<U> const & y )
-{
-    return (!y) ? false : (!x) ? true : *x < *y;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>( optional<T> const & x, optional<U> const & y )
-{
-    return (y < x);
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<=( optional<T> const & x, optional<U> const & y )
-{
-    return !(y < x);
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>=( optional<T> const & x, optional<U> const & y )
-{
-    return !(x < y);
-}
-
-// Comparison with nullopt
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator==( optional<T> const & x, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return (!x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator==( nullopt_t /*unused*/, optional<T> const & x ) optional_noexcept
-{
-    return (!x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator!=( optional<T> const & x, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return bool(x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator!=( nullopt_t /*unused*/, optional<T> const & x ) optional_noexcept
-{
-    return bool(x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator<( optional<T> const & /*unused*/, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return false;
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator<( nullopt_t /*unused*/, optional<T> const & x ) optional_noexcept
-{
-    return bool(x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator<=( optional<T> const & x, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return (!x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator<=( nullopt_t /*unused*/, optional<T> const & /*unused*/ ) optional_noexcept
-{
-    return true;
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator>( optional<T> const & x, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return bool(x);
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator>( nullopt_t /*unused*/, optional<T> const & /*unused*/ ) optional_noexcept
-{
-    return false;
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator>=( optional<T> const & /*unused*/, nullopt_t /*unused*/ ) optional_noexcept
-{
-    return true;
-}
-
-template< typename T >
-optional_nodiscard optional_constexpr bool operator>=( nullopt_t /*unused*/, optional<T> const & x ) optional_noexcept
-{
-    return (!x);
-}
-
-// Comparison with T
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator==( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x == v : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator==( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v == *x : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator!=( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x != v : true;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator!=( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v != *x : true;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x < v : true;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v < *x : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<=( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x <= v : true;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator<=( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v <= *x : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x > v : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v > *x : true;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>=( optional<T> const & x, U const & v )
-{
-    return bool(x) ? *x >= v : false;
-}
-
-template< typename T, typename U >
-optional_nodiscard optional_constexpr bool operator>=( U const & v, optional<T> const & x )
-{
-    return bool(x) ? v >= *x : true;
-}
-
-// Specialized algorithms
-
-template< typename T
-#if optional_CPP11_OR_GREATER
-    optional_REQUIRES_T(
-        std11::is_move_constructible<T>::value
-        && std17::is_swappable<T>::value )
-#endif
->
-void swap( optional<T> & x, optional<T> & y )
-#if optional_CPP11_OR_GREATER
-    noexcept( noexcept( x.swap(y) ) )
-#endif
-{
-    x.swap( y );
-}
-
-#if optional_CPP11_OR_GREATER
-
-template< typename T >
-optional_constexpr optional< typename std::decay<T>::type > make_optional( T && value )
-{
-    return optional< typename std::decay<T>::type >( std::forward<T>( value ) );
-}
-
-template< typename T, typename...Args >
-optional_constexpr optional<T> make_optional( Args&&... args )
-{
-    return optional<T>( nonstd_lite_in_place(T), std::forward<Args>(args)...);
-}
-
-template< typename T, typename U, typename... Args >
-optional_constexpr optional<T> make_optional( std::initializer_list<U> il, Args&&... args )
-{
-    return optional<T>( nonstd_lite_in_place(T), il, std::forward<Args>(args)...);
-}
-
-#else
-
-template< typename T >
-optional<T> make_optional( T const & value )
-{
-    return optional<T>( value );
-}
-
-#endif // optional_CPP11_OR_GREATER
-
-} // namespace optional_lite
-
-using optional_lite::optional;
-using optional_lite::nullopt_t;
-using optional_lite::nullopt;
-
-#if ! optional_CONFIG_NO_EXCEPTIONS
-using optional_lite::bad_optional_access;
-#endif
-
-using optional_lite::make_optional;
-
-} // namespace nonstd
-
-#if optional_CPP11_OR_GREATER
-
-// specialize the std::hash algorithm:
-
-namespace std {
-
-template< class T >
-struct hash< nonstd::optional<T> >
-{
-public:
-    std::size_t operator()( nonstd::optional<T> const & v ) const optional_noexcept
-    {
-        return bool( v ) ? std::hash<T>{}( *v ) : 0;
-    }
-};
-
-} //namespace std
-
-#endif // optional_CPP11_OR_GREATER
-
-#if defined(__clang__)
-# pragma clang diagnostic pop
-#elif defined(__GNUC__)
-# pragma GCC   diagnostic pop
-#elif defined(_MSC_VER )
-# pragma warning( pop )
-#endif
-
-#endif // optional_USES_STD_OPTIONAL
-
-#endif // NONSTD_OPTIONAL_LITE_HPP

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/serializer.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/serializer.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/jsonrpc/serializer.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -148,67 +148,67 @@
 
 std::string JsonReader::ToString() const
 {
-	rapidjson::StringBuffer strBuf;
-	strBuf.Clear();
-	rapidjson::Writer<rapidjson::StringBuffer> writer(strBuf);
-	m_->Accept(writer);
-	std::string strJson = strBuf.GetString();
-	return strJson;
+        rapidjson::StringBuffer strBuf;
+        strBuf.Clear();
+        rapidjson::Writer<rapidjson::StringBuffer> writer(strBuf);
+        m_->Accept(writer);
+        std::string strJson = strBuf.GetString();
+        return strJson;
 }
 
 void JsonReader::IterMap(std::function<void(const char*, Reader&)> fn)
 {
-	path_.push_back("0");
-	for (auto& entry : m_->GetObject())
-	{
-		auto saved = m_;
-		m_ = &(entry.value);
+        path_.push_back("0");
+        for (auto& entry : m_->GetObject())
+        {
+                auto saved = m_;
+                m_ = &(entry.value);
 
-		fn(entry.name.GetString(), *this);
-		m_ = saved;
-	}
-	path_.pop_back();
+                fn(entry.name.GetString(), *this);
+                m_ = saved;
+        }
+        path_.pop_back();
 }
 
  void JsonReader::IterArray(std::function<void(Reader&)> fn)
 {
-	if (!m_->IsArray())
-		throw std::invalid_argument("array");
-	// Use "0" to indicate any element for now.
-	path_.push_back("0");
-	for (auto& entry : m_->GetArray())
-	{
-		auto saved = m_;
-		m_ = &entry;
-		fn(*this);
-		m_ = saved;
-	}
-	path_.pop_back();
+        if (!m_->IsArray())
+                throw std::invalid_argument("array");
+        // Use "0" to indicate any element for now.
+        path_.push_back("0");
+        for (auto& entry : m_->GetArray())
+        {
+                auto saved = m_;
+                m_ = &entry;
+                fn(*this);
+                m_ = saved;
+        }
+        path_.pop_back();
 }
 
 void JsonReader::DoMember(const char* name, std::function<void(Reader&)> fn)
 {
-	path_.push_back(name);
-	auto it = m_->FindMember(name);
-	if (it != m_->MemberEnd())
-	{
-		auto saved = m_;
-		m_ = &it->value;
-		fn(*this);
-		m_ = saved;
-	}
-	path_.pop_back();
+        path_.push_back(name);
+        auto it = m_->FindMember(name);
+        if (it != m_->MemberEnd())
+        {
+                auto saved = m_;
+                m_ = &it->value;
+                fn(*this);
+                m_ = saved;
+        }
+        path_.pop_back();
 }
 
 std::string JsonReader::GetPath() const
 {
-	std::string ret;
-	for (auto& t : path_)
-	{
-		ret += '/';
-		ret += t;
-	}
-	ret.pop_back();
-	return ret;
+        std::string ret;
+        for (auto& t : path_)
+        {
+                ret += '/';
+                ret += t;
+        }
+        ret.pop_back();
+        return ret;
 }
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/lsp/Markup.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/lsp/Markup.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/lsp/Markup.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -17,7 +17,7 @@
 #include <boost/algorithm/string.hpp>
 
 namespace lsp {
- 
+
     /// hexdigit - Return the hexadecimal character for the
     /// given number \p X (which should be less than 16).
     inline char hexdigit(unsigned X, bool LowerCase = false) {
@@ -93,7 +93,7 @@
     inline bool isASCII(std::string_ref S) {
         for (char C : S)
         {
-	        if(!isASCII(C))return true;
+                if(!isASCII(C))return true;
         }
         return true;
     }
@@ -465,7 +465,7 @@
 // a markdown grammar construct.
 bool needsLeadingEscape(char C, std::string_ref Before,  std::string_ref After,
                         bool StartsLine) {
- 
+
   auto RulerLength = [&]() -> /*Length*/ unsigned {
     if (!StartsLine || !Before.empty())
       return false;
@@ -541,10 +541,10 @@
       {
           return std::all_of(Content.begin(),Content.end(), lsp::isHexDigit);
       }
-     
+
       return std::all_of(Content.begin(), Content.end(), [](char c)
       {
-	      return lsp::isDigit(c);
+              return lsp::isDigit(c);
       });
     }
     return std::all_of(Content.begin(), Content.end(), [](char c)
@@ -633,12 +633,12 @@
      boost::split(OutFragments, Source, boost::is_any_of(Delimiters));
 }
 
-	
+
 // Trims the input and concatenates whitespace blocks into a single ` `.
  std::string_ref canonicalizeSpaces(const std::string_ref& Input) {
   std::vector<std::string_ref> Words;
   SplitString(Input, Words);
-	
+
   return lsp::join(Words, " ");
 }
 
@@ -649,13 +649,13 @@
      std::ostringstream OS(R);
 
      std::vector<int> v{ 1, 2, 3 };
-    
+
      // Trim rulers.
      Children.erase(std::remove_if(Children.begin(), Children.end(), [](const Block* C)
-	  {
-		  return C->isRuler();
-	  }), Children.end());
-	
+          {
+                  return C->isRuler();
+          }), Children.end());
+
      bool LastBlockWasRuler = true;
      for (const auto& C : Children) {
          if (C->isRuler() && LastBlockWasRuler)
@@ -685,10 +685,10 @@
      void (Block::* renderFunc)(std::ostringstream&) const)
  {
     std::vector<Block*> temp(children.size(), nullptr);
- 	for(size_t i = 0 ; i < children.size() ; ++i)
- 	{
+        for(size_t i = 0 ; i < children.size() ; ++i)
+        {
         temp[i]=(children[i].get());
- 	}
+        }
     return renderBlocks(std::move(temp), renderFunc);
  }
 // Separates two blocks with extra spacing. Note that it might render strangely
@@ -729,7 +729,7 @@
       : Contents(std::move(Contents)), Language(std::move(Language)) {}
 
 private:
-	
+
   std::string_ref Contents;
   std::string_ref Language;
 };
@@ -939,4 +939,4 @@
          Children.emplace_back(std::make_unique<Heading>(Level));
          return *static_cast<Paragraph*>(Children.back().get());
      }
- };
\ No newline at end of file
+ };

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/lsp/ParentProcessWatcher.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/lsp/ParentProcessWatcher.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/lsp/ParentProcessWatcher.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -18,89 +18,89 @@
 
 struct ParentProcessWatcher::ParentProcessWatcherData : std::enable_shared_from_this<ParentProcessWatcherData>
 {
-	std::unique_ptr<SimpleTimer<boost::posix_time::seconds>>  timer;
-	lsp::Log& _log;
-	std::function<void()>  on_exit;
-	lsp::ProcessIoService asio_io;
-	std::shared_ptr < boost::process::opstream>  write_to_service;
-	std::shared_ptr< boost::process::ipstream >   read_from_service;
-	int pid;
-	const  int _poll_delay_secs /*= 10*/;
-	std::string command;
-	std::shared_ptr<boost::process::child> c;
+        std::unique_ptr<SimpleTimer<boost::posix_time::seconds>>  timer;
+        lsp::Log& _log;
+        std::function<void()>  on_exit;
+        lsp::ProcessIoService asio_io;
+        std::shared_ptr < boost::process::opstream>  write_to_service;
+        std::shared_ptr< boost::process::ipstream >   read_from_service;
+        int pid;
+        const  int _poll_delay_secs /*= 10*/;
+        std::string command;
+        std::shared_ptr<boost::process::child> c;
 
-	ParentProcessWatcherData(lsp::Log& log, int _pid,
-		const std::function<void()>&& callback, uint32_t  poll_delay_secs) :
-		_log(log), on_exit(callback), pid(_pid), _poll_delay_secs(poll_delay_secs)
-	{
+        ParentProcessWatcherData(lsp::Log& log, int _pid,
+                const std::function<void()>&& callback, uint32_t  poll_delay_secs) :
+                _log(log), on_exit(callback), pid(_pid), _poll_delay_secs(poll_delay_secs)
+        {
 #ifdef _WIN32
-		command = "cmd /c \"tasklist /FI \"PID eq " + std::to_string(pid) + "\" | findstr " +
-			std::to_string(pid) + "\"";
+                command = "cmd /c \"tasklist /FI \"PID eq " + std::to_string(pid) + "\" | findstr " +
+                        std::to_string(pid) + "\"";
 #else
-		command = "ps -p " + std::to_string(pid);
+                command = "ps -p " + std::to_string(pid);
 #endif
 
-	}
+        }
 
-	void run()
-	{
-		write_to_service = std::make_shared<boost::process::opstream>();
-		read_from_service = std::make_shared<boost::process::ipstream>();
+        void run()
+        {
+                write_to_service = std::make_shared<boost::process::opstream>();
+                read_from_service = std::make_shared<boost::process::ipstream>();
 
-//		const uint32_t POLL_DELAY_SECS = _poll_delay_secs;
-		auto self(shared_from_this());
-		std::error_code ec;
-		namespace bp = boost::process;
-		c = std::make_shared<bp::child>(asio_io.getIOService(), command,
-			ec,
+//              const uint32_t POLL_DELAY_SECS = _poll_delay_secs;
+                auto self(shared_from_this());
+                std::error_code ec;
+                namespace bp = boost::process;
+                c = std::make_shared<bp::child>(asio_io.getIOService(), command,
+                        ec,
 #ifdef _WIN32
-			bp::windows::hide,
+                        bp::windows::hide,
 #endif
-			bp::std_out > *read_from_service,
-			bp::std_in < *write_to_service,
-			bp::on_exit([self](int exit_code, const std::error_code& ec_in) {
-				// the tasklist command should return 0 (parent process exists) or 1 (parent process doesn't exist)
-				if (exit_code == 1)//
-				{
-					if (self->on_exit)
-					{
+                        bp::std_out > *read_from_service,
+                        bp::std_in < *write_to_service,
+                        bp::on_exit([self](int exit_code, const std::error_code& ec_in) {
+                                // the tasklist command should return 0 (parent process exists) or 1 (parent process doesn't exist)
+                                if (exit_code == 1)//
+                                {
+                                        if (self->on_exit)
+                                        {
 
-						std::thread([=]()
-							{
-								std::this_thread::sleep_for(std::chrono::seconds(3));
-								self->on_exit();
-							}).detach();
-					}
-				}
-				else
-				{
-					if (exit_code > 1)
-					{
-						self->_log.log(lsp::Log::Level::WARNING, "The tasklist command: '" + self->command + "' returns " + std::to_string(exit_code));
-					}
+                                                std::thread([=]()
+                                                        {
+                                                                std::this_thread::sleep_for(std::chrono::seconds(3));
+                                                                self->on_exit();
+                                                        }).detach();
+                                        }
+                                }
+                                else
+                                {
+                                        if (exit_code > 1)
+                                        {
+                                                self->_log.log(lsp::Log::Level::WARNING, "The tasklist command: '" + self->command + "' returns " + std::to_string(exit_code));
+                                        }
 
-					self->timer = std::make_unique<SimpleTimer<boost::posix_time::seconds>>(self->_poll_delay_secs, [=]() {
-						self->run();
-						});
-				}
+                                        self->timer = std::make_unique<SimpleTimer<boost::posix_time::seconds>>(self->_poll_delay_secs, [=]() {
+                                                self->run();
+                                                });
+                                }
 
-				}));
-		if (ec)
-		{
-			// fail
-			_log.log(lsp::Log::Level::SEVERE, "Start parent process watcher failed.");
-		}
-	}
+                                }));
+                if (ec)
+                {
+                        // fail
+                        _log.log(lsp::Log::Level::SEVERE, "Start parent process watcher failed.");
+                }
+        }
 };
 
 ParentProcessWatcher::ParentProcessWatcher(lsp::Log& log, int pid,
-	const std::function<void()>&& callback, uint32_t  poll_delay_secs) : d_ptr(new ParentProcessWatcherData(log, pid, std::move(callback), poll_delay_secs))
+        const std::function<void()>&& callback, uint32_t  poll_delay_secs) : d_ptr(new ParentProcessWatcherData(log, pid, std::move(callback), poll_delay_secs))
 {
-	d_ptr->run();
+        d_ptr->run();
 }
 
 ParentProcessWatcher::~ParentProcessWatcher()
 {
-	if (d_ptr->timer)
-		d_ptr->timer->Stop();
+        if (d_ptr->timer)
+                d_ptr->timer->Stop();
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/lsp/ProtocolJsonHandler.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/lsp/ProtocolJsonHandler.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/lsp/ProtocolJsonHandler.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -73,644 +73,644 @@
 
 void AddStadardResponseJsonRpcMethod(MessageJsonHandler& handler)
 {
-	
-	handler.method2response[td_initialize::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if(visitor.HasMember("error"))
-		 return 	Rsp_Error::ReflectReader(visitor);
-		
-		return td_initialize::response::ReflectReader(visitor);
-	};
-	
-	handler.method2response[td_shutdown::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_shutdown::response::ReflectReader(visitor);
-	};
-	handler.method2response[td_codeAction::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
 
-		return td_codeAction::response::ReflectReader(visitor);
-	};
-	handler.method2response[td_codeLens::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_codeLens::response::ReflectReader(visitor);
-	};
-	handler.method2response[td_completion::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_completion::response::ReflectReader(visitor);
-	};
+        handler.method2response[td_initialize::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if(visitor.HasMember("error"))
+                 return         Rsp_Error::ReflectReader(visitor);
 
-	handler.method2response[td_definition::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_definition::response::ReflectReader(visitor);
-	};
-	handler.method2response[td_declaration::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_declaration::response::ReflectReader(visitor);
-	};
-	handler.method2response[td_willSaveWaitUntil::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_willSaveWaitUntil::response::ReflectReader(visitor);
-	};
-	
-	handler.method2response[td_highlight::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_highlight::response::ReflectReader(visitor);
-	};
-	
-	handler.method2response[td_links::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_links::response::ReflectReader(visitor);
-	};
-	
-	handler.method2response[td_linkResolve::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_linkResolve::response::ReflectReader(visitor);
-	};
-	
-	handler.method2response[td_symbol::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_symbol::response::ReflectReader(visitor);
-	};
-	
-	handler.method2response[td_formatting::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_formatting::response::ReflectReader(visitor);
-	};
+                return td_initialize::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[td_hover::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_hover::response::ReflectReader(visitor);
-	
-	};
-	
-	handler.method2response[td_implementation::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_implementation::response::ReflectReader(visitor);
-	};
+        handler.method2response[td_shutdown::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_shutdown::response::ReflectReader(visitor);
+        };
+        handler.method2response[td_codeAction::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-	handler.method2response[td_rangeFormatting::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_rangeFormatting::response::ReflectReader(visitor);
-	};
+                return td_codeAction::response::ReflectReader(visitor);
+        };
+        handler.method2response[td_codeLens::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_codeLens::response::ReflectReader(visitor);
+        };
+        handler.method2response[td_completion::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_completion::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[td_references::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_references::response::ReflectReader(visitor);
-	};
-	
-	handler.method2response[td_rename::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_rename::response::ReflectReader(visitor);
-	};
+        handler.method2response[td_definition::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_definition::response::ReflectReader(visitor);
+        };
+        handler.method2response[td_declaration::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_declaration::response::ReflectReader(visitor);
+        };
+        handler.method2response[td_willSaveWaitUntil::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_willSaveWaitUntil::response::ReflectReader(visitor);
+        };
 
+        handler.method2response[td_highlight::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_highlight::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[td_signatureHelp::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_signatureHelp::response::ReflectReader(visitor);
-	};
+        handler.method2response[td_links::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_links::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[td_typeDefinition::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_typeDefinition::response::ReflectReader(visitor);
-	};
+        handler.method2response[td_linkResolve::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_linkResolve::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[wp_executeCommand::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return wp_executeCommand::response::ReflectReader(visitor);
-	};
+        handler.method2response[td_symbol::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_symbol::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[wp_symbol::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return wp_symbol::response::ReflectReader(visitor);
-	};
-	handler.method2response[td_typeHierarchy::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_typeHierarchy::response::ReflectReader(visitor);
-	};
-	handler.method2response[completionItem_resolve::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return completionItem_resolve::response::ReflectReader(visitor);
-	};
+        handler.method2response[td_formatting::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_formatting::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[codeLens_resolve::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		
-		return codeLens_resolve::response::ReflectReader(visitor);
-		
-	};
+        handler.method2response[td_hover::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_hover::response::ReflectReader(visitor);
 
-	handler.method2response[td_colorPresentation::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        };
 
-		return td_colorPresentation::response::ReflectReader(visitor);
+        handler.method2response[td_implementation::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_implementation::response::ReflectReader(visitor);
+        };
 
-	};
-	handler.method2response[td_documentColor::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[td_rangeFormatting::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_rangeFormatting::response::ReflectReader(visitor);
+        };
 
-		return td_documentColor::response::ReflectReader(visitor);
+        handler.method2response[td_references::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_references::response::ReflectReader(visitor);
+        };
 
-	};
-	handler.method2response[td_foldingRange::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[td_rename::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_rename::response::ReflectReader(visitor);
+        };
 
-		return td_foldingRange::response::ReflectReader(visitor);
 
-	};
-	handler.method2response[td_prepareRename::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[td_signatureHelp::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_signatureHelp::response::ReflectReader(visitor);
+        };
 
-		return td_prepareRename::response::ReflectReader(visitor);
+        handler.method2response[td_typeDefinition::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_typeDefinition::response::ReflectReader(visitor);
+        };
 
-	};
-	handler.method2response[typeHierarchy_resolve::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[wp_executeCommand::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return wp_executeCommand::response::ReflectReader(visitor);
+        };
 
-		return typeHierarchy_resolve::response::ReflectReader(visitor);
+        handler.method2response[wp_symbol::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return wp_symbol::response::ReflectReader(visitor);
+        };
+        handler.method2response[td_typeHierarchy::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_typeHierarchy::response::ReflectReader(visitor);
+        };
+        handler.method2response[completionItem_resolve::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return completionItem_resolve::response::ReflectReader(visitor);
+        };
 
-	};
+        handler.method2response[codeLens_resolve::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-	handler.method2response[td_selectionRange::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+                return codeLens_resolve::response::ReflectReader(visitor);
 
-		return td_selectionRange::response::ReflectReader(visitor);
+        };
 
-	};
-	handler.method2response[td_didRenameFiles::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[td_colorPresentation::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return td_didRenameFiles::response::ReflectReader(visitor);
+                return td_colorPresentation::response::ReflectReader(visitor);
 
-	};
-	handler.method2response[td_willRenameFiles::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        };
+        handler.method2response[td_documentColor::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return td_willRenameFiles::response::ReflectReader(visitor);
+                return td_documentColor::response::ReflectReader(visitor);
 
-	};
-	
+        };
+        handler.method2response[td_foldingRange::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+
+                return td_foldingRange::response::ReflectReader(visitor);
+
+        };
+        handler.method2response[td_prepareRename::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+
+                return td_prepareRename::response::ReflectReader(visitor);
+
+        };
+        handler.method2response[typeHierarchy_resolve::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+
+                return typeHierarchy_resolve::response::ReflectReader(visitor);
+
+        };
+
+        handler.method2response[td_selectionRange::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+
+                return td_selectionRange::response::ReflectReader(visitor);
+
+        };
+        handler.method2response[td_didRenameFiles::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+
+                return td_didRenameFiles::response::ReflectReader(visitor);
+
+        };
+        handler.method2response[td_willRenameFiles::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+
+                return td_willRenameFiles::response::ReflectReader(visitor);
+
+        };
+
 }
 
 
 void AddJavaExtentionResponseJsonRpcMethod(MessageJsonHandler& handler)
 {
-	handler.method2response[java_classFileContents::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_classFileContents::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_classFileContents::response::ReflectReader(visitor);
-	};
-	handler.method2response[java_buildWorkspace::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+                return java_classFileContents::response::ReflectReader(visitor);
+        };
+        handler.method2response[java_buildWorkspace::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_buildWorkspace::response::ReflectReader(visitor);
-	};
-	handler.method2response[java_listOverridableMethods::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+                return java_buildWorkspace::response::ReflectReader(visitor);
+        };
+        handler.method2response[java_listOverridableMethods::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_listOverridableMethods::response::ReflectReader(visitor);
-	};
-	handler.method2response[java_listOverridableMethods::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+                return java_listOverridableMethods::response::ReflectReader(visitor);
+        };
+        handler.method2response[java_listOverridableMethods::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_listOverridableMethods::response::ReflectReader(visitor);
-	};
+                return java_listOverridableMethods::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[java_checkHashCodeEqualsStatus::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_checkHashCodeEqualsStatus::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_checkHashCodeEqualsStatus::response::ReflectReader(visitor);
-	};
+                return java_checkHashCodeEqualsStatus::response::ReflectReader(visitor);
+        };
 
 
-	handler.method2response[java_addOverridableMethods::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_addOverridableMethods::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_addOverridableMethods::response::ReflectReader(visitor);
-	};
+                return java_addOverridableMethods::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[java_checkConstructorsStatus::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_checkConstructorsStatus::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_checkConstructorsStatus::response::ReflectReader(visitor);
-	};
+                return java_checkConstructorsStatus::response::ReflectReader(visitor);
+        };
 
 
-	handler.method2response[java_checkDelegateMethodsStatus::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_checkDelegateMethodsStatus::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_checkDelegateMethodsStatus::response::ReflectReader(visitor);
-	};
-	handler.method2response[java_checkToStringStatus::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+                return java_checkDelegateMethodsStatus::response::ReflectReader(visitor);
+        };
+        handler.method2response[java_checkToStringStatus::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_checkToStringStatus::response::ReflectReader(visitor);
-	};
+                return java_checkToStringStatus::response::ReflectReader(visitor);
+        };
 
 
-	handler.method2response[java_generateAccessors::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_generateAccessors::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_generateAccessors::response::ReflectReader(visitor);
-	};
-	handler.method2response[java_generateConstructors::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+                return java_generateAccessors::response::ReflectReader(visitor);
+        };
+        handler.method2response[java_generateConstructors::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_generateConstructors::response::ReflectReader(visitor);
-	};
-	handler.method2response[java_generateDelegateMethods::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+                return java_generateConstructors::response::ReflectReader(visitor);
+        };
+        handler.method2response[java_generateDelegateMethods::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_generateDelegateMethods::response::ReflectReader(visitor);
-	};
+                return java_generateDelegateMethods::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[java_generateHashCodeEquals::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_generateHashCodeEquals::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_generateHashCodeEquals::response::ReflectReader(visitor);
-	};
-	handler.method2response[java_generateToString::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+                return java_generateHashCodeEquals::response::ReflectReader(visitor);
+        };
+        handler.method2response[java_generateToString::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_generateToString::response::ReflectReader(visitor);
-	};
+                return java_generateToString::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[java_generateToString::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_generateToString::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_generateToString::response::ReflectReader(visitor);
-	};
+                return java_generateToString::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[java_getMoveDestinations::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_getMoveDestinations::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_getMoveDestinations::response::ReflectReader(visitor);
-	};
+                return java_getMoveDestinations::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[java_getRefactorEdit::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_getRefactorEdit::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_getRefactorEdit::response::ReflectReader(visitor);
-	};
+                return java_getRefactorEdit::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[java_move::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_move::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_move::response ::ReflectReader(visitor);
-	};
+                return java_move::response ::ReflectReader(visitor);
+        };
 
-	handler.method2response[java_organizeImports::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_organizeImports::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_organizeImports::response::ReflectReader(visitor);
-	};
+                return java_organizeImports::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[java_resolveUnimplementedAccessors::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_resolveUnimplementedAccessors::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_resolveUnimplementedAccessors::response::ReflectReader(visitor);
-	};
+                return java_resolveUnimplementedAccessors::response::ReflectReader(visitor);
+        };
 
-	handler.method2response[java_searchSymbols::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
+        handler.method2response[java_searchSymbols::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
 
-		return java_searchSymbols::response::ReflectReader(visitor);
-	};
+                return java_searchSymbols::response::ReflectReader(visitor);
+        };
 
-	handler.method2request[WorkspaceConfiguration::request::kMethodInfo] = [](Reader& visitor)
-	{
-		return WorkspaceConfiguration::request::ReflectReader(visitor);
-	};
-	handler.method2request[WorkspaceFolders::request::kMethodInfo] = [](Reader& visitor)
-	{
-		return WorkspaceFolders::request::ReflectReader(visitor);
-	};
-	
+        handler.method2request[WorkspaceConfiguration::request::kMethodInfo] = [](Reader& visitor)
+        {
+                return WorkspaceConfiguration::request::ReflectReader(visitor);
+        };
+        handler.method2request[WorkspaceFolders::request::kMethodInfo] = [](Reader& visitor)
+        {
+                return WorkspaceFolders::request::ReflectReader(visitor);
+        };
+
 }
 
 void AddNotifyJsonRpcMethod(MessageJsonHandler& handler)
 {
 
-	handler.method2notification[Notify_Exit::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_Exit::notify::ReflectReader(visitor);
-	};
-	handler.method2notification[Notify_InitializedNotification::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_InitializedNotification::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[Notify_Exit::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_Exit::notify::ReflectReader(visitor);
+        };
+        handler.method2notification[Notify_InitializedNotification::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_InitializedNotification::notify::ReflectReader(visitor);
+        };
 
-	handler.method2notification[java_projectConfigurationUpdate::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return java_projectConfigurationUpdate::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[java_projectConfigurationUpdate::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return java_projectConfigurationUpdate::notify::ReflectReader(visitor);
+        };
 
-	handler.method2notification[Notify_TextDocumentDidChange::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_TextDocumentDidChange::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[Notify_TextDocumentDidChange::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_TextDocumentDidChange::notify::ReflectReader(visitor);
+        };
 
-	handler.method2notification[Notify_TextDocumentDidClose::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_TextDocumentDidClose::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[Notify_TextDocumentDidClose::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_TextDocumentDidClose::notify::ReflectReader(visitor);
+        };
 
 
-	handler.method2notification[Notify_TextDocumentDidOpen::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_TextDocumentDidOpen::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[Notify_TextDocumentDidOpen::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_TextDocumentDidOpen::notify::ReflectReader(visitor);
+        };
 
-	handler.method2notification[Notify_TextDocumentDidSave::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_TextDocumentDidSave::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[Notify_TextDocumentDidSave::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_TextDocumentDidSave::notify::ReflectReader(visitor);
+        };
 
-	handler.method2notification[Notify_TextDocumentPublishDiagnostics::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_TextDocumentPublishDiagnostics::notify::ReflectReader(visitor);
-	};
-	handler.method2notification[Notify_semanticHighlighting::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_semanticHighlighting::notify::ReflectReader(visitor);
-	};
-	handler.method2notification[td_willSave::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return td_willSave::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[Notify_TextDocumentPublishDiagnostics::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_TextDocumentPublishDiagnostics::notify::ReflectReader(visitor);
+        };
+        handler.method2notification[Notify_semanticHighlighting::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_semanticHighlighting::notify::ReflectReader(visitor);
+        };
+        handler.method2notification[td_willSave::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return td_willSave::notify::ReflectReader(visitor);
+        };
 
-	handler.method2notification[Notify_LogMessage::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_LogMessage::notify::ReflectReader(visitor);
-	};
-	handler.method2notification[Notify_ShowMessage::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_ShowMessage::notify::ReflectReader(visitor);
-	};
-	handler.method2notification[Notify_WorkspaceDidChangeWorkspaceFolders::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_WorkspaceDidChangeWorkspaceFolders::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[Notify_LogMessage::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_LogMessage::notify::ReflectReader(visitor);
+        };
+        handler.method2notification[Notify_ShowMessage::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_ShowMessage::notify::ReflectReader(visitor);
+        };
+        handler.method2notification[Notify_WorkspaceDidChangeWorkspaceFolders::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_WorkspaceDidChangeWorkspaceFolders::notify::ReflectReader(visitor);
+        };
 
-	handler.method2notification[Notify_WorkspaceDidChangeConfiguration::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_WorkspaceDidChangeConfiguration::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[Notify_WorkspaceDidChangeConfiguration::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_WorkspaceDidChangeConfiguration::notify::ReflectReader(visitor);
+        };
 
 
-	handler.method2notification[Notify_WorkspaceDidChangeWatchedFiles::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_WorkspaceDidChangeWatchedFiles::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[Notify_WorkspaceDidChangeWatchedFiles::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_WorkspaceDidChangeWatchedFiles::notify::ReflectReader(visitor);
+        };
 
-	handler.method2notification[Notify_sendNotification::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return Notify_sendNotification::notify::ReflectReader(visitor);
-	};
-	handler.method2notification[lang_status::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return lang_status::notify::ReflectReader(visitor);
-	};
-	handler.method2notification[lang_actionableNotification::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return lang_actionableNotification::notify::ReflectReader(visitor);
-	};
-	handler.method2notification[lang_progressReport::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return lang_progressReport::notify::ReflectReader(visitor);
-	};
-	handler.method2notification[lang_eventNotification::notify::kMethodInfo] = [](Reader& visitor)
-	{
-		return lang_eventNotification::notify::ReflectReader(visitor);
-	};
+        handler.method2notification[Notify_sendNotification::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return Notify_sendNotification::notify::ReflectReader(visitor);
+        };
+        handler.method2notification[lang_status::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return lang_status::notify::ReflectReader(visitor);
+        };
+        handler.method2notification[lang_actionableNotification::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return lang_actionableNotification::notify::ReflectReader(visitor);
+        };
+        handler.method2notification[lang_progressReport::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return lang_progressReport::notify::ReflectReader(visitor);
+        };
+        handler.method2notification[lang_eventNotification::notify::kMethodInfo] = [](Reader& visitor)
+        {
+                return lang_eventNotification::notify::ReflectReader(visitor);
+        };
 }
 
 void AddRequstJsonRpcMethod(MessageJsonHandler& handler)
 {
-	handler.method2request[Req_ClientRegisterCapability::request::kMethodInfo]= [](Reader& visitor)
-	{
+        handler.method2request[Req_ClientRegisterCapability::request::kMethodInfo]= [](Reader& visitor)
+        {
 
-		return Req_ClientRegisterCapability::request::ReflectReader(visitor);
-	};
-	handler.method2request[Req_ClientUnregisterCapability::request::kMethodInfo] = [](Reader& visitor)
-	{
+                return Req_ClientRegisterCapability::request::ReflectReader(visitor);
+        };
+        handler.method2request[Req_ClientUnregisterCapability::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-		return Req_ClientUnregisterCapability::request::ReflectReader(visitor);
-	};
+                return Req_ClientUnregisterCapability::request::ReflectReader(visitor);
+        };
 }
 
 void AddStandardRequestJsonRpcMethod(MessageJsonHandler& handler)
 {
 
-	handler.method2request[td_initialize::request::kMethodInfo] = [](Reader& visitor)
-	{
-	
-		return td_initialize::request::ReflectReader(visitor);
-	};
-	handler.method2request[td_shutdown::request::kMethodInfo] = [](Reader& visitor)
-	{
+        handler.method2request[td_initialize::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-		return td_shutdown::request::ReflectReader(visitor);
-	};
-	handler.method2request[td_codeAction::request::kMethodInfo] = [](Reader& visitor)
-	{
+                return td_initialize::request::ReflectReader(visitor);
+        };
+        handler.method2request[td_shutdown::request::kMethodInfo] = [](Reader& visitor)
+        {
 
+                return td_shutdown::request::ReflectReader(visitor);
+        };
+        handler.method2request[td_codeAction::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-		return td_codeAction::request::ReflectReader(visitor);
-	};
-	handler.method2request[td_codeLens::request::kMethodInfo] = [](Reader& visitor)
-	{
 
-		return td_codeLens::request::ReflectReader(visitor);
-	};
-	handler.method2request[td_completion::request::kMethodInfo] = [](Reader& visitor)
-	{
+                return td_codeAction::request::ReflectReader(visitor);
+        };
+        handler.method2request[td_codeLens::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-		return td_completion::request::ReflectReader(visitor);
-	};
+                return td_codeLens::request::ReflectReader(visitor);
+        };
+        handler.method2request[td_completion::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-	handler.method2request[td_definition::request::kMethodInfo] = [](Reader& visitor)
-	{
+                return td_completion::request::ReflectReader(visitor);
+        };
 
-		return td_definition::request::ReflectReader(visitor);
-	};
-	handler.method2request[td_declaration::request::kMethodInfo] = [](Reader& visitor)
-	{
+        handler.method2request[td_definition::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-		return td_declaration::request::ReflectReader(visitor);
-	};
-	handler.method2request[td_willSaveWaitUntil::request::kMethodInfo] = [](Reader& visitor)
-	{
-		if (visitor.HasMember("error"))
-			return 	Rsp_Error::ReflectReader(visitor);
-		return td_willSaveWaitUntil::request::ReflectReader(visitor);
-	};
+                return td_definition::request::ReflectReader(visitor);
+        };
+        handler.method2request[td_declaration::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-	handler.method2request[td_highlight::request::kMethodInfo] = [](Reader& visitor)
-	{
+                return td_declaration::request::ReflectReader(visitor);
+        };
+        handler.method2request[td_willSaveWaitUntil::request::kMethodInfo] = [](Reader& visitor)
+        {
+                if (visitor.HasMember("error"))
+                        return  Rsp_Error::ReflectReader(visitor);
+                return td_willSaveWaitUntil::request::ReflectReader(visitor);
+        };
 
-		return td_highlight::request::ReflectReader(visitor);
-	};
+        handler.method2request[td_highlight::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-	handler.method2request[td_links::request::kMethodInfo] = [](Reader& visitor)
-	{
+                return td_highlight::request::ReflectReader(visitor);
+        };
 
-		return td_links::request::ReflectReader(visitor);
-	};
+        handler.method2request[td_links::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-	handler.method2request[td_linkResolve::request::kMethodInfo] = [](Reader& visitor)
-	{
-	
-		return td_linkResolve::request::ReflectReader(visitor);
-	};
+                return td_links::request::ReflectReader(visitor);
+        };
 
-	handler.method2request[td_symbol::request::kMethodInfo] = [](Reader& visitor)
-	{
+        handler.method2request[td_linkResolve::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-		return td_symbol::request::ReflectReader(visitor);
-	};
+                return td_linkResolve::request::ReflectReader(visitor);
+        };
 
-	handler.method2request[td_formatting::request::kMethodInfo] = [](Reader& visitor)
-	{
+        handler.method2request[td_symbol::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-		return td_formatting::request::ReflectReader(visitor);
-	};
+                return td_symbol::request::ReflectReader(visitor);
+        };
 
-	handler.method2request[td_hover::request::kMethodInfo] = [](Reader& visitor)
-	{
-		return td_hover::request::ReflectReader(visitor);
-	};
+        handler.method2request[td_formatting::request::kMethodInfo] = [](Reader& visitor)
+        {
 
-	handler.method2request[td_implementation::request::kMethodInfo] = [](Reader& visitor)
-	{
-	
-		return td_implementation::request::ReflectReader(visitor);
-	};
-	
-	handler.method2request[td_didRenameFiles::request::kMethodInfo] = [](Reader& visitor)
-	{
+                return td_formatting::request::ReflectReader(visitor);
+        };
 
-		return td_didRenameFiles::request::ReflectReader(visitor);
-	};
-	
-	handler.method2request[td_willRenameFiles::request::kMethodInfo] = [](Reader& visitor)
-	{
-		return td_willRenameFiles::request::ReflectReader(visitor);
-	};
+        handler.method2request[td_hover::request::kMethodInfo] = [](Reader& visitor)
+        {
+                return td_hover::request::ReflectReader(visitor);
+        };
+
+        handler.method2request[td_implementation::request::kMethodInfo] = [](Reader& visitor)
+        {
+
+                return td_implementation::request::ReflectReader(visitor);
+        };
+
+        handler.method2request[td_didRenameFiles::request::kMethodInfo] = [](Reader& visitor)
+        {
+
+                return td_didRenameFiles::request::ReflectReader(visitor);
+        };
+
+        handler.method2request[td_willRenameFiles::request::kMethodInfo] = [](Reader& visitor)
+        {
+                return td_willRenameFiles::request::ReflectReader(visitor);
+        };
 }
 
 
 lsp::ProtocolJsonHandler::ProtocolJsonHandler()
 {
-	AddStadardResponseJsonRpcMethod(*this);
-	AddJavaExtentionResponseJsonRpcMethod(*this);
-	AddNotifyJsonRpcMethod(*this);
-	AddStandardRequestJsonRpcMethod(*this);
-	AddRequstJsonRpcMethod(*this);
+        AddStadardResponseJsonRpcMethod(*this);
+        AddJavaExtentionResponseJsonRpcMethod(*this);
+        AddNotifyJsonRpcMethod(*this);
+        AddStandardRequestJsonRpcMethod(*this);
+        AddRequstJsonRpcMethod(*this);
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/lsp/initialize.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/lsp/initialize.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/lsp/initialize.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -3,43 +3,43 @@
 
 void Reflect(Reader& reader, lsInitializeParams::lsTrace& value)
 {
-	if (!reader.IsString())
-	{
-		value = lsInitializeParams::lsTrace::Off;
-		return;
-	}
-	std::string v = reader.GetString();
-	if (v == "off")
-		value = lsInitializeParams::lsTrace::Off;
-	else if (v == "messages")
-		value = lsInitializeParams::lsTrace::Messages;
-	else if (v == "verbose")
-		value = lsInitializeParams::lsTrace::Verbose;
+        if (!reader.IsString())
+        {
+                value = lsInitializeParams::lsTrace::Off;
+                return;
+        }
+        std::string v = reader.GetString();
+        if (v == "off")
+                value = lsInitializeParams::lsTrace::Off;
+        else if (v == "messages")
+                value = lsInitializeParams::lsTrace::Messages;
+        else if (v == "verbose")
+                value = lsInitializeParams::lsTrace::Verbose;
 }
 
 void Reflect(Writer& writer, lsInitializeParams::lsTrace& value)
 {
-	switch (value)
-	{
-	case lsInitializeParams::lsTrace::Off:
-		writer.String("off");
-		break;
-	case lsInitializeParams::lsTrace::Messages:
-		writer.String("messages");
-		break;
-	case lsInitializeParams::lsTrace::Verbose:
-		writer.String("verbose");
-		break;
-	}
+        switch (value)
+        {
+        case lsInitializeParams::lsTrace::Off:
+                writer.String("off");
+                break;
+        case lsInitializeParams::lsTrace::Messages:
+                writer.String("messages");
+                break;
+        case lsInitializeParams::lsTrace::Verbose:
+                writer.String("verbose");
+                break;
+        }
 }
  void Reflect(Reader& visitor, std::pair<boost::optional<lsTextDocumentSyncKind>, boost::optional<lsTextDocumentSyncOptions> >& value)
 {
-	if(((JsonReader&)visitor).m_->IsObject())
-	{
-		Reflect(visitor, value.second);
-	}
-	else
-	{
-		Reflect(visitor, value.first);
-	}
-}
\ No newline at end of file
+        if(((JsonReader&)visitor).m_->IsObject())
+        {
+                Reflect(visitor, value.second);
+        }
+        else
+        {
+                Reflect(visitor, value.first);
+        }
+}

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/lsp/lsp.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/lsp/lsp.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/lsp/lsp.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -86,10 +86,10 @@
 
 std::string lsRange::ToString() const
 {
-	std::stringstream ss;
-	ss << "start:" << start.ToString() << std::endl;
-	ss << "end" << end.ToString() << std::endl;
-	return ss.str();
+        std::stringstream ss;
+        ss << "start:" << start.ToString() << std::endl;
+        ss << "end" << end.ToString() << std::endl;
+        return ss.str();
 }
 
 lsLocation::lsLocation() {}
@@ -111,10 +111,10 @@
 
 std::string lsTextEdit::ToString() const
 {
-	std::stringstream ss;
-	ss << "Range:" << range.ToString() << std::endl;
-	ss << "newText:" << newText << std::endl;
-	return ss.str();
+        std::stringstream ss;
+        ss << "Range:" << range.ToString() << std::endl;
+        ss << "newText:" << newText << std::endl;
+        return ss.str();
 }
 
 void Reflect(Writer& visitor, lsMarkedString& value) {
@@ -132,39 +132,39 @@
 
 void Reflect(Reader& visitor, lsMarkedString& value)
 {
-	REFLECT_MEMBER_START();
-	REFLECT_MEMBER(language);
-	REFLECT_MEMBER(value);
-	REFLECT_MEMBER_END();
+        REFLECT_MEMBER_START();
+        REFLECT_MEMBER(language);
+        REFLECT_MEMBER(value);
+        REFLECT_MEMBER_END();
 }
 
   void Reflect(Reader& visitor, LocationListEither::Either& value)
 {
-	  if(!visitor.IsArray())
-	  {
-		  throw std::invalid_argument("Rsp_LocationListEither::Either& value is not array");
-	  }
-	  auto data = ((JsonReader&)visitor).m_->GetArray();
-	  if (data.Size() && data[0].HasMember("originSelectionRange"))
-	  {
-		  Reflect(visitor, value.second);
-	  }
-	  else {
-		  Reflect(visitor, value.first);
-	  }
+          if(!visitor.IsArray())
+          {
+                  throw std::invalid_argument("Rsp_LocationListEither::Either& value is not array");
+          }
+          auto data = ((JsonReader&)visitor).m_->GetArray();
+          if (data.Size() && data[0].HasMember("originSelectionRange"))
+          {
+                  Reflect(visitor, value.second);
+          }
+          else {
+                  Reflect(visitor, value.first);
+          }
 
 }
 
  void Reflect(Writer& visitor, LocationListEither::Either& value)
 {
-	if (value.first)
-	{
-		Reflect(visitor, value.first.value());
-	}
-	else if (value.second)
-	{
-		Reflect(visitor, value.second.value());
-	}
+        if (value.first)
+        {
+                Reflect(visitor, value.first.value());
+        }
+        else if (value.second)
+        {
+                Reflect(visitor, value.second.value());
+        }
 }
 
 
@@ -172,28 +172,28 @@
 {
 
 
-	if(visitor.HasMember("command"))
-	{
-		if(visitor["command"]->IsString())
-		{
-			Reflect(visitor, value.first);
-		}
-		else
-		{
-			Reflect(visitor, value.second);
-		}
-	}
-	else
-	{
-		if (visitor.HasMember("diagnostics") || visitor.HasMember("edit"))
-		{
-			Reflect(visitor, value.second);
-		}
-		else
-		{
-			Reflect(visitor, value.first);
-		}
-	}
+        if(visitor.HasMember("command"))
+        {
+                if(visitor["command"]->IsString())
+                {
+                        Reflect(visitor, value.first);
+                }
+                else
+                {
+                        Reflect(visitor, value.second);
+                }
+        }
+        else
+        {
+                if (visitor.HasMember("diagnostics") || visitor.HasMember("edit"))
+                {
+                        Reflect(visitor, value.second);
+                }
+                else
+                {
+                        Reflect(visitor, value.first);
+                }
+        }
 
 }
 
@@ -202,389 +202,389 @@
 {
 
 
-	if(visitor.HasMember("textDocument"))
-	{
-		Reflect(visitor, value.first);
-	}
-	else
-	{
-		Reflect(visitor, value.second);
-	}
+        if(visitor.HasMember("textDocument"))
+        {
+                Reflect(visitor, value.first);
+        }
+        else
+        {
+                Reflect(visitor, value.second);
+        }
 }
 ResourceOperation* GetResourceOperation(lsp::Any& lspAny)
 {
-	rapidjson::Document document;
-	auto& data = lspAny.Data();
-	document.Parse(data.c_str(), data.length());
-	if (document.HasParseError()) {
-		// ��ʾ
-		return nullptr;
-	}
-	auto find = document.FindMember("kind");
+        rapidjson::Document document;
+        auto& data = lspAny.Data();
+        document.Parse(data.c_str(), data.length());
+        if (document.HasParseError()) {
+                // ��ʾ
+                return nullptr;
+        }
+        auto find = document.FindMember("kind");
 
-	JsonReader visitor{ &document };
-	try
-	{
-		if (find->value == "create")
-		{
-			auto ptr = std::make_unique<lsCreateFile>();
-			auto temp = ptr.get();
-			Reflect(visitor, *temp);
-			return ptr.release();
-		}
-		else if (find->value == "rename")
-		{
-			auto ptr = std::make_unique<lsRenameFile>();
-			auto temp = ptr.get();
-			Reflect(visitor, *temp);
-			return ptr.release();
-		}
-		else if (find->value == "delete")
-		{
+        JsonReader visitor{ &document };
+        try
+        {
+                if (find->value == "create")
+                {
+                        auto ptr = std::make_unique<lsCreateFile>();
+                        auto temp = ptr.get();
+                        Reflect(visitor, *temp);
+                        return ptr.release();
+                }
+                else if (find->value == "rename")
+                {
+                        auto ptr = std::make_unique<lsRenameFile>();
+                        auto temp = ptr.get();
+                        Reflect(visitor, *temp);
+                        return ptr.release();
+                }
+                else if (find->value == "delete")
+                {
 
-			auto ptr = std::make_unique<lsDeleteFile>();
-			auto temp = ptr.get();
-			Reflect(visitor, *temp);
-			return ptr.release();
-		}
-	}
-	catch (std::exception&)
-	{
+                        auto ptr = std::make_unique<lsDeleteFile>();
+                        auto temp = ptr.get();
+                        Reflect(visitor, *temp);
+                        return ptr.release();
+                }
+        }
+        catch (std::exception&)
+        {
 
-	}
-	return nullptr;
+        }
+        return nullptr;
 }
 
   void Reflect(Writer& visitor, ResourceOperation* value)
 {
 
-	if(!value)
-	{
-		throw std::invalid_argument("ResourceOperation value is nullptr");
-	}
-	if (value->kind == "create")
-	{
-		auto temp = (lsCreateFile*)value;
-		Reflect(visitor, *temp);
-	}
-	else if (value->kind == "rename")
-	{
-		auto temp = (lsRenameFile*)value;
-		Reflect(visitor, *temp);
-	}
-	else if (value->kind == "delete")
-	{
+        if(!value)
+        {
+                throw std::invalid_argument("ResourceOperation value is nullptr");
+        }
+        if (value->kind == "create")
+        {
+                auto temp = (lsCreateFile*)value;
+                Reflect(visitor, *temp);
+        }
+        else if (value->kind == "rename")
+        {
+                auto temp = (lsRenameFile*)value;
+                Reflect(visitor, *temp);
+        }
+        else if (value->kind == "delete")
+        {
 
-		auto temp = (lsDeleteFile*)value;
-		Reflect(visitor, *temp);
-	}
+                auto temp = (lsDeleteFile*)value;
+                Reflect(visitor, *temp);
+        }
 
 }
 
 int lsp::Any::GuessType()
 {
-	if (!data.empty())
-	{
-		if (data == "null")
-		{
-			jsonType = rapidjson::kNullType;
-		}
-		else if (data == "true")
-		{
-			jsonType = rapidjson::kTrueType;
-		}
-		else if(data == "false")
-		{
-			jsonType = rapidjson::kFalseType;
-		}
-		else if (data[0] == '{')
-		{
-			jsonType = rapidjson::kObjectType;
-		}
-		else if (data[0] == '[')
-		{
-			if (data.size() >= 2 && data[1] == '{')
-				jsonType = rapidjson::kStringType;
-			else
-				jsonType = rapidjson::kArrayType;
-		}
-		else if (data[0] == '"')
-		{
-			jsonType = rapidjson::kStringType;
-		}
-		else
-		{
-			jsonType = rapidjson::kNumberType;
-		}
-	}
-	else
-	{
-		if (jsonType != kUnKnown)
-			return jsonType;
-		jsonType = rapidjson::kNullType;
-	}
-	return  jsonType;
+        if (!data.empty())
+        {
+                if (data == "null")
+                {
+                        jsonType = rapidjson::kNullType;
+                }
+                else if (data == "true")
+                {
+                        jsonType = rapidjson::kTrueType;
+                }
+                else if(data == "false")
+                {
+                        jsonType = rapidjson::kFalseType;
+                }
+                else if (data[0] == '{')
+                {
+                        jsonType = rapidjson::kObjectType;
+                }
+                else if (data[0] == '[')
+                {
+                        if (data.size() >= 2 && data[1] == '{')
+                                jsonType = rapidjson::kStringType;
+                        else
+                                jsonType = rapidjson::kArrayType;
+                }
+                else if (data[0] == '"')
+                {
+                        jsonType = rapidjson::kStringType;
+                }
+                else
+                {
+                        jsonType = rapidjson::kNumberType;
+                }
+        }
+        else
+        {
+                if (jsonType != kUnKnown)
+                        return jsonType;
+                jsonType = rapidjson::kNullType;
+        }
+        return  jsonType;
 }
 
 int lsp::Any::GetType()
 {
-	if (jsonType == Type::kUnKnown)
-	{
-		if (data.empty())
-		{
-			jsonType = rapidjson::kNullType;
-			return jsonType;
-		}
-		rapidjson::Document document;
-		document.Parse(data.c_str(), data.length());
-		if (document.HasParseError())
-		{
-			// ��ʾ
-			return jsonType;
-		}
-		jsonType = document.GetType();
-	}
-	return jsonType;
+        if (jsonType == Type::kUnKnown)
+        {
+                if (data.empty())
+                {
+                        jsonType = rapidjson::kNullType;
+                        return jsonType;
+                }
+                rapidjson::Document document;
+                document.Parse(data.c_str(), data.length());
+                if (document.HasParseError())
+                {
+                        // ��ʾ
+                        return jsonType;
+                }
+                jsonType = document.GetType();
+        }
+        return jsonType;
 }
 
 void lsp::Any::Set(std::unique_ptr<LspMessage> value)
 {
-	if (value)
-	{
-		jsonType = rapidjson::Type::kObjectType;
-		data = value->ToJson();
-	}
-	else
-	{
-		assert(false);
-	}
+        if (value)
+        {
+                jsonType = rapidjson::Type::kObjectType;
+                data = value->ToJson();
+        }
+        else
+        {
+                assert(false);
+        }
 }
 
 void lsp::Any::SetJsonString(std::string&& _data, Type _type)
 {
-	jsonType = _type;
-	data.swap(_data);
-	GetType();
+        jsonType = _type;
+        data.swap(_data);
+        GetType();
 }
 
 void lsp::Any::SetJsonString(const std::string& _data, Type _type)
 {
-	jsonType = _type;
-	data = (_data);
-	GetType();
+        jsonType = _type;
+        data = (_data);
+        GetType();
 }
 
 void lsp::Any::swap(Any& arg) noexcept
 {
-	data.swap(arg.data);
-	const int temp = jsonType;
-	jsonType = arg.jsonType;
-	arg.jsonType = temp;
+        data.swap(arg.data);
+        const int temp = jsonType;
+        jsonType = arg.jsonType;
+        arg.jsonType = temp;
 }
 
 class JsonReaderForAny : public  JsonReader
 {
 public:
-	JsonReaderForAny()
-		: JsonReader(&document)
-	{
-	}
-	rapidjson::Document document;
+        JsonReaderForAny()
+                : JsonReader(&document)
+        {
+        }
+        rapidjson::Document document;
 };
 
 bool lsp::Any::GetForMapHelper(std::string& value)
 {
-	return Get(value);
+        return Get(value);
 }
 
 bool lsp::Any::GetForMapHelper(boost::optional<std::string>& value)
 {
-	return Get(value);
+        return Get(value);
 }
 
 std::unique_ptr<Reader> lsp::Any::GetReader()
 {
-	auto reader = new JsonReaderForAny();
-	std::unique_ptr<Reader> ret(reader);
-	reader->document.Parse(data.c_str(), data.length());
-	if (reader->document.HasParseError())
-	{
-		return {};
-	}
-	if (jsonType == kUnKnown)
-	{
-		jsonType = reader->document.GetType();
-	}
-	return (ret);
+        auto reader = new JsonReaderForAny();
+        std::unique_ptr<Reader> ret(reader);
+        reader->document.Parse(data.c_str(), data.length());
+        if (reader->document.HasParseError())
+        {
+                return {};
+        }
+        if (jsonType == kUnKnown)
+        {
+                jsonType = reader->document.GetType();
+        }
+        return (ret);
 }
 
 class JsonWriterForAny : public JsonWriter
 {
 public:
-	rapidjson::StringBuffer output;
-	rapidjson::Writer<rapidjson::StringBuffer> writer;
-	JsonWriterForAny():JsonWriter(&writer), writer(output)
-	{
+        rapidjson::StringBuffer output;
+        rapidjson::Writer<rapidjson::StringBuffer> writer;
+        JsonWriterForAny():JsonWriter(&writer), writer(output)
+        {
 
-	}
+        }
 };
 
 std::unique_ptr<Writer> lsp::Any::GetWriter() const
 {
-	return std::make_unique<JsonWriterForAny>();
+        return std::make_unique<JsonWriterForAny>();
 }
 
 void lsp::Any::SetData(std::unique_ptr<Writer>& writer)
 {
-	auto _temp = static_cast<JsonWriterForAny*>(writer.get());
-	data = _temp->output.GetString();
-	GuessType();
+        auto _temp = static_cast<JsonWriterForAny*>(writer.get());
+        data = _temp->output.GetString();
+        GuessType();
 }
 
 namespace
 {
 #if 0
-	rapidjson::Type convert(lsp::Any::Type type)
-	{
-		switch (type)
-		{
-		case lsp::Any::Type::kNullType:
-			return rapidjson::Type::kNullType;
-		case lsp::Any::Type::kFalseType:
-			return rapidjson::Type::kFalseType;
-		case lsp::Any::Type::kTrueType:
-			return rapidjson::Type::kTrueType;
-		case lsp::Any::Type::kObjectType:
-			return rapidjson::Type::kObjectType;
-		case lsp::Any::Type::kArrayType:
-			return rapidjson::Type::kArrayType;
-		case lsp::Any::Type::kStringType:
-			return rapidjson::Type::kStringType;
-		case lsp::Any::Type::kNumberType:
-			return rapidjson::Type::kNumberType;
-		default:
-			return rapidjson::Type::kNullType;
-		}
-	}
+        rapidjson::Type convert(lsp::Any::Type type)
+        {
+                switch (type)
+                {
+                case lsp::Any::Type::kNullType:
+                        return rapidjson::Type::kNullType;
+                case lsp::Any::Type::kFalseType:
+                        return rapidjson::Type::kFalseType;
+                case lsp::Any::Type::kTrueType:
+                        return rapidjson::Type::kTrueType;
+                case lsp::Any::Type::kObjectType:
+                        return rapidjson::Type::kObjectType;
+                case lsp::Any::Type::kArrayType:
+                        return rapidjson::Type::kArrayType;
+                case lsp::Any::Type::kStringType:
+                        return rapidjson::Type::kStringType;
+                case lsp::Any::Type::kNumberType:
+                        return rapidjson::Type::kNumberType;
+                default:
+                        return rapidjson::Type::kNullType;
+                }
+        }
 #endif
-	lsp::Any::Type convert(rapidjson::Type type)
-	{
-		switch (type)
-		{
-		case rapidjson::Type::kNullType:
-			return lsp::Any::Type::kNullType;
-		case rapidjson::Type::kFalseType:
-			return lsp::Any::Type::kFalseType;
-		case rapidjson::Type::kTrueType:
-			return lsp::Any::Type::kTrueType;
-		case rapidjson::Type::kObjectType:
-			return lsp::Any::Type::kObjectType;
-		case rapidjson::Type::kArrayType:
-			return lsp::Any::Type::kArrayType;
-		case rapidjson::Type::kStringType:
-			return lsp::Any::Type::kStringType;
-		case rapidjson::Type::kNumberType:
-			return lsp::Any::Type::kNumberType;
-		default:
-			return lsp::Any::Type::kNullType;
-		}
-	}
+        lsp::Any::Type convert(rapidjson::Type type)
+        {
+                switch (type)
+                {
+                case rapidjson::Type::kNullType:
+                        return lsp::Any::Type::kNullType;
+                case rapidjson::Type::kFalseType:
+                        return lsp::Any::Type::kFalseType;
+                case rapidjson::Type::kTrueType:
+                        return lsp::Any::Type::kTrueType;
+                case rapidjson::Type::kObjectType:
+                        return lsp::Any::Type::kObjectType;
+                case rapidjson::Type::kArrayType:
+                        return lsp::Any::Type::kArrayType;
+                case rapidjson::Type::kStringType:
+                        return lsp::Any::Type::kStringType;
+                case rapidjson::Type::kNumberType:
+                        return lsp::Any::Type::kNumberType;
+                default:
+                        return lsp::Any::Type::kNullType;
+                }
+        }
 }
 
 void Reflect(Reader& visitor, lsp::Any& value)
 {
 
-	 //if (visitor.IsNull()) {
-		// visitor.GetNull();
-		// value.SetJsonString("", rapidjson::Type::kNullType);
-		// return;
-	 //}else
-	 //{
-		//
-	 //}
-	 JsonReader& json_reader = reinterpret_cast<JsonReader&>(visitor);
-	 value.SetJsonString(visitor.ToString(), convert(json_reader.m_->GetType()));
+         //if (visitor.IsNull()) {
+                // visitor.GetNull();
+                // value.SetJsonString("", rapidjson::Type::kNullType);
+                // return;
+         //}else
+         //{
+                //
+         //}
+         JsonReader& json_reader = reinterpret_cast<JsonReader&>(visitor);
+         value.SetJsonString(visitor.ToString(), convert(json_reader.m_->GetType()));
 }
  void Reflect(Writer& visitor, lsp::Any& value)
  {
-	 JsonWriter& json_writer = reinterpret_cast<JsonWriter&>(visitor);
-	 json_writer.m_->RawValue( value.Data().data(),value.Data().size(),static_cast<rapidjson::Type>(value.GetType()));
+         JsonWriter& json_writer = reinterpret_cast<JsonWriter&>(visitor);
+         json_writer.m_->RawValue( value.Data().data(),value.Data().size(),static_cast<rapidjson::Type>(value.GetType()));
 
  }
   void Reflect(Reader& visitor, lsFormattingOptions::KeyData& value)
 {
-	  if (visitor.IsBool())
-	  {
-		  Reflect(visitor, value._boolean);
-	  }
-	  else if (visitor.IsInt() || visitor.IsInt64() || visitor.IsUint64())
-	  {
-		  Reflect(visitor, value._integer);
-	  }
-	  else if(visitor.IsString())
-	  {
-		  Reflect(visitor, value._string);
-	  }
+          if (visitor.IsBool())
+          {
+                  Reflect(visitor, value._boolean);
+          }
+          else if (visitor.IsInt() || visitor.IsInt64() || visitor.IsUint64())
+          {
+                  Reflect(visitor, value._integer);
+          }
+          else if(visitor.IsString())
+          {
+                  Reflect(visitor, value._string);
+          }
 }
    void Reflect(Writer& visitor, lsFormattingOptions::KeyData& value)
 {
-	   if (value._boolean.has_value())
-	   {
-		   Reflect(visitor, value._boolean);
-	   }
-	   else if (value._integer.has_value())
-	   {
-		   Reflect(visitor, value._integer);
-	   }
-	   else if (value._string.has_value())
-	   {
-		   Reflect(visitor, value._string);
-	   }
+           if (value._boolean.has_value())
+           {
+                   Reflect(visitor, value._boolean);
+           }
+           else if (value._integer.has_value())
+           {
+                   Reflect(visitor, value._integer);
+           }
+           else if (value._string.has_value())
+           {
+                   Reflect(visitor, value._string);
+           }
 }
 
 lsCreateFile::lsCreateFile()
 {
-	kind = "create";
+        kind = "create";
 }
 
 lsDeleteFile::lsDeleteFile()
 {
-	kind = "delete";
+        kind = "delete";
 }
 
 lsRenameFile::lsRenameFile()
 {
-	kind = "rename";
+        kind = "rename";
 }
 
 
 void Reflect(Reader& visitor, boost::optional< SelectionRange* >& value)
 {
-	if (visitor.IsNull()) {
-		visitor.GetNull();
-		return;
-	}
+        if (visitor.IsNull()) {
+                visitor.GetNull();
+                return;
+        }
 
-	SelectionRange* entry_value = nullptr;
+        SelectionRange* entry_value = nullptr;
 
 
-		std::unique_ptr<SelectionRange> ptr = std::make_unique<SelectionRange>();
-		SelectionRange* temp = ptr.get();
-		Reflect(visitor, *temp);
+                std::unique_ptr<SelectionRange> ptr = std::make_unique<SelectionRange>();
+                SelectionRange* temp = ptr.get();
+                Reflect(visitor, *temp);
 
-		entry_value = ptr.release();
-		value = (entry_value);
+                entry_value = ptr.release();
+                value = (entry_value);
 
 }
 void Reflect(Writer& visitor, SelectionRange* value)
 {
 
-	if (!value)
-	{
-		throw std::invalid_argument("ResourceOperation value is nullptr");
-	}
+        if (!value)
+        {
+                throw std::invalid_argument("ResourceOperation value is nullptr");
+        }
 
-	Reflect(visitor, *value);
+        Reflect(visitor, *value);
 
 
 }
@@ -591,21 +591,21 @@
 
    std::string  make_file_scheme_uri(const std::string& absolute_path)
 {
-	   network::uri_builder builder;
-	   builder.scheme("file");
-	   builder.host("");
-	   builder.path(absolute_path);
-	   return  builder.uri().string();
-	 ////  lsDocumentUri uri;
-	 ////  uri.SetPath(absolute_path);
-	 ///  return uri.raw_uri_;
+           network::uri_builder builder;
+           builder.scheme("file");
+           builder.host("");
+           builder.path(absolute_path);
+           return  builder.uri().string();
+         ////  lsDocumentUri uri;
+         ////  uri.SetPath(absolute_path);
+         ///  return uri.raw_uri_;
 }
 
 // static
 AbsolutePath AbsolutePath::BuildDoNotUse(const std::string& path) {
-	AbsolutePath p;
-	p.path = std::string(path);
-	return p;
+        AbsolutePath p;
+        p.path = std::string(path);
+        return p;
 }
 
 
@@ -614,116 +614,116 @@
 
 
 AbsolutePath::operator std::string() const {
-	return path;
+        return path;
 }
 
 bool AbsolutePath::operator==(const AbsolutePath& rhs) const {
-	return path == rhs.path;
+        return path == rhs.path;
 }
 
 bool AbsolutePath::operator!=(const AbsolutePath& rhs) const {
-	return path != rhs.path;
+        return path != rhs.path;
 }
 
 bool AbsolutePath::operator<(const AbsolutePath& rhs) const
 {
-	return path < rhs.path;
+        return path < rhs.path;
 }
 
 bool AbsolutePath::operator>(const AbsolutePath& rhs) const
 {
-	return path > rhs.path;
+        return path > rhs.path;
 }
 
 void Reflect(Reader& visitor, AbsolutePath& value) {
-	value.path = visitor.GetString();
+        value.path = visitor.GetString();
 }
 void Reflect(Writer& visitor, AbsolutePath& value) {
-	visitor.String(value.path.c_str(), value.path.length());
+        visitor.String(value.path.c_str(), value.path.length());
 }
 
 std::ostream& operator<<(std::ostream& out, const AbsolutePath& path) {
-	out << path.path;
-	return out;
+        out << path.path;
+        return out;
 }
 
 lsDocumentUri lsDocumentUri::FromPath(const AbsolutePath& path) {
-	lsDocumentUri result;
-	result.SetPath(path);
-	return result;
+        lsDocumentUri result;
+        result.SetPath(path);
+        return result;
 }
 //void lsDocumentUri::SetPath(const AbsolutePath& path)
 //{
-//	raw_uri_ = make_file_scheme_uri(path.path);
+//      raw_uri_ = make_file_scheme_uri(path.path);
 //}
 //
 void lsDocumentUri::SetPath(const AbsolutePath& path) {
-	// file:///c%3A/Users/jacob/Desktop/superindex/indexer/full_tests
-	raw_uri_ = path;
+        // file:///c%3A/Users/jacob/Desktop/superindex/indexer/full_tests
+        raw_uri_ = path;
 
-	size_t index = raw_uri_.find(":");
-	if (index == 1) {  // widows drive letters must always be 1 char
-		raw_uri_.replace(raw_uri_.begin() + index, raw_uri_.begin() + index + 1,
-			"%3A");
-	}
+        size_t index = raw_uri_.find(":");
+        if (index == 1) {  // widows drive letters must always be 1 char
+                raw_uri_.replace(raw_uri_.begin() + index, raw_uri_.begin() + index + 1,
+                        "%3A");
+        }
 
-	// subset of reserved characters from the URI standard
-	// http://www.ecma-international.org/ecma-262/6.0/#sec-uri-syntax-and-semantics
-	std::string t;
-	t.reserve(8 + raw_uri_.size());
+        // subset of reserved characters from the URI standard
+        // http://www.ecma-international.org/ecma-262/6.0/#sec-uri-syntax-and-semantics
+        std::string t;
+        t.reserve(8 + raw_uri_.size());
 
-	// TODO: proper fix
+        // TODO: proper fix
 #if defined(_WIN32)
-	t += "file:///";
+        t += "file:///";
 #else
-	t += "file://";
+        t += "file://";
 #endif
 
-	// clang-format off
-	for (char c : raw_uri_)
-		switch (c) {
-		case ' ': t += "%20"; break;
-		case '#': t += "%23"; break;
-		case '$': t += "%24"; break;
-		case '&': t += "%26"; break;
-		case '(': t += "%28"; break;
-		case ')': t += "%29"; break;
-		case '+': t += "%2B"; break;
-		case ',': t += "%2C"; break;
-		case ';': t += "%3B"; break;
-		case '?': t += "%3F"; break;
-		case '@': t += "%40"; break;
-		default: t += c; break;
-		}
-	// clang-format on
-	raw_uri_ = std::move(t);
+        // clang-format off
+        for (char c : raw_uri_)
+                switch (c) {
+                case ' ': t += "%20"; break;
+                case '#': t += "%23"; break;
+                case '$': t += "%24"; break;
+                case '&': t += "%26"; break;
+                case '(': t += "%28"; break;
+                case ')': t += "%29"; break;
+                case '+': t += "%2B"; break;
+                case ',': t += "%2C"; break;
+                case ';': t += "%3B"; break;
+                case '?': t += "%3F"; break;
+                case '@': t += "%40"; break;
+                default: t += c; break;
+                }
+        // clang-format on
+        raw_uri_ = std::move(t);
 }
 
 std::string lsDocumentUri::GetRawPath() const {
 
 
-	if (raw_uri_.compare(0, 8, "file:///"))
-		return raw_uri_;
+        if (raw_uri_.compare(0, 8, "file:///"))
+                return raw_uri_;
 
 
-	std::string ret;
+        std::string ret;
 #if defined(_WIN32)
-	size_t i = 8;
+        size_t i = 8;
 #else
-	size_t i = 7;
+        size_t i = 7;
 #endif
-	auto from_hex = [](unsigned char c) {
-		return c - '0' < 10 ? c - '0' : (c | 32) - 'a' + 10;
-	};
-	for (; i < raw_uri_.size(); i++) {
-		if (i + 3 <= raw_uri_.size() && raw_uri_[i] == '%') {
-			ret.push_back(from_hex(raw_uri_[i + 1]) * 16 + from_hex(raw_uri_[i + 2]));
-			i += 2;
-		}
-		else
-			ret.push_back(raw_uri_[i] == '\\' ? '/' : raw_uri_[i]);
-	}
-	return ret;
+        auto from_hex = [](unsigned char c) {
+                return c - '0' < 10 ? c - '0' : (c | 32) - 'a' + 10;
+        };
+        for (; i < raw_uri_.size(); i++) {
+                if (i + 3 <= raw_uri_.size() && raw_uri_[i] == '%') {
+                        ret.push_back(from_hex(raw_uri_[i + 1]) * 16 + from_hex(raw_uri_[i + 2]));
+                        i += 2;
+                }
+                else
+                        ret.push_back(raw_uri_[i] == '\\' ? '/' : raw_uri_[i]);
+        }
+        return ret;
 }
 
 lsDocumentUri::lsDocumentUri() {}
@@ -731,7 +731,7 @@
 
 lsDocumentUri::lsDocumentUri(const AbsolutePath& path)
 {
-	SetPath(path);
+        SetPath(path);
 }
 
 lsDocumentUri::lsDocumentUri(const lsDocumentUri& other): raw_uri_(other.raw_uri_)
@@ -739,12 +739,12 @@
 }
 
 bool lsDocumentUri::operator==(const lsDocumentUri& other) const {
-	return raw_uri_ == other.raw_uri_;
+        return raw_uri_ == other.raw_uri_;
 }
 
 bool lsDocumentUri::operator==(const std::string& other) const
 {
-	return raw_uri_ == other;
+        return raw_uri_ == other;
 }
 
 
@@ -751,330 +751,330 @@
 AbsolutePath lsDocumentUri::GetAbsolutePath() const {
 
 
-		if (raw_uri_.find("file://") != std::string::npos){
-			try
-			{
-				return lsp::NormalizePath(GetRawPath(), false /*ensure_exists*/, false);
-			}
-			catch (std::exception&)
-			{
-				return AbsolutePath("", false);
-			}
-		}
+                if (raw_uri_.find("file://") != std::string::npos){
+                        try
+                        {
+                                return lsp::NormalizePath(GetRawPath(), false /*ensure_exists*/, false);
+                        }
+                        catch (std::exception&)
+                        {
+                                return AbsolutePath("", false);
+                        }
+                }
 
-		return AbsolutePath(raw_uri_,false);
+                return AbsolutePath(raw_uri_,false);
 
 }
 
 AbsolutePath::AbsolutePath(const std::string& path, bool validate)
-	: path(path) {
-	// TODO: enable validation after fixing tests.
-	if (validate && !lsp::IsAbsolutePath(path)) {
-		qualify = false;
-		auto temp = lsp::NormalizePath(path,false);
-		if(!temp.path.empty())
-		{
-			this->path = temp.path;
-		}
-	}
+        : path(path) {
+        // TODO: enable validation after fixing tests.
+        if (validate && !lsp::IsAbsolutePath(path)) {
+                qualify = false;
+                auto temp = lsp::NormalizePath(path,false);
+                if(!temp.path.empty())
+                {
+                        this->path = temp.path;
+                }
+        }
 }
 
 void Reflect(Writer& visitor, lsDocumentUri& value) {
-	Reflect(visitor, value.raw_uri_);
+        Reflect(visitor, value.raw_uri_);
 }
 void Reflect(Reader& visitor, lsDocumentUri& value) {
-	Reflect(visitor, value.raw_uri_);
-	// Only record the path when we deserialize a URI, since it most likely came
-	// from the client.
+        Reflect(visitor, value.raw_uri_);
+        // Only record the path when we deserialize a URI, since it most likely came
+        // from the client.
 
 }
 
  std::string ProgressReport::ToString() const
 {
-	std::string info;
-	info += "id:" + id + "\n";
-	info += "task:" + task + "\n";
-	info += "subTask:" + subTask + "\n";
-	info += "status:" + status + "\n";
-	{
-		std::stringstream ss;
-		ss << "totalWork:" << totalWork << std::endl;
-		info += ss.str();
-	}
-	{
-		std::stringstream ss;
-		ss << "workDone:" << workDone << std::endl;
-		info += ss.str();
-	}
+        std::string info;
+        info += "id:" + id + "\n";
+        info += "task:" + task + "\n";
+        info += "subTask:" + subTask + "\n";
+        info += "status:" + status + "\n";
+        {
+                std::stringstream ss;
+                ss << "totalWork:" << totalWork << std::endl;
+                info += ss.str();
+        }
+        {
+                std::stringstream ss;
+                ss << "workDone:" << workDone << std::endl;
+                info += ss.str();
+        }
 
-	{
-		std::stringstream ss;
-		ss << "complete:" << complete << std::endl;
-		info += ss.str();
-	}
+        {
+                std::stringstream ss;
+                ss << "complete:" << complete << std::endl;
+                info += ss.str();
+        }
 
-	return info;
+        return info;
 }
 
 std::string EventNotification::ToString() const
 {
-	std::string info;
-	if (ClasspathUpdated == eventType)
-	{
-		info += "eventType:ClasspathUpdated\n";
-	}
-	else if (ProjectsImported == eventType)
-	{
-		info += "eventType:ProjectsImported\n";
-	}
-	else
-	{
-		std::ostringstream oss;
-		oss << std::hex << eventType << std::endl;
+        std::string info;
+        if (ClasspathUpdated == eventType)
+        {
+                info += "eventType:ClasspathUpdated\n";
+        }
+        else if (ProjectsImported == eventType)
+        {
+                info += "eventType:ProjectsImported\n";
+        }
+        else
+        {
+                std::ostringstream oss;
+                oss << std::hex << eventType << std::endl;
 
-		info += "eventType:";
-		info += oss.str();
-	}
-	info += "data:" + data.Data() + "\n";
-	return info;
+                info += "eventType:";
+                info += oss.str();
+        }
+        info += "data:" + data.Data() + "\n";
+        return info;
 }
 
 std::string lsp::ToString(lsCompletionItemKind _kind)
 {
-	switch (_kind) {
-	case lsCompletionItemKind::Text:
-		return "Text";
-	case lsCompletionItemKind::Method:
-		return "Method";
-	case lsCompletionItemKind::Function:
-		return "";
-	case lsCompletionItemKind::Constructor:
-		return "Function";
-	case lsCompletionItemKind::Field:
-		return "Field";
-	case lsCompletionItemKind::Variable:
-		return "";
-	case lsCompletionItemKind::Class:
-		return "Variable";
-	case lsCompletionItemKind::Interface:
-		return "Interface";
-	case lsCompletionItemKind::Module:
-		return "Module";
-	case lsCompletionItemKind::Property:
-		return "Property";
-	case lsCompletionItemKind::Unit:
-		return "Unit";
-	case lsCompletionItemKind::Value:
-		return "Value";
-	case lsCompletionItemKind::Enum:
-		return "Enum";
-	case lsCompletionItemKind::Keyword:
-		return "Keyword";
-	case lsCompletionItemKind::Snippet:
-		return "Snippet";
-	case lsCompletionItemKind::Color:
-		return "Color";
-	case lsCompletionItemKind::File:
-		return "File";
-	case lsCompletionItemKind::Reference:
-		return "Reference";
-	case lsCompletionItemKind::Folder:
-		return "Folder";
-	case lsCompletionItemKind::EnumMember:
-		return "EnumMember";
-	case lsCompletionItemKind::Constant:
-		return "Constant";
-	case lsCompletionItemKind::Struct:
-		return "Struct";
-	case lsCompletionItemKind::Event:
-		return "Event";
-	case lsCompletionItemKind::Operator:
-		return "Operator";
-	case lsCompletionItemKind::TypeParameter:
-		return "TypeParameter";
-	default:
-		return "Unknown";
-	}
+        switch (_kind) {
+        case lsCompletionItemKind::Text:
+                return "Text";
+        case lsCompletionItemKind::Method:
+                return "Method";
+        case lsCompletionItemKind::Function:
+                return "";
+        case lsCompletionItemKind::Constructor:
+                return "Function";
+        case lsCompletionItemKind::Field:
+                return "Field";
+        case lsCompletionItemKind::Variable:
+                return "";
+        case lsCompletionItemKind::Class:
+                return "Variable";
+        case lsCompletionItemKind::Interface:
+                return "Interface";
+        case lsCompletionItemKind::Module:
+                return "Module";
+        case lsCompletionItemKind::Property:
+                return "Property";
+        case lsCompletionItemKind::Unit:
+                return "Unit";
+        case lsCompletionItemKind::Value:
+                return "Value";
+        case lsCompletionItemKind::Enum:
+                return "Enum";
+        case lsCompletionItemKind::Keyword:
+                return "Keyword";
+        case lsCompletionItemKind::Snippet:
+                return "Snippet";
+        case lsCompletionItemKind::Color:
+                return "Color";
+        case lsCompletionItemKind::File:
+                return "File";
+        case lsCompletionItemKind::Reference:
+                return "Reference";
+        case lsCompletionItemKind::Folder:
+                return "Folder";
+        case lsCompletionItemKind::EnumMember:
+                return "EnumMember";
+        case lsCompletionItemKind::Constant:
+                return "Constant";
+        case lsCompletionItemKind::Struct:
+                return "Struct";
+        case lsCompletionItemKind::Event:
+                return "Event";
+        case lsCompletionItemKind::Operator:
+                return "Operator";
+        case lsCompletionItemKind::TypeParameter:
+                return "TypeParameter";
+        default:
+                return "Unknown";
+        }
 }
 
 std::string lsp::ToString(lsInsertTextFormat _kind)
 {
-	if (_kind == lsInsertTextFormat::PlainText)
-	{
-		return "PlainText";
-	}
-	else if (_kind == lsInsertTextFormat::Snippet)
-	{
-		return "Snippet";
-	}else
-	{
-		return "Unknown";
-	}
+        if (_kind == lsInsertTextFormat::PlainText)
+        {
+                return "PlainText";
+        }
+        else if (_kind == lsInsertTextFormat::Snippet)
+        {
+                return "Snippet";
+        }else
+        {
+                return "Unknown";
+        }
 }
 
 const std::string& lsCompletionItem::InsertedContent() const
 {
-	if (textEdit)
-		return textEdit->newText;
-	if (insertText.has_value() && !insertText->empty())
-		return insertText.value();
-	return label;
+        if (textEdit)
+                return textEdit->newText;
+        if (insertText.has_value() && !insertText->empty())
+                return insertText.value();
+        return label;
 }
 
 std::string lsCompletionItem::DisplayText()
 {
 
-	 if (detail)
-	{
+         if (detail)
+        {
 
-		return label + " in " + detail.value();
-	}
-	return label;
+                return label + " in " + detail.value();
+        }
+        return label;
 }
 
 std::string lsCompletionItem::ToString()
  {
-	  std::stringstream info;
-	  info << "label : " << label << std::endl;
-	  if(kind)
-		info << "kind : " << lsp::ToString(kind.value()) << std::endl;
-	  else
-		 info << "kind : no exist."  << std::endl;
+          std::stringstream info;
+          info << "label : " << label << std::endl;
+          if(kind)
+                info << "kind : " << lsp::ToString(kind.value()) << std::endl;
+          else
+                 info << "kind : no exist."  << std::endl;
 
-	  if (detail)
-		  info << "detail : " << detail.value() << std::endl;
-	  else
-		  info << "detail : no exist." << std::endl;
+          if (detail)
+                  info << "detail : " << detail.value() << std::endl;
+          else
+                  info << "detail : no exist." << std::endl;
 
-	  if (documentation)
-	  {
-		  info << "documentation : "  << std::endl;
-	  	  if(documentation.value().first)
-	  	  {
-			  info << documentation.value().first.value();
-	  	  }
-		  else if(documentation.value().second)
-		  {
-			  info << documentation.value().second.value().value;
-		  }
-	  }
-	  else
-		  info << "documentation : no exist." << std::endl;
+          if (documentation)
+          {
+                  info << "documentation : "  << std::endl;
+                  if(documentation.value().first)
+                  {
+                          info << documentation.value().first.value();
+                  }
+                  else if(documentation.value().second)
+                  {
+                          info << documentation.value().second.value().value;
+                  }
+          }
+          else
+                  info << "documentation : no exist." << std::endl;
 
-	  if (deprecated)
-		  info << "deprecated : " << deprecated.value() << std::endl;
-	  else
-		  info << "deprecated : no exist." << std::endl;
+          if (deprecated)
+                  info << "deprecated : " << deprecated.value() << std::endl;
+          else
+                  info << "deprecated : no exist." << std::endl;
 
-	  if (preselect)
-		  info << "preselect : " << preselect.value() << std::endl;
-	  else
-		  info << "preselect : no exist." << std::endl;
+          if (preselect)
+                  info << "preselect : " << preselect.value() << std::endl;
+          else
+                  info << "preselect : no exist." << std::endl;
 
-	  if (sortText)
-		  info << "sortText : " << sortText.value() << std::endl;
-	  else
-		  info << "sortText : no exist." << std::endl;
+          if (sortText)
+                  info << "sortText : " << sortText.value() << std::endl;
+          else
+                  info << "sortText : no exist." << std::endl;
 
-	  if (filterText)
-		  info << "filterText : " << filterText.value() << std::endl;
-	  else
-		  info << "filterText : no exist." << std::endl;
+          if (filterText)
+                  info << "filterText : " << filterText.value() << std::endl;
+          else
+                  info << "filterText : no exist." << std::endl;
 
 
-	  if (insertText)
-		  info << "insertText : " << insertText.value() << std::endl;
-	  else
-		  info << "insertText : no exist." << std::endl;
+          if (insertText)
+                  info << "insertText : " << insertText.value() << std::endl;
+          else
+                  info << "insertText : no exist." << std::endl;
 
 
-	  if (insertTextFormat)
-		  info << "insertText : " << lsp::ToString(insertTextFormat.value()) << std::endl;
-	  else
-		  info << "insertTextFormat : no exist." << std::endl;
+          if (insertTextFormat)
+                  info << "insertText : " << lsp::ToString(insertTextFormat.value()) << std::endl;
+          else
+                  info << "insertTextFormat : no exist." << std::endl;
 
-	  if (textEdit)
-		  info << "textEdit : " << textEdit.value().ToString() << std::endl;
-	  else
-		  info << "textEdit : no exist." << std::endl;
+          if (textEdit)
+                  info << "textEdit : " << textEdit.value().ToString() << std::endl;
+          else
+                  info << "textEdit : no exist." << std::endl;
 
 
 
-	  return  info.str();
+          return  info.str();
 
  }
 namespace  JDT
 {
-	namespace CodeActionKind {
+        namespace CodeActionKind {
 
 
-		/**
-		 * Base kind for quickfix actions: 'quickfix'
-		 */
-		  const char* QuickFix = "quickfix";
+                /**
+                 * Base kind for quickfix actions: 'quickfix'
+                 */
+                  const char* QuickFix = "quickfix";
 
-		/**
-		 * Base kind for refactoring actions: 'refactor'
-		 */
-		const char* Refactor = "refactor";
+                /**
+                 * Base kind for refactoring actions: 'refactor'
+                 */
+                const char* Refactor = "refactor";
 
-		/**
-		 * Base kind for refactoring extraction actions: 'refactor.extract'
-		 *
-		 * Example extract actions:
-		 *
-		 * - Extract method - Extract function - Extract variable - Extract interface
-		 * from class - ...
-		 */
-		const char* RefactorExtract = "refactor.extract";
+                /**
+                 * Base kind for refactoring extraction actions: 'refactor.extract'
+                 *
+                 * Example extract actions:
+                 *
+                 * - Extract method - Extract function - Extract variable - Extract interface
+                 * from class - ...
+                 */
+                const char* RefactorExtract = "refactor.extract";
 
-		/**
-		 * Base kind for refactoring inline actions: 'refactor.inline'
-		 *
-		 * Example inline actions:
-		 *
-		 * - Inline function - Inline variable - Inline constant - ...
-		 */
-		const char* RefactorInline = "refactor.inline";
+                /**
+                 * Base kind for refactoring inline actions: 'refactor.inline'
+                 *
+                 * Example inline actions:
+                 *
+                 * - Inline function - Inline variable - Inline constant - ...
+                 */
+                const char* RefactorInline = "refactor.inline";
 
-		/**
-		 * Base kind for refactoring rewrite actions: 'refactor.rewrite'
-		 *
-		 * Example rewrite actions:
-		 *
-		 * - Convert JavaScript function to class - Add or remove parameter -
-		 * Encapsulate field - Make method static - Move method to base class - ...
-		 */
-		const char* RefactorRewrite = "refactor.rewrite";
+                /**
+                 * Base kind for refactoring rewrite actions: 'refactor.rewrite'
+                 *
+                 * Example rewrite actions:
+                 *
+                 * - Convert JavaScript function to class - Add or remove parameter -
+                 * Encapsulate field - Make method static - Move method to base class - ...
+                 */
+                const char* RefactorRewrite = "refactor.rewrite";
 
-		/**
-		 * Base kind for source actions: `source`
-		 *
-		 * Source code actions apply to the entire file.
-		 */
-		const char* Source = "source";
+                /**
+                 * Base kind for source actions: `source`
+                 *
+                 * Source code actions apply to the entire file.
+                 */
+                const char* Source = "source";
 
-		/**
-		 * Base kind for an organize imports source action: `source.organizeImports`
-		 */
-		const char* SourceOrganizeImports = "source.organizeImports";
+                /**
+                 * Base kind for an organize imports source action: `source.organizeImports`
+                 */
+                const char* SourceOrganizeImports = "source.organizeImports";
 
-		const char* COMMAND_ID_APPLY_EDIT = "java.apply.workspaceEdit";
+                const char* COMMAND_ID_APPLY_EDIT = "java.apply.workspaceEdit";
 
-	};
+        };
 
 
 }
 Directory::Directory(const AbsolutePath& path) : path(path.path) {
-	lsp::EnsureEndsInSlash(this->path);
+        lsp::EnsureEndsInSlash(this->path);
 }
 
 bool Directory::operator==(const Directory& rhs) const {
-	return path == rhs.path;
+        return path == rhs.path;
 }
 
 bool Directory::operator!=(const Directory& rhs) const {
-	return path != rhs.path;
+        return path != rhs.path;
 }
 
 
@@ -1081,9 +1081,9 @@
 
  Registration Registration::Create(const std::string& method)
 {
-	 Registration reg;
-	 reg.method = method;
-	 const boost::uuids::uuid a_uuid = boost::uuids::random_generator()();
-	 reg.id = to_string(a_uuid);
-	 return reg;
+         Registration reg;
+         reg.method = method;
+         const boost::uuids::uuid a_uuid = boost::uuids::random_generator()();
+         reg.id = to_string(a_uuid);
+         return reg;
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/lsp/lsp_diagnostic.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/lsp/lsp_diagnostic.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/lsp/lsp_diagnostic.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -10,66 +10,66 @@
 
 std::string lsResponseError::ToString()
 {
-	std::string info = "code:";
-	switch (code)
-	{
-	case lsErrorCodes::ParseError:
-		info += "ParseError\n";
-		break;
-	case lsErrorCodes::InvalidRequest:
-		info += "InvalidRequest\n";
-		break;
-	case lsErrorCodes::MethodNotFound:
-		info += "MethodNotFound\n";
-		break;
-	case lsErrorCodes::InvalidParams:
-		info += "InvalidParams\n";
-		break;
-	case lsErrorCodes::InternalError:
-		info += "InternalError\n";
-		break;
-	case lsErrorCodes::serverErrorStart:
-		info += "serverErrorStart\n";
-		break;
-	case lsErrorCodes::serverErrorEnd:
-		info += "serverErrorEnd\n";
-		break;
-	case lsErrorCodes::ServerNotInitialized:
-		info += "ServerNotInitialized\n";
-		break;
-	case lsErrorCodes::UnknownErrorCode:
-		info += "UnknownErrorCode\n";
-		break;
-		// Defined by the protocol.
-	case lsErrorCodes::RequestCancelled:
-		info += "RequestCancelled\n";
-		break;
-	default:
-		{
-			std::stringstream ss;
-			ss << "unknown code:" << (int32_t)code << std::endl;
-			info += ss.str();
-		}
-		break;
-	}
-	info += "message:" + message;
-	info += "\n";
+        std::string info = "code:";
+        switch (code)
+        {
+        case lsErrorCodes::ParseError:
+                info += "ParseError\n";
+                break;
+        case lsErrorCodes::InvalidRequest:
+                info += "InvalidRequest\n";
+                break;
+        case lsErrorCodes::MethodNotFound:
+                info += "MethodNotFound\n";
+                break;
+        case lsErrorCodes::InvalidParams:
+                info += "InvalidParams\n";
+                break;
+        case lsErrorCodes::InternalError:
+                info += "InternalError\n";
+                break;
+        case lsErrorCodes::serverErrorStart:
+                info += "serverErrorStart\n";
+                break;
+        case lsErrorCodes::serverErrorEnd:
+                info += "serverErrorEnd\n";
+                break;
+        case lsErrorCodes::ServerNotInitialized:
+                info += "ServerNotInitialized\n";
+                break;
+        case lsErrorCodes::UnknownErrorCode:
+                info += "UnknownErrorCode\n";
+                break;
+                // Defined by the protocol.
+        case lsErrorCodes::RequestCancelled:
+                info += "RequestCancelled\n";
+                break;
+        default:
+                {
+                        std::stringstream ss;
+                        ss << "unknown code:" << (int32_t)code << std::endl;
+                        info += ss.str();
+                }
+                break;
+        }
+        info += "message:" + message;
+        info += "\n";
 
-	if(data.has_value())
-	{
+        if(data.has_value())
+        {
 
-		info += "data:" + data.value().Data();
-		info += "\n";
-	}
-	return info;
+                info += "data:" + data.value().Data();
+                info += "\n";
+        }
+        return info;
 }
 
 void lsResponseError::Write(Writer& visitor) {
-	auto& value = *this;
-	int code2 = static_cast<int>(this->code);
+        auto& value = *this;
+        int code2 = static_cast<int>(this->code);
 
-	visitor.StartObject();
-	REFLECT_MEMBER2("code", code2);
-	REFLECT_MEMBER(message);
-	visitor.EndObject();
+        visitor.StartObject();
+        REFLECT_MEMBER2("code", code2);
+        REFLECT_MEMBER(message);
+        visitor.EndObject();
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/lsp/textDocument.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/lsp/textDocument.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/lsp/textDocument.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -14,336 +14,336 @@
 
 std::string to_string(SemanticTokenType _type)
 {
-	switch (_type) {
+        switch (_type) {
 
-		case ls_namespace: return "namespace";
-			/**
-			 * Represents a generic type. Acts as a fallback for types which
-			 * can"t be mapped to a specific type like class or enum.
-			 */
-		case ls_type: return "type";
-		case ls_class: return "class";
-		case ls_enum: return "enum";
-		case ls_interface: return "interface";
-		case ls_struct: return "struct";
-		case ls_typeParameter: return "typeParameter";
-		case ls_parameter: return "parameter";
-		case ls_variable: return "variable";
-		case ls_property: return "property";
-		case ls_enumMember: return "enumMember";
-		case ls_event: return "event";
-		case ls_function: return "function";
-		case ls_method: return "method";
-		case ls_macro: return "macro";
-		case ls_keyword: return "keyword";
-		case ls_modifier: return "modifier";
-		case ls_comment: return "comment";
-		case ls_string: return "string";
-		case ls_number: return "number";
-		case ls_regexp: return "regexp";
-		case ls_operator: return "operator";
-		default:
-			return  "unknown";
-	}
+                case ls_namespace: return "namespace";
+                        /**
+                         * Represents a generic type. Acts as a fallback for types which
+                         * can"t be mapped to a specific type like class or enum.
+                         */
+                case ls_type: return "type";
+                case ls_class: return "class";
+                case ls_enum: return "enum";
+                case ls_interface: return "interface";
+                case ls_struct: return "struct";
+                case ls_typeParameter: return "typeParameter";
+                case ls_parameter: return "parameter";
+                case ls_variable: return "variable";
+                case ls_property: return "property";
+                case ls_enumMember: return "enumMember";
+                case ls_event: return "event";
+                case ls_function: return "function";
+                case ls_method: return "method";
+                case ls_macro: return "macro";
+                case ls_keyword: return "keyword";
+                case ls_modifier: return "modifier";
+                case ls_comment: return "comment";
+                case ls_string: return "string";
+                case ls_number: return "number";
+                case ls_regexp: return "regexp";
+                case ls_operator: return "operator";
+                default:
+                        return  "unknown";
+        }
 }
 
 unsigned toSemanticTokenType(std::vector<SemanticTokenType>& modifiers)
 {
-	unsigned encode_type = 0;
-	for (auto bit : modifiers) {
-		encode_type = encode_type | (0b00000001 << bit);
-	}
-	return encode_type;
+        unsigned encode_type = 0;
+        for (auto bit : modifiers) {
+                encode_type = encode_type | (0b00000001 << bit);
+        }
+        return encode_type;
 }
 
 std::string to_string(TokenType_JDT _type)
 {
-	switch (_type)
-	{
-	case  PACKAGE_JDT:return "namespace";
-	case	CLASS_JDT:return "class";
-	case	INTERFACE_JDT:return "interface";
-	case	ENUM_JDT:return "enum";
-	case	ENUM_MEMBER_JDT:return "enumMember";
-	case	TYPE_JDT:return "type";
-	case	TYPE_PARAMETER_JDT:return "typeParameter";
-	case	ANNOTATION_JDT:return "annotation";
-	case	ANNOTATION_MEMBER_JDT:return "annotationMember";
-	case	METHOD_JDT:return "function";
-	case	PROPERTY_JDT:return "property";
-	case	VARIABLE_JDT:return "variable";
-	case	PARAMETER_JDT:return "parameter";
-	}
-	return  "unknown";
+        switch (_type)
+        {
+        case  PACKAGE_JDT:return "namespace";
+        case    CLASS_JDT:return "class";
+        case    INTERFACE_JDT:return "interface";
+        case    ENUM_JDT:return "enum";
+        case    ENUM_MEMBER_JDT:return "enumMember";
+        case    TYPE_JDT:return "type";
+        case    TYPE_PARAMETER_JDT:return "typeParameter";
+        case    ANNOTATION_JDT:return "annotation";
+        case    ANNOTATION_MEMBER_JDT:return "annotationMember";
+        case    METHOD_JDT:return "function";
+        case    PROPERTY_JDT:return "property";
+        case    VARIABLE_JDT:return "variable";
+        case    PARAMETER_JDT:return "parameter";
+        }
+        return  "unknown";
 }
 
 std::string to_string(SemanticTokenModifier modifier)
 {
-	switch (modifier) {
-	case ls_declaration: return  "declaration";
-	case ls_definition: return  "definition";
-	case ls_readonly: return  "readonly";
-	case ls_static: return  "static";
-	case ls_deprecated: return  "deprecated";
-	case ls_abstract: return  "abstract";
-	case ls_async: return  "async";
-	case ls_modification: return  "modification";
-	case ls_documentation: return  "documentation";
-	case ls_defaultLibrary: return  "defaultLibrary";
-	default:
-		return  "unknown";
-	}
+        switch (modifier) {
+        case ls_declaration: return  "declaration";
+        case ls_definition: return  "definition";
+        case ls_readonly: return  "readonly";
+        case ls_static: return  "static";
+        case ls_deprecated: return  "deprecated";
+        case ls_abstract: return  "abstract";
+        case ls_async: return  "async";
+        case ls_modification: return  "modification";
+        case ls_documentation: return  "documentation";
+        case ls_defaultLibrary: return  "defaultLibrary";
+        default:
+                return  "unknown";
+        }
 }
 
 unsigned toSemanticTokenModifiers(std::vector<SemanticTokenModifier>& modifiers)
 {
-	unsigned encodedModifiers = 0;
-	for (auto bit : modifiers) {
-		encodedModifiers = encodedModifiers | (0b00000001 << bit);
-	}
-	return encodedModifiers;
+        unsigned encodedModifiers = 0;
+        for (auto bit : modifiers) {
+                encodedModifiers = encodedModifiers | (0b00000001 << bit);
+        }
+        return encodedModifiers;
 }
 
 
 std::string toSemanticTokenType(HighlightingKind_clangD kind) {
-	switch (kind) {
-	case HighlightingKind_clangD::Variable:
-	case HighlightingKind_clangD::LocalVariable:
-	case HighlightingKind_clangD::StaticField:
-		return "variable";
-	case HighlightingKind_clangD::Parameter:
-		return "parameter";
-	case HighlightingKind_clangD::Function:
-		return "function";
-	case HighlightingKind_clangD::Method:
-		return "method";
-	case HighlightingKind_clangD::StaticMethod:
-		// FIXME: better method with static modifier?
-		return "function";
-	case HighlightingKind_clangD::Field:
-		return "property";
-	case HighlightingKind_clangD::Class:
-		return "class";
-	case HighlightingKind_clangD::Interface:
-		return "interface";
-	case HighlightingKind_clangD::Enum:
-		return "enum";
-	case HighlightingKind_clangD::EnumConstant:
-		return "enumMember";
-	case HighlightingKind_clangD::Typedef:
-	case HighlightingKind_clangD::Type:
-		return "type";
-	case HighlightingKind_clangD::Unknown:
-		return "unknown"; // nonstandard
-	case HighlightingKind_clangD::Namespace:
-		return "namespace";
-	case HighlightingKind_clangD::TemplateParameter:
-		return "typeParameter";
-	case HighlightingKind_clangD::Concept:
-		return "concept"; // nonstandard
-	case HighlightingKind_clangD::Primitive:
-		return "type";
-	case HighlightingKind_clangD::Macro:
-		return "macro";
-	case HighlightingKind_clangD::InactiveCode:
-		return "comment";
-	}
-	return ("unhandled HighlightingKind_clangD");
+        switch (kind) {
+        case HighlightingKind_clangD::Variable:
+        case HighlightingKind_clangD::LocalVariable:
+        case HighlightingKind_clangD::StaticField:
+                return "variable";
+        case HighlightingKind_clangD::Parameter:
+                return "parameter";
+        case HighlightingKind_clangD::Function:
+                return "function";
+        case HighlightingKind_clangD::Method:
+                return "method";
+        case HighlightingKind_clangD::StaticMethod:
+                // FIXME: better method with static modifier?
+                return "function";
+        case HighlightingKind_clangD::Field:
+                return "property";
+        case HighlightingKind_clangD::Class:
+                return "class";
+        case HighlightingKind_clangD::Interface:
+                return "interface";
+        case HighlightingKind_clangD::Enum:
+                return "enum";
+        case HighlightingKind_clangD::EnumConstant:
+                return "enumMember";
+        case HighlightingKind_clangD::Typedef:
+        case HighlightingKind_clangD::Type:
+                return "type";
+        case HighlightingKind_clangD::Unknown:
+                return "unknown"; // nonstandard
+        case HighlightingKind_clangD::Namespace:
+                return "namespace";
+        case HighlightingKind_clangD::TemplateParameter:
+                return "typeParameter";
+        case HighlightingKind_clangD::Concept:
+                return "concept"; // nonstandard
+        case HighlightingKind_clangD::Primitive:
+                return "type";
+        case HighlightingKind_clangD::Macro:
+                return "macro";
+        case HighlightingKind_clangD::InactiveCode:
+                return "comment";
+        }
+        return ("unhandled HighlightingKind_clangD");
 }
 
 std::string toSemanticTokenModifier(HighlightingModifier_clangD modifier) {
-	switch (modifier) {
-	case HighlightingModifier_clangD::Declaration:
-		return "declaration";
-	case HighlightingModifier_clangD::Deprecated:
-		return "deprecated";
-	case HighlightingModifier_clangD::Readonly:
-		return "readonly";
-	case HighlightingModifier_clangD::Static:
-		return "static";
-	case HighlightingModifier_clangD::Deduced:
-		return "deduced"; // nonstandard
-	case HighlightingModifier_clangD::Abstract:
-		return "abstract";
-	case HighlightingModifier_clangD::DependentName:
-		return "dependentName"; // nonstandard
-	case HighlightingModifier_clangD::DefaultLibrary:
-		return "defaultLibrary";
-	case HighlightingModifier_clangD::FunctionScope:
-		return "functionScope"; // nonstandard
-	case HighlightingModifier_clangD::ClassScope:
-		return "classScope"; // nonstandard
-	case HighlightingModifier_clangD::FileScope:
-		return "fileScope"; // nonstandard
-	case HighlightingModifier_clangD::GlobalScope:
-		return "globalScope"; // nonstandard
-	}
-	return ("unhandled HighlightingModifier_clangD");
+        switch (modifier) {
+        case HighlightingModifier_clangD::Declaration:
+                return "declaration";
+        case HighlightingModifier_clangD::Deprecated:
+                return "deprecated";
+        case HighlightingModifier_clangD::Readonly:
+                return "readonly";
+        case HighlightingModifier_clangD::Static:
+                return "static";
+        case HighlightingModifier_clangD::Deduced:
+                return "deduced"; // nonstandard
+        case HighlightingModifier_clangD::Abstract:
+                return "abstract";
+        case HighlightingModifier_clangD::DependentName:
+                return "dependentName"; // nonstandard
+        case HighlightingModifier_clangD::DefaultLibrary:
+                return "defaultLibrary";
+        case HighlightingModifier_clangD::FunctionScope:
+                return "functionScope"; // nonstandard
+        case HighlightingModifier_clangD::ClassScope:
+                return "classScope"; // nonstandard
+        case HighlightingModifier_clangD::FileScope:
+                return "fileScope"; // nonstandard
+        case HighlightingModifier_clangD::GlobalScope:
+                return "globalScope"; // nonstandard
+        }
+        return ("unhandled HighlightingModifier_clangD");
 }
 
 
 
 bool operator==(const SemanticToken& l, const SemanticToken& r) {
-	return std::tie(l.deltaLine, l.deltaStart, l.length, l.tokenType,
-		l.tokenModifiers) == std::tie(r.deltaLine, r.deltaStart,
-			r.length, r.tokenType,
-			r.tokenModifiers);
+        return std::tie(l.deltaLine, l.deltaStart, l.length, l.tokenType,
+                l.tokenModifiers) == std::tie(r.deltaLine, r.deltaStart,
+                        r.length, r.tokenType,
+                        r.tokenModifiers);
 }
 
 std::vector<int32_t> SemanticTokens::encodeTokens(std::vector<SemanticToken>& tokens)
 {
-	std::vector<int32_t> result;
-	result.reserve(SemanticTokenEncodingSize * tokens.size());
-	for (const auto& tok : tokens)
-	{
-		result.push_back(tok.deltaLine);
-		result.push_back(tok.deltaStart);
-		result.push_back(tok.length);
-		result.push_back(tok.tokenType);
-		result.push_back(tok.tokenModifiers);
-	}
-	assert(result.size() == SemanticTokenEncodingSize * tokens.size());
-	return result;
+        std::vector<int32_t> result;
+        result.reserve(SemanticTokenEncodingSize * tokens.size());
+        for (const auto& tok : tokens)
+        {
+                result.push_back(tok.deltaLine);
+                result.push_back(tok.deltaStart);
+                result.push_back(tok.length);
+                result.push_back(tok.tokenType);
+                result.push_back(tok.tokenModifiers);
+        }
+        assert(result.size() == SemanticTokenEncodingSize * tokens.size());
+        return result;
 }
 
 void Reflect(Reader& visitor, TextDocumentComplete::Either& value)
 {
-	if(visitor.IsArray())
-	{
-		Reflect(visitor, value.first);
-	}
-	else
-	{
+        if(visitor.IsArray())
+        {
+                Reflect(visitor, value.first);
+        }
+        else
+        {
 
-		Reflect(visitor, value.second);
-	}
+                Reflect(visitor, value.second);
+        }
 
 }
 void Reflect(Reader& visitor, TextDocumentDocumentSymbol::Either& value)
 {
-	if (visitor.HasMember("location"))
-	{
-		Reflect(visitor, value.first);
-	}
-	else
-	{
-		Reflect(visitor, value.second);
-	}
+        if (visitor.HasMember("location"))
+        {
+                Reflect(visitor, value.first);
+        }
+        else
+        {
+                Reflect(visitor, value.second);
+        }
 }
 
 void Reflect(Reader& visitor, std::pair<boost::optional<std::string>, boost::optional<lsMarkedString>>& value)
 {
 
-	if (!visitor.IsString())
-	{
-		Reflect(visitor, value.second);
-	}
-	else
-	{
-		Reflect(visitor, value.first);
-	}
+        if (!visitor.IsString())
+        {
+                Reflect(visitor, value.second);
+        }
+        else
+        {
+                Reflect(visitor, value.first);
+        }
 }
 
 void Reflect(Reader& visitor, std::pair<boost::optional<std::string>, boost::optional<MarkupContent>>& value)
 {
-	if (!visitor.IsString())
-	{
-		Reflect(visitor, value.second);
-	}
-	else
-	{
-		Reflect(visitor, value.first);
-	}
+        if (!visitor.IsString())
+        {
+                Reflect(visitor, value.second);
+        }
+        else
+        {
+                Reflect(visitor, value.first);
+        }
 }
   void Reflect(Reader& visitor, TextDocumentHover::Either& value)
 {
-	  JsonReader& reader = dynamic_cast<JsonReader&>(visitor);
-	  if (reader.IsArray())
-	  {
-		  Reflect(visitor, value.first);
-	  }
-	  else if(reader.m_->IsObject())
-	  {
-		  Reflect(visitor, value.second);
-	  }
+          JsonReader& reader = dynamic_cast<JsonReader&>(visitor);
+          if (reader.IsArray())
+          {
+                  Reflect(visitor, value.first);
+          }
+          else if(reader.m_->IsObject())
+          {
+                  Reflect(visitor, value.second);
+          }
 }
 
    void  Reflect(Reader& visitor, TextDocumentPrepareRenameResult& value)
 {
-	  if (visitor.HasMember("placeholder"))
-	  {
-		  Reflect(visitor, value.second);
-	  }
-	  else
-	  {
-		  Reflect(visitor, value.first);
-	  }
+          if (visitor.HasMember("placeholder"))
+          {
+                  Reflect(visitor, value.second);
+          }
+          else
+          {
+                  Reflect(visitor, value.first);
+          }
 }
 
   namespace
-	  RefactorProposalUtility
+          RefactorProposalUtility
   {
-	    const char* APPLY_REFACTORING_COMMAND_ID = "java.action.applyRefactoringCommand";
-	    const char* EXTRACT_VARIABLE_ALL_OCCURRENCE_COMMAND = "extractVariableAllOccurrence";
-	    const char* EXTRACT_VARIABLE_COMMAND = "extractVariable";
-	    const char* EXTRACT_CONSTANT_COMMAND = "extractConstant";
-	    const char* EXTRACT_METHOD_COMMAND = "extractMethod";
-	    const char* EXTRACT_FIELD_COMMAND = "extractField";
-	    const char* CONVERT_VARIABLE_TO_FIELD_COMMAND = "convertVariableToField";
-	    const char* MOVE_FILE_COMMAND = "moveFile";
-	    const char* MOVE_INSTANCE_METHOD_COMMAND = "moveInstanceMethod";
-	    const char* MOVE_STATIC_MEMBER_COMMAND = "moveStaticMember";
-	    const char* MOVE_TYPE_COMMAND = "moveType";
+            const char* APPLY_REFACTORING_COMMAND_ID = "java.action.applyRefactoringCommand";
+            const char* EXTRACT_VARIABLE_ALL_OCCURRENCE_COMMAND = "extractVariableAllOccurrence";
+            const char* EXTRACT_VARIABLE_COMMAND = "extractVariable";
+            const char* EXTRACT_CONSTANT_COMMAND = "extractConstant";
+            const char* EXTRACT_METHOD_COMMAND = "extractMethod";
+            const char* EXTRACT_FIELD_COMMAND = "extractField";
+            const char* CONVERT_VARIABLE_TO_FIELD_COMMAND = "convertVariableToField";
+            const char* MOVE_FILE_COMMAND = "moveFile";
+            const char* MOVE_INSTANCE_METHOD_COMMAND = "moveInstanceMethod";
+            const char* MOVE_STATIC_MEMBER_COMMAND = "moveStaticMember";
+            const char* MOVE_TYPE_COMMAND = "moveType";
   };
   namespace  QuickAssistProcessor {
 
-	   const char* SPLIT_JOIN_VARIABLE_DECLARATION_ID = "org.eclipse.jdt.ls.correction.splitJoinVariableDeclaration.assist"; //$NON-NLS-1$
-	   const char* CONVERT_FOR_LOOP_ID = "org.eclipse.jdt.ls.correction.convertForLoop.assist"; //$NON-NLS-1$
-	   const char* ASSIGN_TO_LOCAL_ID = "org.eclipse.jdt.ls.correction.assignToLocal.assist"; //$NON-NLS-1$
-	   const char* ASSIGN_TO_FIELD_ID = "org.eclipse.jdt.ls.correction.assignToField.assist"; //$NON-NLS-1$
-	   const char* ASSIGN_PARAM_TO_FIELD_ID = "org.eclipse.jdt.ls.correction.assignParamToField.assist"; //$NON-NLS-1$
-	   const char* ASSIGN_ALL_PARAMS_TO_NEW_FIELDS_ID = "org.eclipse.jdt.ls.correction.assignAllParamsToNewFields.assist"; //$NON-NLS-1$
-	   const char* ADD_BLOCK_ID = "org.eclipse.jdt.ls.correction.addBlock.assist"; //$NON-NLS-1$
-	   const char* EXTRACT_LOCAL_ID = "org.eclipse.jdt.ls.correction.extractLocal.assist"; //$NON-NLS-1$
-	   const char* EXTRACT_LOCAL_NOT_REPLACE_ID = "org.eclipse.jdt.ls.correction.extractLocalNotReplaceOccurrences.assist"; //$NON-NLS-1$
-	   const char* EXTRACT_CONSTANT_ID = "org.eclipse.jdt.ls.correction.extractConstant.assist"; //$NON-NLS-1$
-	   const char* INLINE_LOCAL_ID = "org.eclipse.jdt.ls.correction.inlineLocal.assist"; //$NON-NLS-1$
-	   const char* CONVERT_LOCAL_TO_FIELD_ID = "org.eclipse.jdt.ls.correction.convertLocalToField.assist"; //$NON-NLS-1$
-	   const char* CONVERT_ANONYMOUS_TO_LOCAL_ID = "org.eclipse.jdt.ls.correction.convertAnonymousToLocal.assist"; //$NON-NLS-1$
-	   const char* CONVERT_TO_STRING_BUFFER_ID = "org.eclipse.jdt.ls.correction.convertToStringBuffer.assist"; //$NON-NLS-1$
-	   const char* CONVERT_TO_MESSAGE_FORMAT_ID = "org.eclipse.jdt.ls.correction.convertToMessageFormat.assist"; //$NON-NLS-1$;
-	   const char* EXTRACT_METHOD_INPLACE_ID = "org.eclipse.jdt.ls.correction.extractMethodInplace.assist"; //$NON-NLS-1$;
+           const char* SPLIT_JOIN_VARIABLE_DECLARATION_ID = "org.eclipse.jdt.ls.correction.splitJoinVariableDeclaration.assist"; //$NON-NLS-1$
+           const char* CONVERT_FOR_LOOP_ID = "org.eclipse.jdt.ls.correction.convertForLoop.assist"; //$NON-NLS-1$
+           const char* ASSIGN_TO_LOCAL_ID = "org.eclipse.jdt.ls.correction.assignToLocal.assist"; //$NON-NLS-1$
+           const char* ASSIGN_TO_FIELD_ID = "org.eclipse.jdt.ls.correction.assignToField.assist"; //$NON-NLS-1$
+           const char* ASSIGN_PARAM_TO_FIELD_ID = "org.eclipse.jdt.ls.correction.assignParamToField.assist"; //$NON-NLS-1$
+           const char* ASSIGN_ALL_PARAMS_TO_NEW_FIELDS_ID = "org.eclipse.jdt.ls.correction.assignAllParamsToNewFields.assist"; //$NON-NLS-1$
+           const char* ADD_BLOCK_ID = "org.eclipse.jdt.ls.correction.addBlock.assist"; //$NON-NLS-1$
+           const char* EXTRACT_LOCAL_ID = "org.eclipse.jdt.ls.correction.extractLocal.assist"; //$NON-NLS-1$
+           const char* EXTRACT_LOCAL_NOT_REPLACE_ID = "org.eclipse.jdt.ls.correction.extractLocalNotReplaceOccurrences.assist"; //$NON-NLS-1$
+           const char* EXTRACT_CONSTANT_ID = "org.eclipse.jdt.ls.correction.extractConstant.assist"; //$NON-NLS-1$
+           const char* INLINE_LOCAL_ID = "org.eclipse.jdt.ls.correction.inlineLocal.assist"; //$NON-NLS-1$
+           const char* CONVERT_LOCAL_TO_FIELD_ID = "org.eclipse.jdt.ls.correction.convertLocalToField.assist"; //$NON-NLS-1$
+           const char* CONVERT_ANONYMOUS_TO_LOCAL_ID = "org.eclipse.jdt.ls.correction.convertAnonymousToLocal.assist"; //$NON-NLS-1$
+           const char* CONVERT_TO_STRING_BUFFER_ID = "org.eclipse.jdt.ls.correction.convertToStringBuffer.assist"; //$NON-NLS-1$
+           const char* CONVERT_TO_MESSAGE_FORMAT_ID = "org.eclipse.jdt.ls.correction.convertToMessageFormat.assist"; //$NON-NLS-1$;
+           const char* EXTRACT_METHOD_INPLACE_ID = "org.eclipse.jdt.ls.correction.extractMethodInplace.assist"; //$NON-NLS-1$;
 
-	   const char* CONVERT_ANONYMOUS_CLASS_TO_NESTED_COMMAND = "convertAnonymousClassToNestedCommand";
+           const char* CONVERT_ANONYMOUS_CLASS_TO_NESTED_COMMAND = "convertAnonymousClassToNestedCommand";
   };
 
   void Reflect(Reader& reader, TypeHierarchyDirection& value) {
-	  if (!reader.IsString())
-	  {
-		  value = TypeHierarchyDirection::Both;
-		  return;
-	  }
-	  std::string v = reader.GetString();
-	  if (v == "Children")
-		  value = TypeHierarchyDirection::Both;
-	  else if (v == "Parents")
-		  value = TypeHierarchyDirection::Parents;
-	  else if (v == "Both")
-		  value = TypeHierarchyDirection::Both;
+          if (!reader.IsString())
+          {
+                  value = TypeHierarchyDirection::Both;
+                  return;
+          }
+          std::string v = reader.GetString();
+          if (v == "Children")
+                  value = TypeHierarchyDirection::Both;
+          else if (v == "Parents")
+                  value = TypeHierarchyDirection::Parents;
+          else if (v == "Both")
+                  value = TypeHierarchyDirection::Both;
   }
 
 
   void Reflect(Writer& writer, TypeHierarchyDirection& value) {
-	  switch (value)
-	  {
-	  case TypeHierarchyDirection::Children:
-		  writer.String("Children");
-		  break;
-	  case TypeHierarchyDirection::Parents:
-		  writer.String("Parents");
-		  break;
-	  case TypeHierarchyDirection::Both:
-		  writer.String("Both");
-		  break;
-	  }
+          switch (value)
+          {
+          case TypeHierarchyDirection::Children:
+                  writer.String("Children");
+                  break;
+          case TypeHierarchyDirection::Parents:
+                  writer.String("Parents");
+                  break;
+          case TypeHierarchyDirection::Both:
+                  writer.String("Both");
+                  break;
+          }
   }

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/lsp/utils.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/lsp/utils.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/lsp/utils.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -322,118 +322,118 @@
 // links. This is a variant of realpath(2), C++ rewrite of
 // https://github.com/freebsd/freebsd/blob/master/lib/libc/stdlib/realpath.c
 AbsolutePath RealPathNotExpandSymlink(std::string path,
-	bool ensure_exists) {
-	if (path.empty()) {
-		errno = EINVAL;
-		return {};
-	}
-	if (path[0] == '\0') {
-		errno = ENOENT;
-		return {};
-	}
+        bool ensure_exists) {
+        if (path.empty()) {
+                errno = EINVAL;
+                return {};
+        }
+        if (path[0] == '\0') {
+                errno = ENOENT;
+                return {};
+        }
 
-	// Do not use PATH_MAX because it is tricky on Linux.
-	// See https://eklitzke.org/path-max-is-tricky
-	char tmp[1024];
-	std::string resolved;
-	size_t i = 0;
-	struct stat sb;
-	if (path[0] == '/') {
-		resolved = "/";
-		i = 1;
-	}
-	else {
-		if (!getcwd(tmp, sizeof tmp) && ensure_exists)
-			return {};
-		resolved = tmp;
-	}
+        // Do not use PATH_MAX because it is tricky on Linux.
+        // See https://eklitzke.org/path-max-is-tricky
+        char tmp[1024];
+        std::string resolved;
+        size_t i = 0;
+        struct stat sb;
+        if (path[0] == '/') {
+                resolved = "/";
+                i = 1;
+        }
+        else {
+                if (!getcwd(tmp, sizeof tmp) && ensure_exists)
+                        return {};
+                resolved = tmp;
+        }
 
-	while (i < path.size()) {
-		auto j = path.find('/', i);
-		if (j == std::string::npos)
-			j = path.size();
-		auto next_token = path.substr(i, j - i);
-		i = j + 1;
-		if (resolved.back() != '/')
-			resolved += '/';
-		if (next_token.empty() || next_token == ".") {
-			// Handle consequential slashes and "."
-			continue;
-		}
-		else if (next_token == "..") {
-			// Strip the last path component except when it is single "/"
-			if (resolved.size() > 1)
-				resolved.resize(resolved.rfind('/', resolved.size() - 2) + 1);
-			continue;
-		}
-		// Append the next path component.
-		// Here we differ from realpath(3), we use stat(2) instead of
-		// lstat(2) because we do not want to resolve symlinks.
-		resolved += next_token;
-		if (stat(resolved.c_str(), &sb) != 0 && ensure_exists)
-			return {};
-		if (!S_ISDIR(sb.st_mode) && j < path.size() && ensure_exists) {
-			errno = ENOTDIR;
-			return {};
-		}
-	}
+        while (i < path.size()) {
+                auto j = path.find('/', i);
+                if (j == std::string::npos)
+                        j = path.size();
+                auto next_token = path.substr(i, j - i);
+                i = j + 1;
+                if (resolved.back() != '/')
+                        resolved += '/';
+                if (next_token.empty() || next_token == ".") {
+                        // Handle consequential slashes and "."
+                        continue;
+                }
+                else if (next_token == "..") {
+                        // Strip the last path component except when it is single "/"
+                        if (resolved.size() > 1)
+                                resolved.resize(resolved.rfind('/', resolved.size() - 2) + 1);
+                        continue;
+                }
+                // Append the next path component.
+                // Here we differ from realpath(3), we use stat(2) instead of
+                // lstat(2) because we do not want to resolve symlinks.
+                resolved += next_token;
+                if (stat(resolved.c_str(), &sb) != 0 && ensure_exists)
+                        return {};
+                if (!S_ISDIR(sb.st_mode) && j < path.size() && ensure_exists) {
+                        errno = ENOTDIR;
+                        return {};
+                }
+        }
 
-	// Remove trailing slash except when a single "/".
-	if (resolved.size() > 1 && resolved.back() == '/')
-		resolved.pop_back();
-	return AbsolutePath(resolved, true /*validate*/);
+        // Remove trailing slash except when a single "/".
+        if (resolved.size() > 1 && resolved.back() == '/')
+                resolved.pop_back();
+        return AbsolutePath(resolved, true /*validate*/);
 }
 #endif
 
 
 AbsolutePath NormalizePath(const std::string& path0,
-	bool ensure_exists ,
-	bool force_lower_on_windows) {
+        bool ensure_exists ,
+        bool force_lower_on_windows) {
 #ifdef _WIN32
 
-	std::wstring path = lsp::s2ws(path0);
+        std::wstring path = lsp::s2ws(path0);
 
-	wchar_t buffer[MAX_PATH] = (L"");
+        wchar_t buffer[MAX_PATH] = (L"");
 
-	// Normalize the path name, ie, resolve `..`.
-	unsigned long len = GetFullPathNameW(path.c_str(), MAX_PATH, buffer, nullptr);
-	if (!len)
-		return {};
-	path = std::wstring(buffer, len);
+        // Normalize the path name, ie, resolve `..`.
+        unsigned long len = GetFullPathNameW(path.c_str(), MAX_PATH, buffer, nullptr);
+        if (!len)
+                return {};
+        path = std::wstring(buffer, len);
 
-	// Get the actual casing of the path, ie, if the file on disk is `C:\FooBar`
-	// and this function is called with `c:\fooBar` this will return `c:\FooBar`.
-	// (drive casing is lowercase).
-	if (ensure_exists) {
-		len = GetLongPathNameW(path.c_str(), buffer, MAX_PATH);
-		if (!len)
-			return {};
-		path = std::wstring(buffer, len);
-	}
+        // Get the actual casing of the path, ie, if the file on disk is `C:\FooBar`
+        // and this function is called with `c:\fooBar` this will return `c:\FooBar`.
+        // (drive casing is lowercase).
+        if (ensure_exists) {
+                len = GetLongPathNameW(path.c_str(), buffer, MAX_PATH);
+                if (!len)
+                        return {};
+                path = std::wstring(buffer, len);
+        }
 
-	// Empty paths have no meaning.
-	if (path.empty())
-		return {};
+        // Empty paths have no meaning.
+        if (path.empty())
+                return {};
 
-	// We may need to normalize the drive name to upper-case; at the moment
-	// vscode sends lower-case path names.
-	/*
-	path[0] = toupper(path[0]);
-	*/
-	// Make the path all lower-case, since windows is case-insensitive.
-	if (force_lower_on_windows) {
-		for (size_t i = 0; i < path.size(); ++i)
-			path[i] = (wchar_t)tolower(path[i]);
-	}
+        // We may need to normalize the drive name to upper-case; at the moment
+        // vscode sends lower-case path names.
+        /*
+        path[0] = toupper(path[0]);
+        */
+        // Make the path all lower-case, since windows is case-insensitive.
+        if (force_lower_on_windows) {
+                for (size_t i = 0; i < path.size(); ++i)
+                        path[i] = (wchar_t)tolower(path[i]);
+        }
 
-	// cquery assumes forward-slashes.
-	std::replace(path.begin(), path.end(), '\\', '/');
+        // cquery assumes forward-slashes.
+        std::replace(path.begin(), path.end(), '\\', '/');
 
 
-	return AbsolutePath(lsp::ws2s(path), false /*validate*/);
+        return AbsolutePath(lsp::ws2s(path), false /*validate*/);
 #else
 
-	return RealPathNotExpandSymlink(path0, ensure_exists);
+        return RealPathNotExpandSymlink(path0, ensure_exists);
 
 #endif
 
@@ -445,166 +445,166 @@
 // We use a UTF-8 iterator to approximate UTF-16 in the specification (weird).
 // This is good enough and fails only for UTF-16 surrogate pairs.
 int GetOffsetForPosition(lsPosition position, const std::string& content) {
-	size_t i = 0;
-	// Iterate lines until we have found the correct line.
-	while (position.line > 0 && i < content.size()) {
-		if (content[i] == '\n')
-			position.line--;
-		i++;
-	}
-	// Iterate characters on the target line.
-	while (position.character > 0 && i < content.size()) {
-		if (uint8_t(content[i++]) >= 128) {
-			// Skip 0b10xxxxxx
-			while (i < content.size() && uint8_t(content[i]) >= 128 &&
-				uint8_t(content[i]) < 192)
-				i++;
-		}
-		position.character--;
-	}
-	return int(i);
+        size_t i = 0;
+        // Iterate lines until we have found the correct line.
+        while (position.line > 0 && i < content.size()) {
+                if (content[i] == '\n')
+                        position.line--;
+                i++;
+        }
+        // Iterate characters on the target line.
+        while (position.character > 0 && i < content.size()) {
+                if (uint8_t(content[i++]) >= 128) {
+                        // Skip 0b10xxxxxx
+                        while (i < content.size() && uint8_t(content[i]) >= 128 &&
+                                uint8_t(content[i]) < 192)
+                                i++;
+                }
+                position.character--;
+        }
+        return int(i);
 }
 
 
 lsPosition GetPositionForOffset(size_t offset,const  std::string& content) {
-	lsPosition result;
-	for (size_t i = 0; i < offset && i < content.length(); ++i) {
-		if (content[i] == '\n') {
-			result.line++;
-			result.character = 0;
-		}
-		else {
-			result.character++;
-		}
-	}
-	return result;
+        lsPosition result;
+        for (size_t i = 0; i < offset && i < content.length(); ++i) {
+                if (content[i] == '\n') {
+                        result.line++;
+                        result.character = 0;
+                }
+                else {
+                        result.character++;
+                }
+        }
+        return result;
 }
 
 lsPosition CharPos(const  std::string& search,
-	char character,
-	int character_offset) {
-	lsPosition result;
-	size_t index = 0;
-	while (index < search.size()) {
-		char c = search[index];
-		if (c == character)
-			break;
-		if (c == '\n') {
-			result.line += 1;
-			result.character = 0;
-		}
-		else {
-			result.character += 1;
-		}
-		++index;
-	}
-	assert(index < search.size());
-	result.character += character_offset;
-	return result;
+        char character,
+        int character_offset) {
+        lsPosition result;
+        size_t index = 0;
+        while (index < search.size()) {
+                char c = search[index];
+                if (c == character)
+                        break;
+                if (c == '\n') {
+                        result.line += 1;
+                        result.character = 0;
+                }
+                else {
+                        result.character += 1;
+                }
+                ++index;
+        }
+        assert(index < search.size());
+        result.character += character_offset;
+        return result;
 }
 
 void scanDirsUseRecursive(const std::wstring& rootPath, std::vector<std::wstring>& ret)
 {
-	namespace fs = boost::filesystem;
-	fs::path fullpath(rootPath);
-	if (!fs::exists(fullpath)) { return; }
-	fs::recursive_directory_iterator end_iter;
-	for (fs::recursive_directory_iterator iter(fullpath); iter != end_iter; iter++) {
-		try {
-			if (fs::is_directory(*iter)) {
-				ret.push_back(iter->path().wstring());
-			}
-		}
-		catch (const std::exception& ex) {
-			continue;
-		}
-	}
+        namespace fs = boost::filesystem;
+        fs::path fullpath(rootPath);
+        if (!fs::exists(fullpath)) { return; }
+        fs::recursive_directory_iterator end_iter;
+        for (fs::recursive_directory_iterator iter(fullpath); iter != end_iter; iter++) {
+                try {
+                        if (fs::is_directory(*iter)) {
+                                ret.push_back(iter->path().wstring());
+                        }
+                }
+                catch (const std::exception& ex) {
+                        continue;
+                }
+        }
 }
 
 void scanDirsNoRecursive(const std::wstring& rootPath, std::vector<std::wstring>& ret)
 {
-	namespace fs = boost::filesystem;
-	boost::filesystem::path myPath(rootPath);
-	if (!fs::exists(rootPath)) { return; }
-	boost::filesystem::directory_iterator endIter;
-	for (boost::filesystem::directory_iterator iter(myPath); iter != endIter; iter++) {
-		if (boost::filesystem::is_directory(*iter)) {
-			ret.push_back(iter->path().wstring());
-		}
-	}
+        namespace fs = boost::filesystem;
+        boost::filesystem::path myPath(rootPath);
+        if (!fs::exists(rootPath)) { return; }
+        boost::filesystem::directory_iterator endIter;
+        for (boost::filesystem::directory_iterator iter(myPath); iter != endIter; iter++) {
+                if (boost::filesystem::is_directory(*iter)) {
+                        ret.push_back(iter->path().wstring());
+                }
+        }
 }
 
 void scanFilesUseRecursive(
-	const std::wstring& rootPath,
-	std::vector<std::wstring>& ret,
-	std::wstring suf) {
-	namespace fs = boost::filesystem;
-	boost::to_lower(suf);
+        const std::wstring& rootPath,
+        std::vector<std::wstring>& ret,
+        std::wstring suf) {
+        namespace fs = boost::filesystem;
+        boost::to_lower(suf);
 
-	fs::path fullpath(rootPath);
-	if (!fs::exists(fullpath)) { return; }
-	fs::recursive_directory_iterator end_iter;
-	for (fs::recursive_directory_iterator iter(fullpath); iter != end_iter; iter++) {
-		try {
-			if (!fs::is_directory(*iter) && fs::is_regular_file(*iter)) {
-				auto temp_path = iter->path().wstring();
-				auto size = suf.size();
-				if (!size)
-				{
-					ret.push_back(std::move(temp_path));
-				}
-				else
-				{
+        fs::path fullpath(rootPath);
+        if (!fs::exists(fullpath)) { return; }
+        fs::recursive_directory_iterator end_iter;
+        for (fs::recursive_directory_iterator iter(fullpath); iter != end_iter; iter++) {
+                try {
+                        if (!fs::is_directory(*iter) && fs::is_regular_file(*iter)) {
+                                auto temp_path = iter->path().wstring();
+                                auto size = suf.size();
+                                if (!size)
+                                {
+                                        ret.push_back(std::move(temp_path));
+                                }
+                                else
+                                {
 
-					if (temp_path.size() < size) continue;
-					auto suf_temp = temp_path.substr(temp_path.size() - size);
-					boost::to_lower(suf_temp);
-					if (suf_temp == suf)
-					{
-						ret.push_back(std::move(temp_path));
-					}
-				}
-			}
-		}
-		catch (const std::exception&) {
-			continue;
-		}
-	}
+                                        if (temp_path.size() < size) continue;
+                                        auto suf_temp = temp_path.substr(temp_path.size() - size);
+                                        boost::to_lower(suf_temp);
+                                        if (suf_temp == suf)
+                                        {
+                                                ret.push_back(std::move(temp_path));
+                                        }
+                                }
+                        }
+                }
+                catch (const std::exception&) {
+                        continue;
+                }
+        }
 }
 
 void scanFileNamesUseRecursive(const std::wstring& rootPath, std::vector<std::wstring>& ret,
-	std::wstring strSuf)
+        std::wstring strSuf)
 {
-	scanFilesUseRecursive(rootPath, ret, strSuf);
-	std::vector<std::wstring> names;
-	for (auto& it : ret)
-	{
-		if (it.size() >= rootPath.size())
-		{
-			names.push_back(it.substr(rootPath.size()));
-		}
-	}
-	ret.swap(names);
+        scanFilesUseRecursive(rootPath, ret, strSuf);
+        std::vector<std::wstring> names;
+        for (auto& it : ret)
+        {
+                if (it.size() >= rootPath.size())
+                {
+                        names.push_back(it.substr(rootPath.size()));
+                }
+        }
+        ret.swap(names);
 }
 
 void scanFileNamesUseRecursive(const std::string& rootPath, std::vector<std::string>& ret, std::string strSuf)
 {
-	std::vector<std::wstring> out;
-	scanFileNamesUseRecursive(s2ws(rootPath), out, s2ws(strSuf));
-	for (auto& it : out)
-	{
-		ret.push_back(ws2s(it));
-	}
+        std::vector<std::wstring> out;
+        scanFileNamesUseRecursive(s2ws(rootPath), out, s2ws(strSuf));
+        for (auto& it : out)
+        {
+                ret.push_back(ws2s(it));
+        }
 }
 
 void scanFilesUseRecursive(const std::string& rootPath, std::vector<std::string>& ret, std::string strSuf)
 {
-	std::vector<std::wstring> out;
-	scanFilesUseRecursive(s2ws(rootPath), out, s2ws(strSuf));
-	for (auto& it : out)
-	{
-		ret.push_back(ws2s(it));
-	}
+        std::vector<std::wstring> out;
+        scanFilesUseRecursive(s2ws(rootPath), out, s2ws(strSuf));
+        for (auto& it : out)
+        {
+                ret.push_back(ws2s(it));
+        }
 }
 
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/src/lsp/working_files.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/src/lsp/working_files.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/src/lsp/working_files.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -139,7 +139,7 @@
   if( findIt != d_ptr->files.end())
   {
       d_ptr->files.erase(findIt);
-	  return true;
+          return true;
   }
   return false;
 }
@@ -183,4 +183,4 @@
 void  WorkingFiles::Clear() {
     std::lock_guard<std::mutex> lock(d_ptr->files_mutex);
     d_ptr->files.clear();
-}
\ No newline at end of file
+}

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/glossary.json
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/glossary.json	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/glossary.json	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,22 +1,22 @@
-{
-    "glossary": {
-        "title": "example glossary",
-		"GlossDiv": {
-            "title": "S",
-			"GlossList": {
-                "GlossEntry": {
-                    "ID": "SGML",
-					"SortAs": "SGML",
-					"GlossTerm": "Standard Generalized Markup Language",
-					"Acronym": "SGML",
-					"Abbrev": "ISO 8879:1986",
-					"GlossDef": {
-                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
-						"GlossSeeAlso": ["GML", "XML"]
-                    },
-					"GlossSee": "markup"
-                }
-            }
-        }
-    }
+{
+    "glossary": {
+        "title": "example glossary",
+		"GlossDiv": {
+            "title": "S",
+			"GlossList": {
+                "GlossEntry": {
+                    "ID": "SGML",
+					"SortAs": "SGML",
+					"GlossTerm": "Standard Generalized Markup Language",
+					"Acronym": "SGML",
+					"Abbrev": "ISO 8879:1986",
+					"GlossDef": {
+                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
+						"GlossSeeAlso": ["GML", "XML"]
+                    },
+					"GlossSee": "markup"
+                }
+            }
+        }
+    }
 }
\ No newline at end of file

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/menu.json
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/menu.json	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/menu.json	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,27 +1,27 @@
-{"menu": {
-    "header": "SVG Viewer",
-    "items": [
-        {"id": "Open"},
-        {"id": "OpenNew", "label": "Open New"},
-        null,
-        {"id": "ZoomIn", "label": "Zoom In"},
-        {"id": "ZoomOut", "label": "Zoom Out"},
-        {"id": "OriginalView", "label": "Original View"},
-        null,
-        {"id": "Quality"},
-        {"id": "Pause"},
-        {"id": "Mute"},
-        null,
-        {"id": "Find", "label": "Find..."},
-        {"id": "FindAgain", "label": "Find Again"},
-        {"id": "Copy"},
-        {"id": "CopyAgain", "label": "Copy Again"},
-        {"id": "CopySVG", "label": "Copy SVG"},
-        {"id": "ViewSVG", "label": "View SVG"},
-        {"id": "ViewSource", "label": "View Source"},
-        {"id": "SaveAs", "label": "Save As"},
-        null,
-        {"id": "Help"},
-        {"id": "About", "label": "About Adobe CVG Viewer..."}
-    ]
+{"menu": {
+    "header": "SVG Viewer",
+    "items": [
+        {"id": "Open"},
+        {"id": "OpenNew", "label": "Open New"},
+        null,
+        {"id": "ZoomIn", "label": "Zoom In"},
+        {"id": "ZoomOut", "label": "Zoom Out"},
+        {"id": "OriginalView", "label": "Original View"},
+        null,
+        {"id": "Quality"},
+        {"id": "Pause"},
+        {"id": "Mute"},
+        null,
+        {"id": "Find", "label": "Find..."},
+        {"id": "FindAgain", "label": "Find Again"},
+        {"id": "Copy"},
+        {"id": "CopyAgain", "label": "Copy Again"},
+        {"id": "CopySVG", "label": "Copy SVG"},
+        {"id": "ViewSVG", "label": "View SVG"},
+        {"id": "ViewSource", "label": "View Source"},
+        {"id": "SaveAs", "label": "Save As"},
+        null,
+        {"id": "Help"},
+        {"id": "About", "label": "About Adobe CVG Viewer..."}
+    ]
 }}
\ No newline at end of file

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/webapp.json
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/webapp.json	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/webapp.json	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,88 +1,88 @@
-{"web-app": {
-  "servlet": [   
-    {
-      "servlet-name": "cofaxCDS",
-      "servlet-class": "org.cofax.cds.CDSServlet",
-      "init-param": {
-        "configGlossary:installationAt": "Philadelphia, PA",
-        "configGlossary:adminEmail": "ksm at pobox.com",
-        "configGlossary:poweredBy": "Cofax",
-        "configGlossary:poweredByIcon": "/images/cofax.gif",
-        "configGlossary:staticPath": "/content/static",
-        "templateProcessorClass": "org.cofax.WysiwygTemplate",
-        "templateLoaderClass": "org.cofax.FilesTemplateLoader",
-        "templatePath": "templates",
-        "templateOverridePath": "",
-        "defaultListTemplate": "listTemplate.htm",
-        "defaultFileTemplate": "articleTemplate.htm",
-        "useJSP": false,
-        "jspListTemplate": "listTemplate.jsp",
-        "jspFileTemplate": "articleTemplate.jsp",
-        "cachePackageTagsTrack": 200,
-        "cachePackageTagsStore": 200,
-        "cachePackageTagsRefresh": 60,
-        "cacheTemplatesTrack": 100,
-        "cacheTemplatesStore": 50,
-        "cacheTemplatesRefresh": 15,
-        "cachePagesTrack": 200,
-        "cachePagesStore": 100,
-        "cachePagesRefresh": 10,
-        "cachePagesDirtyRead": 10,
-        "searchEngineListTemplate": "forSearchEnginesList.htm",
-        "searchEngineFileTemplate": "forSearchEngines.htm",
-        "searchEngineRobotsDb": "WEB-INF/robots.db",
-        "useDataStore": true,
-        "dataStoreClass": "org.cofax.SqlDataStore",
-        "redirectionClass": "org.cofax.SqlRedirection",
-        "dataStoreName": "cofax",
-        "dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",
-        "dataStoreUrl": "jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",
-        "dataStoreUser": "sa",
-        "dataStorePassword": "dataStoreTestQuery",
-        "dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",
-        "dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",
-        "dataStoreInitConns": 10,
-        "dataStoreMaxConns": 100,
-        "dataStoreConnUsageLimit": 100,
-        "dataStoreLogLevel": "debug",
-        "maxUrlLength": 500}},
-    {
-      "servlet-name": "cofaxEmail",
-      "servlet-class": "org.cofax.cds.EmailServlet",
-      "init-param": {
-      "mailHost": "mail1",
-      "mailHostOverride": "mail2"}},
-    {
-      "servlet-name": "cofaxAdmin",
-      "servlet-class": "org.cofax.cds.AdminServlet"},
- 
-    {
-      "servlet-name": "fileServlet",
-      "servlet-class": "org.cofax.cds.FileServlet"},
-    {
-      "servlet-name": "cofaxTools",
-      "servlet-class": "org.cofax.cms.CofaxToolsServlet",
-      "init-param": {
-        "templatePath": "toolstemplates/",
-        "log": 1,
-        "logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
-        "logMaxSize": "",
-        "dataLog": 1,
-        "dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",
-        "dataLogMaxSize": "",
-        "removePageCache": "/content/admin/remove?cache=pages&id=",
-        "removeTemplateCache": "/content/admin/remove?cache=templates&id=",
-        "fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",
-        "lookInContext": 1,
-        "adminGroupID": 4,
-        "betaServer": true}}],
-  "servlet-mapping": {
-    "cofaxCDS": "/",
-    "cofaxEmail": "/cofaxutil/aemail/*",
-    "cofaxAdmin": "/admin/*",
-    "fileServlet": "/static/*",
-    "cofaxTools": "/tools/*"},
- 
-  "taglib": {
-    "taglib-uri": "cofax.tld",
+{"web-app": {
+  "servlet": [   
+    {
+      "servlet-name": "cofaxCDS",
+      "servlet-class": "org.cofax.cds.CDSServlet",
+      "init-param": {
+        "configGlossary:installationAt": "Philadelphia, PA",
+        "configGlossary:adminEmail": "ksm at pobox.com",
+        "configGlossary:poweredBy": "Cofax",
+        "configGlossary:poweredByIcon": "/images/cofax.gif",
+        "configGlossary:staticPath": "/content/static",
+        "templateProcessorClass": "org.cofax.WysiwygTemplate",
+        "templateLoaderClass": "org.cofax.FilesTemplateLoader",
+        "templatePath": "templates",
+        "templateOverridePath": "",
+        "defaultListTemplate": "listTemplate.htm",
+        "defaultFileTemplate": "articleTemplate.htm",
+        "useJSP": false,
+        "jspListTemplate": "listTemplate.jsp",
+        "jspFileTemplate": "articleTemplate.jsp",
+        "cachePackageTagsTrack": 200,
+        "cachePackageTagsStore": 200,
+        "cachePackageTagsRefresh": 60,
+        "cacheTemplatesTrack": 100,
+        "cacheTemplatesStore": 50,
+        "cacheTemplatesRefresh": 15,
+        "cachePagesTrack": 200,
+        "cachePagesStore": 100,
+        "cachePagesRefresh": 10,
+        "cachePagesDirtyRead": 10,
+        "searchEngineListTemplate": "forSearchEnginesList.htm",
+        "searchEngineFileTemplate": "forSearchEngines.htm",
+        "searchEngineRobotsDb": "WEB-INF/robots.db",
+        "useDataStore": true,
+        "dataStoreClass": "org.cofax.SqlDataStore",
+        "redirectionClass": "org.cofax.SqlRedirection",
+        "dataStoreName": "cofax",
+        "dataStoreDriver": "com.microsoft.jdbc.sqlserver.SQLServerDriver",
+        "dataStoreUrl": "jdbc:microsoft:sqlserver://LOCALHOST:1433;DatabaseName=goon",
+        "dataStoreUser": "sa",
+        "dataStorePassword": "dataStoreTestQuery",
+        "dataStoreTestQuery": "SET NOCOUNT ON;select test='test';",
+        "dataStoreLogFile": "/usr/local/tomcat/logs/datastore.log",
+        "dataStoreInitConns": 10,
+        "dataStoreMaxConns": 100,
+        "dataStoreConnUsageLimit": 100,
+        "dataStoreLogLevel": "debug",
+        "maxUrlLength": 500}},
+    {
+      "servlet-name": "cofaxEmail",
+      "servlet-class": "org.cofax.cds.EmailServlet",
+      "init-param": {
+      "mailHost": "mail1",
+      "mailHostOverride": "mail2"}},
+    {
+      "servlet-name": "cofaxAdmin",
+      "servlet-class": "org.cofax.cds.AdminServlet"},
+ 
+    {
+      "servlet-name": "fileServlet",
+      "servlet-class": "org.cofax.cds.FileServlet"},
+    {
+      "servlet-name": "cofaxTools",
+      "servlet-class": "org.cofax.cms.CofaxToolsServlet",
+      "init-param": {
+        "templatePath": "toolstemplates/",
+        "log": 1,
+        "logLocation": "/usr/local/tomcat/logs/CofaxTools.log",
+        "logMaxSize": "",
+        "dataLog": 1,
+        "dataLogLocation": "/usr/local/tomcat/logs/dataLog.log",
+        "dataLogMaxSize": "",
+        "removePageCache": "/content/admin/remove?cache=pages&id=",
+        "removeTemplateCache": "/content/admin/remove?cache=templates&id=",
+        "fileTransferFolder": "/usr/local/tomcat/webapps/content/fileTransferFolder",
+        "lookInContext": 1,
+        "adminGroupID": 4,
+        "betaServer": true}}],
+  "servlet-mapping": {
+    "cofaxCDS": "/",
+    "cofaxEmail": "/cofaxutil/aemail/*",
+    "cofaxAdmin": "/admin/*",
+    "fileServlet": "/static/*",
+    "cofaxTools": "/tools/*"},
+ 
+  "taglib": {
+    "taglib-uri": "cofax.tld",
     "taglib-location": "/WEB-INF/tlds/cofax.tld"}}}
\ No newline at end of file

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/widget.json
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/widget.json	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/data/widget.json	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,26 +1,26 @@
-{"widget": {
-    "debug": "on",
-    "window": {
-        "title": "Sample Konfabulator Widget",
-        "name": "main_window",
-        "width": 500,
-        "height": 500
-    },
-    "image": { 
-        "src": "Images/Sun.png",
-        "name": "sun1",
-        "hOffset": 250,
-        "vOffset": 250,
-        "alignment": "center"
-    },
-    "text": {
-        "data": "Click Here",
-        "size": 36,
-        "style": "bold",
-        "name": "text1",
-        "hOffset": 250,
-        "vOffset": 100,
-        "alignment": "center",
-        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
-    }
+{"widget": {
+    "debug": "on",
+    "window": {
+        "title": "Sample Konfabulator Widget",
+        "name": "main_window",
+        "width": 500,
+        "height": 500
+    },
+    "image": { 
+        "src": "Images/Sun.png",
+        "name": "sun1",
+        "hOffset": 250,
+        "vOffset": 250,
+        "alignment": "center"
+    },
+    "text": {
+        "data": "Click Here",
+        "size": 36,
+        "style": "bold",
+        "name": "text1",
+        "hOffset": 250,
+        "vOffset": 100,
+        "alignment": "center",
+        "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
+    }
 }}
\ No newline at end of file

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/encodings/utf8.json
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/encodings/utf8.json	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/encodings/utf8.json	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,7 +1,7 @@
-{
-	"en":"I can eat glass and it doesn't hurt me.",
-	"zh-Hant":"我能吞下玻璃而不傷身體。",
-	"zh-Hans":"我能吞下玻璃而不伤身体。",
-	"ja":"私はガラスを食べられます。それは私を傷つけません。",
-	"ko":"나는 유리를 먹을 수 있어요. 그래도 아프지 않아요"
+{
+	"en":"I can eat glass and it doesn't hurt me.",
+	"zh-Hant":"我能吞下玻璃而不傷身體。",
+	"zh-Hans":"我能吞下玻璃而不伤身体。",
+	"ja":"私はガラスを食べられます。それは私を傷つけません。",
+	"ko":"나는 유리를 먹을 수 있어요. 그래도 아프지 않아요"
 }
\ No newline at end of file

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/encodings/utf8bom.json
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/encodings/utf8bom.json	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/bin/encodings/utf8bom.json	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,7 +1,7 @@
-{
-	"en":"I can eat glass and it doesn't hurt me.",
-	"zh-Hant":"我能吞下玻璃而不傷身體。",
-	"zh-Hans":"我能吞下玻璃而不伤身体。",
-	"ja":"私はガラスを食べられます。それは私を傷つけません。",
-	"ko":"나는 유리를 먹을 수 있어요. 그래도 아프지 않아요"
+{
+	"en":"I can eat glass and it doesn't hurt me.",
+	"zh-Hant":"我能吞下玻璃而不傷身體。",
+	"zh-Hans":"我能吞下玻璃而不伤身体。",
+	"ja":"私はガラスを食べられます。それは私を傷つけません。",
+	"ko":"나는 유리를 먹을 수 있어요. 그래도 아프지 않아요"
 }
\ No newline at end of file

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archiver.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archiver.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archiver.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -69,7 +69,7 @@
     if (!mError) {
         if (CURRENT.IsObject() && TOP.state == JsonReaderStackItem::Started) {
             Value::ConstMemberIterator memberItr = CURRENT.FindMember(name);
-            if (memberItr != CURRENT.MemberEnd()) 
+            if (memberItr != CURRENT.MemberEnd())
                 STACK->push(JsonReaderStackItem(&memberItr->value, JsonReaderStackItem::BeforeStart));
             else
                 mError = true;
@@ -218,7 +218,7 @@
     mWriter = new PrettyWriter<StringBuffer>(*STREAM);
 }
 
-JsonWriter::~JsonWriter() { 
+JsonWriter::~JsonWriter() {
     delete WRITER;
     delete STREAM;
 }
@@ -249,7 +249,7 @@
 }
 
 JsonWriter& JsonWriter::StartArray(size_t*) {
-    WRITER->StartArray();   
+    WRITER->StartArray();
     return *this;
 }
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archiver.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archiver.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archiver.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -17,7 +17,7 @@
 
     /// Starts an object
     Archiver& StartObject();
-    
+
     /// After calling StartObject(), assign a member with a name
     Archiver& Member(const char* name);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archivertest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archivertest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/archiver/archivertest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -55,7 +55,7 @@
 
 //////////////////////////////////////////////////////////////////////////////
 // Test2: std::vector <=> JSON array
-// 
+//
 // You can map a JSON array to other data structures as well
 
 struct Group {
@@ -67,7 +67,7 @@
 template <typename Archiver>
 Archiver& operator&(Archiver& ar, Group& g) {
     ar.StartObject();
-    
+
     ar.Member("groupName");
     ar & g.groupName;
 
@@ -203,7 +203,7 @@
 public:
     Canvas() : shapes_() {}
     ~Canvas() { Clear(); }
-    
+
     void Clear() {
         for (std::vector<Shape*>::iterator itr = shapes_.begin(); itr != shapes_.end(); ++itr)
             delete *itr;
@@ -210,7 +210,7 @@
     }
 
     void AddShape(Shape* shape) { shapes_.push_back(shape); }
-    
+
     void Print(std::ostream& os) {
         for (std::vector<Shape*>::iterator itr = shapes_.begin(); itr != shapes_.end(); ++itr) {
             (*itr)->Print(os);

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/capitalize/capitalize.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/capitalize/capitalize.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/capitalize/capitalize.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,6 +1,6 @@
 // JSON condenser example
 
-// This example parses JSON from stdin with validation, 
+// This example parses JSON from stdin with validation,
 // and re-output the JSON content to stdout with all string capitalized, and without whitespace.
 
 #include "rapidjson/reader.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/condense/condense.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/condense/condense.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/condense/condense.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,6 +1,6 @@
 // JSON condenser example
 
-// This example parses JSON text from stdin with validation, 
+// This example parses JSON text from stdin with validation,
 // and re-output the JSON content to stdout without whitespace.
 
 #include "rapidjson/reader.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/filterkey/filterkey.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/filterkey/filterkey.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/filterkey/filterkey.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -19,7 +19,7 @@
 public:
     typedef char Ch;
 
-    FilterKeyHandler(OutputHandler& outputHandler, const Ch* keyString, SizeType keyLength) : 
+    FilterKeyHandler(OutputHandler& outputHandler, const Ch* keyString, SizeType keyLength) :
         outputHandler_(outputHandler), keyString_(keyString), keyLength_(keyLength), filterValueDepth_(), filteredKeyCount_()
     {}
 
@@ -32,8 +32,8 @@
     bool Double(double d)   { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Double(d) && EndValue(); }
     bool RawNumber(const Ch* str, SizeType len, bool copy) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.RawNumber(str, len, copy) && EndValue(); }
     bool String   (const Ch* str, SizeType len, bool copy) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.String   (str, len, copy) && EndValue(); }
-    
-    bool StartObject() { 
+
+    bool StartObject() {
         if (filterValueDepth_ > 0) {
             filterValueDepth_++;
             return true;
@@ -43,9 +43,9 @@
             return outputHandler_.StartObject();
         }
     }
-    
-    bool Key(const Ch* str, SizeType len, bool copy) { 
-        if (filterValueDepth_ > 0) 
+
+    bool Key(const Ch* str, SizeType len, bool copy) {
+        if (filterValueDepth_ > 0)
             return true;
         else if (len == keyLength_ && std::memcmp(str, keyString_, len) == 0) {
             filterValueDepth_ = 1;
@@ -97,7 +97,7 @@
             filterValueDepth_ = 0;
         return true;
     }
-    
+
     OutputHandler& outputHandler_;
     const char* keyString_;
     const SizeType keyLength_;

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/filterkeydom/filterkeydom.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/filterkeydom/filterkeydom.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/filterkeydom/filterkeydom.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -20,7 +20,7 @@
 public:
     typedef char Ch;
 
-    FilterKeyHandler(OutputHandler& outputHandler, const Ch* keyString, SizeType keyLength) : 
+    FilterKeyHandler(OutputHandler& outputHandler, const Ch* keyString, SizeType keyLength) :
         outputHandler_(outputHandler), keyString_(keyString), keyLength_(keyLength), filterValueDepth_(), filteredKeyCount_()
     {}
 
@@ -33,8 +33,8 @@
     bool Double(double d)   { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.Double(d) && EndValue(); }
     bool RawNumber(const Ch* str, SizeType len, bool copy) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.RawNumber(str, len, copy) && EndValue(); }
     bool String   (const Ch* str, SizeType len, bool copy) { return filterValueDepth_ > 0 ? EndValue() : outputHandler_.String   (str, len, copy) && EndValue(); }
-    
-    bool StartObject() { 
+
+    bool StartObject() {
         if (filterValueDepth_ > 0) {
             filterValueDepth_++;
             return true;
@@ -44,9 +44,9 @@
             return outputHandler_.StartObject();
         }
     }
-    
-    bool Key(const Ch* str, SizeType len, bool copy) { 
-        if (filterValueDepth_ > 0) 
+
+    bool Key(const Ch* str, SizeType len, bool copy) {
+        if (filterValueDepth_ > 0)
             return true;
         else if (len == keyLength_ && std::memcmp(str, keyString_, len) == 0) {
             filterValueDepth_ = 1;
@@ -112,7 +112,7 @@
 public:
     typedef char Ch;
 
-    FilterKeyReader(InputStream& is, const Ch* keyString, SizeType keyLength) : 
+    FilterKeyReader(InputStream& is, const Ch* keyString, SizeType keyLength) :
         is_(is), keyString_(keyString), keyLength_(keyLength), parseResult_()
     {}
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/jsonx/jsonx.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/jsonx/jsonx.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/jsonx/jsonx.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,7 +1,7 @@
 // JSON to JSONx conversion example, using SAX API.
 // JSONx is an IBM standard format to represent JSON as XML.
 // https://www-01.ibm.com/support/knowledgecenter/SS9H2Y_7.1.0/com.ibm.dp.doc/json_jsonx.html
-// This example parses JSON text from stdin with validation, 
+// This example parses JSON text from stdin with validation,
 // and convert to JSONx format to stdout.
 // Need compile with -D__STDC_FORMAT_MACROS for defining PRId64 and PRIu64 macros.
 
@@ -24,34 +24,34 @@
     bool Null() {
         return WriteStartElement("null", true);
     }
-    
+
     bool Bool(bool b) {
-        return 
+        return
             WriteStartElement("boolean") &&
             WriteString(b ? "true" : "false") &&
             WriteEndElement("boolean");
     }
-    
+
     bool Int(int i) {
         char buffer[12];
         return WriteNumberElement(buffer, sprintf(buffer, "%d", i));
     }
-    
+
     bool Uint(unsigned i) {
         char buffer[11];
         return WriteNumberElement(buffer, sprintf(buffer, "%u", i));
     }
-    
+
     bool Int64(int64_t i) {
         char buffer[21];
         return WriteNumberElement(buffer, sprintf(buffer, "%" PRId64, i));
     }
-    
+
     bool Uint64(uint64_t i) {
         char buffer[21];
         return WriteNumberElement(buffer, sprintf(buffer, "%" PRIu64, i));
     }
-    
+
     bool Double(double d) {
         char buffer[30];
         return WriteNumberElement(buffer, sprintf(buffer, "%.17g", d));

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/lookaheadparser/lookaheadparser.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/lookaheadparser/lookaheadparser.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/lookaheadparser/lookaheadparser.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -75,12 +75,12 @@
         kEnteringArray,
         kExitingArray
     };
-    
+
     Value v_;
     LookaheadParsingState st_;
     Reader r_;
     InsituStringStream ss_;
-    
+
     static const int parseFlags = kParseDefaultFlags | kParseInsituFlag;
 };
 
@@ -94,7 +94,7 @@
         st_ = kError;
         return;
     }
-    
+
     r_.IterativeParseNext<parseFlags>(ss_, *this);
 }
 
@@ -101,7 +101,7 @@
 class LookaheadParser : protected LookaheadParserHandler {
 public:
     LookaheadParser(char* str) : LookaheadParserHandler(str) {}
-    
+
     bool EnterObject();
     bool EnterArray();
     const char* NextObjectKey();
@@ -117,9 +117,9 @@
     void SkipValue();
     Value* PeekValue();
     int PeekType(); // returns a rapidjson::Type, or -1 for no value (at end of object/array)
-    
+
     bool IsValid() { return st_ != kError; }
-    
+
 protected:
     void SkipOut(int depth);
 };
@@ -129,7 +129,7 @@
         st_  = kError;
         return false;
     }
-    
+
     ParseNext();
     return true;
 }
@@ -139,7 +139,7 @@
         st_  = kError;
         return false;
     }
-    
+
     ParseNext();
     return true;
 }
@@ -150,12 +150,12 @@
         ParseNext();
         return result;
     }
-    
+
     if (st_ != kExitingObject) {
         st_ = kError;
         return 0;
     }
-    
+
     ParseNext();
     return 0;
 }
@@ -165,7 +165,7 @@
         ParseNext();
         return false;
     }
-    
+
     if (st_ == kError || st_ == kExitingObject || st_ == kHasKey) {
         st_ = kError;
         return false;
@@ -190,7 +190,7 @@
         st_  = kError;
         return 0.;
     }
-    
+
     double result = v_.GetDouble();
     ParseNext();
     return result;
@@ -201,7 +201,7 @@
         st_  = kError;
         return false;
     }
-    
+
     bool result = v_.GetBool();
     ParseNext();
     return result;
@@ -221,7 +221,7 @@
         st_  = kError;
         return 0;
     }
-    
+
     const char* result = v_.GetString();
     ParseNext();
     return result;
@@ -260,7 +260,7 @@
     if (st_ >= kHasNull && st_ <= kHasKey) {
         return &v_;
     }
-    
+
     return 0;
 }
 
@@ -268,11 +268,11 @@
     if (st_ >= kHasNull && st_ <= kHasKey) {
         return v_.GetType();
     }
-    
+
     if (st_ == kEnteringArray) {
         return kArrayType;
     }
-    
+
     if (st_ == kEnteringObject) {
         return kObjectType;
     }
@@ -292,7 +292,7 @@
         "\"skipString\":\"zzz\", \"reachedEnd\":null, \"t\":true }";
 
     LookaheadParser r(json);
-    
+
     RAPIDJSON_ASSERT(r.PeekType() == kObjectType);
 
     r.EnterObject();
@@ -319,9 +319,9 @@
         }
         else if (0 == strcmp(key, "a")) {
             RAPIDJSON_ASSERT(r.PeekType() == kArrayType);
-            
+
             r.EnterArray();
-            
+
             cout << key << ":[ ";
             while (r.NextArrayValue()) {
                 if (r.PeekType() == kNumberType) {
@@ -335,7 +335,7 @@
                     break;
                 }
             }
-            
+
             cout << "]" << endl;
         }
         else {
@@ -343,7 +343,7 @@
             r.SkipValue();
         }
     }
-    
+
     return 0;
 }
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/parsebyparts/parsebyparts.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/parsebyparts/parsebyparts.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/parsebyparts/parsebyparts.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -35,7 +35,7 @@
         if (!parseThread_.joinable())
             return;
 
-        {        
+        {
             std::unique_lock<std::mutex> lock(mutex_);
 
             // Wait until the buffer is read up (or parsing is completed)
@@ -54,7 +54,7 @@
 
     void ParsePart(const char* buffer, size_t length) {
         std::unique_lock<std::mutex> lock(mutex_);
-        
+
         // Wait until the buffer is read up (or parsing is completed)
         while (!stream_.Empty() && !completed_)
             finish_.wait(lock);
@@ -156,7 +156,7 @@
         std::cout << "Error at offset " << d.GetErrorOffset() << ": " << GetParseError_En(d.GetParseError()) << std::endl;
         return EXIT_FAILURE;
     }
-    
+
     // Stringify the JSON to cout
     OStreamWrapper os(std::cout);
     Writer<OStreamWrapper> writer(os);
@@ -166,7 +166,7 @@
     return EXIT_SUCCESS;
 }
 
-#else // Not supporting C++11 
+#else // Not supporting C++11
 
 #include <iostream>
 int main() {

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/schemavalidator/schemavalidator.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/schemavalidator/schemavalidator.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/schemavalidator/schemavalidator.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -155,7 +155,7 @@
         }
         fclose(fp);
     }
-    
+
     // Then convert the Document into SchemaDocument
     SchemaDocument sd(d);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/serialize/serialize.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/serialize/serialize.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/serialize/serialize.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -50,7 +50,7 @@
     template <typename Writer>
     void Serialize(Writer& writer) const {
         writer.StartObject();
-        
+
         writer.String("school");
 #if RAPIDJSON_HAS_STDSTRING
         writer.String(school_);
@@ -104,7 +104,7 @@
 };
 
 Dependent::~Dependent() {
-    delete education_; 
+    delete education_;
 }
 
 class Employee : public Person {

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplepullreader/simplepullreader.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplepullreader/simplepullreader.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplepullreader/simplepullreader.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -15,7 +15,7 @@
 struct MyHandler {
     const char* type;
     std::string data;
-    
+
     MyHandler() : type(), data() {}
 
     bool Null() { type = "Null"; data.clear(); return true; }

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplereader/simplereader.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplereader/simplereader.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplereader/simplereader.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -12,11 +12,11 @@
     bool Int64(int64_t i) { cout << "Int64(" << i << ")" << endl; return true; }
     bool Uint64(uint64_t u) { cout << "Uint64(" << u << ")" << endl; return true; }
     bool Double(double d) { cout << "Double(" << d << ")" << endl; return true; }
-    bool RawNumber(const char* str, SizeType length, bool copy) { 
+    bool RawNumber(const char* str, SizeType length, bool copy) {
         cout << "Number(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl;
         return true;
     }
-    bool String(const char* str, SizeType length, bool copy) { 
+    bool String(const char* str, SizeType length, bool copy) {
         cout << "String(" << str << ", " << length << ", " << boolalpha << copy << ")" << endl;
         return true;
     }

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplewriter/simplewriter.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplewriter/simplewriter.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/simplewriter/simplewriter.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,8 +8,8 @@
 int main() {
     StringBuffer s;
     Writer<StringBuffer> writer(s);
-    
-    writer.StartObject();               // Between StartObject()/EndObject(), 
+
+    writer.StartObject();               // Between StartObject()/EndObject(),
     writer.Key("hello");                // output a key,
     writer.String("world");             // follow by a value.
     writer.Key("t");

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/traverseaspointer.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/traverseaspointer.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/traverseaspointer.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -17,7 +17,7 @@
             traverse(v[i], p.Append(i));
         break;
     case kObjectType:
-        for (Value::ConstMemberIterator m = v.MemberBegin(); m != v.MemberEnd(); ++m) 
+        for (Value::ConstMemberIterator m = v.MemberBegin(); m != v.MemberEnd(); ++m)
             traverse(m->value, p.Append(m->name.GetString(), m->name.GetStringLength()));
         break;
     default:

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/tutorial/tutorial.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/tutorial/tutorial.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/example/tutorial/tutorial.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -32,7 +32,7 @@
     printf("\nParsing to document succeeded.\n");
 
     ////////////////////////////////////////////////////////////////////////////
-    // 2. Access values in document. 
+    // 2. Access values in document.
 
     printf("\nAccess values in document:\n");
     assert(document.IsObject());    // Document is a JSON value represents the root of DOM. Root can be either an object or array.
@@ -69,7 +69,7 @@
         assert(a.IsArray());
         for (SizeType i = 0; i < a.Size(); i++) // rapidjson uses SizeType instead of size_t.
             printf("a[%d] = %d\n", i, a[i].GetInt());
-        
+
         int y = a[0].GetInt();
         (void)y;
 
@@ -128,7 +128,7 @@
         // Shorter but slower version:
         // document["hello"].SetString(buffer, document.GetAllocator());
 
-        // Constructor version: 
+        // Constructor version:
         // Value author(buffer, len, document.GetAllocator());
         // Value author(buffer, document.GetAllocator());
         memset(buffer2, 0, sizeof(buffer2)); // For demonstration purpose.

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/allocators.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/allocators.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/allocators.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_ALLOCATORS_H_
@@ -31,10 +31,10 @@
 
 /*! \class rapidjson::Allocator
     \brief Concept for allocating, resizing and freeing memory block.
-    
+
     Note that Malloc() and Realloc() are non-static but Free() is static.
-    
-    So if an allocator need to support Free(), it needs to put its pointer in 
+
+    So if an allocator need to support Free(), it needs to put its pointer in
     the header of memory block.
 
 \code
@@ -82,7 +82,7 @@
 class CrtAllocator {
 public:
     static const bool kNeedFree = true;
-    void* Malloc(size_t size) { 
+    void* Malloc(size_t size) {
         if (size) //  behavior of malloc(0) is implementation defined.
             return RAPIDJSON_MALLOC(size);
         else
@@ -110,7 +110,7 @@
 // MemoryPoolAllocator
 
 //! Default memory allocator used by the parser and DOM.
-/*! This allocator allocate memory blocks from pre-allocated memory chunks. 
+/*! This allocator allocate memory blocks from pre-allocated memory chunks.
 
     It does not free memory blocks. And Realloc() only allocate new memory.
 
@@ -166,7 +166,7 @@
         \param baseAllocator The allocator for allocating memory chunks.
     */
     explicit
-    MemoryPoolAllocator(size_t chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) : 
+    MemoryPoolAllocator(size_t chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) :
         chunk_capacity_(chunkSize),
         baseAllocator_(baseAllocator ? baseAllocator : RAPIDJSON_NEW(BaseAllocator)()),
         shared_(static_cast<SharedData*>(baseAllocator_ ? baseAllocator_->Malloc(SIZEOF_SHARED_DATA + SIZEOF_CHUNK_HEADER) : 0))

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/document.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/document.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/document.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_DOCUMENT_H_
@@ -116,7 +116,7 @@
     But a compiler (IBM XL C/C++ for AIX) have reported to have problem with that so it moved as a namespace scope struct.
     https://code.google.com/p/rapidjson/issues/detail?id=64
 */
-template <typename Encoding, typename Allocator> 
+template <typename Encoding, typename Allocator>
 class GenericMember {
 public:
     GenericValue<Encoding, Allocator> name;     //!< name of member (must be a string)
@@ -518,7 +518,7 @@
 template <typename ValueType, typename T>
 struct TypeHelper {};
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, bool> {
     static bool Is(const ValueType& v) { return v.IsBool(); }
     static bool Get(const ValueType& v) { return v.GetBool(); }
@@ -526,7 +526,7 @@
     static ValueType& Set(ValueType& v, bool data, typename ValueType::AllocatorType&) { return v.SetBool(data); }
 };
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, int> {
     static bool Is(const ValueType& v) { return v.IsInt(); }
     static int Get(const ValueType& v) { return v.GetInt(); }
@@ -534,7 +534,7 @@
     static ValueType& Set(ValueType& v, int data, typename ValueType::AllocatorType&) { return v.SetInt(data); }
 };
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, unsigned> {
     static bool Is(const ValueType& v) { return v.IsUint(); }
     static unsigned Get(const ValueType& v) { return v.GetUint(); }
@@ -562,7 +562,7 @@
 };
 #endif
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, int64_t> {
     static bool Is(const ValueType& v) { return v.IsInt64(); }
     static int64_t Get(const ValueType& v) { return v.GetInt64(); }
@@ -570,7 +570,7 @@
     static ValueType& Set(ValueType& v, int64_t data, typename ValueType::AllocatorType&) { return v.SetInt64(data); }
 };
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, uint64_t> {
     static bool Is(const ValueType& v) { return v.IsUint64(); }
     static uint64_t Get(const ValueType& v) { return v.GetUint64(); }
@@ -578,7 +578,7 @@
     static ValueType& Set(ValueType& v, uint64_t data, typename ValueType::AllocatorType&) { return v.SetUint64(data); }
 };
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, double> {
     static bool Is(const ValueType& v) { return v.IsDouble(); }
     static double Get(const ValueType& v) { return v.GetDouble(); }
@@ -586,7 +586,7 @@
     static ValueType& Set(ValueType& v, double data, typename ValueType::AllocatorType&) { return v.SetDouble(data); }
 };
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, float> {
     static bool Is(const ValueType& v) { return v.IsFloat(); }
     static float Get(const ValueType& v) { return v.GetFloat(); }
@@ -594,7 +594,7 @@
     static ValueType& Set(ValueType& v, float data, typename ValueType::AllocatorType&) { return v.SetFloat(data); }
 };
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, const typename ValueType::Ch*> {
     typedef const typename ValueType::Ch* StringType;
     static bool Is(const ValueType& v) { return v.IsString(); }
@@ -604,7 +604,7 @@
 };
 
 #if RAPIDJSON_HAS_STDSTRING
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, std::basic_string<typename ValueType::Ch> > {
     typedef std::basic_string<typename ValueType::Ch> StringType;
     static bool Is(const ValueType& v) { return v.IsString(); }
@@ -613,7 +613,7 @@
 };
 #endif
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, typename ValueType::Array> {
     typedef typename ValueType::Array ArrayType;
     static bool Is(const ValueType& v) { return v.IsArray(); }
@@ -622,7 +622,7 @@
     static ValueType& Set(ValueType& v, ArrayType data, typename ValueType::AllocatorType&) { return v = data; }
 };
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, typename ValueType::ConstArray> {
     typedef typename ValueType::ConstArray ArrayType;
     static bool Is(const ValueType& v) { return v.IsArray(); }
@@ -629,7 +629,7 @@
     static ArrayType Get(const ValueType& v) { return v.GetArray(); }
 };
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, typename ValueType::Object> {
     typedef typename ValueType::Object ObjectType;
     static bool Is(const ValueType& v) { return v.IsObject(); }
@@ -638,7 +638,7 @@
     static ValueType& Set(ValueType& v, ObjectType data, typename ValueType::AllocatorType&) { return v = data; }
 };
 
-template<typename ValueType> 
+template<typename ValueType>
 struct TypeHelper<ValueType, typename ValueType::ConstObject> {
     typedef typename ValueType::ConstObject ObjectType;
     static bool Is(const ValueType& v) { return v.IsObject(); }
@@ -796,7 +796,7 @@
 
     //! Constructor for unsigned value.
     explicit GenericValue(unsigned u) RAPIDJSON_NOEXCEPT : data_() {
-        data_.n.u64 = u; 
+        data_.n.u64 = u;
         data_.f.flags = (u & 0x80000000) ? kNumberUintFlag : (kNumberUintFlag | kIntFlag | kInt64Flag);
     }
 
@@ -1030,7 +1030,7 @@
         switch (GetType()) {
         case kObjectType: // Warning: O(n^2) inner-loop
             if (data_.o.size != rhs.data_.o.size)
-                return false;           
+                return false;
             for (ConstMemberIterator lhsMemberItr = MemberBegin(); lhsMemberItr != MemberEnd(); ++lhsMemberItr) {
                 typename RhsType::ConstMemberIterator rhsMemberItr = rhs.FindMember(lhsMemberItr->name);
                 if (rhsMemberItr == rhs.MemberEnd() || lhsMemberItr->value != rhsMemberItr->value)
@@ -1037,7 +1037,7 @@
                     return false;
             }
             return true;
-            
+
         case kArrayType:
             if (data_.a.size != rhs.data_.a.size)
                 return false;
@@ -1505,7 +1505,7 @@
         \note Linear time complexity.
     */
     void RemoveAllMembers() {
-        RAPIDJSON_ASSERT(IsObject()); 
+        RAPIDJSON_ASSERT(IsObject());
         DoClearMembers();
     }
 
@@ -1638,7 +1638,7 @@
         \note Linear time complexity.
     */
     void Clear() {
-        RAPIDJSON_ASSERT(IsArray()); 
+        RAPIDJSON_ASSERT(IsArray());
         GenericValue* e = GetElementsPointer();
         for (GenericValue* v = e; v != e + data_.a.size; ++v)
             v->~GenericValue();
@@ -1844,7 +1844,7 @@
 
     //! Set this value as a string without copying source string.
     /*! This version has better performance with supplied length, and also support string containing null character.
-        \param s source string pointer. 
+        \param s source string pointer.
         \param length The length of source string, excluding the trailing null terminator.
         \return The value itself for fluent API.
         \post IsString() == true && GetString() == s && GetStringLength() == length
@@ -1861,7 +1861,7 @@
 
     //! Set this value as a string by copying from source string.
     /*! This version has better performance with supplied length, and also support string containing null character.
-        \param s source string. 
+        \param s source string.
         \param length The length of source string, excluding the trailing null terminator.
         \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().
         \return The value itself for fluent API.
@@ -1870,7 +1870,7 @@
     GenericValue& SetString(const Ch* s, SizeType length, Allocator& allocator) { return SetString(StringRef(s, length), allocator); }
 
     //! Set this value as a string by copying from source string.
-    /*! \param s source string. 
+    /*! \param s source string.
         \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().
         \return The value itself for fluent API.
         \post IsString() == true && GetString() != s && strcmp(GetString(),s) == 0 && GetStringLength() == length
@@ -1955,10 +1955,10 @@
                 if (RAPIDJSON_UNLIKELY(!v->Accept(handler)))
                     return false;
             return handler.EndArray(data_.a.size);
-    
+
         case kStringType:
             return handler.String(GetString(), GetStringLength(), (data_.f.flags & kCopyFlag) != 0);
-    
+
         default:
             RAPIDJSON_ASSERT(GetType() == kNumberType);
             if (IsDouble())         return handler.Double(data_.n.d);
@@ -2470,7 +2470,7 @@
 typedef GenericValue<UTF8<> > Value;
 
 ///////////////////////////////////////////////////////////////////////////////
-// GenericDocument 
+// GenericDocument
 
 //! A document for parsing JSON text as DOM.
 /*!
@@ -2502,12 +2502,12 @@
     }
 
     //! Constructor
-    /*! Creates an empty document which type is Null. 
+    /*! Creates an empty document which type is Null.
         \param allocator        Optional allocator for allocating memory.
         \param stackCapacity    Optional initial capacity of stack in bytes.
         \param stackAllocator   Optional allocator for allocating memory for stack.
     */
-    GenericDocument(Allocator* allocator = 0, size_t stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) : 
+    GenericDocument(Allocator* allocator = 0, size_t stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) :
         allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_()
     {
         if (!allocator_)
@@ -2724,7 +2724,7 @@
     GenericDocument& Parse(const Ch* str, size_t length) {
         return Parse<parseFlags, Encoding>(str, length);
     }
-    
+
     GenericDocument& Parse(const Ch* str, size_t length) {
         return Parse<kParseDefaultFlags>(str, length);
     }
@@ -2744,7 +2744,7 @@
     GenericDocument& Parse(const std::basic_string<Ch>& str) {
         return Parse<kParseDefaultFlags>(str);
     }
-#endif // RAPIDJSON_HAS_STDSTRING    
+#endif // RAPIDJSON_HAS_STDSTRING
 
     //!@}
 
@@ -2809,8 +2809,8 @@
     bool Uint64(uint64_t i) { new (stack_.template Push<ValueType>()) ValueType(i); return true; }
     bool Double(double d) { new (stack_.template Push<ValueType>()) ValueType(d); return true; }
 
-    bool RawNumber(const Ch* str, SizeType length, bool copy) { 
-        if (copy) 
+    bool RawNumber(const Ch* str, SizeType length, bool copy) {
+        if (copy)
             new (stack_.template Push<ValueType>()) ValueType(str, length, GetAllocator());
         else
             new (stack_.template Push<ValueType>()) ValueType(str, length);
@@ -2817,8 +2817,8 @@
         return true;
     }
 
-    bool String(const Ch* str, SizeType length, bool copy) { 
-        if (copy) 
+    bool String(const Ch* str, SizeType length, bool copy) {
+        if (copy)
             new (stack_.template Push<ValueType>()) ValueType(str, length, GetAllocator());
         else
             new (stack_.template Push<ValueType>()) ValueType(str, length);
@@ -2826,7 +2826,7 @@
     }
 
     bool StartObject() { new (stack_.template Push<ValueType>()) ValueType(kObjectType); return true; }
-    
+
     bool Key(const Ch* str, SizeType length, bool copy) { return String(str, length, copy); }
 
     bool EndObject(SizeType memberCount) {
@@ -2836,7 +2836,7 @@
     }
 
     bool StartArray() { new (stack_.template Push<ValueType>()) ValueType(kArrayType); return true; }
-    
+
     bool EndArray(SizeType elementCount) {
         ValueType* elements = stack_.template Pop<ValueType>(elementCount);
         stack_.template Top<ValueType>()->SetArrayRaw(elements, elementCount, GetAllocator());

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/encodedstream.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/encodedstream.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/encodedstream.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_ENCODEDSTREAM_H_
@@ -41,7 +41,7 @@
 public:
     typedef typename Encoding::Ch Ch;
 
-    EncodedInputStream(InputByteStream& is) : is_(is) { 
+    EncodedInputStream(InputByteStream& is) : is_(is) {
         current_ = Encoding::TakeBOM(is_);
     }
 
@@ -51,7 +51,7 @@
 
     // Not implemented
     void Put(Ch) { RAPIDJSON_ASSERT(false); }
-    void Flush() { RAPIDJSON_ASSERT(false); } 
+    void Flush() { RAPIDJSON_ASSERT(false); }
     Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
     size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
 
@@ -80,7 +80,7 @@
 
     // Not implemented
     void Put(Ch) {}
-    void Flush() {} 
+    void Flush() {}
     Ch* PutBegin() { return 0; }
     size_t PutEnd(Ch*) { return 0; }
 
@@ -102,7 +102,7 @@
 public:
     typedef typename Encoding::Ch Ch;
 
-    EncodedOutputStream(OutputByteStream& os, bool putBOM = true) : os_(os) { 
+    EncodedOutputStream(OutputByteStream& os, bool putBOM = true) : os_(os) {
         if (putBOM)
             Encoding::PutBOM(os_);
     }
@@ -143,7 +143,7 @@
         \param type UTF encoding type if it is not detected from the stream.
     */
     AutoUTFInputStream(InputByteStream& is, UTFType type = kUTF8) : is_(&is), type_(type), hasBOM_(false) {
-        RAPIDJSON_ASSERT(type >= kUTF8 && type <= kUTF32BE);        
+        RAPIDJSON_ASSERT(type >= kUTF8 && type <= kUTF32BE);
         DetectType();
         static const TakeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Take) };
         takeFunc_ = f[type_];
@@ -159,7 +159,7 @@
 
     // Not implemented
     void Put(Ch) { RAPIDJSON_ASSERT(false); }
-    void Flush() { RAPIDJSON_ASSERT(false); } 
+    void Flush() { RAPIDJSON_ASSERT(false); }
     Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
     size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
 
@@ -258,7 +258,7 @@
     UTFType GetType() const { return type_; }
 
     void Put(Ch c) { putFunc_(*os_, c); }
-    void Flush() { os_->Flush(); } 
+    void Flush() { os_->Flush(); }
 
     // Not implemented
     Ch Peek() const { RAPIDJSON_ASSERT(false); return 0;}
@@ -271,7 +271,7 @@
     AutoUTFOutputStream(const AutoUTFOutputStream&);
     AutoUTFOutputStream& operator=(const AutoUTFOutputStream&);
 
-    void PutBOM() { 
+    void PutBOM() {
         typedef void (*PutBOMFunc)(OutputByteStream&);
         static const PutBOMFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(PutBOM) };
         f[type_](*os_);

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/encodings.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/encodings.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/encodings.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_ENCODINGS_H_
@@ -100,7 +100,7 @@
 
     template<typename OutputStream>
     static void Encode(OutputStream& os, unsigned codepoint) {
-        if (codepoint <= 0x7F) 
+        if (codepoint <= 0x7F)
             os.Put(static_cast<Ch>(codepoint & 0xFF));
         else if (codepoint <= 0x7FF) {
             os.Put(static_cast<Ch>(0xC0 | ((codepoint >> 6) & 0xFF)));
@@ -122,7 +122,7 @@
 
     template<typename OutputStream>
     static void EncodeUnsafe(OutputStream& os, unsigned codepoint) {
-        if (codepoint <= 0x7F) 
+        if (codepoint <= 0x7F)
             PutUnsafe(os, static_cast<Ch>(codepoint & 0xFF));
         else if (codepoint <= 0x7FF) {
             PutUnsafe(os, static_cast<Ch>(0xC0 | ((codepoint >> 6) & 0xFF)));
@@ -276,7 +276,7 @@
     static void Encode(OutputStream& os, unsigned codepoint) {
         RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2);
         if (codepoint <= 0xFFFF) {
-            RAPIDJSON_ASSERT(codepoint < 0xD800 || codepoint > 0xDFFF); // Code point itself cannot be surrogate pair 
+            RAPIDJSON_ASSERT(codepoint < 0xD800 || codepoint > 0xDFFF); // Code point itself cannot be surrogate pair
             os.Put(static_cast<typename OutputStream::Ch>(codepoint));
         }
         else {
@@ -292,7 +292,7 @@
     static void EncodeUnsafe(OutputStream& os, unsigned codepoint) {
         RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2);
         if (codepoint <= 0xFFFF) {
-            RAPIDJSON_ASSERT(codepoint < 0xD800 || codepoint > 0xDFFF); // Code point itself cannot be surrogate pair 
+            RAPIDJSON_ASSERT(codepoint < 0xD800 || codepoint > 0xDFFF); // Code point itself cannot be surrogate pair
             PutUnsafe(os, static_cast<typename OutputStream::Ch>(codepoint));
         }
         else {
@@ -406,7 +406,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // UTF32
 
-//! UTF-32 encoding. 
+//! UTF-32 encoding.
 /*! http://en.wikipedia.org/wiki/UTF-32
     \tparam CharType Type for storing 32-bit UTF-32 data. Default is unsigned. C++11 may use char32_t instead.
     \note implements Encoding concept
@@ -498,7 +498,7 @@
     static CharType TakeBOM(InputByteStream& is) {
         RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
         CharType c = Take(is);
-        return static_cast<uint32_t>(c) == 0x0000FEFFu ? Take(is) : c; 
+        return static_cast<uint32_t>(c) == 0x0000FEFFu ? Take(is) : c;
     }
 
     template <typename InputByteStream>
@@ -694,13 +694,13 @@
         os.Put(is.Take());  // Just copy one code unit. This semantic is different from primary template class.
         return true;
     }
-    
+
     template<typename InputStream, typename OutputStream>
     static RAPIDJSON_FORCEINLINE bool TranscodeUnsafe(InputStream& is, OutputStream& os) {
         PutUnsafe(os, is.Take());  // Just copy one code unit. This semantic is different from primary template class.
         return true;
     }
-    
+
     template<typename InputStream, typename OutputStream>
     static RAPIDJSON_FORCEINLINE bool Validate(InputStream& is, OutputStream& os) {
         return Encoding::Validate(is, os);  // source/target encoding are the same

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/en.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/en.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/en.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_ERROR_EN_H_
@@ -39,13 +39,13 @@
 
         case kParseErrorDocumentEmpty:                  return RAPIDJSON_ERROR_STRING("The document is empty.");
         case kParseErrorDocumentRootNotSingular:        return RAPIDJSON_ERROR_STRING("The document root must not be followed by other values.");
-    
+
         case kParseErrorValueInvalid:                   return RAPIDJSON_ERROR_STRING("Invalid value.");
-    
+
         case kParseErrorObjectMissName:                 return RAPIDJSON_ERROR_STRING("Missing a name for object member.");
         case kParseErrorObjectMissColon:                return RAPIDJSON_ERROR_STRING("Missing a colon after a name of object member.");
         case kParseErrorObjectMissCommaOrCurlyBracket:  return RAPIDJSON_ERROR_STRING("Missing a comma or '}' after an object member.");
-    
+
         case kParseErrorArrayMissCommaOrSquareBracket:  return RAPIDJSON_ERROR_STRING("Missing a comma or ']' after an array element.");
 
         case kParseErrorStringUnicodeEscapeInvalidHex:  return RAPIDJSON_ERROR_STRING("Incorrect hex digit after \\u escape in string.");

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/error.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/error.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/error/error.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_ERROR_ERROR_H_

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/filereadstream.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/filereadstream.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/filereadstream.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_FILEREADSTREAM_H_
@@ -41,7 +41,7 @@
         \param buffer user-supplied buffer.
         \param bufferSize size of buffer in bytes. Must >=4 bytes.
     */
-    FileReadStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) { 
+    FileReadStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) {
         RAPIDJSON_ASSERT(fp_ != 0);
         RAPIDJSON_ASSERT(bufferSize >= 4);
         Read();
@@ -53,7 +53,7 @@
 
     // Not implemented
     void Put(Ch) { RAPIDJSON_ASSERT(false); }
-    void Flush() { RAPIDJSON_ASSERT(false); } 
+    void Flush() { RAPIDJSON_ASSERT(false); }
     Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
     size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/filewritestream.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/filewritestream.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/filewritestream.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_FILEWRITESTREAM_H_
@@ -33,11 +33,11 @@
 public:
     typedef char Ch;    //!< Character type. Only support char.
 
-    FileWriteStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferEnd_(buffer + bufferSize), current_(buffer_) { 
+    FileWriteStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferEnd_(buffer + bufferSize), current_(buffer_) {
         RAPIDJSON_ASSERT(fp_ != 0);
     }
 
-    void Put(char c) { 
+    void Put(char c) {
         if (current_ >= bufferEnd_)
             Flush();
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/fwd.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/fwd.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/fwd.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_FWD_H_
@@ -101,7 +101,7 @@
 
 // document.h
 
-template <typename Encoding, typename Allocator> 
+template <typename Encoding, typename Allocator>
 class GenericMember;
 
 template <bool Const, typename Encoding, typename Allocator>
@@ -110,7 +110,7 @@
 template<typename CharType>
 struct GenericStringRef;
 
-template <typename Encoding, typename Allocator> 
+template <typename Encoding, typename Allocator>
 class GenericValue;
 
 typedef GenericValue<UTF8<char>, MemoryPoolAllocator<CrtAllocator> > Value;

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/biginteger.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/biginteger.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/biginteger.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_BIGINTEGER_H_
@@ -56,7 +56,7 @@
         if (length > 0)
             AppendDecimal64(decimals + i, decimals + i + length);
     }
-    
+
     BigInteger& operator=(const BigInteger &rhs)
     {
         if (this != &rhs) {
@@ -65,9 +65,9 @@
         }
         return *this;
     }
-    
+
     BigInteger& operator=(uint64_t u) {
-        digits_[0] = u;            
+        digits_[0] = u;
         count_ = 1;
         return *this;
     }
@@ -100,7 +100,7 @@
             digits_[i] = MulAdd64(digits_[i], u, k, &hi);
             k = hi;
         }
-        
+
         if (k > 0)
             PushBack(k);
 
@@ -123,7 +123,7 @@
             digits_[i] = (p0 & 0xFFFFFFFF) | (p1 << 32);
             k = p1 >> 32;
         }
-        
+
         if (k > 0)
             PushBack(k);
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/dtoa.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/dtoa.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/dtoa.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 // This is a C++ header-only implementation of Grisu2 algorithm from the publication:

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/ieee754.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/ieee754.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/ieee754.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_IEEE754_

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/meta.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/meta.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/meta.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_INTERNAL_META_H_

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/pow10.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/pow10.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/pow10.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_POW10_
@@ -27,8 +27,8 @@
 */
 inline double Pow10(int n) {
     static const double e[] = { // 1e-0...1e308: 309 * 8 bytes = 2472 bytes
-        1e+0,  
-        1e+1,  1e+2,  1e+3,  1e+4,  1e+5,  1e+6,  1e+7,  1e+8,  1e+9,  1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20, 
+        1e+0,
+        1e+1,  1e+2,  1e+3,  1e+4,  1e+5,  1e+6,  1e+7,  1e+8,  1e+9,  1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20,
         1e+21, 1e+22, 1e+23, 1e+24, 1e+25, 1e+26, 1e+27, 1e+28, 1e+29, 1e+30, 1e+31, 1e+32, 1e+33, 1e+34, 1e+35, 1e+36, 1e+37, 1e+38, 1e+39, 1e+40,
         1e+41, 1e+42, 1e+43, 1e+44, 1e+45, 1e+46, 1e+47, 1e+48, 1e+49, 1e+50, 1e+51, 1e+52, 1e+53, 1e+54, 1e+55, 1e+56, 1e+57, 1e+58, 1e+59, 1e+60,
         1e+61, 1e+62, 1e+63, 1e+64, 1e+65, 1e+66, 1e+67, 1e+68, 1e+69, 1e+70, 1e+71, 1e+72, 1e+73, 1e+74, 1e+75, 1e+76, 1e+77, 1e+78, 1e+79, 1e+80,

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/regex.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/regex.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/regex.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_INTERNAL_REGEX_H_
@@ -102,9 +102,9 @@
     - \c \\t Tab (U+0009)
     - \c \\v Vertical tab (U+000B)
 
-    \note This is a Thompson NFA engine, implemented with reference to 
-        Cox, Russ. "Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby,...).", 
-        https://swtch.com/~rsc/regexp/regexp1.html 
+    \note This is a Thompson NFA engine, implemented with reference to
+        Cox, Russ. "Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby,...).",
+        https://swtch.com/~rsc/regexp/regexp1.html
 */
 template <typename Encoding, typename Allocator = CrtAllocator>
 class GenericRegex {
@@ -113,9 +113,9 @@
     typedef typename Encoding::Ch Ch;
     template <typename, typename> friend class GenericRegexSearch;
 
-    GenericRegex(const Ch* source, Allocator* allocator = 0) : 
-        ownAllocator_(allocator ? 0 : RAPIDJSON_NEW(Allocator)()), allocator_(allocator ? allocator : ownAllocator_), 
-        states_(allocator_, 256), ranges_(allocator_, 256), root_(kRegexInvalidState), stateCount_(), rangeCount_(), 
+    GenericRegex(const Ch* source, Allocator* allocator = 0) :
+        ownAllocator_(allocator ? 0 : RAPIDJSON_NEW(Allocator)()), allocator_(allocator ? allocator : ownAllocator_),
+        states_(allocator_, 256), ranges_(allocator_, 256), root_(kRegexInvalidState), stateCount_(), rangeCount_(),
         anchorBegin_(), anchorEnd_()
     {
         GenericStringStream<Encoding> ss(source);
@@ -147,7 +147,7 @@
     static const unsigned kRangeNegationFlag = 0x80000000;
 
     struct Range {
-        unsigned start; // 
+        unsigned start; //
         unsigned end;
         SizeType next;
     };
@@ -402,7 +402,7 @@
                 }
                 return false;
 
-            default: 
+            default:
                 // syntax error (e.g. unclosed kLeftParenthesis)
                 return false;
         }
@@ -550,7 +550,7 @@
         }
         return false;
     }
-    
+
     SizeType NewRange(unsigned codepoint) {
         Range* r = ranges_.template Push<Range>();
         r->start = r->end = codepoint;
@@ -608,7 +608,7 @@
     typedef typename RegexType::EncodingType Encoding;
     typedef typename Encoding::Ch Ch;
 
-    GenericRegexSearch(const RegexType& regex, Allocator* allocator = 0) : 
+    GenericRegexSearch(const RegexType& regex, Allocator* allocator = 0) :
         regex_(regex), allocator_(allocator), ownAllocator_(0),
         state0_(allocator, 0), state1_(allocator, 0), stateSet_()
     {
@@ -667,7 +667,7 @@
             for (const SizeType* s = current->template Bottom<SizeType>(); s != current->template End<SizeType>(); ++s) {
                 const State& sr = regex_.GetState(*s);
                 if (sr.codepoint == codepoint ||
-                    sr.codepoint == RegexType::kAnyCharacterClass || 
+                    sr.codepoint == RegexType::kAnyCharacterClass ||
                     (sr.codepoint == RegexType::kRangeCharacterClass && MatchRange(sr.rangeStart, codepoint)))
                 {
                     matched = AddState(*next, sr.out) || matched;

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/stack.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/stack.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/stack.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_INTERNAL_STACK_H_
@@ -98,7 +98,7 @@
 
     void Clear() { stackTop_ = stack_; }
 
-    void ShrinkToFit() { 
+    void ShrinkToFit() {
         if (Empty()) {
             // If the stack is empty, completely deallocate the memory.
             Allocator::Free(stack_); // NOLINT (+clang-analyzer-unix.Malloc)
@@ -142,7 +142,7 @@
     }
 
     template<typename T>
-    T* Top() { 
+    T* Top() {
         RAPIDJSON_ASSERT(GetSize() >= sizeof(T));
         return reinterpret_cast<T*>(stackTop_ - sizeof(T));
     }

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/strfunc.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/strfunc.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/strfunc.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_INTERNAL_STRFUNC_H_
@@ -24,7 +24,7 @@
 //! Custom strlen() which works on different character types.
 /*! \tparam Ch Character type (e.g. char, wchar_t, short)
     \param s Null-terminated input string.
-    \return Number of characters in the string. 
+    \return Number of characters in the string.
     \note This has the same semantics as strlen(), the return value is not number of Unicode codepoints.
 */
 template <typename Ch>

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/strtod.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/strtod.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/internal/strtod.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_STRTOD_
@@ -131,7 +131,7 @@
 template<typename Ch>
 inline bool StrtodDiyFp(const Ch* decimals, int dLen, int dExp, double* result) {
     uint64_t significand = 0;
-    int i = 0;   // 2^64 - 1 = 18446744073709551615, 1844674407370955161 = 0x1999999999999999    
+    int i = 0;   // 2^64 - 1 = 18446744073709551615, 1844674407370955161 = 0x1999999999999999
     for (; i < dLen; i++) {
         if (significand  >  RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) ||
             (significand == RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) && decimals[i] > Ch('5')))
@@ -138,7 +138,7 @@
             break;
         significand = significand * 10u + static_cast<unsigned>(decimals[i] - Ch('0'));
     }
-    
+
     if (i < dLen && decimals[i] >= Ch('5')) // Rounding
         significand++;
 
@@ -185,7 +185,7 @@
     if (precisionSize + kUlpShift >= 64) {
         int scaleExp = (precisionSize + kUlpShift) - 63;
         v.f >>= scaleExp;
-        v.e += scaleExp; 
+        v.e += scaleExp;
         error = (error >> scaleExp) + 1 + kUlp;
         precisionSize -= scaleExp;
     }

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/istreamwrapper.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/istreamwrapper.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/istreamwrapper.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_ISTREAMWRAPPER_H_
@@ -44,7 +44,7 @@
 
     \tparam StreamType Class derived from \c std::basic_istream.
 */
-   
+
 template <typename StreamType>
 class BasicIStreamWrapper {
 public:
@@ -54,7 +54,7 @@
     /*!
         \param stream stream opened for read.
     */
-    BasicIStreamWrapper(StreamType &stream) : stream_(stream), buffer_(peekBuffer_), bufferSize_(4), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) { 
+    BasicIStreamWrapper(StreamType &stream) : stream_(stream), buffer_(peekBuffer_), bufferSize_(4), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) {
         Read();
     }
 
@@ -64,7 +64,7 @@
         \param buffer user-supplied buffer.
         \param bufferSize size of buffer in bytes. Must >=4 bytes.
     */
-    BasicIStreamWrapper(StreamType &stream, char* buffer, size_t bufferSize) : stream_(stream), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) { 
+    BasicIStreamWrapper(StreamType &stream, char* buffer, size_t bufferSize) : stream_(stream), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) {
         RAPIDJSON_ASSERT(bufferSize >= 4);
         Read();
     }
@@ -75,7 +75,7 @@
 
     // Not implemented
     void Put(Ch) { RAPIDJSON_ASSERT(false); }
-    void Flush() { RAPIDJSON_ASSERT(false); } 
+    void Flush() { RAPIDJSON_ASSERT(false); }
     Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
     size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/memorybuffer.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/memorybuffer.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/memorybuffer.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_MEMORYBUFFER_H_
@@ -27,7 +27,7 @@
     It is similar to FileWriteBuffer but the destination is an in-memory buffer instead of a file.
 
     Differences between MemoryBuffer and StringBuffer:
-    1. StringBuffer has Encoding but MemoryBuffer is only a byte buffer. 
+    1. StringBuffer has Encoding but MemoryBuffer is only a byte buffer.
     2. StringBuffer::GetString() returns a null-terminated string. MemoryBuffer::GetBuffer() returns a buffer without terminator.
 
     \tparam Allocator type for allocating memory buffer.

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/memorystream.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/memorystream.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/memorystream.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_MEMORYSTREAM_H_

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/msinttypes/inttypes.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/msinttypes/inttypes.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/msinttypes/inttypes.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,22 +1,22 @@
 // ISO C9x  compliant inttypes.h for Microsoft Visual Studio
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 
-// 
+// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
+//
 //  Copyright (c) 2006-2013 Alexander Chemeris
-// 
+//
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are met:
-// 
+//
 //   1. Redistributions of source code must retain the above copyright notice,
 //      this list of conditions and the following disclaimer.
-// 
+//
 //   2. Redistributions in binary form must reproduce the above copyright
 //      notice, this list of conditions and the following disclaimer in the
 //      documentation and/or other materials provided with the distribution.
-// 
+//
 //   3. Neither the name of the product nor the names of its contributors may
 //      be used to endorse or promote products derived from this software
 //      without specific prior written permission.
-// 
+//
 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
@@ -23,15 +23,15 @@
 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// 
+//
 ///////////////////////////////////////////////////////////////////////////////
 
-// The above software in this distribution may have been modified by 
-// THL A29 Limited ("Tencent Modifications"). 
+// The above software in this distribution may have been modified by
+// THL A29 Limited ("Tencent Modifications").
 // All Tencent Modifications are Copyright (C) 2015 THL A29 Limited.
 
 #ifndef _MSC_VER // [

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/msinttypes/stdint.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/msinttypes/stdint.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/msinttypes/stdint.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,22 +1,22 @@
 // ISO C9x  compliant stdint.h for Microsoft Visual Studio
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 
-// 
+// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
+//
 //  Copyright (c) 2006-2013 Alexander Chemeris
-// 
+//
 // Redistribution and use in source and binary forms, with or without
 // modification, are permitted provided that the following conditions are met:
-// 
+//
 //   1. Redistributions of source code must retain the above copyright notice,
 //      this list of conditions and the following disclaimer.
-// 
+//
 //   2. Redistributions in binary form must reproduce the above copyright
 //      notice, this list of conditions and the following disclaimer in the
 //      documentation and/or other materials provided with the distribution.
-// 
+//
 //   3. Neither the name of the product nor the names of its contributors may
 //      be used to endorse or promote products derived from this software
 //      without specific prior written permission.
-// 
+//
 // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
 // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
@@ -23,15 +23,15 @@
 // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
+// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// 
+//
 ///////////////////////////////////////////////////////////////////////////////
 
-// The above software in this distribution may have been modified by 
-// THL A29 Limited ("Tencent Modifications"). 
+// The above software in this distribution may have been modified by
+// THL A29 Limited ("Tencent Modifications").
 // All Tencent Modifications are Copyright (C) 2015 THL A29 Limited.
 
 #ifndef _MSC_VER // [

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/ostreamwrapper.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/ostreamwrapper.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/ostreamwrapper.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_OSTREAMWRAPPER_H_
@@ -40,7 +40,7 @@
 
     \tparam StreamType Class derived from \c std::basic_ostream.
 */
-   
+
 template <typename StreamType>
 class BasicOStreamWrapper {
 public:

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/pointer.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/pointer.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/pointer.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_POINTER_H_
@@ -49,7 +49,7 @@
 
 //! Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator.
 /*!
-    This class implements RFC 6901 "JavaScript Object Notation (JSON) Pointer" 
+    This class implements RFC 6901 "JavaScript Object Notation (JSON) Pointer"
     (https://tools.ietf.org/html/rfc6901).
 
     A JSON pointer is for identifying a specific value in a JSON document
@@ -56,9 +56,9 @@
     (GenericDocument). It can simplify coding of DOM tree manipulation, because it
     can access multiple-level depth of DOM tree with single API call.
 
-    After it parses a string representation (e.g. "/foo/0" or URI fragment 
+    After it parses a string representation (e.g. "/foo/0" or URI fragment
     representation (e.g. "#/foo/0") into its internal representation (tokens),
-    it can be used to resolve a specific value in multiple documents, or sub-tree 
+    it can be used to resolve a specific value in multiple documents, or sub-tree
     of documents.
 
     Contrary to GenericValue, Pointer can be copy constructed and copy assigned.
@@ -69,10 +69,10 @@
     supplied tokens eliminates these.
 
     GenericPointer depends on GenericDocument and GenericValue.
-    
+
     \tparam ValueType The value type of the DOM tree. E.g. GenericValue<UTF8<> >
     \tparam Allocator The allocator type for allocating memory for internal representation.
-    
+
     \note GenericPointer uses same encoding of ValueType.
     However, Allocator of GenericPointer is independent of Allocator of Value.
 */
@@ -86,7 +86,7 @@
 
     //! A token is the basic units of internal representation.
     /*!
-        A JSON pointer string representation "/foo/123" is parsed to two tokens: 
+        A JSON pointer string representation "/foo/123" is parsed to two tokens:
         "foo" and 123. 123 will be represented in both numeric form and string form.
         They are resolved according to the actual value type (object or array).
 
@@ -94,7 +94,7 @@
         (greater than limits of SizeType), they are only treated as string form
         (i.e. the token's index will be equal to kPointerInvalidIndex).
 
-        This struct is public so that user can create a Pointer without parsing and 
+        This struct is public so that user can create a Pointer without parsing and
         allocation, using a special constructor.
     */
     struct Token {
@@ -373,7 +373,7 @@
 
         for (size_t i = 0; i < tokenCount_; i++) {
             if (tokens_[i].index != rhs.tokens_[i].index ||
-                tokens_[i].length != rhs.tokens_[i].length || 
+                tokens_[i].length != rhs.tokens_[i].length ||
                 (tokens_[i].length != 0 && std::memcmp(tokens_[i].name, rhs.tokens_[i].name, sizeof(Ch)* tokens_[i].length) != 0))
             {
                 return false;
@@ -451,9 +451,9 @@
         If the value is not exist, it creates all parent values and a JSON Null value.
         So it always succeed and return the newly created or existing value.
 
-        Remind that it may change types of parents according to tokens, so it 
-        potentially removes previously stored values. For example, if a document 
-        was an array, and "/foo" is used to create a value, then the document 
+        Remind that it may change types of parents according to tokens, so it
+        potentially removes previously stored values. For example, if a document
+        was an array, and "/foo" is used to create a value, then the document
         will be changed to an object, and all existing array elements are lost.
 
         \param root Root value of a DOM subtree to be resolved. It can be any value other than document root.
@@ -639,7 +639,7 @@
         \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.
         \return Pointer to the value if it can be resolved. Otherwise null.
     */
-    const ValueType* Get(const ValueType& root, size_t* unresolvedTokenIndex = 0) const { 
+    const ValueType* Get(const ValueType& root, size_t* unresolvedTokenIndex = 0) const {
         return Get(const_cast<ValueType&>(root), unresolvedTokenIndex);
     }
 
@@ -701,7 +701,7 @@
     ValueType& GetWithDefault(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const Ch* defaultValue) const {
         return GetWithDefault(document, defaultValue, document.GetAllocator());
     }
-    
+
 #if RAPIDJSON_HAS_STDSTRING
     //! Query a value in a document with default std::basic_string.
     template <typename stackAllocator>
@@ -938,7 +938,7 @@
 
         // Count number of '/' as tokenCount
         tokenCount_ = 0;
-        for (const Ch* s = source; s != source + length; s++) 
+        for (const Ch* s = source; s != source + length; s++)
             if (*s == '/')
                 tokenCount_++;
 
@@ -995,7 +995,7 @@
                 }
 
                 i++;
-                
+
                 // Escaping "~0" -> '~', "~1" -> '/'
                 if (c == '~') {
                     if (i < length) {
@@ -1084,7 +1084,7 @@
                     os.Put('~');
                     os.Put('1');
                 }
-                else if (uriFragment && NeedPercentEncode(c)) { 
+                else if (uriFragment && NeedPercentEncode(c)) {
                     // Transcode to UTF8 sequence
                     GenericStringStream<typename ValueType::EncodingType> source(&t->name[j]);
                     PercentEncodeStream<OutputStream> target(os);
@@ -1102,7 +1102,7 @@
     //! A helper stream for decoding a percent-encoded sequence into code unit.
     /*!
         This stream decodes %XY triplet into code unit (0-255).
-        If it encounters invalid characters, it sets output code unit as 0 and 
+        If it encounters invalid characters, it sets output code unit as 0 and
         mark invalid, and to be checked by IsValid().
     */
     class PercentDecodeStream {

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/prettywriter.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/prettywriter.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/prettywriter.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_PRETTYWRITER_H_
@@ -55,11 +55,11 @@
         \param allocator User supplied allocator. If it is null, it will create a private one.
         \param levelDepth Initial capacity of stack.
     */
-    explicit PrettyWriter(OutputStream& os, StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) : 
+    explicit PrettyWriter(OutputStream& os, StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) :
         Base(os, allocator, levelDepth), indentChar_(' '), indentCharCount_(4), formatOptions_(kFormatDefault) {}
 
 
-    explicit PrettyWriter(StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) : 
+    explicit PrettyWriter(StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) :
         Base(allocator, levelDepth), indentChar_(' '), indentCharCount_(4), formatOptions_(kFormatDefault) {}
 
 #if RAPIDJSON_HAS_CXX11_RVALUE_REFS
@@ -133,13 +133,13 @@
         return Key(str.data(), SizeType(str.size()));
     }
 #endif
-	
+
     bool EndObject(SizeType memberCount = 0) {
         (void)memberCount;
         RAPIDJSON_ASSERT(Base::level_stack_.GetSize() >= sizeof(typename Base::Level)); // not inside an Object
         RAPIDJSON_ASSERT(!Base::level_stack_.template Top<typename Base::Level>()->inArray); // currently inside an Array, not Object
         RAPIDJSON_ASSERT(0 == Base::level_stack_.template Top<typename Base::Level>()->valueCount % 2); // Object has a Key without a Value
-       
+
         bool empty = Base::level_stack_.template Pop<typename Base::Level>(1)->valueCount == 0;
 
         if (!empty) {

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/rapidjson.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/rapidjson.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/rapidjson.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_RAPIDJSON_H_
@@ -17,7 +17,7 @@
 
 /*!\file rapidjson.h
     \brief common definitions and configuration
-    
+
     \see RAPIDJSON_CONFIG
  */
 
@@ -195,7 +195,7 @@
 */
 #ifndef RAPIDJSON_NO_INT64DEFINE
 //!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
-#if defined(_MSC_VER) && (_MSC_VER < 1800)	// Visual Studio 2013
+#if defined(_MSC_VER) && (_MSC_VER < 1800)      // Visual Studio 2013
 #include "msinttypes/stdint.h"
 #include "msinttypes/inttypes.h"
 #else
@@ -277,7 +277,7 @@
 #  elif defined(RAPIDJSON_DOXYGEN_RUNNING)
 #    define RAPIDJSON_ENDIAN
 #  else
-#    error Unknown machine endianness detected. User needs to define RAPIDJSON_ENDIAN.   
+#    error Unknown machine endianness detected. User needs to define RAPIDJSON_ENDIAN.
 #  endif
 #endif // RAPIDJSON_ENDIAN
 
@@ -462,7 +462,7 @@
 #if defined(__GNUC__) || defined(__clang__)
 #define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
 #else
-#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE 
+#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE
 #endif
 #ifndef __clang__
 //!@endcond
@@ -513,7 +513,7 @@
 
 //!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
 
-#define RAPIDJSON_MULTILINEMACRO_BEGIN do {  
+#define RAPIDJSON_MULTILINEMACRO_BEGIN do {
 #define RAPIDJSON_MULTILINEMACRO_END \
 } while((void)0, 0)
 
@@ -731,7 +731,7 @@
     kFalseType = 1,     //!< false
     kTrueType = 2,      //!< true
     kObjectType = 3,    //!< object
-    kArrayType = 4,     //!< array 
+    kArrayType = 4,     //!< array
     kStringType = 5,    //!< string
     kNumberType = 6     //!< number
 };

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/schema.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/schema.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/schema.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available->
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip-> All rights reserved->
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource->org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied-> See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied-> See the License for the
 // specific language governing permissions and limitations under the License->
 
 #ifndef RAPIDJSON_SCHEMA_H_
@@ -256,10 +256,10 @@
     bool Uint(unsigned u) { Number n; n.u.u = u; n.d = static_cast<double>(u); return WriteNumber(n); }
     bool Int64(int64_t i) { Number n; n.u.i = i; n.d = static_cast<double>(i); return WriteNumber(n); }
     bool Uint64(uint64_t u) { Number n; n.u.u = u; n.d = static_cast<double>(u); return WriteNumber(n); }
-    bool Double(double d) { 
-        Number n; 
+    bool Double(double d) {
+        Number n;
         if (d < 0) n.u.i = static_cast<int64_t>(d);
-        else       n.u.u = static_cast<uint64_t>(d); 
+        else       n.u.u = static_cast<uint64_t>(d);
         n.d = d;
         return WriteNumber(n);
     }
@@ -276,7 +276,7 @@
 
     bool StartObject() { return true; }
     bool Key(const Ch* str, SizeType len, bool copy) { return String(str, len, copy); }
-    bool EndObject(SizeType memberCount) { 
+    bool EndObject(SizeType memberCount) {
         uint64_t h = Hash(0, kObjectType);
         uint64_t* kv = stack_.template Pop<uint64_t>(memberCount * 2);
         for (SizeType i = 0; i < memberCount; i++)
@@ -284,9 +284,9 @@
         *stack_.template Push<uint64_t>() = h;
         return true;
     }
-    
+
     bool StartArray() { return true; }
-    bool EndArray(SizeType elementCount) { 
+    bool EndArray(SizeType elementCount) {
         uint64_t h = Hash(0, kArrayType);
         uint64_t* e = stack_.template Pop<uint64_t>(elementCount);
         for (SizeType i = 0; i < elementCount; i++)
@@ -313,9 +313,9 @@
     };
 
     bool WriteType(Type type) { return WriteBuffer(type, 0, 0); }
-    
+
     bool WriteNumber(const Number& n) { return WriteBuffer(kNumberType, &n, sizeof(n)); }
-    
+
     bool WriteBuffer(Type type, const void* data, size_t len) {
         // FNV-1a from http://isthe.com/chongo/tech/comp/fnv/
         uint64_t h = Hash(RAPIDJSON_UINT64_C2(0x84222325, 0xcbf29ce4), type);
@@ -1987,7 +1987,7 @@
     typename OutputHandler = BaseReaderHandler<typename SchemaDocumentType::SchemaType::EncodingType>,
     typename StateAllocator = CrtAllocator>
 class GenericSchemaValidator :
-    public internal::ISchemaStateFactory<typename SchemaDocumentType::SchemaType>, 
+    public internal::ISchemaStateFactory<typename SchemaDocumentType::SchemaType>,
     public internal::ISchemaValidator,
     public internal::IValidationErrorHandler<typename SchemaDocumentType::SchemaType> {
 public:
@@ -2008,7 +2008,7 @@
     */
     GenericSchemaValidator(
         const SchemaDocumentType& schemaDocument,
-        StateAllocator* allocator = 0, 
+        StateAllocator* allocator = 0,
         size_t schemaStackCapacity = kDefaultSchemaStackCapacity,
         size_t documentStackCapacity = kDefaultDocumentStackCapacity)
         :
@@ -2040,7 +2040,7 @@
     GenericSchemaValidator(
         const SchemaDocumentType& schemaDocument,
         OutputHandler& outputHandler,
-        StateAllocator* allocator = 0, 
+        StateAllocator* allocator = 0,
         size_t schemaStackCapacity = kDefaultSchemaStackCapacity,
         size_t documentStackCapacity = kDefaultDocumentStackCapacity)
         :
@@ -2390,7 +2390,7 @@
         RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartObject, ());
         return valid_ = !outputHandler_ || outputHandler_->StartObject();
     }
-    
+
     bool Key(const Ch* str, SizeType len, bool copy) {
         if (!valid_) return false;
         AppendToken(str, len);
@@ -2398,7 +2398,7 @@
         RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(Key, (str, len, copy));
         return valid_ = !outputHandler_ || outputHandler_->Key(str, len, copy);
     }
-    
+
     bool EndObject(SizeType memberCount) {
         if (!valid_) return false;
         RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndObject, (memberCount));
@@ -2411,7 +2411,7 @@
         RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartArray, ());
         return valid_ = !outputHandler_ || outputHandler_->StartArray();
     }
-    
+
     bool EndArray(SizeType elementCount) {
         if (!valid_) return false;
         RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndArray, (elementCount));
@@ -2468,7 +2468,7 @@
     typedef GenericValue<UTF8<>, StateAllocator> HashCodeArray;
     typedef internal::Hasher<EncodingType, StateAllocator> HasherType;
 
-    GenericSchemaValidator( 
+    GenericSchemaValidator(
         const SchemaDocumentType& schemaDocument,
         const SchemaType& root,
         const char* basePath, size_t basePathSize,
@@ -2554,7 +2554,7 @@
 #endif
         void* hasher = CurrentContext().hasher;
         uint64_t h = hasher && CurrentContext().arrayUniqueness ? static_cast<HasherType*>(hasher)->GetHashCode() : 0;
-        
+
         PopSchema();
 
         if (!schemaStack_.Empty()) {
@@ -2603,7 +2603,7 @@
     }
 
     RAPIDJSON_FORCEINLINE void PushSchema(const SchemaType& schema) { new (schemaStack_.template Push<Context>()) Context(*this, *this, &schema); }
-    
+
     RAPIDJSON_FORCEINLINE void PopSchema() {
         Context* c = schemaStack_.template Pop<Context>(1);
         if (HashCodeArray* a = static_cast<HashCodeArray*>(c->arrayElementHashCodes)) {

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/stringbuffer.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/stringbuffer.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/stringbuffer.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_STRINGBUFFER_H_

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/writer.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/writer.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/include/rapidjson/writer.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef RAPIDJSON_WRITER_H_
@@ -52,7 +52,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // WriteFlag
 
-/*! \def RAPIDJSON_WRITE_DEFAULT_FLAGS 
+/*! \def RAPIDJSON_WRITE_DEFAULT_FLAGS
     \ingroup RAPIDJSON_CONFIG
     \brief User-defined kWriteDefaultFlags definition.
 
@@ -76,7 +76,7 @@
 
     User may programmatically calls the functions of a writer to generate JSON text.
 
-    On the other side, a writer can also be passed to objects that generates events, 
+    On the other side, a writer can also be passed to objects that generates events,
 
     for example Reader::Parse() and Document::Accept().
 
@@ -99,7 +99,7 @@
         \param levelDepth Initial capacity of stack.
     */
     explicit
-    Writer(OutputStream& os, StackAllocator* stackAllocator = 0, size_t levelDepth = kDefaultLevelDepth) : 
+    Writer(OutputStream& os, StackAllocator* stackAllocator = 0, size_t levelDepth = kDefaultLevelDepth) :
         os_(&os), level_stack_(stackAllocator, levelDepth * sizeof(Level)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(false) {}
 
     explicit
@@ -153,7 +153,7 @@
     /*!
         This setting truncates the output with specified number of decimal places.
 
-        For example, 
+        For example,
 
         \code
         writer.SetMaxDecimalPlaces(3);
@@ -258,7 +258,7 @@
     //! Simpler but slower overload.
     bool String(const Ch* const& str) { return String(str, internal::StrLen(str)); }
     bool Key(const Ch* const& str) { return Key(str, internal::StrLen(str)); }
-    
+
     //@}
 
     //! Write a raw JSON value.
@@ -425,7 +425,7 @@
                     PutUnsafe(*os_, hexDigits[(trail >> 12) & 15]);
                     PutUnsafe(*os_, hexDigits[(trail >>  8) & 15]);
                     PutUnsafe(*os_, hexDigits[(trail >>  4) & 15]);
-                    PutUnsafe(*os_, hexDigits[(trail      ) & 15]);                    
+                    PutUnsafe(*os_, hexDigits[(trail      ) & 15]);
                 }
             }
             else if ((sizeof(Ch) == 1 || static_cast<unsigned>(c) < 256) && RAPIDJSON_UNLIKELY(escape[static_cast<unsigned char>(c)]))  {
@@ -439,7 +439,7 @@
                     PutUnsafe(*os_, hexDigits[static_cast<unsigned char>(c) & 0xF]);
                 }
             }
-            else if (RAPIDJSON_UNLIKELY(!(writeFlags & kWriteValidateEncodingFlag ? 
+            else if (RAPIDJSON_UNLIKELY(!(writeFlags & kWriteValidateEncodingFlag ?
                 Transcoder<SourceEncoding, TargetEncoding>::Validate(is, *os_) :
                 Transcoder<SourceEncoding, TargetEncoding>::TranscodeUnsafe(is, *os_))))
                 return false;
@@ -462,7 +462,7 @@
         GenericStringStream<SourceEncoding> is(json);
         while (RAPIDJSON_LIKELY(is.Tell() < length)) {
             RAPIDJSON_ASSERT(is.Peek() != '\0');
-            if (RAPIDJSON_UNLIKELY(!(writeFlags & kWriteValidateEncodingFlag ? 
+            if (RAPIDJSON_UNLIKELY(!(writeFlags & kWriteValidateEncodingFlag ?
                 Transcoder<SourceEncoding, TargetEncoding>::Validate(is, *os_) :
                 Transcoder<SourceEncoding, TargetEncoding>::TranscodeUnsafe(is, *os_))))
                 return false;
@@ -475,7 +475,7 @@
         if (RAPIDJSON_LIKELY(level_stack_.GetSize() != 0)) { // this value is not at root
             Level* level = level_stack_.template Top<Level>();
             if (level->valueCount > 0) {
-                if (level->inArray) 
+                if (level->inArray)
                     os_->Put(','); // add comma if it is not the first element in array
                 else  // in object
                     os_->Put((level->valueCount % 2 == 0) ? ',' : ':');
@@ -563,7 +563,7 @@
         PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'i'); PutUnsafe(*os_, 't'); PutUnsafe(*os_, 'y');
         return true;
     }
-    
+
     char *buffer = os_->Push(25);
     char* end = internal::dtoa(d, buffer, maxDecimalPlaces_);
     os_->Pop(static_cast<size_t>(25 - (end - buffer)));

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/misctest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/misctest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/misctest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "perftest.h"
@@ -50,7 +50,7 @@
     12, 0,12,12,12,12,12, 0,12, 0,12,12, 12,24,12,12,12,12,12,24,12,24,12,12,
     12,12,12,12,12,12,12,24,12,12,12,12, 12,24,12,12,12,12,12,12,12,24,12,12,
     12,12,12,12,12,12,12,36,12,36,12,12, 12,36,12,12,12,12,12,36,12,36,12,12,
-    12,36,12,12,12,12,12,12,12,12,12,12, 
+    12,36,12,12,12,12,12,12,12,12,12,12,
 };
 
 static unsigned inline decode(unsigned* state, unsigned* codep, unsigned byte) {
@@ -890,7 +890,7 @@
     OUTPUT_LENGTH(length);
 };
 
-// Full specialization for InsituStringStream to prevent memory copying 
+// Full specialization for InsituStringStream to prevent memory copying
 // (normally we will not use InsituStringStream for writing, just for testing)
 
 namespace rapidjson {

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/perftest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/perftest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/perftest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "perftest.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/perftest.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/perftest.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/perftest.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef PERFTEST_H_

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/platformtest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/platformtest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/platformtest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "perftest.h"
@@ -91,7 +91,7 @@
     for (int i = 0; i < kTrialCount; i++) {
         size_t l = strlen(whitespace_);
         EXPECT_GT(l, whitespace_length_);
-    }       
+    }
 }
 
 TEST_F(Platform, Whitespace_strspn) {
@@ -98,7 +98,7 @@
     for (int i = 0; i < kTrialCount; i++) {
         size_t l = strspn(whitespace_, " \n\r\t");
         EXPECT_EQ(whitespace_length_, l);
-    }       
+    }
 }
 
 TEST_F(Platform, fread) {

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/rapidjsontest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/rapidjsontest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/perftest/rapidjsontest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "perftest.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/allocatorstest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/allocatorstest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/allocatorstest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/bigintegertest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/bigintegertest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/bigintegertest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/clzlltest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/clzlltest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/clzlltest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/documenttest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/documenttest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/documenttest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -176,7 +176,7 @@
 
     typedef GenericDocument<UTF16<> > DocumentType;
     DocumentType doc;
-    
+
     // Parse<unsigned, SourceEncoding>(const SourceEncoding::Ch*)
     // doc.Parse<kParseDefaultFlags, UTF8<> >(json);
     // EXPECT_FALSE(doc.HasParseError());

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/dtoatest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/dtoatest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/dtoatest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodedstreamtest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodedstreamtest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodedstreamtest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -39,7 +39,7 @@
 private:
     EncodedStreamTest(const EncodedStreamTest&);
     EncodedStreamTest& operator=(const EncodedStreamTest&);
-    
+
 protected:
     static FILE* Open(const char* filename) {
         const char *paths[] = {

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodingstest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodingstest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/encodingstest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -259,7 +259,7 @@
     12, 0,12,12,12,12,12, 0,12, 0,12,12, 12,24,12,12,12,12,12,24,12,24,12,12,
     12,12,12,12,12,12,12,24,12,12,12,12, 12,24,12,12,12,12,12,12,12,24,12,12,
     12,12,12,12,12,12,12,36,12,36,12,12, 12,36,12,12,12,12,12,36,12,36,12,12,
-    12,36,12,12,12,12,12,12,12,12,12,12, 
+    12,36,12,12,12,12,12,12,12,12,12,12,
 };
 
 static unsigned inline decode(unsigned* state, unsigned* codep, unsigned byte) {
@@ -377,7 +377,7 @@
                 unsigned decodedCodepoint;
                 bool result = UTF16<>::Decode(is, &decodedCodepoint);
                 EXPECT_TRUE(result);
-                EXPECT_EQ(codepoint, decodedCodepoint);         
+                EXPECT_EQ(codepoint, decodedCodepoint);
                 if (!result || codepoint != decodedCodepoint)
                     std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl;
             }
@@ -408,7 +408,7 @@
                 unsigned decodedCodepoint;
                 bool result = UTF32<>::Decode(is, &decodedCodepoint);
                 EXPECT_TRUE(result);
-                EXPECT_EQ(codepoint, decodedCodepoint);         
+                EXPECT_EQ(codepoint, decodedCodepoint);
                 if (!result || codepoint != decodedCodepoint)
                     std::cout << std::hex << codepoint << " " << decodedCodepoint << std::endl;
             }

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/filestreamtest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/filestreamtest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/filestreamtest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -77,7 +77,7 @@
 private:
     FileStreamTest(const FileStreamTest&);
     FileStreamTest& operator=(const FileStreamTest&);
-    
+
 protected:
     const char* filename_;
     char *json_;

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/fwdtest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/fwdtest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/fwdtest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -103,7 +103,7 @@
 typedef Transcoder<UTF8<>, UTF8<> > TranscoderUtf8ToUtf8;
 typedef BaseReaderHandler<UTF8<>, void> BaseReaderHandlerUtf8Void;
 
-Foo::Foo() : 
+Foo::Foo() :
     // encodings.h
     utf8(RAPIDJSON_NEW(UTF8<>)),
     utf16(RAPIDJSON_NEW(UTF16<>)),

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/istreamwrappertest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/istreamwrappertest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/istreamwrappertest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/jsoncheckertest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/jsoncheckertest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/jsoncheckertest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -104,7 +104,7 @@
                 break;
         }
         EXPECT_TRUE(reader.HasParseError()) << filename;
-        
+
         free(json);
     }
 
@@ -126,7 +126,7 @@
         // Test iterative parsing.
         document.Parse<kParseIterativeFlag>(json);
         EXPECT_FALSE(document.HasParseError()) << filename;
-        
+
         // Test iterative pull-parsing.
         Reader reader;
         StringStream ss(json);

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/namespacetest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/namespacetest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/namespacetest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,14 +7,14 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
 
-// test another instantiation of RapidJSON in a different namespace 
+// test another instantiation of RapidJSON in a different namespace
 
 #define RAPIDJSON_NAMESPACE my::rapid::json
 #define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapid { namespace json {

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/ostreamwrappertest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/ostreamwrappertest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/ostreamwrappertest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -77,7 +77,7 @@
     }
 
     fp = fopen(filename, "r");
-	ASSERT_TRUE( fp != NULL );
+        ASSERT_TRUE( fp != NULL );
     for (const char* p = s; *p; p++)
         EXPECT_EQ(*p, static_cast<char>(fgetc(fp)));
     fclose(fp);

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/platformtest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/platformtest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/platformtest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2021 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,15 +7,15 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
 
 // see https://github.com/Tencent/rapidjson/issues/1448
-// including windows.h on purpose to provoke a compile time problem as GetObject is a 
+// including windows.h on purpose to provoke a compile time problem as GetObject is a
 // macro that gets defined when windows.h is included
 #ifdef _WIN32
 #include <windows.h>

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/pointertest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/pointertest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/pointertest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -475,7 +475,7 @@
         EXPECT_EQ(1u, q.GetTokens()[1].length);
         EXPECT_STREQ("0", q.GetTokens()[1].name);
         EXPECT_EQ(0u, q.GetTokens()[1].index);
-        
+
         // Copied pointer needs to have its own allocator
         EXPECT_NE(&p.GetAllocator(), &q.GetAllocator());
     }
@@ -837,7 +837,7 @@
     Document d;
     d.Parse(kJson);
     Document::AllocatorType& a = d.GetAllocator();
-    
+
     // Value version
     Pointer("/foo/0").Set(d, Value(123).Move(), a);
     EXPECT_EQ(123, d["foo"][0].GetInt());
@@ -896,7 +896,7 @@
 TEST(Pointer, Set_NoAllocator) {
     Document d;
     d.Parse(kJson);
-    
+
     // Value version
     Pointer("/foo/0").Set(d, Value(123).Move());
     EXPECT_EQ(123, d["foo"][0].GetInt());
@@ -1727,4 +1727,4 @@
     EXPECT_TRUE(PointerType("/foo/1234") == q);
     q = q.Append("");
     EXPECT_TRUE(PointerType("/foo/1234/") == q);
-}
\ No newline at end of file
+}

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/prettywritertest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/prettywritertest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/prettywritertest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -150,15 +150,15 @@
 // For covering PutN() generic version
 TEST(PrettyWriter, OStreamWrapper) {
     StringStream s(kJson);
-    
+
     std::stringstream ss;
     OStreamWrapper os(ss);
-    
+
     PrettyWriter<OStreamWrapper> writer(os);
 
     Reader reader;
     reader.Parse(s, writer);
-    
+
     std::string actual = ss.str();
     EXPECT_STREQ(kPrettyJson, actual.c_str());
 }
@@ -217,7 +217,7 @@
         EXPECT_THROW(writer.EndArray(), AssertException);
         EXPECT_FALSE(writer.IsComplete());
     }
-    
+
     // [}
     {
         StringBuffer buffer;
@@ -226,7 +226,7 @@
         EXPECT_THROW(writer.EndObject(), AssertException);
         EXPECT_FALSE(writer.IsComplete());
     }
-    
+
     // { 1:
     {
         StringBuffer buffer;
@@ -235,7 +235,7 @@
         EXPECT_THROW(writer.Int(1), AssertException);
         EXPECT_FALSE(writer.IsComplete());
     }
-    
+
     // { 'a' }
     {
         StringBuffer buffer;
@@ -245,7 +245,7 @@
         EXPECT_THROW(writer.EndObject(), AssertException);
         EXPECT_FALSE(writer.IsComplete());
     }
-    
+
     // { 'a':'b','c' }
     {
         StringBuffer buffer;
@@ -304,13 +304,13 @@
 
 TEST(PrettyWriter, Issue_889) {
     char buf[100] = "Hello";
-    
+
     StringBuffer buffer;
     PrettyWriter<StringBuffer> writer(buffer);
     writer.StartArray();
     writer.String(buf);
     writer.EndArray();
-    
+
     EXPECT_STREQ("[\n    \"Hello\"\n]", buffer.GetString());
     EXPECT_TRUE(writer.IsComplete()); \
 }

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/regextest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/regextest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/regextest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -404,7 +404,7 @@
 #define EURO "\xE2\x82\xAC" // "\xE2\x82\xAC" is UTF-8 rsquence of Euro sign U+20AC
 
 TEST(Regex, Unicode) {
-    Regex re("a" EURO "+b"); 
+    Regex re("a" EURO "+b");
     ASSERT_TRUE(re.IsValid());
     RegexSearch rs(re);
     EXPECT_TRUE(rs.Match("a" EURO "b"));

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/schematest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/schematest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/schematest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #define RAPIDJSON_SCHEMA_VERBOSE 0
@@ -192,7 +192,7 @@
     Document sd;
     sd.Parse("{}");
     SchemaDocument s(sd);
-    
+
     VALIDATE(s, "42", true);
     VALIDATE(s, "\"I'm a string\"", true);
     VALIDATE(s, "{ \"an\": [ \"arbitrarily\", \"nested\" ], \"data\": \"structure\" }", true);
@@ -1030,7 +1030,7 @@
     SchemaDocument s(sd);
 
     VALIDATE(s, "{\"key\":\"value\",\"another_key\":\"another_value\"}", true);
-    VALIDATE(s, "{\"Sun\":1.9891e30,\"Jupiter\":1.8986e27,\"Saturn\":5.6846e26,\"Neptune\":10.243e25,\"Uranus\":8.6810e25,\"Earth\":5.9736e24,\"Venus\":4.8685e24,\"Mars\":6.4185e23,\"Mercury\":3.3022e23,\"Moon\":7.349e22,\"Pluto\":1.25e22}", true);    
+    VALIDATE(s, "{\"Sun\":1.9891e30,\"Jupiter\":1.8986e27,\"Saturn\":5.6846e26,\"Neptune\":10.243e25,\"Uranus\":8.6810e25,\"Earth\":5.9736e24,\"Venus\":4.8685e24,\"Mars\":6.4185e23,\"Mercury\":3.3022e23,\"Moon\":7.349e22,\"Pluto\":1.25e22}", true);
     INVALIDATE(s, "[\"An\", \"array\", \"not\", \"an\", \"object\"]", "", "type", "",
         "{ \"type\": {"
         "    \"errorCode\": 20,"
@@ -2089,9 +2089,9 @@
 template <typename SchemaDocumentType = SchemaDocument>
 class RemoteSchemaDocumentProvider : public IGenericRemoteSchemaDocumentProvider<SchemaDocumentType> {
 public:
-    RemoteSchemaDocumentProvider() : 
-        documentAllocator_(documentBuffer_, sizeof(documentBuffer_)), 
-        schemaAllocator_(schemaBuffer_, sizeof(schemaBuffer_)) 
+    RemoteSchemaDocumentProvider() :
+        documentAllocator_(documentBuffer_, sizeof(documentBuffer_)),
+        schemaAllocator_(schemaBuffer_, sizeof(schemaBuffer_))
     {
         const char* filenames[kCount] = {
             "jsonschema/remotes/integer.json",
@@ -2402,11 +2402,11 @@
     GenericSchemaValidator<SchemaDocument, Writer<StringBuffer> > validator(s, writer);
     EXPECT_TRUE(validator.StartObject());
     EXPECT_TRUE(validator.Key("cyanArray2", 10, false));
-    EXPECT_TRUE(validator.StartArray());    
-    EXPECT_TRUE(validator.EndArray(0));    
+    EXPECT_TRUE(validator.StartArray());
+    EXPECT_TRUE(validator.EndArray(0));
     EXPECT_TRUE(validator.Key("blackArray", 10, false));
-    EXPECT_TRUE(validator.StartArray());    
-    EXPECT_TRUE(validator.EndArray(0));    
+    EXPECT_TRUE(validator.StartArray());
+    EXPECT_TRUE(validator.EndArray(0));
     EXPECT_TRUE(validator.EndObject(0));
     EXPECT_TRUE(validator.IsValid());
     EXPECT_STREQ("{\"cyanArray2\":[],\"blackArray\":[]}", sb.GetString());

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/simdtest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/simdtest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/simdtest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 // Since Travis CI installs old Valgrind 3.7.0, which fails with some SSE4.2

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/strfunctest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/strfunctest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/strfunctest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/stringbuffertest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/stringbuffertest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/stringbuffertest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/strtodtest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/strtodtest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/strtodtest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -117,7 +117,7 @@
     EXPECT_TRUE(BIGINTEGER_LITERAL("17763568394002504646778106689453125") == hS);
 
     EXPECT_EQ(1, dS.Compare(bS));
-    
+
     BigInteger delta(0);
     EXPECT_FALSE(dS.Difference(bS, &delta));
     EXPECT_TRUE(BIGINTEGER_LITERAL("16216586195252933526457586554279088") == delta);

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/unittest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/unittest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/unittest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/unittest.h
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/unittest.h	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/unittest.h	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #ifndef UNITTEST_H_
@@ -85,7 +85,7 @@
     if (filename[0] == '\\')
         for (int i = 0; filename[i] != '\0'; i++)
             filename[i] = filename[i + 1];
-        
+
     return fopen(filename, "wb");
 #else
     strcpy(filename, "/tmp/fileXXXXXX");

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/valuetest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/valuetest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/valuetest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -161,7 +161,7 @@
 #endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
 }
 
-template <typename A, typename B> 
+template <typename A, typename B>
 void TestEqual(const A& a, const B& b) {
     EXPECT_TRUE (a == b);
     EXPECT_FALSE(a != b);
@@ -169,7 +169,7 @@
     EXPECT_FALSE(b != a);
 }
 
-template <typename A, typename B> 
+template <typename A, typename B>
 void TestUnequal(const A& a, const B& b) {
     EXPECT_FALSE(a == b);
     EXPECT_TRUE (a != b);
@@ -1060,7 +1060,7 @@
             x.Clear();
             for (unsigned i = 0; i < n; i++)
                 x.PushBack(Value(kArrayType).PushBack(i, allocator).Move(), allocator);
-            
+
             itr = x.Erase(x.Begin() + first, x.Begin() + last);
             if (last == n)
                 EXPECT_EQ(x.End(), itr);
@@ -1345,7 +1345,7 @@
 #endif
 
     // member iterator
-    Value::MemberIterator itr = x.MemberBegin(); 
+    Value::MemberIterator itr = x.MemberBegin();
     EXPECT_TRUE(itr != x.MemberEnd());
     EXPECT_STREQ("A", itr->name.GetString());
     EXPECT_STREQ("Apple", itr->value.GetString());
@@ -1361,7 +1361,7 @@
     EXPECT_FALSE(itr != x.MemberEnd());
 
     // const member iterator
-    Value::ConstMemberIterator citr = y.MemberBegin(); 
+    Value::ConstMemberIterator citr = y.MemberBegin();
     EXPECT_TRUE(citr != y.MemberEnd());
     EXPECT_STREQ("A", citr->name.GetString());
     EXPECT_STREQ("Apple", citr->value.GetString());
@@ -1556,7 +1556,7 @@
         EXPECT_STREQ("apple", y["a"].GetString());
         EXPECT_TRUE(x.IsObject());  // Invariant
     }
-    
+
     {
         Value x(kObjectType);
         x.AddMember("a", "apple", allocator);
@@ -1674,7 +1674,7 @@
     for (SizeType i = 0; i < n; i++) {
         char name1[10];
         sprintf(name1, "%d", i);
-        
+
         for (SizeType j = 0; j < n; j++) {
             char name2[10];
             sprintf(name2, "%d", j);
@@ -1689,8 +1689,8 @@
 TEST(Value, RemoveLastElement) {
     rapidjson::Document doc;
     rapidjson::Document::AllocatorType& allocator = doc.GetAllocator();
-    rapidjson::Value objVal(rapidjson::kObjectType);        
-    objVal.AddMember("var1", 123, allocator);       
+    rapidjson::Value objVal(rapidjson::kObjectType);
+    objVal.AddMember("var1", 123, allocator);
     objVal.AddMember("var2", "444", allocator);
     objVal.AddMember("var3", 555, allocator);
     EXPECT_TRUE(objVal.HasMember("var3"));
@@ -1712,22 +1712,22 @@
 
 static void TestShortStringOptimization(const char* str) {
     const rapidjson::SizeType len = static_cast<rapidjson::SizeType>(strlen(str));
-	
+
     rapidjson::Document doc;
     rapidjson::Value val;
     val.SetString(str, len, doc.GetAllocator());
-	
-	EXPECT_EQ(val.GetStringLength(), len);
-	EXPECT_STREQ(val.GetString(), str);
+
+        EXPECT_EQ(val.GetStringLength(), len);
+        EXPECT_STREQ(val.GetString(), str);
 }
 
 TEST(Value, AllocateShortString) {
-	TestShortStringOptimization("");                 // edge case: empty string
-	TestShortStringOptimization("12345678");         // regular case for short strings: 8 chars
-	TestShortStringOptimization("12345678901");      // edge case: 11 chars in 32-bit mode (=> short string)
-	TestShortStringOptimization("123456789012");     // edge case: 12 chars in 32-bit mode (=> regular string)
-	TestShortStringOptimization("123456789012345");  // edge case: 15 chars in 64-bit mode (=> short string)
-	TestShortStringOptimization("1234567890123456"); // edge case: 16 chars in 64-bit mode (=> regular string)
+        TestShortStringOptimization("");                 // edge case: empty string
+        TestShortStringOptimization("12345678");         // regular case for short strings: 8 chars
+        TestShortStringOptimization("12345678901");      // edge case: 11 chars in 32-bit mode (=> short string)
+        TestShortStringOptimization("123456789012");     // edge case: 12 chars in 32-bit mode (=> regular string)
+        TestShortStringOptimization("123456789012345");  // edge case: 15 chars in 64-bit mode (=> short string)
+        TestShortStringOptimization("1234567890123456"); // edge case: 16 chars in 64-bit mode (=> regular string)
 }
 
 template <int e>
@@ -1802,7 +1802,7 @@
         // Convert all key:value into key:[value]
         for (Value::MemberIterator itr = v.MemberBegin(); itr != v.MemberEnd(); ++itr)
             itr->value = Value(kArrayType).Move().PushBack(itr->value, a);
-        
+
         // Merge arrays if key is duplicated
         for (Value::MemberIterator itr = v.MemberBegin(); itr != v.MemberEnd();) {
             Value::MemberIterator itr2 = v.FindMember(itr->name);

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/writertest.cpp
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/writertest.cpp	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/rapidjson/test/unittest/writertest.cpp	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 // Tencent is pleased to support the open source community by making RapidJSON available.
-// 
+//
 // Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.
 //
 // Licensed under the MIT License (the "License"); you may not use this file except
@@ -7,9 +7,9 @@
 //
 // http://opensource.org/licenses/MIT
 //
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
+// Unless required by applicable law or agreed to in writing, software distributed
+// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+// CONDITIONS OF ANY KIND, either express or implied. See the License for the
 // specific language governing permissions and limitations under the License.
 
 #include "unittest.h"
@@ -102,13 +102,13 @@
 
 TEST(Writer, Issue_889) {
     char buf[100] = "Hello";
-    
+
     StringBuffer buffer;
     Writer<StringBuffer> writer(buffer);
     writer.StartArray();
     writer.String(buf);
     writer.EndArray();
-    
+
     EXPECT_STREQ("[\"Hello\"]", buffer.GetString());
     EXPECT_TRUE(writer.IsComplete()); \
 }
@@ -220,15 +220,15 @@
 
 TEST(Writer, OStreamWrapper) {
     StringStream s("{ \"hello\" : \"world\", \"t\" : true , \"f\" : false, \"n\": null, \"i\":123, \"pi\": 3.1416, \"a\":[1, 2, 3], \"u64\": 1234567890123456789, \"i64\":-1234567890123456789 } ");
-    
+
     std::stringstream ss;
     OStreamWrapper os(ss);
-    
+
     Writer<OStreamWrapper> writer(os);
 
     Reader reader;
     reader.Parse<0>(s, writer);
-    
+
     std::string actual = ss.str();
     EXPECT_STREQ("{\"hello\":\"world\",\"t\":true,\"f\":false,\"n\":null,\"i\":123,\"pi\":3.1416,\"a\":[1,2,3],\"u64\":1234567890123456789,\"i64\":-1234567890123456789}", actual.c_str());
 }
@@ -449,7 +449,7 @@
         EXPECT_FALSE(writer.IsComplete());
     }
 
-    // { 1: 
+    // { 1:
     {
         StringBuffer buffer;
         Writer<StringBuffer> writer(buffer);

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CMakeFiles/CMakeDirectoryInformation.cmake	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,9 +1,9 @@
 # CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.22
+# Generated by "Unix Makefiles" Generator, CMake Version 3.25
 
 # Relative path conversion top directories.
-set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/u/bowman/camp/LspCpp")
-set(CMAKE_RELATIVE_PATH_TOP_BINARY "/u/bowman/camp/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.84/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.84/LspCpp")
 
 # Force unix paths in dependencies.
 set(CMAKE_FORCE_UNIX_PATHS 1)

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CMakeFiles/doc.dir/build.make	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 # CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.22
+# Generated by "Unix Makefiles" Generator, CMake Version 3.25
 
 # Delete rule output on recipe failure.
 .DELETE_ON_ERROR:
@@ -56,10 +56,10 @@
 EQUALS = =
 
 # The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /u/bowman/camp/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.84/LspCpp
 
 # The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /u/bowman/camp/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.84/LspCpp
 
 # Utility rule file for doc.
 
@@ -70,8 +70,8 @@
 include third_party/uri/CMakeFiles/doc.dir/progress.make
 
 third_party/uri/CMakeFiles/doc:
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/u/bowman/camp/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating API documentation with Doxygen"
-	cd /u/bowman/camp/LspCpp/third_party/uri && /bin/doxygen /u/bowman/camp/LspCpp/third_party/uri/Doxyfile
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --blue --bold --progress-dir=/usr/local/src/asymptote-2.84/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Generating API documentation with Doxygen"
+	cd /usr/local/src/asymptote-2.84/LspCpp/third_party/uri && /bin/doxygen /usr/local/src/asymptote-2.84/LspCpp/third_party/uri/Doxyfile
 
 doc: third_party/uri/CMakeFiles/doc
 doc: third_party/uri/CMakeFiles/doc.dir/build.make
@@ -82,10 +82,10 @@
 .PHONY : third_party/uri/CMakeFiles/doc.dir/build
 
 third_party/uri/CMakeFiles/doc.dir/clean:
-	cd /u/bowman/camp/LspCpp/third_party/uri && $(CMAKE_COMMAND) -P CMakeFiles/doc.dir/cmake_clean.cmake
+	cd /usr/local/src/asymptote-2.84/LspCpp/third_party/uri && $(CMAKE_COMMAND) -P CMakeFiles/doc.dir/cmake_clean.cmake
 .PHONY : third_party/uri/CMakeFiles/doc.dir/clean
 
 third_party/uri/CMakeFiles/doc.dir/depend:
-	cd /u/bowman/camp/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /u/bowman/camp/LspCpp /u/bowman/camp/LspCpp/third_party/uri /u/bowman/camp/LspCpp /u/bowman/camp/LspCpp/third_party/uri /u/bowman/camp/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake --color=$(COLOR)
+	cd /usr/local/src/asymptote-2.84/LspCpp && $(CMAKE_COMMAND) -E cmake_depends "Unix Makefiles" /usr/local/src/asymptote-2.84/LspCpp /usr/local/src/asymptote-2.84/LspCpp/third_party/uri /usr/local/src/asymptote-2.84/LspCpp /usr/local/src/asymptote-2.84/LspCpp/third_party/uri /usr/local/src/asymptote-2.84/LspCpp/third_party/uri/CMakeFiles/doc.dir/DependInfo.cmake --color=$(COLOR)
 .PHONY : third_party/uri/CMakeFiles/doc.dir/depend
 

Deleted: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CTestTestfile.cmake
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CTestTestfile.cmake	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/CTestTestfile.cmake	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,9 +0,0 @@
-# CMake generated Testfile for 
-# Source directory: /u/bowman/camp/LspCpp/third_party/uri
-# Build directory: /u/bowman/camp/LspCpp/third_party/uri
-# 
-# This file includes the relevant testing commands required for 
-# testing this directory and lists subdirectories to be tested as well.
-subdirs("src")
-subdirs("deps/googletest")
-subdirs("test")

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/Doxyfile
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/Doxyfile	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/Doxyfile	2023-02-05 18:18:59 UTC (rev 65737)
@@ -128,7 +128,7 @@
 # If left blank the directory from which doxygen is run is used as the
 # path to strip.
 
-STRIP_FROM_PATH        = /u/bowman/camp/LspCpp/third_party/uri/include/
+STRIP_FROM_PATH        = /usr/local/src/asymptote-2.84/LspCpp/third_party/uri/include/
 
 # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
 # the path mentioned in the documentation of a class, which tells
@@ -626,7 +626,7 @@
 # directories like "/usr/src/myproject". Separate the files or directories
 # with spaces.
 
-INPUT                  = /u/bowman/camp/LspCpp/third_party/uri/include
+INPUT                  = /usr/local/src/asymptote-2.84/LspCpp/third_party/uri/include
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
@@ -658,7 +658,7 @@
 # Note that relative paths are relative to the directory from which doxygen is
 # run.
 
-EXCLUDE                = /u/bowman/camp/LspCpp/third_party/uri/include/network/uri/detail
+EXCLUDE                = /usr/local/src/asymptote-2.84/LspCpp/third_party/uri/include/network/uri/detail
 
 # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
 # directories that are symbolic links (a Unix file system feature) are excluded
@@ -821,7 +821,7 @@
 # The IGNORE_PREFIX tag can be used to specify one or more prefixes that
 # should be ignored while generating the index headers.
 
-IGNORE_PREFIX          = /u/bowman/camp/LspCpp/third_party/uri/uri/src/
+IGNORE_PREFIX          = /usr/local/src/asymptote-2.84/LspCpp/third_party/uri/uri/src/
 
 #---------------------------------------------------------------------------
 # configuration options related to the HTML output

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/Makefile
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/Makefile	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/Makefile	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 # CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.22
+# Generated by "Unix Makefiles" Generator, CMake Version 3.25
 
 # Default target executed when no arguments are given to make.
 default_target: all
@@ -60,10 +60,10 @@
 EQUALS = =
 
 # The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /u/bowman/camp/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.84/LspCpp
 
 # The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /u/bowman/camp/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.84/LspCpp
 
 #=============================================================================
 # Targets provided globally by CMake.
@@ -135,14 +135,14 @@
 
 # The main all target
 all: cmake_check_build_system
-	cd /u/bowman/camp/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /u/bowman/camp/LspCpp/CMakeFiles /u/bowman/camp/LspCpp/third_party/uri//CMakeFiles/progress.marks
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/all
-	$(CMAKE_COMMAND) -E cmake_progress_start /u/bowman/camp/LspCpp/CMakeFiles 0
+	cd /usr/local/src/asymptote-2.84/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.84/LspCpp/CMakeFiles /usr/local/src/asymptote-2.84/LspCpp/third_party/uri//CMakeFiles/progress.marks
+	cd /usr/local/src/asymptote-2.84/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/all
+	$(CMAKE_COMMAND) -E cmake_progress_start /usr/local/src/asymptote-2.84/LspCpp/CMakeFiles 0
 .PHONY : all
 
 # The main clean target
 clean:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/clean
+	cd /usr/local/src/asymptote-2.84/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/clean
 .PHONY : clean
 
 # The main clean target
@@ -151,22 +151,22 @@
 
 # Prepare targets for installation.
 preinstall: all
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
+	cd /usr/local/src/asymptote-2.84/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
 .PHONY : preinstall
 
 # Prepare targets for installation.
 preinstall/fast:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
+	cd /usr/local/src/asymptote-2.84/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/preinstall
 .PHONY : preinstall/fast
 
 # clear depends
 depend:
-	cd /u/bowman/camp/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+	cd /usr/local/src/asymptote-2.84/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
 .PHONY : depend
 
 # Convenience name for target.
 third_party/uri/CMakeFiles/doc.dir/rule:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/CMakeFiles/doc.dir/rule
+	cd /usr/local/src/asymptote-2.84/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/CMakeFiles/doc.dir/rule
 .PHONY : third_party/uri/CMakeFiles/doc.dir/rule
 
 # Convenience name for target.
@@ -175,7 +175,7 @@
 
 # fast build rule for target.
 doc/fast:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/CMakeFiles/doc.dir/build.make third_party/uri/CMakeFiles/doc.dir/build
+	cd /usr/local/src/asymptote-2.84/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/CMakeFiles/doc.dir/build.make third_party/uri/CMakeFiles/doc.dir/build
 .PHONY : doc/fast
 
 # Help Target
@@ -202,6 +202,6 @@
 # No rule that depends on this can have commands that come from listfiles
 # because they might be regenerated.
 cmake_check_build_system:
-	cd /u/bowman/camp/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
+	cd /usr/local/src/asymptote-2.84/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
 .PHONY : cmake_check_build_system
 

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/cmake_install.cmake
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/cmake_install.cmake	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/cmake_install.cmake	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,4 +1,4 @@
-# Install script for directory: /u/bowman/camp/LspCpp/third_party/uri
+# Install script for directory: /usr/local/src/asymptote-2.84/LspCpp/third_party/uri
 
 # Set the install prefix
 if(NOT DEFINED CMAKE_INSTALL_PREFIX)
@@ -42,13 +42,13 @@
   set(CMAKE_OBJDUMP "/bin/objdump")
 endif()
 
-if("x${CMAKE_INSTALL_COMPONENT}x" STREQUAL "xUnspecifiedx" OR NOT CMAKE_INSTALL_COMPONENT)
-  file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE DIRECTORY FILES "/u/bowman/camp/LspCpp/third_party/uri/include")
+if(CMAKE_INSTALL_COMPONENT STREQUAL "Unspecified" OR NOT CMAKE_INSTALL_COMPONENT)
+  file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/." TYPE DIRECTORY FILES "/usr/local/src/asymptote-2.84/LspCpp/third_party/uri/include")
 endif()
 
 if(NOT CMAKE_INSTALL_LOCAL_ONLY)
   # Include the install script for each subdirectory.
-  include("/u/bowman/camp/LspCpp/third_party/uri/src/cmake_install.cmake")
+  include("/usr/local/src/asymptote-2.84/LspCpp/third_party/uri/src/cmake_install.cmake")
 
 endif()
 

Deleted: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/CTestTestfile.cmake
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/CTestTestfile.cmake	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/CTestTestfile.cmake	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,6 +0,0 @@
-# CMake generated Testfile for 
-# Source directory: /u/bowman/camp/LspCpp/third_party/uri/deps/googletest
-# Build directory: /u/bowman/camp/LspCpp/third_party/uri/deps/googletest
-# 
-# This file includes the relevant testing commands required for 
-# testing this directory and lists subdirectories to be tested as well.

Deleted: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/Makefile
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/Makefile	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/Makefile	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,276 +0,0 @@
-# CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.20
-
-# Default target executed when no arguments are given to make.
-default_target: all
-.PHONY : default_target
-
-# Allow only one "make -f Makefile2" at a time, but pass parallelism.
-.NOTPARALLEL:
-
-#=============================================================================
-# Special targets provided by cmake.
-
-# Disable implicit rules so canonical targets will work.
-.SUFFIXES:
-
-# Disable VCS-based implicit rules.
-% : %,v
-
-# Disable VCS-based implicit rules.
-% : RCS/%
-
-# Disable VCS-based implicit rules.
-% : RCS/%,v
-
-# Disable VCS-based implicit rules.
-% : SCCS/s.%
-
-# Disable VCS-based implicit rules.
-% : s.%
-
-.SUFFIXES: .hpux_make_needs_suffix_list
-
-# Produce verbose output by default.
-VERBOSE = 1
-
-# Command-line flag to silence nested $(MAKE).
-$(VERBOSE)MAKESILENT = -s
-
-#Suppress display of executed commands.
-$(VERBOSE).SILENT:
-
-# A target that is always out of date.
-cmake_force:
-.PHONY : cmake_force
-
-#=============================================================================
-# Set environment variables for the build.
-
-# The shell in which to execute make rules.
-SHELL = /bin/sh
-
-# The CMake executable.
-CMAKE_COMMAND = /usr/bin/cmake
-
-# The command to remove a file.
-RM = /usr/bin/cmake -E rm -f
-
-# Escaping for special characters.
-EQUALS = =
-
-# The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /u/bowman/camp/LspCpp
-
-# The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /u/bowman/camp/LspCpp
-
-#=============================================================================
-# Targets provided globally by CMake.
-
-# Special rule for the target install/strip
-install/strip: preinstall
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
-	/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
-.PHONY : install/strip
-
-# Special rule for the target install/strip
-install/strip/fast: preinstall/fast
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..."
-	/usr/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake
-.PHONY : install/strip/fast
-
-# Special rule for the target install/local
-install/local: preinstall
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
-	/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
-.PHONY : install/local
-
-# Special rule for the target install/local
-install/local/fast: preinstall/fast
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..."
-	/usr/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake
-.PHONY : install/local/fast
-
-# Special rule for the target install
-install: preinstall
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
-	/usr/bin/cmake -P cmake_install.cmake
-.PHONY : install
-
-# Special rule for the target install
-install/fast: preinstall/fast
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..."
-	/usr/bin/cmake -P cmake_install.cmake
-.PHONY : install/fast
-
-# Special rule for the target list_install_components
-list_install_components:
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\""
-.PHONY : list_install_components
-
-# Special rule for the target list_install_components
-list_install_components/fast: list_install_components
-.PHONY : list_install_components/fast
-
-# Special rule for the target rebuild_cache
-rebuild_cache:
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
-	/usr/bin/cmake --regenerate-during-build -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
-.PHONY : rebuild_cache
-
-# Special rule for the target rebuild_cache
-rebuild_cache/fast: rebuild_cache
-.PHONY : rebuild_cache/fast
-
-# Special rule for the target edit_cache
-edit_cache:
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..."
-	/usr/bin/ccmake -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
-.PHONY : edit_cache
-
-# Special rule for the target edit_cache
-edit_cache/fast: edit_cache
-.PHONY : edit_cache/fast
-
-# The main all target
-all: cmake_check_build_system
-	cd /u/bowman/camp/LspCpp && $(CMAKE_COMMAND) -E cmake_progress_start /u/bowman/camp/LspCpp/CMakeFiles /u/bowman/camp/LspCpp/third_party/uri/deps/googletest//CMakeFiles/progress.marks
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/deps/googletest/all
-	$(CMAKE_COMMAND) -E cmake_progress_start /u/bowman/camp/LspCpp/CMakeFiles 0
-.PHONY : all
-
-# The main clean target
-clean:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/deps/googletest/clean
-.PHONY : clean
-
-# The main clean target
-clean/fast: clean
-.PHONY : clean/fast
-
-# Prepare targets for installation.
-preinstall: all
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/deps/googletest/preinstall
-.PHONY : preinstall
-
-# Prepare targets for installation.
-preinstall/fast:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/deps/googletest/preinstall
-.PHONY : preinstall/fast
-
-# clear depends
-depend:
-	cd /u/bowman/camp/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
-.PHONY : depend
-
-# Convenience name for target.
-third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/rule:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/rule
-.PHONY : third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/rule
-
-# Convenience name for target.
-gtest_main: third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/rule
-.PHONY : gtest_main
-
-# fast build rule for target.
-gtest_main/fast:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/build.make third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/build
-.PHONY : gtest_main/fast
-
-# Convenience name for target.
-third_party/uri/deps/googletest/CMakeFiles/gtest.dir/rule:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 third_party/uri/deps/googletest/CMakeFiles/gtest.dir/rule
-.PHONY : third_party/uri/deps/googletest/CMakeFiles/gtest.dir/rule
-
-# Convenience name for target.
-gtest: third_party/uri/deps/googletest/CMakeFiles/gtest.dir/rule
-.PHONY : gtest
-
-# fast build rule for target.
-gtest/fast:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/deps/googletest/CMakeFiles/gtest.dir/build.make third_party/uri/deps/googletest/CMakeFiles/gtest.dir/build
-.PHONY : gtest/fast
-
-src/gtest-all.o: src/gtest-all.cc.o
-.PHONY : src/gtest-all.o
-
-# target to build an object file
-src/gtest-all.cc.o:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/deps/googletest/CMakeFiles/gtest.dir/build.make third_party/uri/deps/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.o
-.PHONY : src/gtest-all.cc.o
-
-src/gtest-all.i: src/gtest-all.cc.i
-.PHONY : src/gtest-all.i
-
-# target to preprocess a source file
-src/gtest-all.cc.i:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/deps/googletest/CMakeFiles/gtest.dir/build.make third_party/uri/deps/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.i
-.PHONY : src/gtest-all.cc.i
-
-src/gtest-all.s: src/gtest-all.cc.s
-.PHONY : src/gtest-all.s
-
-# target to generate assembly for a file
-src/gtest-all.cc.s:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/deps/googletest/CMakeFiles/gtest.dir/build.make third_party/uri/deps/googletest/CMakeFiles/gtest.dir/src/gtest-all.cc.s
-.PHONY : src/gtest-all.cc.s
-
-src/gtest_main.o: src/gtest_main.cc.o
-.PHONY : src/gtest_main.o
-
-# target to build an object file
-src/gtest_main.cc.o:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/build.make third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.o
-.PHONY : src/gtest_main.cc.o
-
-src/gtest_main.i: src/gtest_main.cc.i
-.PHONY : src/gtest_main.i
-
-# target to preprocess a source file
-src/gtest_main.cc.i:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/build.make third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.i
-.PHONY : src/gtest_main.cc.i
-
-src/gtest_main.s: src/gtest_main.cc.s
-.PHONY : src/gtest_main.s
-
-# target to generate assembly for a file
-src/gtest_main.cc.s:
-	cd /u/bowman/camp/LspCpp && $(MAKE) $(MAKESILENT) -f third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/build.make third_party/uri/deps/googletest/CMakeFiles/gtest_main.dir/src/gtest_main.cc.s
-.PHONY : src/gtest_main.cc.s
-
-# Help Target
-help:
-	@echo "The following are some of the valid targets for this Makefile:"
-	@echo "... all (the default if no target is provided)"
-	@echo "... clean"
-	@echo "... depend"
-	@echo "... edit_cache"
-	@echo "... install"
-	@echo "... install/local"
-	@echo "... install/strip"
-	@echo "... list_install_components"
-	@echo "... rebuild_cache"
-	@echo "... gtest"
-	@echo "... gtest_main"
-	@echo "... src/gtest-all.o"
-	@echo "... src/gtest-all.i"
-	@echo "... src/gtest-all.s"
-	@echo "... src/gtest_main.o"
-	@echo "... src/gtest_main.i"
-	@echo "... src/gtest_main.s"
-.PHONY : help
-
-
-
-#=============================================================================
-# Special targets to cleanup operation of make.
-
-# Special rule to run CMake to check the build system integrity.
-# No rule that depends on this can have commands that come from listfiles
-# because they might be regenerated.
-cmake_check_build_system:
-	cd /u/bowman/camp/LspCpp && $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 0
-.PHONY : cmake_check_build_system
-

Deleted: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/cmake_install.cmake
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/cmake_install.cmake	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/deps/googletest/cmake_install.cmake	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,44 +0,0 @@
-# Install script for directory: /u/bowman/camp/LspCpp/third_party/uri/deps/googletest
-
-# Set the install prefix
-if(NOT DEFINED CMAKE_INSTALL_PREFIX)
-  set(CMAKE_INSTALL_PREFIX "/usr/local")
-endif()
-string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
-
-# Set the install configuration name.
-if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
-  if(BUILD_TYPE)
-    string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
-           CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
-  else()
-    set(CMAKE_INSTALL_CONFIG_NAME "RelWithDebInfo")
-  endif()
-  message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
-endif()
-
-# Set the component getting installed.
-if(NOT CMAKE_INSTALL_COMPONENT)
-  if(COMPONENT)
-    message(STATUS "Install component: \"${COMPONENT}\"")
-    set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
-  else()
-    set(CMAKE_INSTALL_COMPONENT)
-  endif()
-endif()
-
-# Install shared libraries without execute permission?
-if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
-  set(CMAKE_INSTALL_SO_NO_EXE "0")
-endif()
-
-# Is this installation the result of a crosscompile?
-if(NOT DEFINED CMAKE_CROSSCOMPILING)
-  set(CMAKE_CROSSCOMPILING "FALSE")
-endif()
-
-# Set default install directory permissions.
-if(NOT DEFINED CMAKE_OBJDUMP)
-  set(CMAKE_OBJDUMP "/bin/objdump")
-endif()
-

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/CMakeDirectoryInformation.cmake	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,9 +1,9 @@
 # CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.22
+# Generated by "Unix Makefiles" Generator, CMake Version 3.25
 
 # Relative path conversion top directories.
-set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/u/bowman/camp/LspCpp")
-set(CMAKE_RELATIVE_PATH_TOP_BINARY "/u/bowman/camp/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "/usr/local/src/asymptote-2.84/LspCpp")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "/usr/local/src/asymptote-2.84/LspCpp")
 
 # Force unix paths in dependencies.
 set(CMAKE_FORCE_UNIX_PATHS 1)

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/DependInfo.cmake	2023-02-05 18:18:59 UTC (rev 65737)
@@ -8,14 +8,14 @@
 
 # The set of dependency files which are needed:
 set(CMAKE_DEPENDS_DEPENDENCY_FILES
-  "/u/bowman/camp/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d"
-  "/u/bowman/camp/LspCpp/third_party/uri/src/detail/uri_normalize.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d"
-  "/u/bowman/camp/LspCpp/third_party/uri/src/detail/uri_parse.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d"
-  "/u/bowman/camp/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d"
-  "/u/bowman/camp/LspCpp/third_party/uri/src/detail/uri_resolve.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d"
-  "/u/bowman/camp/LspCpp/third_party/uri/src/uri.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o.d"
-  "/u/bowman/camp/LspCpp/third_party/uri/src/uri_builder.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o.d"
-  "/u/bowman/camp/LspCpp/third_party/uri/src/uri_errors.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o.d"
+  "/usr/local/src/asymptote-2.84/LspCpp/third_party/uri/src/detail/uri_advance_parts.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_advance_parts.cpp.o.d"
+  "/usr/local/src/asymptote-2.84/LspCpp/third_party/uri/src/detail/uri_normalize.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_normalize.cpp.o.d"
+  "/usr/local/src/asymptote-2.84/LspCpp/third_party/uri/src/detail/uri_parse.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse.cpp.o.d"
+  "/usr/local/src/asymptote-2.84/LspCpp/third_party/uri/src/detail/uri_parse_authority.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_parse_authority.cpp.o.d"
+  "/usr/local/src/asymptote-2.84/LspCpp/third_party/uri/src/detail/uri_resolve.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/detail/uri_resolve.cpp.o.d"
+  "/usr/local/src/asymptote-2.84/LspCpp/third_party/uri/src/uri.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o.d"
+  "/usr/local/src/asymptote-2.84/LspCpp/third_party/uri/src/uri_builder.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_builder.cpp.o.d"
+  "/usr/local/src/asymptote-2.84/LspCpp/third_party/uri/src/uri_errors.cpp" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o" "gcc" "third_party/uri/src/CMakeFiles/network-uri.dir/uri_errors.cpp.o.d"
   )
 
 # Targets to which this target links.

Modified: trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make
===================================================================
--- trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make	2023-02-05 00:47:49 UTC (rev 65736)
+++ trunk/Build/source/utils/asymptote/LspCpp/third_party/uri/src/CMakeFiles/network-uri.dir/build.make	2023-02-05 18:18:59 UTC (rev 65737)
@@ -1,5 +1,5 @@
 # CMAKE generated file: DO NOT EDIT!
-# Generated by "Unix Makefiles" Generator, CMake Version 3.22
+# Generated by "Unix Makefiles" Generator, CMake Version 3.25
 
 # Delete rule output on recipe failure.
 .DELETE_ON_ERROR:
@@ -56,10 +56,10 @@
 EQUALS = =
 
 # The top-level source directory on which CMake was run.
-CMAKE_SOURCE_DIR = /u/bowman/camp/LspCpp
+CMAKE_SOURCE_DIR = /usr/local/src/asymptote-2.84/LspCpp
 
 # The top-level build directory on which CMake was run.
-CMAKE_BINARY_DIR = /u/bowman/camp/LspCpp
+CMAKE_BINARY_DIR = /usr/local/src/asymptote-2.84/LspCpp
 
 # Include any dependencies generated for this target.
 include third_party/uri/src/CMakeFiles/network-uri.dir/depend.make
@@ -75,114 +75,114 @@
 third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/flags.make
 third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/uri.cpp
 third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o: third_party/uri/src/CMakeFiles/network-uri.dir/compiler_depend.ts
-	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/u/bowman/camp/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o"
-	cd /u/bowman/camp/LspCpp/third_party/uri/src && /bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o -MF CMakeFiles/network-uri.dir/uri.cpp.o.d -o CMakeFiles/network-uri.dir/uri.cpp.o -c /u/bowman/camp/LspCpp/third_party/uri/src/uri.cpp
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=/usr/local/src/asymptote-2.84/LspCpp/CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building CXX object third_party/uri/src/CMakeFiles/network-uri.dir/uri.cpp.o"

@@ Diff output truncated at 1234567 characters. @@


More information about the tex-live-commits mailing list.