From e4ecfe69e106f3acc5eef5fb1b4318308bde7007 Mon Sep 17 00:00:00 2001 From: maxscout Date: Mon, 15 Dec 2025 12:50:23 -0500 Subject: [PATCH] vscode config --- .local/share/code-server | 1 + .vscode/argv.json | 21 + .vscode/extensions/.obsolete | 1 + .../.vsixmanifest | 48 + .../LICENSE.txt | 21 + .../changelog.md | 1459 +++++ .../dist/extension.js | 3 + .../dist/extension.js.LICENSE.txt | 8 + .../dist/extension.js.map | 1 + .../images/icon.png | Bin 0 -> 41763 bytes .../package.json | 2215 +++++++ .../readme.md | 855 +++ .../runtime/lua/vscode.lua | 46 + .../runtime/lua/vscode/api.lua | 510 ++ .../runtime/lua/vscode/cursor.lua | 161 + .../runtime/lua/vscode/default-options.lua | 16 + .../runtime/lua/vscode/force-options.lua | 69 + .../runtime/lua/vscode/highlight.lua | 193 + .../runtime/lua/vscode/internal.lua | 379 ++ .../runtime/lua/vscode/sync-options.lua | 149 + .../runtime/lua/vscode/util.lua | 119 + .../runtime/lua/vscode/viewport.lua | 93 + .../runtime/vscode-neovim.vim | 156 + .../runtime/vscode/clipboard.lua | 42 + .../runtime/vscode/code_actions.lua | 53 + .../runtime/vscode/filetype.lua | 14 + .../runtime/vscode/inccommand.lua | 56 + .../runtime/vscode/integrations.lua | 10 + .../runtime/vscode/lsp/buf.lua | 77 + .../vscode/overrides/vscode-code-actions.vim | 38 + .../vscode/overrides/vscode-file-commands.vim | 56 + .../vscode/overrides/vscode-jumplist.vim | 13 + .../vscode/overrides/vscode-motion.vim | 16 + .../vscode/overrides/vscode-scrolling.vim | 46 + .../vscode/overrides/vscode-tab-commands.vim | 46 + .../overrides/vscode-window-commands.vim | 158 + .../runtime/vscode/statusline.lua | 22 + .../runtime/vscode/treesitter.lua | 13 + .../runtime/vscode/ui.lua | 139 + .../coder.coder-remote-1.11.5/.vsixmanifest | 48 + .../coder.coder-remote-1.11.5/LICENSE.txt | 20 + .../coder.coder-remote-1.11.5/changelog.md | 426 ++ .../dist/extension.js | 2 + .../dist/extension.js.LICENSE.txt | 112 + .../media/logo-black.svg | 17 + .../media/logo-white.svg | 19 + .../coder.coder-remote-1.11.5/media/logo.png | Bin 0 -> 14741 bytes .../coder.coder-remote-1.11.5/package.json | 432 ++ .../coder.coder-remote-1.11.5/pgp-public.key | 99 + .../coder.coder-remote-1.11.5/readme.md | 44 + .../coder.coder-remote-1.11.6/.vsixmanifest | 48 + .../coder.coder-remote-1.11.6/LICENSE.txt | 20 + .../coder.coder-remote-1.11.6/changelog.md | 436 ++ .../dist/extension.js | 2 + .../dist/extension.js.LICENSE.txt | 112 + .../media/logo-black.svg | 17 + .../media/logo-white.svg | 19 + .../coder.coder-remote-1.11.6/media/logo.png | Bin 0 -> 14741 bytes .../coder.coder-remote-1.11.6/package.json | 432 ++ .../coder.coder-remote-1.11.6/pgp-public.key | 99 + .../coder.coder-remote-1.11.6/readme.md | 44 + .vscode/extensions/extensions.json | 1 + .../.nvmrc | 1 + .../.vsixmanifest | 47 + .../LICENSE.txt | 73 + .../README.preRelease.md | 2 + .../ThirdPartyNotices.txt | 5157 +++++++++++++++++ .../l10n/bundle.l10n.cs.json | 1 + .../l10n/bundle.l10n.de.json | 1 + .../l10n/bundle.l10n.es.json | 1 + .../l10n/bundle.l10n.fr.json | 1 + .../l10n/bundle.l10n.it.json | 1 + .../l10n/bundle.l10n.ja.json | 1 + .../l10n/bundle.l10n.ko.json | 1 + .../l10n/bundle.l10n.pl.json | 1 + .../l10n/bundle.l10n.pt-br.json | 1 + .../l10n/bundle.l10n.qps-ploc.json | 1 + .../l10n/bundle.l10n.ru.json | 1 + .../l10n/bundle.l10n.tr.json | 1 + .../l10n/bundle.l10n.zh-cn.json | 1 + .../l10n/bundle.l10n.zh-tw.json | 1 + .../out/460.js | 2 + .../out/askpass-main.js | 2 + .../out/baselineTests.test.js.LICENSE.txt | 41 + .../out/chat/static-hints/tips-and-tricks.md | 580 ++ .../out/chat/static-hints/troubleshooting.md | 62 + .../out/extension.js | 3 + .../out/extension.js.LICENSE.txt | 3 + .../scripts/linux-exec-server-installer.sh | 452 ++ .../out/local-server/askpass.bat | 13 + .../out/local-server/askpass.sh | 6 + .../out/localServer.js | 2 + ...ode-fetch_src_utils_multipart-parser_js.js | 456 ++ .../out/resolver.js | 3 + .../out/resolver.js.LICENSE.txt | 1 + .../out/unitTests.test.js.LICENSE.txt | 1 + .../out/utils/terminateProcess.sh | 13 + .../package.json | 618 ++ .../package.nls.cs.json | 1 + .../package.nls.de.json | 1 + .../package.nls.es.json | 1 + .../package.nls.fr.json | 1 + .../package.nls.it.json | 1 + .../package.nls.ja.json | 1 + .../package.nls.json | 1 + .../package.nls.ko.json | 1 + .../package.nls.pl.json | 1 + .../package.nls.pt-br.json | 1 + .../package.nls.qps-ploc.json | 1 + .../package.nls.ru.json | 1 + .../package.nls.tr.json | 1 + .../package.nls.zh-cn.json | 1 + .../package.nls.zh-tw.json | 1 + .../readme.md | 84 + .../resources/remote-ssh.png | Bin 0 -> 2681 bytes .../resources/ssh-explorer.svg | 12 + .../telemetry.json | 1 + .../thirdparty/octicons/LICENSE | 21 + .../thirdparty/octicons/README | 1 + .../thirdparty/octicons/dark/copy-link.svg | 3 + .../octicons/highContrast/copy-link.svg | 3 + .../thirdparty/octicons/light/copy-link.svg | 3 + .../vscode.proposed.contribRemoteHelp.d.ts | 6 + .../vscode.proposed.contribViewsRemote.d.ts | 6 + .../vscode.proposed.resolvers.d.ts | 475 ++ .../vscode.proposed.telemetry.d.ts | 36 + ...scode.proposed.terminalDataWriteEvent.d.ts | 32 + .../vscode.proposed.tunnels.d.ts | 64 + .../.vsixmanifest | 47 + .../LICENSE.txt | 73 + .../README.md | 28 + .../ThirdPartyNotices.txt | 17 + .../build/stable.yml | 49 + .../l10n/bundle.l10n.cs.json | 1 + .../l10n/bundle.l10n.de.json | 1 + .../l10n/bundle.l10n.es.json | 1 + .../l10n/bundle.l10n.fr.json | 1 + .../l10n/bundle.l10n.it.json | 1 + .../l10n/bundle.l10n.ja.json | 1 + .../l10n/bundle.l10n.ko.json | 1 + .../l10n/bundle.l10n.pl.json | 1 + .../l10n/bundle.l10n.pt-br.json | 1 + .../l10n/bundle.l10n.qps-ploc.json | 1 + .../l10n/bundle.l10n.ru.json | 1 + .../l10n/bundle.l10n.tr.json | 1 + .../l10n/bundle.l10n.zh-cn.json | 1 + .../l10n/bundle.l10n.zh-tw.json | 1 + .../language-configuration.json | 1 + .../out/extension.js | 2 + .../package.json | 85 + .../package.nls.cs.json | 1 + .../package.nls.de.json | 1 + .../package.nls.es.json | 1 + .../package.nls.fr.json | 1 + .../package.nls.it.json | 1 + .../package.nls.ja.json | 1 + .../package.nls.json | 1 + .../package.nls.ko.json | 1 + .../package.nls.pl.json | 1 + .../package.nls.pt-br.json | 1 + .../package.nls.qps-ploc.json | 1 + .../package.nls.ru.json | 1 + .../package.nls.tr.json | 1 + .../package.nls.zh-cn.json | 1 + .../package.nls.zh-tw.json | 1 + .../resources/remote-ssh.png | Bin 0 -> 2681 bytes .../syntaxes/ssh_config.tmLanguage.json | 1 + .../thirdparty/LICENSE | 185 + .../thirdparty/options.json | 1 + .../version.sh | 21 + .../.vsixmanifest | 47 + .../LICENSE.txt | 73 + .../SECURITY.md | 41 + .../ThirdPartyNotices.txt | 17 + .../build/nightlyVersionBump.js | 40 + .../build/pre-release.yml | 63 + .../build/stable.yml | 57 + .../dist/node/extension.js | 1 + .../dist/web/extension.js | 1 + .../docs/release-steps.md | 14 + .../l10n/bundle.l10n.cs.json | 1 + .../l10n/bundle.l10n.de.json | 1 + .../l10n/bundle.l10n.es.json | 1 + .../l10n/bundle.l10n.fr.json | 1 + .../l10n/bundle.l10n.it.json | 1 + .../l10n/bundle.l10n.ja.json | 1 + .../l10n/bundle.l10n.ko.json | 1 + .../l10n/bundle.l10n.pl.json | 1 + .../l10n/bundle.l10n.pt-br.json | 1 + .../l10n/bundle.l10n.qps-ploc.json | 1 + .../l10n/bundle.l10n.ru.json | 1 + .../l10n/bundle.l10n.tr.json | 1 + .../l10n/bundle.l10n.zh-cn.json | 1 + .../l10n/bundle.l10n.zh-tw.json | 1 + .../package.json | 362 ++ .../package.nls.cs.json | 1 + .../package.nls.de.json | 1 + .../package.nls.es.json | 1 + .../package.nls.fr.json | 1 + .../package.nls.it.json | 1 + .../package.nls.ja.json | 1 + .../package.nls.json | 1 + .../package.nls.ko.json | 1 + .../package.nls.pl.json | 1 + .../package.nls.pt-br.json | 1 + .../package.nls.qps-ploc.json | 1 + .../package.nls.ru.json | 1 + .../package.nls.tr.json | 1 + .../package.nls.zh-cn.json | 1 + .../package.nls.zh-tw.json | 1 + .../ms-vscode.remote-explorer-0.5.0/readme.md | 26 + .../resources/remote-explorer.png | Bin 0 -> 7249 bytes .../telemetry.json | 1 + 213 files changed, 19397 insertions(+) create mode 120000 .local/share/code-server create mode 100644 .vscode/argv.json create mode 100644 .vscode/extensions/.obsolete create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/.vsixmanifest create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/LICENSE.txt create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/changelog.md create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js.LICENSE.txt create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js.map create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/images/icon.png create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/package.json create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/readme.md create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/lua/vscode.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/lua/vscode/api.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/lua/vscode/cursor.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/lua/vscode/default-options.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/lua/vscode/force-options.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/lua/vscode/highlight.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/lua/vscode/internal.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/lua/vscode/sync-options.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/lua/vscode/util.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/lua/vscode/viewport.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode-neovim.vim create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/clipboard.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/code_actions.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/filetype.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/inccommand.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/integrations.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/lsp/buf.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/overrides/vscode-code-actions.vim create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/overrides/vscode-file-commands.vim create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/overrides/vscode-jumplist.vim create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/overrides/vscode-motion.vim create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/overrides/vscode-scrolling.vim create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/overrides/vscode-tab-commands.vim create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/overrides/vscode-window-commands.vim create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/statusline.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/treesitter.lua create mode 100644 .vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/ui.lua create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/.vsixmanifest create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/LICENSE.txt create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/changelog.md create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/dist/extension.js create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/dist/extension.js.LICENSE.txt create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/media/logo-black.svg create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/media/logo-white.svg create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/media/logo.png create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/package.json create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/pgp-public.key create mode 100644 .vscode/extensions/coder.coder-remote-1.11.5/readme.md create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/.vsixmanifest create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/LICENSE.txt create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/changelog.md create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/dist/extension.js create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/dist/extension.js.LICENSE.txt create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/media/logo-black.svg create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/media/logo-white.svg create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/media/logo.png create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/package.json create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/pgp-public.key create mode 100644 .vscode/extensions/coder.coder-remote-1.11.6/readme.md create mode 100644 .vscode/extensions/extensions.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/.nvmrc create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/.vsixmanifest create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/LICENSE.txt create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/README.preRelease.md create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/ThirdPartyNotices.txt create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.cs.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.de.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.es.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.fr.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.it.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.ja.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.ko.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.pl.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.pt-br.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.qps-ploc.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.ru.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.tr.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.zh-cn.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/l10n/bundle.l10n.zh-tw.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/460.js create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/askpass-main.js create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/baselineTests.test.js.LICENSE.txt create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/chat/static-hints/tips-and-tricks.md create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/chat/static-hints/troubleshooting.md create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/extension.js create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/extension.js.LICENSE.txt create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/install-script/scripts/linux-exec-server-installer.sh create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/local-server/askpass.bat create mode 100755 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/local-server/askpass.sh create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/localServer.js create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/node_modules_node-fetch_src_utils_multipart-parser_js.js create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/resolver.js create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/resolver.js.LICENSE.txt create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/unitTests.test.js.LICENSE.txt create mode 100755 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/utils/terminateProcess.sh create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.cs.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.de.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.es.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.fr.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.it.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.ja.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.ko.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.pl.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.pt-br.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.qps-ploc.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.ru.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.tr.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.zh-cn.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/package.nls.zh-tw.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/readme.md create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/resources/remote-ssh.png create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/resources/ssh-explorer.svg create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/telemetry.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/thirdparty/octicons/LICENSE create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/thirdparty/octicons/README create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/thirdparty/octicons/dark/copy-link.svg create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/thirdparty/octicons/highContrast/copy-link.svg create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/thirdparty/octicons/light/copy-link.svg create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/vscode.proposed.contribRemoteHelp.d.ts create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/vscode.proposed.contribViewsRemote.d.ts create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/vscode.proposed.resolvers.d.ts create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/vscode.proposed.telemetry.d.ts create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/vscode.proposed.terminalDataWriteEvent.d.ts create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/vscode.proposed.tunnels.d.ts create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/.vsixmanifest create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/LICENSE.txt create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/README.md create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/ThirdPartyNotices.txt create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/build/stable.yml create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.cs.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.de.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.es.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.fr.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.it.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.ja.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.ko.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.pl.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.pt-br.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.qps-ploc.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.ru.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.tr.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.zh-cn.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/l10n/bundle.l10n.zh-tw.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/language-configuration.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/out/extension.js create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.cs.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.de.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.es.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.fr.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.it.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.ja.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.ko.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.pl.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.pt-br.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.qps-ploc.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.ru.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.tr.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.zh-cn.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/package.nls.zh-tw.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/resources/remote-ssh.png create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/syntaxes/ssh_config.tmLanguage.json create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/thirdparty/LICENSE create mode 100644 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/thirdparty/options.json create mode 100755 .vscode/extensions/ms-vscode-remote.remote-ssh-edit-0.87.0/version.sh create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/.vsixmanifest create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/LICENSE.txt create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/SECURITY.md create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/ThirdPartyNotices.txt create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/build/nightlyVersionBump.js create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/build/pre-release.yml create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/build/stable.yml create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/dist/node/extension.js create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/dist/web/extension.js create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/docs/release-steps.md create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.cs.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.de.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.es.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.fr.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.it.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.ja.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.ko.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.pl.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.pt-br.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.qps-ploc.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.ru.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.tr.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.zh-cn.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/l10n/bundle.l10n.zh-tw.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.cs.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.de.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.es.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.fr.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.it.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.ja.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.ko.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.pl.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.pt-br.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.qps-ploc.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.ru.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.tr.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.zh-cn.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/package.nls.zh-tw.json create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/readme.md create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/resources/remote-explorer.png create mode 100644 .vscode/extensions/ms-vscode.remote-explorer-0.5.0/telemetry.json diff --git a/.local/share/code-server b/.local/share/code-server new file mode 120000 index 0000000..600d2d3 --- /dev/null +++ b/.local/share/code-server @@ -0,0 +1 @@ +.vscode \ No newline at end of file diff --git a/.vscode/argv.json b/.vscode/argv.json new file mode 100644 index 0000000..a12a75a --- /dev/null +++ b/.vscode/argv.json @@ -0,0 +1,21 @@ +// This configuration file allows you to pass permanent command line arguments to VS Code. +// Only a subset of arguments is currently supported to reduce the likelihood of breaking +// the installation. +// +// PLEASE DO NOT CHANGE WITHOUT UNDERSTANDING THE IMPACT +// +// NOTE: Changing this file requires a restart of VS Code. +{ + // Use software rendering instead of hardware accelerated rendering. + // This can help in cases where you see rendering issues in VS Code. + // "disable-hardware-acceleration": true, + + // Allows to disable crash reporting. + // Should restart the app if the value is changed. + "enable-crash-reporter": true, + + // Unique id used for correlating crash reports sent from this instance. + // Do not edit this value. + "crash-reporter-id": "d2c346d5-3324-4244-8429-4d07addc725d", + "password-store": "basic" +} \ No newline at end of file diff --git a/.vscode/extensions/.obsolete b/.vscode/extensions/.obsolete new file mode 100644 index 0000000..70f3f78 --- /dev/null +++ b/.vscode/extensions/.obsolete @@ -0,0 +1 @@ +{"coder.coder-remote-1.11.5":true} \ No newline at end of file diff --git a/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/.vsixmanifest b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/.vsixmanifest new file mode 100644 index 0000000..de27742 --- /dev/null +++ b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/.vsixmanifest @@ -0,0 +1,48 @@ + + + + + VSCode Neovim + Vim mode for VSCode, powered by Neovim + keybindings,vi,vim,neovim + Other,Keymaps + Public + + + + + + + + + + + + + + + + + + + + + + + + + extension/LICENSE.txt + extension/images/icon.png + + + + + + + + + + + + + \ No newline at end of file diff --git a/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/LICENSE.txt b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/LICENSE.txt new file mode 100644 index 0000000..752c926 --- /dev/null +++ b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Alexey Svetliakov + +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. diff --git a/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/changelog.md b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/changelog.md new file mode 100644 index 0000000..052fb90 --- /dev/null +++ b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/changelog.md @@ -0,0 +1,1459 @@ +# Change Log + +## [1.18.24](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.23...v1.18.24) (2025-08-08) + + +### Bug Fixes + +* make statusline empty by default ([#2520](https://github.com/vscode-neovim/vscode-neovim/issues/2520)) ([c5ad5df](https://github.com/vscode-neovim/vscode-neovim/commit/c5ad5df4c50d82c7839aad38e88903b7d5f046b7)) + + +### Documentation + +* fix affinity link [#2501](https://github.com/vscode-neovim/vscode-neovim/issues/2501) ([f0ad116](https://github.com/vscode-neovim/vscode-neovim/commit/f0ad11658e739bdd7f78cd698c4f5a10efb5a735)) + +## [1.18.23](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.22...v1.18.23) (2025-07-14) + + +### Bug Fixes + +* fallback statusline to empty ([#2518](https://github.com/vscode-neovim/vscode-neovim/issues/2518)) ([ec20106](https://github.com/vscode-neovim/vscode-neovim/commit/ec20106a05b24d1c294cafad86c92909ac0256c9)) + +## [1.18.22](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.21...v1.18.22) (2025-05-22) + + +### Bug Fixes + +* add optional delay parameter to with_insert callback ([#2479](https://github.com/vscode-neovim/vscode-neovim/issues/2479)) ([ae4d02c](https://github.com/vscode-neovim/vscode-neovim/commit/ae4d02c047bdba9aab7907176b60c7b2ec8b0d0a)) + +## [1.18.21](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.20...v1.18.21) (2025-05-07) + + +### Bug Fixes + +* ignore editors without `ViewColumn` in nvim-0.10 ([#2470](https://github.com/vscode-neovim/vscode-neovim/issues/2470)) ([b7a9faf](https://github.com/vscode-neovim/vscode-neovim/commit/b7a9faf75b5bffde6a9f01de56411ad7c349e11f)) + + +### Documentation + +* fix old name for logs Output channel [#2460](https://github.com/vscode-neovim/vscode-neovim/issues/2460) ([38f8d86](https://github.com/vscode-neovim/vscode-neovim/commit/38f8d86ecea0801ef18e03e5a6cded49d8ca51fd)) + +## [1.18.20](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.19...v1.18.20) (2025-04-19) + + +### Bug Fixes + +* **api:** update configuration target options to include "workspace_folder" ([#2447](https://github.com/vscode-neovim/vscode-neovim/issues/2447)) ([68f68b9](https://github.com/vscode-neovim/vscode-neovim/commit/68f68b9562e34a1c72e0ed9478d73bb293e283a0)) +* force `winborder` to `none` ([#2444](https://github.com/vscode-neovim/vscode-neovim/issues/2444)) ([4a444b4](https://github.com/vscode-neovim/vscode-neovim/commit/4a444b4c60dc3dd6381fa66d3e6ebccca618d15b)) +* use the cursor style from VS Code as the style for insert mode ([#2455](https://github.com/vscode-neovim/vscode-neovim/issues/2455)) ([2a632e0](https://github.com/vscode-neovim/vscode-neovim/commit/2a632e0ee0f2576ec3569f02c219a5ddbe18ff6b)) + + +### Performance Improvements + +* avoid unnecessary sending of editor options to neovim ([#2419](https://github.com/vscode-neovim/vscode-neovim/issues/2419)) ([041e540](https://github.com/vscode-neovim/vscode-neovim/commit/041e540ab30e9dd6474292755ef2152ff8018d01)) + +## [1.18.19](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.18...v1.18.19) (2025-03-15) + + +### Bug Fixes + +* **api:** add delay for cursor synchronization in with_insert ([#2415](https://github.com/vscode-neovim/vscode-neovim/issues/2415)) ([15191dd](https://github.com/vscode-neovim/vscode-neovim/commit/15191dd161615c1f2f2aa6a0b737ddeb7d70ae06)) +* do not open the file automatically after writing ([#2416](https://github.com/vscode-neovim/vscode-neovim/issues/2416)) ([2564492](https://github.com/vscode-neovim/vscode-neovim/commit/2564492ca5e0ba65e89602abee6e0d77fa3f43be)) +* exit visual mode on mouse click or selection cancel ([#2300](https://github.com/vscode-neovim/vscode-neovim/issues/2300)) ([fe35981](https://github.com/vscode-neovim/vscode-neovim/commit/fe3598163d468b5daac76299c3f796cfdeeb5d29)) +* Fix assertContent cursor position parameter ([fe35981](https://github.com/vscode-neovim/vscode-neovim/commit/fe3598163d468b5daac76299c3f796cfdeeb5d29)) +* improve window change handling with cancellation support ([#2417](https://github.com/vscode-neovim/vscode-neovim/issues/2417)) ([0520846](https://github.com/vscode-neovim/vscode-neovim/commit/0520846ad9c583f89648020261323d0845cbb3cf)) +* **test:** normalize EOL ([#2402](https://github.com/vscode-neovim/vscode-neovim/issues/2402)) ([c095de7](https://github.com/vscode-neovim/vscode-neovim/commit/c095de724ed0aeb3d94f9bc8552fffedc4dbecff)) +* **test:** use custom `clipboardCopyAction` implementation ([#2414](https://github.com/vscode-neovim/vscode-neovim/issues/2414)) ([4a7675f](https://github.com/vscode-neovim/vscode-neovim/commit/4a7675fe6ed45478d8e6745fefd04717ab1afd48)) +* treat all auto-generated documents as external ([#2418](https://github.com/vscode-neovim/vscode-neovim/issues/2418)) ([9754628](https://github.com/vscode-neovim/vscode-neovim/commit/9754628e9baff55f62cf4a9bb15cf239ae9cceee)) + +## [1.18.18](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.17...v1.18.18) (2025-02-27) + + +### Bug Fixes + +* we need to execute treesitter parsing manually ([#2400](https://github.com/vscode-neovim/vscode-neovim/issues/2400)) ([81f5202](https://github.com/vscode-neovim/vscode-neovim/commit/81f5202cff7146f22c48a5a07adcf230a82bfc96)) + +## [1.18.17](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.16...v1.18.17) (2025-02-17) + + +### Bug Fixes + +* **defaults:** keybindings for ctrl+[BracketLeft], ctrl+[BracketRight] as alternatives for ctrl+[ and ctrl+]. ([#2390](https://github.com/vscode-neovim/vscode-neovim/issues/2390)) ([cdbead6](https://github.com/vscode-neovim/vscode-neovim/commit/cdbead63951da0af72b5cd9e9e77a8697944ae42)) + +## [1.18.16](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.15...v1.18.16) (2025-02-10) + + +### Bug Fixes + +* replace execSync with spawnSync ([#2376](https://github.com/vscode-neovim/vscode-neovim/issues/2376)) ([f245bf7](https://github.com/vscode-neovim/vscode-neovim/commit/f245bf7c75a0a7e26d45f3eab9ce2c3df402630e)) + +## [1.18.15](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.14...v1.18.15) (2025-01-20) + + +### Bug Fixes + +* treesitter language injections ([#2356](https://github.com/vscode-neovim/vscode-neovim/issues/2356)) ([4077b73](https://github.com/vscode-neovim/vscode-neovim/commit/4077b73eaf4e0eb7f302f38a3d5b93f7d15c7933)) + + +### Documentation + +* fix link [#2327](https://github.com/vscode-neovim/vscode-neovim/issues/2327) ([e0eba53](https://github.com/vscode-neovim/vscode-neovim/commit/e0eba53505efbffbf7c046fb347a915b14bebdd0)) +* vscode docs for the "when" clause [#2358](https://github.com/vscode-neovim/vscode-neovim/issues/2358) ([1180372](https://github.com/vscode-neovim/vscode-neovim/commit/1180372bc0b147af02d4e956a944bb817e02e905)), closes [#2357](https://github.com/vscode-neovim/vscode-neovim/issues/2357) + +## [1.18.14](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.13...v1.18.14) (2024-11-02) + + +### Bug Fixes + +* **buffers:** Fix saving to files inside symlinked workspaces ([#2302](https://github.com/vscode-neovim/vscode-neovim/issues/2302)) ([607b4c7](https://github.com/vscode-neovim/vscode-neovim/commit/607b4c7c387384d9a0e565ca4fb00cafe07112a3)) +* **startup:** null reference in onDidChangeWindowState handler [#2290](https://github.com/vscode-neovim/vscode-neovim/issues/2290) ([c3e8387](https://github.com/vscode-neovim/vscode-neovim/commit/c3e8387a9e9f923ec39c28af6cb8985ca431e438)) + + +### Documentation + +* how to configure Debug logging [#2291](https://github.com/vscode-neovim/vscode-neovim/issues/2291) ([292537b](https://github.com/vscode-neovim/vscode-neovim/commit/292537b7626b9ff82b7d9bf042145dd46b78e385)) + +## [1.18.13](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.12...v1.18.13) (2024-10-15) + + +### Bug Fixes + +* prevent loop on OptionSet ([#2282](https://github.com/vscode-neovim/vscode-neovim/issues/2282)) ([5437cd6](https://github.com/vscode-neovim/vscode-neovim/commit/5437cd6412af1000270afffc33b01b827e97618d)) +* update link to #performance docs from vscode affinity prompt ([#2254](https://github.com/vscode-neovim/vscode-neovim/issues/2254)) ([6505e54](https://github.com/vscode-neovim/vscode-neovim/commit/6505e542ae31cd12baba8624de88740f86978b2d)) + + +### Documentation + +* fix formatting ([4df0f6e](https://github.com/vscode-neovim/vscode-neovim/commit/4df0f6e3a61285ed7e090ceb6d1253288a4b092f)) + +## [1.18.12](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.11...v1.18.12) (2024-09-16) + + +### Bug Fixes + +* **buffers:** async window/buffer cleanup [#2230](https://github.com/vscode-neovim/vscode-neovim/issues/2230) ([396a0bc](https://github.com/vscode-neovim/vscode-neovim/commit/396a0bc3fb0a37fc6014470f4609808e17920c98)) + + +### Documentation + +* update issue template ([00197da](https://github.com/vscode-neovim/vscode-neovim/commit/00197da06342d210f381bc25e0185a448bef063d)) + +## [1.18.11](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.10...v1.18.11) (2024-09-08) + + +### Bug Fixes + +* **startup:** unclear "minimum version" message for nvim prerelease ([#2229](https://github.com/vscode-neovim/vscode-neovim/issues/2229)) ([88cf605](https://github.com/vscode-neovim/vscode-neovim/commit/88cf6059f5fc327af14e1930dfe3c31b213e97c3)) + +## [1.18.10](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.9...v1.18.10) (2024-09-06) + + +### Documentation + +* update README.md with snap installation details ([#2215](https://github.com/vscode-neovim/vscode-neovim/issues/2215)) ([429cb38](https://github.com/vscode-neovim/vscode-neovim/commit/429cb3878d29604aea1ab6559bf3dd5a693a4190)) + + +### Refactor + +* follow nvim ui-messages protocol ([#2177](https://github.com/vscode-neovim/vscode-neovim/issues/2177)) ([bc42292](https://github.com/vscode-neovim/vscode-neovim/commit/bc422929ca0314aafe98653ce2b7d88f4e643b0a)) + +## [1.18.9](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.8...v1.18.9) (2024-08-31) + + +### Bug Fixes + +* **cursor:** compare active position, not selection ([#2213](https://github.com/vscode-neovim/vscode-neovim/issues/2213)) ([e9d6584](https://github.com/vscode-neovim/vscode-neovim/commit/e9d6584f324e6a5725305c27610dcbf722b1e9f8)) + +## [1.18.8](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.7...v1.18.8) (2024-08-12) + + +### Bug Fixes + +* handle `topline` in the `viewport-changed` event ([#2197](https://github.com/vscode-neovim/vscode-neovim/issues/2197)) ([c7145f2](https://github.com/vscode-neovim/vscode-neovim/commit/c7145f2ef8079168b80a20a04ef9022ed06924dc)) +* handle topline in the viewport-changed event ([c7145f2](https://github.com/vscode-neovim/vscode-neovim/commit/c7145f2ef8079168b80a20a04ef9022ed06924dc)) + +## [1.18.7](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.6...v1.18.7) (2024-08-02) + + +### chore + +* release 1.18.7 ([9b64ffb](https://github.com/vscode-neovim/vscode-neovim/commit/9b64ffb37dd11edc98b4f85848a0c3624e82a825)) + +## [1.18.6](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.5...v1.18.6) (2024-07-26) + + +### Bug Fixes + +* avoid unnecessary rpcnotify that cause crashs (temporary fix) ([#2179](https://github.com/vscode-neovim/vscode-neovim/issues/2179)) ([cc54e2b](https://github.com/vscode-neovim/vscode-neovim/commit/cc54e2b0738c495f3ea6eef3ba9dbef6d37d3ec8)) +* **highlight:** leading dashes could be combined with statuscolumn ([#2187](https://github.com/vscode-neovim/vscode-neovim/issues/2187)) ([9eb7eed](https://github.com/vscode-neovim/vscode-neovim/commit/9eb7eed232d6f849106951fc7ee44521bf051f32)) +* queue text document change events ([#2183](https://github.com/vscode-neovim/vscode-neovim/issues/2183)) ([8944a06](https://github.com/vscode-neovim/vscode-neovim/commit/8944a066e66b544da359ad1bb0781bb663a7c53a)) + +## [1.18.5](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.4...v1.18.5) (2024-07-20) + + +### Bug Fixes + +* Fix multi-byte character selection in Nvim 0.10 blockwise visual ([#2169](https://github.com/vscode-neovim/vscode-neovim/issues/2169)) ([2f68d87](https://github.com/vscode-neovim/vscode-neovim/commit/2f68d87e44f65e114e4061917ff2abbaac0e99de)) +* manually set languageId to buffer filetype for special documents ([#2174](https://github.com/vscode-neovim/vscode-neovim/issues/2174)) ([fad8034](https://github.com/vscode-neovim/vscode-neovim/commit/fad803423adb2ea174cd4a60a100d475c7a260ed)) + + +### Refactor + +* Improve explanation of Ctrl+key in settings menu ([#2168](https://github.com/vscode-neovim/vscode-neovim/issues/2168)) ([f305226](https://github.com/vscode-neovim/vscode-neovim/commit/f305226eb33dcdb8de5ac7eba6376ff7d72c138e)) +* Improve usability of afterInitConfig option in the settings ([#2167](https://github.com/vscode-neovim/vscode-neovim/issues/2167)) ([fe586e1](https://github.com/vscode-neovim/vscode-neovim/commit/fe586e1a62f618be3ae434dd9076e8ef1acca5c5)) + +## [1.18.4](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.3...v1.18.4) (2024-07-14) + + +### Bug Fixes + +* Cancel UI-affecting tasks upon disposal ([#2161](https://github.com/vscode-neovim/vscode-neovim/issues/2161)) ([508d6b3](https://github.com/vscode-neovim/vscode-neovim/commit/508d6b3094f06b25ec72a9e39953bf697b88c342)) + + +### Refactor + +* `pending_updates` -> `/utils` `cmdline_text` -> `/cmdline` ([#2159](https://github.com/vscode-neovim/vscode-neovim/issues/2159)) ([cf62ea4](https://github.com/vscode-neovim/vscode-neovim/commit/cf62ea42c12cecae31c1be931f46312d4734219f)) + +## [1.18.3](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.2...v1.18.3) (2024-07-10) + + +### Bug Fixes + +* **highlight:** Fix pattern matching of syntax groups ([#2150](https://github.com/vscode-neovim/vscode-neovim/issues/2150)) ([78dc156](https://github.com/vscode-neovim/vscode-neovim/commit/78dc156c453c9e6457c81092c24be7d14b54e0be)) +* **with_insert:** Correct "a" or "i" to enter insert mode ([#2152](https://github.com/vscode-neovim/vscode-neovim/issues/2152)) ([dfa195b](https://github.com/vscode-neovim/vscode-neovim/commit/dfa195bfb1b1d2129294738bf3479efe6a6db5b9)) + + +### Documentation + +* Add settings and commands section ([#2148](https://github.com/vscode-neovim/vscode-neovim/issues/2148)) ([40d6016](https://github.com/vscode-neovim/vscode-neovim/commit/40d6016b767de976fbda074cd76b8dc9b8f3cb5d)) +* simplify readme ([#2155](https://github.com/vscode-neovim/vscode-neovim/issues/2155)) ([fb33462](https://github.com/vscode-neovim/vscode-neovim/commit/fb33462a40dce6f44f31c0079b3063303887f59e)) + + +### Refactor + +* Remove debounce time limit for sync mouse selection ([#2153](https://github.com/vscode-neovim/vscode-neovim/issues/2153)) ([af78dc9](https://github.com/vscode-neovim/vscode-neovim/commit/af78dc9cbebd0177b2178f93cfbf6dbc0e3adf6e)) +* Simplify invoking Treesitter parsing and ensure more timely parsing ([#2154](https://github.com/vscode-neovim/vscode-neovim/issues/2154)) ([be2ae6b](https://github.com/vscode-neovim/vscode-neovim/commit/be2ae6b2e68382c7823abb777e7bbb13049d6fb8)) + +## [1.18.2](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.1...v1.18.2) (2024-07-07) + + +### Bug Fixes + +* rapid cmdline_show/cmdline_hides would not be handled logically ([#2140](https://github.com/vscode-neovim/vscode-neovim/issues/2140)) ([7d65a19](https://github.com/vscode-neovim/vscode-neovim/commit/7d65a19d63cf3ff8453d7ab20e2299037a320b4b)) + +## [1.18.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.18.0...v1.18.1) (2024-07-05) + + +### chore + +* release 1.18.1 ([8500b65](https://github.com/vscode-neovim/vscode-neovim/commit/8500b65636c7e916d07301de90fa4131bfadfe46)) + + +### Features + +* Add progress indicator for layout sync ([#2137](https://github.com/vscode-neovim/vscode-neovim/issues/2137)) ([81bcdab](https://github.com/vscode-neovim/vscode-neovim/commit/81bcdabff59784fc5fb8de0ddbea648fbb305139)) + +## [1.18.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.17.2...v1.18.0) (2024-07-02) + + +### Features + +* **buffer:** sync dirty buffer state ([#2127](https://github.com/vscode-neovim/vscode-neovim/issues/2127)) ([61f4e4f](https://github.com/vscode-neovim/vscode-neovim/commit/61f4e4f842d7a7a559b60e7e82f3acb26c908abb)) +* Integrate BufWriteCmd for "write" command ([#2116](https://github.com/vscode-neovim/vscode-neovim/issues/2116)) ([8606eb1](https://github.com/vscode-neovim/vscode-neovim/commit/8606eb183a420223c0fc102639b8b3ad753cfecb)) + + +### Refactor + +* Use labeled tuple elements for event data types ([#2129](https://github.com/vscode-neovim/vscode-neovim/issues/2129)) ([08e973d](https://github.com/vscode-neovim/vscode-neovim/commit/08e973d20e93835416c3c5a7bd3a81239c02d213)) + +## [1.17.2](https://github.com/vscode-neovim/vscode-neovim/compare/v1.17.1...v1.17.2) (2024-06-15) + + +### Bug Fixes + +* **highlights:** wait for doc changes before updating highlights ([#2112](https://github.com/vscode-neovim/vscode-neovim/issues/2112)) ([0835225](https://github.com/vscode-neovim/vscode-neovim/commit/083522555ad3d269b83da3885cb18f0982a396be)) +* **messages:** Limit the minimum value of `cmdheight` to 1 ([#2110](https://github.com/vscode-neovim/vscode-neovim/issues/2110)) ([1e29f60](https://github.com/vscode-neovim/vscode-neovim/commit/1e29f604487b66f2cb682c1f24e65ac1e97def20)) + +## [1.17.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.17.0...v1.17.1) (2024-06-15) + + +### Bug Fixes + +* adapt to Nvim deprecations in 0.10 ([#2108](https://github.com/vscode-neovim/vscode-neovim/issues/2108)) ([4c04ebc](https://github.com/vscode-neovim/vscode-neovim/commit/4c04ebc399e7cdf44476247da0b58430ed025c70)) +* Align output with nvim messages and auto show based on cmdheight ([#2105](https://github.com/vscode-neovim/vscode-neovim/issues/2105)) ([4ca8fbf](https://github.com/vscode-neovim/vscode-neovim/commit/4ca8fbf70edfaaf080823d583e8d2105ace0c06e)) +* **buffer:** avoid concurrent syncs and stale data ([#2103](https://github.com/vscode-neovim/vscode-neovim/issues/2103)) ([59246d6](https://github.com/vscode-neovim/vscode-neovim/commit/59246d624f9cdc4ed141006de621f486b5f5586c)) + +## [1.17.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.16.0...v1.17.0) (2024-06-11) + + +### Features + +* **highlight:** draw grid lines accurately ([#2090](https://github.com/vscode-neovim/vscode-neovim/issues/2090)) ([50a7d5c](https://github.com/vscode-neovim/vscode-neovim/commit/50a7d5cc50b085beaffa156ccc4873c00d764569)) + +## [1.16.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.15.2...v1.16.0) (2024-06-09) + + +### Features + +* ctrl+n/ctrl+p for selecting rename suggestions ([#2093](https://github.com/vscode-neovim/vscode-neovim/issues/2093)) ([bbf5df3](https://github.com/vscode-neovim/vscode-neovim/commit/bbf5df3436db1cf47337933410c0b7d20aa22b0c)) + + +### Bug Fixes + +* ensure statusline messages are shown for a minimum amount of time before clears are effective ([#2068](https://github.com/vscode-neovim/vscode-neovim/issues/2068)) ([a8064e3](https://github.com/vscode-neovim/vscode-neovim/commit/a8064e3a6c1b3e4fd5c97fae7f0061c26bde6fe0)) +* remove maximum debounce time for normal selection ([#2082](https://github.com/vscode-neovim/vscode-neovim/issues/2082)) ([2bd5166](https://github.com/vscode-neovim/vscode-neovim/commit/2bd5166970421795b8ca5af2f55813167c6862e7)) + + +### Documentation + +* add configuration compatibility section to README ([65366d3](https://github.com/vscode-neovim/vscode-neovim/commit/65366d3b17fc7210ec8ff4ee841348d303fa8936)) +* add configuration compatibility section to README ([#2092](https://github.com/vscode-neovim/vscode-neovim/issues/2092)) ([65366d3](https://github.com/vscode-neovim/vscode-neovim/commit/65366d3b17fc7210ec8ff4ee841348d303fa8936)) +* **contributing:** fix sunmeko.lua link ([#2088](https://github.com/vscode-neovim/vscode-neovim/issues/2088)) ([fd9d34a](https://github.com/vscode-neovim/vscode-neovim/commit/fd9d34a96cf1c614edd02093f4b08b8ff1116748)) +* fix broken link for 0.10 compat ([#2094](https://github.com/vscode-neovim/vscode-neovim/issues/2094)) ([8f95e4f](https://github.com/vscode-neovim/vscode-neovim/commit/8f95e4f0f6d20dfd3b6b7c5ee6c44c4d66a1b1cd)) + +## [1.15.2](https://github.com/vscode-neovim/vscode-neovim/compare/v1.15.1...v1.15.2) (2024-06-06) + + +### Bug Fixes + +* set current dir in nvim ([#2078](https://github.com/vscode-neovim/vscode-neovim/issues/2078)) ([01aadaa](https://github.com/vscode-neovim/vscode-neovim/commit/01aadaa9f3074b0622d20daefc694b4933f3a8d7)) + +## [1.15.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.15.0...v1.15.1) (2024-06-04) + + +### Bug Fixes + +* Fix setting the cwd in remote development ([#2062](https://github.com/vscode-neovim/vscode-neovim/issues/2062)) ([62bab05](https://github.com/vscode-neovim/vscode-neovim/commit/62bab0597590ba4445b57b98653b2f0dd60ee002)) + +## [1.15.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.14.2...v1.15.0) (2024-06-03) + + +### Features + +* **lua:** Add "vscode.with_insert" ([#2055](https://github.com/vscode-neovim/vscode-neovim/issues/2055)) ([be8812f](https://github.com/vscode-neovim/vscode-neovim/commit/be8812f7fbdc20917e18d844507001f2b347a07e)) +* override vim.lsp.buf methods ([#2045](https://github.com/vscode-neovim/vscode-neovim/issues/2045)) ([f7fbce1](https://github.com/vscode-neovim/vscode-neovim/commit/f7fbce1010090377f6050cc94e4a331a1eaaf9ca)) + + +### Bug Fixes + +* add the missing "local" in "vscode.notify" ([2d8230c](https://github.com/vscode-neovim/vscode-neovim/commit/2d8230cc41cfe9ce23a1a56105182c4b98629a87)) +* don't show output panel after return_prompt, reverts [#2029](https://github.com/vscode-neovim/vscode-neovim/issues/2029) ([#2061](https://github.com/vscode-neovim/vscode-neovim/issues/2061)) ([6250a1d](https://github.com/vscode-neovim/vscode-neovim/commit/6250a1d00cea0fef7913c00b85176211ba7bc926)) + + +### Refactor + +* init output channels in the corresponding manager ([#2053](https://github.com/vscode-neovim/vscode-neovim/issues/2053)) ([927ed95](https://github.com/vscode-neovim/vscode-neovim/commit/927ed955d9075f40bb5f2f40d2ad9e057f13906c)) + +## [1.14.2](https://github.com/vscode-neovim/vscode-neovim/compare/v1.14.1...v1.14.2) (2024-06-01) + + +### Bug Fixes + +* detect potential module conflicts ([#2041](https://github.com/vscode-neovim/vscode-neovim/issues/2041)) ([04c6fc2](https://github.com/vscode-neovim/vscode-neovim/commit/04c6fc29269a636bd752230f8f59b132dc1efd29)) + +## [1.14.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.14.0...v1.14.1) (2024-05-30) + + +### Bug Fixes + +* Correctly set doc version for skipping changes ([#2037](https://github.com/vscode-neovim/vscode-neovim/issues/2037)) ([9e95dbe](https://github.com/vscode-neovim/vscode-neovim/commit/9e95dbe36cb3fac4c172cc35edbf46cc69dd8922)) + +## [1.14.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.13.1...v1.14.0) (2024-05-30) + + +### Features + +* move output messages to a separate channel ([#2022](https://github.com/vscode-neovim/vscode-neovim/issues/2022)) ([39e1ae2](https://github.com/vscode-neovim/vscode-neovim/commit/39e1ae2c780289e77abd0eb207c80a61f7e5f6c4)) +* revamp messages output channel ([#2024](https://github.com/vscode-neovim/vscode-neovim/issues/2024)) ([0957121](https://github.com/vscode-neovim/vscode-neovim/commit/09571212c176225ea3eca4f351296ed464b804b5)) +* show output when return_prompt is sent ([#2029](https://github.com/vscode-neovim/vscode-neovim/issues/2029)) ([625397e](https://github.com/vscode-neovim/vscode-neovim/commit/625397efef2913321f090c93fb43ecb791182234)) + + +### Bug Fixes + +* account for level when handling cmdline_hide events ([#2034](https://github.com/vscode-neovim/vscode-neovim/issues/2034)) ([8760f81](https://github.com/vscode-neovim/vscode-neovim/commit/8760f81fd82d5daf3db70712cd379cd1356a0d18)) +* correctly dispose the output channels ([#2033](https://github.com/vscode-neovim/vscode-neovim/issues/2033)) ([dde1b79](https://github.com/vscode-neovim/vscode-neovim/commit/dde1b798db9f9e1639dcc7e316be388949ac7563)) +* pulling status causes a redraw ([#2032](https://github.com/vscode-neovim/vscode-neovim/issues/2032)) ([fbc7c0d](https://github.com/vscode-neovim/vscode-neovim/commit/fbc7c0dc4c3a21ac3c801f800844b3673a32abbd)) +* remove redundant error message on disconnect ([#2026](https://github.com/vscode-neovim/vscode-neovim/issues/2026)) ([95171d2](https://github.com/vscode-neovim/vscode-neovim/commit/95171d2aa7e5427e200f4fe214cd0e510c1a2dbb)) +* update expected cursor when multiple docs change ([#2035](https://github.com/vscode-neovim/vscode-neovim/issues/2035)) ([504da9e](https://github.com/vscode-neovim/vscode-neovim/commit/504da9eb1516c7890cf00d50b6916fd4c6578008)) + + +### Refactor + +* clean up deprecated content ([#2012](https://github.com/vscode-neovim/vscode-neovim/issues/2012)) ([940cd4a](https://github.com/vscode-neovim/vscode-neovim/commit/940cd4a65cbc10a562aad790c4a4ab204540e914)) +* **lua:** rename the module vscode-neovim to vscode ([#1997](https://github.com/vscode-neovim/vscode-neovim/issues/1997)) ([109e125](https://github.com/vscode-neovim/vscode-neovim/commit/109e125210e4c2936e1775735e887a020fdd336a)) +* move "vim/" and merge it into "runtime/" ([#2017](https://github.com/vscode-neovim/vscode-neovim/issues/2017)) ([3a5ecb2](https://github.com/vscode-neovim/vscode-neovim/commit/3a5ecb26086ca9f4add610e8d6844e1762e9d122)) +* set enforced options in Lua ([#2011](https://github.com/vscode-neovim/vscode-neovim/issues/2011)) ([798792c](https://github.com/vscode-neovim/vscode-neovim/commit/798792c0b2c0c6e5ff1507b73fd5731f6bb6d31d)) + +## [1.13.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.13.0...v1.13.1) (2024-05-25) + + +### Bug Fixes + +* **cmdline:** allow enter to accept cmdline after completion selected ([#2007](https://github.com/vscode-neovim/vscode-neovim/issues/2007)) ([d09891f](https://github.com/vscode-neovim/vscode-neovim/commit/d09891ff80c1088c5f8ab510a392ae682fc04bb1)) + +## [1.13.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.12.0...v1.13.0) (2024-05-25) + + +### Features + +* **cmdline:** integrate with native neovim completions ([#2001](https://github.com/vscode-neovim/vscode-neovim/issues/2001)) ([9ed0be0](https://github.com/vscode-neovim/vscode-neovim/commit/9ed0be0b0901d36509b79e1eab57aba136dbc722)) + +## [1.12.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.11.5...v1.12.0) (2024-05-21) + + +### Features + +* Support inccommand, including "split" ([c01e149](https://github.com/vscode-neovim/vscode-neovim/commit/c01e1496e1ec5a46872297cabb3ed0a46ecc6f1c)) + + +### Bug Fixes + +* cursor position after scrolling with incsearch ([5fedba5](https://github.com/vscode-neovim/vscode-neovim/commit/5fedba50aff4de3fb742ba1877a07cdbbee581d3)) +* **highlight:** forward search / matching in long lines ([#1976](https://github.com/vscode-neovim/vscode-neovim/issues/1976)) ([5fedba5](https://github.com/vscode-neovim/vscode-neovim/commit/5fedba50aff4de3fb742ba1877a07cdbbee581d3)) +* set highlight group Subsitute ([#1983](https://github.com/vscode-neovim/vscode-neovim/issues/1983)) ([479638f](https://github.com/vscode-neovim/vscode-neovim/commit/479638fb0bac36d1d9f003e593f6ab43ca0d59b9)) +* sometimes eol highlight being displayed incorrectly ([#1988](https://github.com/vscode-neovim/vscode-neovim/issues/1988)) ([9e208f2](https://github.com/vscode-neovim/vscode-neovim/commit/9e208f24f50137e6899bb4c6743e09cc4adedc9d)) +* wildmenu items are being set repeatedly ([#1989](https://github.com/vscode-neovim/vscode-neovim/issues/1989)) ([fc48f03](https://github.com/vscode-neovim/vscode-neovim/commit/fc48f03d405f4a3a0e77d9ed4ead7efa8292f05e)) +* wildmenu sometimes not showing ([c01e149](https://github.com/vscode-neovim/vscode-neovim/commit/c01e1496e1ec5a46872297cabb3ed0a46ecc6f1c)) + + +### Documentation + +* indicate you can view logs in the Debug Console ([#1995](https://github.com/vscode-neovim/vscode-neovim/issues/1995)) ([c00e7dc](https://github.com/vscode-neovim/vscode-neovim/commit/c00e7dc7141ad9c160e72701c393a53aeffa22d0)) + + +### Refactor + +* don't hardcode substitute highlight ([#1991](https://github.com/vscode-neovim/vscode-neovim/issues/1991)) ([1b6bb7b](https://github.com/vscode-neovim/vscode-neovim/commit/1b6bb7b917ce31594826fea541547effc4622e7d)) +* **lua:** move autocmds,filetype to runtime/modules ([#1990](https://github.com/vscode-neovim/vscode-neovim/issues/1990)) ([c81e64d](https://github.com/vscode-neovim/vscode-neovim/commit/c81e64dd0f0502f79b14fe2430d7d442f347fd85)) +* remove the border of the custom highlights ([479638f](https://github.com/vscode-neovim/vscode-neovim/commit/479638fb0bac36d1d9f003e593f6ab43ca0d59b9)) +* remove viewport hack when in cmdline mode ([5fedba5](https://github.com/vscode-neovim/vscode-neovim/commit/5fedba50aff4de3fb742ba1877a07cdbbee581d3)) + +## [1.11.5](https://github.com/vscode-neovim/vscode-neovim/compare/v1.11.4...v1.11.5) (2024-05-17) + + +### Bug Fixes + +* **eval:** try serializing the object result ([#1966](https://github.com/vscode-neovim/vscode-neovim/issues/1966)) ([b387d29](https://github.com/vscode-neovim/vscode-neovim/commit/b387d29568ca7976851fa7a1b485e204b7d34b08)) +* **incsearch:** win cursor not properly revealed ([#1971](https://github.com/vscode-neovim/vscode-neovim/issues/1971)) ([116abdd](https://github.com/vscode-neovim/vscode-neovim/commit/116abddcb70a2daccf6fd9e29b51b08724c3141c)) +* reduce text jumpiness when using the substitute command ([#1973](https://github.com/vscode-neovim/vscode-neovim/issues/1973)) ([d6e44dd](https://github.com/vscode-neovim/vscode-neovim/commit/d6e44dda9d46463879ae5733ee157dbae3c90a23)) + +## [1.11.4](https://github.com/vscode-neovim/vscode-neovim/compare/v1.11.3...v1.11.4) (2024-05-14) + + +### ⚠ BREAKING CHANGES + +* use VSCode log level instead of our own ([#1962](https://github.com/vscode-neovim/vscode-neovim/issues/1962)) + +### chore + +* release 1.11.4 ([3137516](https://github.com/vscode-neovim/vscode-neovim/commit/3137516c221a40f83b67c703137aad84f76868a7)) + + +### Features + +* use VSCode log level instead of our own ([#1962](https://github.com/vscode-neovim/vscode-neovim/issues/1962)) ([5f1bc49](https://github.com/vscode-neovim/vscode-neovim/commit/5f1bc495c2499f97448752489e1e1b2f5d466b9a)) + + +### Bug Fixes + +* include time and scope in log file ([#1951](https://github.com/vscode-neovim/vscode-neovim/issues/1951)) ([cccdf99](https://github.com/vscode-neovim/vscode-neovim/commit/cccdf9936c03a091e39811d55876c4dfab0dc7fb)) +* setup highlights timely ([#1964](https://github.com/vscode-neovim/vscode-neovim/issues/1964)) ([6c220c7](https://github.com/vscode-neovim/vscode-neovim/commit/6c220c7dc3f036529492a1fef197a790a24c2077)) + +## [1.11.3](https://github.com/vscode-neovim/vscode-neovim/compare/v1.11.2...v1.11.3) (2024-05-09) + + +### Bug Fixes + +* redraw events are processed in order ([#1940](https://github.com/vscode-neovim/vscode-neovim/issues/1940)) ([122eb56](https://github.com/vscode-neovim/vscode-neovim/commit/122eb56c9bd00570ea58b1da778fddb670437ae9)) + +## [1.11.2](https://github.com/vscode-neovim/vscode-neovim/compare/v1.11.1...v1.11.2) (2024-05-06) + + +### Bug Fixes + +* set an explicit id for status bar item ([#1941](https://github.com/vscode-neovim/vscode-neovim/issues/1941)) ([8c1f5a0](https://github.com/vscode-neovim/vscode-neovim/commit/8c1f5a093e13cf80638478f479c63807122d8bfd)) +* should setup highlights on WinNew,BufNew ([#1944](https://github.com/vscode-neovim/vscode-neovim/issues/1944)) ([178483c](https://github.com/vscode-neovim/vscode-neovim/commit/178483c4d6a7812976ffb0e7b88f84b25a425fed)) + + +### Documentation + +* Improve documentation and examples for composite keys ([#1933](https://github.com/vscode-neovim/vscode-neovim/issues/1933)) ([c0edf52](https://github.com/vscode-neovim/vscode-neovim/commit/c0edf52d042f477652778a75992fea08a62870fd)) + + +### Refactor + +* enable vscode-neovim.lua to accept an array of strings ([#1930](https://github.com/vscode-neovim/vscode-neovim/issues/1930)) ([8becac6](https://github.com/vscode-neovim/vscode-neovim/commit/8becac679ffed5ccfc86191d373c076d3abb2430)) +* register type commands only when needed ([#1931](https://github.com/vscode-neovim/vscode-neovim/issues/1931)) ([f25b899](https://github.com/vscode-neovim/vscode-neovim/commit/f25b8991993992987817a7a82185d63be3d1d2a1)) + +## [1.11.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.11.0...v1.11.1) (2024-05-01) + + +### Bug Fixes + +* Match any ASCII characters in composite keys ([#1923](https://github.com/vscode-neovim/vscode-neovim/issues/1923)) ([51e2f11](https://github.com/vscode-neovim/vscode-neovim/commit/51e2f11c474ed7b1f9c2817f6e498805abca4ae2)) + +## [1.11.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.10.1...v1.11.0) (2024-04-30) + + +### ⚠ BREAKING CHANGES + +* The old composite commands are removed. + +### Features + +* better composite key support ([#1917](https://github.com/vscode-neovim/vscode-neovim/issues/1917)) ([44808b3](https://github.com/vscode-neovim/vscode-neovim/commit/44808b399a17aa1c59f64313773c6ea7b5fe2385)) + + +### Miscellaneous Chores + +* release 1.11.0 ([dc8d622](https://github.com/vscode-neovim/vscode-neovim/commit/dc8d6224bb42d9889854c9f69277bfeb35d399a5)) + +## [1.10.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.10.0...v1.10.1) (2024-04-26) + + +### Bug Fixes + +* **cursor:** always reveal the nvim cursor position ([#1911](https://github.com/vscode-neovim/vscode-neovim/issues/1911)) ([37f3434](https://github.com/vscode-neovim/vscode-neovim/commit/37f343455425c2f6a758f31eb09f644697683e9a)) + +## [1.10.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.9.0...v1.10.0) (2024-04-21) + + +### ⚠ BREAKING CHANGES + +* vscode.get_status_item has been removed. + +### Features + +* handle nvim statusline ([#1895](https://github.com/vscode-neovim/vscode-neovim/issues/1895)) ([fa5fc14](https://github.com/vscode-neovim/vscode-neovim/commit/fa5fc14389a0a5c5d97ec35458b826d052181a24)) + + +### Bug Fixes + +* **highlight:** timely win hl ns setup, disable treesitter highlighting ([#1898](https://github.com/vscode-neovim/vscode-neovim/issues/1898)) ([eff4e20](https://github.com/vscode-neovim/vscode-neovim/commit/eff4e20010531278894bd30eb663ea12bd43f6a7)) + + +### Miscellaneous Chores + +* release 1.10.0 ([95d3ca4](https://github.com/vscode-neovim/vscode-neovim/commit/95d3ca429febab9531551e222bf30ef0dc3ee74f)) + +## [1.9.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.8.3...v1.9.0) (2024-04-20) + + +### Features + +* Auto find a suitable neovim executable ([#1894](https://github.com/vscode-neovim/vscode-neovim/issues/1894)) ([a0f5c25](https://github.com/vscode-neovim/vscode-neovim/commit/a0f5c253e3ce647f15040d063ec83cb31aa6acdc)) + + +### Bug Fixes + +* tabstops now considered when calculating line width for highlights ([#1897](https://github.com/vscode-neovim/vscode-neovim/issues/1897)) ([bd4cbca](https://github.com/vscode-neovim/vscode-neovim/commit/bd4cbca3dac2bca45ecb32fd32a6eff8895de093)) + +## [1.8.3](https://github.com/vscode-neovim/vscode-neovim/compare/v1.8.2...v1.8.3) (2024-04-19) + + +### Bug Fixes + +* highlight calculations race with buffer updates ([#1890](https://github.com/vscode-neovim/vscode-neovim/issues/1890)) ([53acfe5](https://github.com/vscode-neovim/vscode-neovim/commit/53acfe564012b9b1a20563d665791a8f28f810d5)) + +## [1.8.2](https://github.com/vscode-neovim/vscode-neovim/compare/v1.8.1...v1.8.2) (2024-04-14) + + +### Bug Fixes + +* **keybinds:** fix behavior of CTRL-m and CTRL-j ([#1886](https://github.com/vscode-neovim/vscode-neovim/issues/1886)) ([afb435d](https://github.com/vscode-neovim/vscode-neovim/commit/afb435df67189752d7e339d05ed42e57d622cd65)) + +## [1.8.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.8.0...v1.8.1) (2024-03-28) + + +### Bug Fixes + +* vscode null in eval ([#1866](https://github.com/vscode-neovim/vscode-neovim/issues/1866)) ([923319a](https://github.com/vscode-neovim/vscode-neovim/commit/923319af2e2b41bd5e64f46dbf1fdac6262b170f)) + +## [1.8.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.7.1...v1.8.0) (2024-03-26) + + +### Features + +* `vscode.eval()` ([#1854](https://github.com/vscode-neovim/vscode-neovim/issues/1854)) ([32eedf0](https://github.com/vscode-neovim/vscode-neovim/commit/32eedf08fa7bce669666492b6515091352913ae4)) +* **dev:** pre-commit hooks ([#1853](https://github.com/vscode-neovim/vscode-neovim/issues/1853)) ([e2a36d8](https://github.com/vscode-neovim/vscode-neovim/commit/e2a36d872e23fd8e623d67dd9ccf5aa1e51d2f09)) + + +### Bug Fixes + +* handle timeout in eval properly ([#1863](https://github.com/vscode-neovim/vscode-neovim/issues/1863)) ([767f7ca](https://github.com/vscode-neovim/vscode-neovim/commit/767f7ca6a3c338b662edacabe833614cf7ea0221)) + +## [1.7.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.7.0...v1.7.1) (2024-03-13) + + +### Bug Fixes + +* **startup:** $VIMRUNTIME check fails on WSL [#1850](https://github.com/vscode-neovim/vscode-neovim/issues/1850) ([6db15d0](https://github.com/vscode-neovim/vscode-neovim/commit/6db15d02a1547e53a9373680a52fa6160346a1e7)), closes [#1848](https://github.com/vscode-neovim/vscode-neovim/issues/1848) + +## [1.7.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.6.1...v1.7.0) (2024-03-11) + + +### Features + +* **logging:** check that $VIMRUNTIME is readable [#1816](https://github.com/vscode-neovim/vscode-neovim/issues/1816) ([c9ddc3e](https://github.com/vscode-neovim/vscode-neovim/commit/c9ddc3ea90444e17b325c1b2c0c6756ad8d8374d)), closes [#1815](https://github.com/vscode-neovim/vscode-neovim/issues/1815) +* **logging:** log Nvim info at startup ([#1797](https://github.com/vscode-neovim/vscode-neovim/issues/1797)) ([6b174c8](https://github.com/vscode-neovim/vscode-neovim/commit/6b174c81d4327186d350643a4867f7155693d18a)) + +## [1.6.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.6.0...v1.6.1) (2024-02-12) + + +### Bug Fixes + +* **logging:** infinite loop in BufferManager ([#1790](https://github.com/vscode-neovim/vscode-neovim/issues/1790)) ([b011631](https://github.com/vscode-neovim/vscode-neovim/commit/b0116315a018db9a8bb7a1d5df4a8f505dfa73f2)), closes [#1788](https://github.com/vscode-neovim/vscode-neovim/issues/1788) + +## [1.6.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.5.0...v1.6.0) (2024-02-08) + + +### Features + +* **bindings:** handle C-d/C-u in hover widget ([#1744](https://github.com/vscode-neovim/vscode-neovim/issues/1744)) ([64c4cc7](https://github.com/vscode-neovim/vscode-neovim/commit/64c4cc7bb56a64aa8627b1a8bab9bee0446ea17c)) +* expose logs in OutputChannel, log info on startup [#1786](https://github.com/vscode-neovim/vscode-neovim/issues/1786) ([f77256b](https://github.com/vscode-neovim/vscode-neovim/commit/f77256be6afcaa596dc8c3cb9d4e6bc0cb12cfab)) + + +### Bug Fixes + +* **bindings:** C-w in cmdline ([#1742](https://github.com/vscode-neovim/vscode-neovim/issues/1742)) ([048acea](https://github.com/vscode-neovim/vscode-neovim/commit/048acea91676c2216cf418c8bbfafae27f2c4a3a)) +* rework visual-multi ([#1755](https://github.com/vscode-neovim/vscode-neovim/issues/1755)) ([0bd6834](https://github.com/vscode-neovim/vscode-neovim/commit/0bd68345fae514572c62927a81071af68963f78e)) + +## [1.5.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.4.0...v1.5.0) (2023-12-20) + + +### Features + +* override the default vim.ui interfaces ([#1710](https://github.com/vscode-neovim/vscode-neovim/issues/1710)) ([b522787](https://github.com/vscode-neovim/vscode-neovim/commit/b52278772a6b3557d8b05471b1fb90a2375f662a)) +* R to refresh file explorer ([5464b48](https://github.com/vscode-neovim/vscode-neovim/commit/5464b48b4d4e6979dd0c2a61cdb76d2ffb06739f)) + + +### Bug Fixes + +* **treesitter:** manually trigger parsing ([#1713](https://github.com/vscode-neovim/vscode-neovim/issues/1713)) ([c2ca1be](https://github.com/vscode-neovim/vscode-neovim/commit/c2ca1be787c9114bdb7dcc57e47d1932cd9fb878)) + +## [1.4.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.3.0...v1.4.0) (2023-12-15) + + +### Features + +* Add option `afterInitConfig` ([#1695](https://github.com/vscode-neovim/vscode-neovim/issues/1695)) ([ec2b287](https://github.com/vscode-neovim/vscode-neovim/commit/ec2b287f891ae34935a1d4fff5602ae1fcbfd687)) + + +### Bug Fixes + +* auto stop extension when starting nvim failed ([#1703](https://github.com/vscode-neovim/vscode-neovim/issues/1703)) ([67e10ad](https://github.com/vscode-neovim/vscode-neovim/commit/67e10ad9db4a26995c39d670cd6478274d0dd5a8)) +* **buffer:** prefer real path as buffer name ([#1699](https://github.com/vscode-neovim/vscode-neovim/issues/1699)) ([eff13f2](https://github.com/vscode-neovim/vscode-neovim/commit/eff13f2809f7992c48facb895e835ef214478d01)) +* **buffer:** sync layout on doc closed ([#1706](https://github.com/vscode-neovim/vscode-neovim/issues/1706)) ([81951e7](https://github.com/vscode-neovim/vscode-neovim/commit/81951e70daebbe4d1448ffec1d02192d69e526ad)) + +## [1.3.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.2.0...v1.3.0) (2023-12-09) + + +### Features + +* Add clipboard provider `g:vscode_clipboard` ([#1688](https://github.com/vscode-neovim/vscode-neovim/issues/1688)) ([c5346c8](https://github.com/vscode-neovim/vscode-neovim/commit/c5346c8c185840655291bd0b50daecf36b00285d)) +* Allow specifying WSL distro by wslDistribution ([#1693](https://github.com/vscode-neovim/vscode-neovim/issues/1693)) ([6c5dbcb](https://github.com/vscode-neovim/vscode-neovim/commit/6c5dbcb68a00ae2df29e61bdf91f9bf15987564d)) +* **keybindings:** add keybindings for output panel ([#1685](https://github.com/vscode-neovim/vscode-neovim/issues/1685)) ([12502e0](https://github.com/vscode-neovim/vscode-neovim/commit/12502e0a3d20cc8f0d21be7f121b34ce6c8bc815)) +* **keybindings:** Add keybindings for the hover widget ([#1694](https://github.com/vscode-neovim/vscode-neovim/issues/1694)) ([68f0df8](https://github.com/vscode-neovim/vscode-neovim/commit/68f0df895bd9a08a35c692432de76e2c8cf4f1ee)) + + +### Bug Fixes + +* fix setting client info in wsl ([#1687](https://github.com/vscode-neovim/vscode-neovim/issues/1687)) ([11e3cab](https://github.com/vscode-neovim/vscode-neovim/commit/11e3cab75b64c0075a96c1c6558061e5d568882f)) +* fix sourcing our runtime files ([#1679](https://github.com/vscode-neovim/vscode-neovim/issues/1679)) ([567fea5](https://github.com/vscode-neovim/vscode-neovim/commit/567fea5674a24673ea2e48db528571b9ace72946)) +* set correct cwd for WSL ([#1689](https://github.com/vscode-neovim/vscode-neovim/issues/1689)) ([240e8f9](https://github.com/vscode-neovim/vscode-neovim/commit/240e8f9d0b4b14224242d86c3487cc6bd8a22fa0)) +* **test:** upgrade @vscode/test-electron ([#1690](https://github.com/vscode-neovim/vscode-neovim/issues/1690)) ([d3b25fd](https://github.com/vscode-neovim/vscode-neovim/commit/d3b25fd9b186a817a5232a6a524e0deeb238b6cf)) + +## [1.2.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.1.5...v1.2.0) (2023-12-04) + + +### Features + +* **api:** support passing a map-like table as args ([#1670](https://github.com/vscode-neovim/vscode-neovim/issues/1670)) ([8fe3d8f](https://github.com/vscode-neovim/vscode-neovim/commit/8fe3d8f9d37ef5f980954c9e1eddbed882ee62ef)) + + +### Bug Fixes + +* Fix forcing sync editor selections ([#1674](https://github.com/vscode-neovim/vscode-neovim/issues/1674)) ([7ebc1b2](https://github.com/vscode-neovim/vscode-neovim/commit/7ebc1b26384eee1a82a9449e238d60741a26d5e5)) +* refactor buffer manager ([#1666](https://github.com/vscode-neovim/vscode-neovim/issues/1666)) ([1a27694](https://github.com/vscode-neovim/vscode-neovim/commit/1a2769478cb10483c449421e6ddb202bcf2c5472)) + +## [1.1.5](https://github.com/vscode-neovim/vscode-neovim/compare/v1.1.4...v1.1.5) (2023-11-30) + + +### Bug Fixes + +* **change:** Fix bug in setting applyingEdits variable ([8f6447c](https://github.com/vscode-neovim/vscode-neovim/commit/8f6447c362b97fa12c3147a897b8714cfa846391)) +* **change:** Respect the selections of the editor ([#1661](https://github.com/vscode-neovim/vscode-neovim/issues/1661)) ([4b8f242](https://github.com/vscode-neovim/vscode-neovim/commit/4b8f2429a95095bd9012a7c4769d172f5a3bc38a)) +* skip window changed when target window id is 1000 ([#1667](https://github.com/vscode-neovim/vscode-neovim/issues/1667)) ([56ca01f](https://github.com/vscode-neovim/vscode-neovim/commit/56ca01f803056c79c04a0522b67637b6484706a0)) + +## [1.1.4](https://github.com/vscode-neovim/vscode-neovim/compare/v1.1.3...v1.1.4) (2023-11-23) + + +### Bug Fixes + +* **buffer:** bufname conflict when creating a new buffer ([#1652](https://github.com/vscode-neovim/vscode-neovim/issues/1652)) ([f304335](https://github.com/vscode-neovim/vscode-neovim/commit/f304335ce14388fbc47fb577a53f5ced681f0d6a)) + +## [1.1.3](https://github.com/vscode-neovim/vscode-neovim/compare/v1.1.2...v1.1.3) (2023-11-22) + + +### Bug Fixes + +* **highlight:** remove duplicate visual selection highlight ([#1643](https://github.com/vscode-neovim/vscode-neovim/issues/1643)) ([d02dbde](https://github.com/vscode-neovim/vscode-neovim/commit/d02dbde5832a3f5ac10249b2d3c40e778412166a)) +* **visual:** Fix syncing vscode selection to nvim ([#1647](https://github.com/vscode-neovim/vscode-neovim/issues/1647)) ([8d2a14a](https://github.com/vscode-neovim/vscode-neovim/commit/8d2a14a9171fd5cd25672fc68479333335a5f655)) + +## [1.1.2](https://github.com/vscode-neovim/vscode-neovim/compare/v1.1.1...v1.1.2) (2023-11-19) + + +### Bug Fixes + +* Cannot use strwidth to get string length ([#1635](https://github.com/vscode-neovim/vscode-neovim/issues/1635)) ([9e0cff5](https://github.com/vscode-neovim/vscode-neovim/commit/9e0cff5c6084b13ed99c44079ef9bf7494651d98)) +* **highlight:** Do not clear custom highlight groups directly ([#1633](https://github.com/vscode-neovim/vscode-neovim/issues/1633)) ([f5381a7](https://github.com/vscode-neovim/vscode-neovim/commit/f5381a726ebb40c679d4c410659a11dc93d6b7da)) +* rework `:tabnew` ([#1601](https://github.com/vscode-neovim/vscode-neovim/issues/1601)) ([1bff688](https://github.com/vscode-neovim/vscode-neovim/commit/1bff688386c6ec9e7aa48e8544fd66dd4b37e14b)) + +## [1.1.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.1.0...v1.1.1) (2023-11-17) + + +### Bug Fixes + +* **cursor:** Current character not correctly obtained ([ed4e988](https://github.com/vscode-neovim/vscode-neovim/commit/ed4e988c5715973d58b0e68f4c8ce6f37f389383)) +* **highlight:** Identify custom highlight group correctly ([#1628](https://github.com/vscode-neovim/vscode-neovim/issues/1628)) ([da15b14](https://github.com/vscode-neovim/vscode-neovim/commit/da15b1474dc19058e8b5037592b345ad3b6c54a4)) +* **viewport:** Avoid awaiting the hack to refresh viewport ([d5cb701](https://github.com/vscode-neovim/vscode-neovim/commit/d5cb701f845f90e9ca7b9d9943515b94c7211390)) + +## [1.1.0](https://github.com/vscode-neovim/vscode-neovim/compare/v1.0.1...v1.1.0) (2023-11-16) + + +### Features + +* Add command "vscode-neovim.lua" ([#1622](https://github.com/vscode-neovim/vscode-neovim/issues/1622)) ([980f40a](https://github.com/vscode-neovim/vscode-neovim/commit/980f40a22aea5c20f2639c7e4ada5c5bcc107d44)) + + +### Bug Fixes + +* **document_change:** eol is inconsistent when processing changes ([#1619](https://github.com/vscode-neovim/vscode-neovim/issues/1619)) ([6d870f9](https://github.com/vscode-neovim/vscode-neovim/commit/6d870f99cf15658d23d1fe1b003a555f56d7e5ad)) + +## [1.0.1](https://github.com/vscode-neovim/vscode-neovim/compare/v1.0.0...v1.0.1) (2023-11-15) + + +### Bug Fixes + +* **keybindings:** fix ctrl+w in terminal ([#1297](https://github.com/vscode-neovim/vscode-neovim/issues/1297)) ([dc075aa](https://github.com/vscode-neovim/vscode-neovim/commit/dc075aaf7177a42c287230d79a09f3de292a7f8e)) + +## [1.0.0](https://github.com/vscode-neovim/vscode-neovim/compare/v0.9.1...v1.0.0) (2023-11-14) + + +### ⚠ BREAKING CHANGES + +* **bindings:** enable bindings through configuration ([#1558](https://github.com/vscode-neovim/vscode-neovim/issues/1558)) +* lua API ([#1532](https://github.com/vscode-neovim/vscode-neovim/issues/1532)) + +### Features + +* add action `start-multiple-cursors` ([#1547](https://github.com/vscode-neovim/vscode-neovim/issues/1547)) ([f4a6ac5](https://github.com/vscode-neovim/vscode-neovim/commit/f4a6ac5bc2fd942a76402f27e3bb88df2924bba4)) +* Add vscode commands "restart" and "stop" ([#1566](https://github.com/vscode-neovim/vscode-neovim/issues/1566)) ([f2f57f8](https://github.com/vscode-neovim/vscode-neovim/commit/f2f57f82f1b9d7b16f52fd7977b7fb3d1e447280)) +* **api:** add `vscode.get_status_item` ([#1576](https://github.com/vscode-neovim/vscode-neovim/issues/1576)) ([c20ce2f](https://github.com/vscode-neovim/vscode-neovim/commit/c20ce2fba5e07feeeac333a00be3dbf7575ed465)) +* **api:** add `vscode.to_op` and refactor code actions ([#1570](https://github.com/vscode-neovim/vscode-neovim/issues/1570)) ([c9d600f](https://github.com/vscode-neovim/vscode-neovim/commit/c9d600f27de328d37d2d810f355ef6a0fdd2d1fc)) +* **bindings:** enable bindings through configuration ([#1558](https://github.com/vscode-neovim/vscode-neovim/issues/1558)) ([222a131](https://github.com/vscode-neovim/vscode-neovim/commit/222a131150745fc99c624b1f9eece9a91341df1a)) +* Introduce `vscode-multi-cursor.nvim` ([#1553](https://github.com/vscode-neovim/vscode-neovim/issues/1553)) ([2657c45](https://github.com/vscode-neovim/vscode-neovim/commit/2657c4506b3dffe0d069db2891e30cebd963c2be)) +* **keybindings:** global window resize/split ([#1257](https://github.com/vscode-neovim/vscode-neovim/issues/1257)) ([9cb8aff](https://github.com/vscode-neovim/vscode-neovim/commit/9cb8aff9de313d157a22f5f1a6e7409582bd9757)) +* lua API ([#1532](https://github.com/vscode-neovim/vscode-neovim/issues/1532)) ([80f10d2](https://github.com/vscode-neovim/vscode-neovim/commit/80f10d299a1858dd272bb0f9642c414188cfa1a0)) +* synchronize editor options and support `modeline` ([#1543](https://github.com/vscode-neovim/vscode-neovim/issues/1543)) ([a08c17d](https://github.com/vscode-neovim/vscode-neovim/commit/a08c17d1fb246101afa44077305fd5a15d4ba7e6)) +* trigger FocusGained/Lost by default (80f10d29) ([5a4a36c](https://github.com/vscode-neovim/vscode-neovim/commit/5a4a36c434e9e2c6d6476c9d45a29c4f26adc8c5)) + + +### Bug Fixes + +* **api:** fix `VSCodeCall` ([35ec974](https://github.com/vscode-neovim/vscode-neovim/commit/35ec9743cbb6e6cae998da253da6e4885cc1eb63)) +* **blockwise-visual:** handle double-width chars and tabs ([#1596](https://github.com/vscode-neovim/vscode-neovim/issues/1596)) ([c554c06](https://github.com/vscode-neovim/vscode-neovim/commit/c554c065a375f2bd32346aabdb6526ece8bb4189)) +* **buffer:** cancel visual mode when switching editor ([#1578](https://github.com/vscode-neovim/vscode-neovim/issues/1578)) ([15cb3d7](https://github.com/vscode-neovim/vscode-neovim/commit/15cb3d78b13360743a3466ade0de572981ca2203)) +* **ci:** make husky executable ([b75a7f7](https://github.com/vscode-neovim/vscode-neovim/commit/b75a7f7bfbe67d67364e1197f9c9b15932729e33)) +* **cmdline:** handle `wildmenu_hide` event ([#1541](https://github.com/vscode-neovim/vscode-neovim/issues/1541)) ([1b68475](https://github.com/vscode-neovim/vscode-neovim/commit/1b68475f190a80a74dee26ef37fc692d1a66c79a)) +* **cmdline:** use Ctrl+n/p to select candidates when candidates exist ([1b68475](https://github.com/vscode-neovim/vscode-neovim/commit/1b68475f190a80a74dee26ef37fc692d1a66c79a)) +* **cursor:** ignore cursor position errors in the output ([#1568](https://github.com/vscode-neovim/vscode-neovim/issues/1568)) ([08ef9d3](https://github.com/vscode-neovim/vscode-neovim/commit/08ef9d39f0b4cac79da2fadad380bb323088c007)) +* **dotrepeat:** incorrect order of deletion and addition ([#1581](https://github.com/vscode-neovim/vscode-neovim/issues/1581)) ([5385c25](https://github.com/vscode-neovim/vscode-neovim/commit/5385c25d0c9462f3a679a5bb21c21936ce9da091)) +* **dotrepeat:** should escape K_SPECIAL bytes ([68557f7](https://github.com/vscode-neovim/vscode-neovim/commit/68557f798d9bbc2225db9b8ab45b90664bcddf36)) +* fix command `vscode-neovim.stop` ([c8809ed](https://github.com/vscode-neovim/vscode-neovim/commit/c8809ed4c7591a75c960209c810120ddfa449f01)) +* **highlight:** make `borderColor` work ([#1557](https://github.com/vscode-neovim/vscode-neovim/issues/1557)) ([398d0fe](https://github.com/vscode-neovim/vscode-neovim/commit/398d0fed517211bf7335b9042ac39f8a015257f1)) +* **highlight:** rendering all cells ([84344a5](https://github.com/vscode-neovim/vscode-neovim/commit/84344a5191156f95a357de627a778c406eb9cf81)) +* improve callAtomic error logging ([#1110](https://github.com/vscode-neovim/vscode-neovim/issues/1110)) ([91c0169](https://github.com/vscode-neovim/vscode-neovim/commit/91c01694be17e28af60530781762c311a378a792)) +* **incsearch:** viewport is not updating during searching ([#1575](https://github.com/vscode-neovim/vscode-neovim/issues/1575)) ([b8696a3](https://github.com/vscode-neovim/vscode-neovim/commit/b8696a396c5ddffd0848f30a2c785aa05c2ca79a)) +* **keybinding:** fix `Ctrl+c` ([#1569](https://github.com/vscode-neovim/vscode-neovim/issues/1569)) ([4765026](https://github.com/vscode-neovim/vscode-neovim/commit/476502604a5fcfef89c528532de17b391036aed6)) +* maintain the order of positions for the Selection ([#1550](https://github.com/vscode-neovim/vscode-neovim/issues/1550)) ([8d76d51](https://github.com/vscode-neovim/vscode-neovim/commit/8d76d51cd6952c30ed5858587e64a97ab44c5da8)) +* **visual:** clear fake cursor correctly ([#1552](https://github.com/vscode-neovim/vscode-neovim/issues/1552)) ([c786074](https://github.com/vscode-neovim/vscode-neovim/commit/c786074df01bc02d52856620d0da2db60659ae1a)) +* **visual:** optimized simulation of VisualChanged event ([#1597](https://github.com/vscode-neovim/vscode-neovim/issues/1597)) ([736e7b2](https://github.com/vscode-neovim/vscode-neovim/commit/736e7b261eeecacb163e0fc1b59a0a1dd4f1bbf8)) +* **visual:** process selections in nvim ([#1603](https://github.com/vscode-neovim/vscode-neovim/issues/1603)) ([c202f52](https://github.com/vscode-neovim/vscode-neovim/commit/c202f527949d3af2f786b2a0cab71b96517d4657)) +* wait for appling selection changed ([#1551](https://github.com/vscode-neovim/vscode-neovim/issues/1551)) ([e1e1bf0](https://github.com/vscode-neovim/vscode-neovim/commit/e1e1bf01354495b3cf7a8731e2ec8729886532c6)) + + +### Performance Improvements + +* Add VSCodeContext for perf improvement ([#1559](https://github.com/vscode-neovim/vscode-neovim/issues/1559)) ([62fbcc2](https://github.com/vscode-neovim/vscode-neovim/commit/62fbcc26fec546dbdef603ea7c1065ce1d511885)) + + +### Miscellaneous Chores + +* release 1.0.0 ([0aa53fe](https://github.com/vscode-neovim/vscode-neovim/commit/0aa53fe92c28cf737f09b91940c58bdacf7206df)) + +## [0.9.1](https://github.com/vscode-neovim/vscode-neovim/compare/v0.9.0...v0.9.1) (2023-10-14) + + +### Features + +* Add option `statusLineSeparator` ([#1521](https://github.com/vscode-neovim/vscode-neovim/issues/1521)) ([374d72f](https://github.com/vscode-neovim/vscode-neovim/commit/374d72f106ad685a63dc63709355778a2aeacc5b)) +* improved the nvim version check ([#1527](https://github.com/vscode-neovim/vscode-neovim/issues/1527)) ([a42a60e](https://github.com/vscode-neovim/vscode-neovim/commit/a42a60e9e5ed9f958c4deaaa57d009067b14c1a9)) + + +### Bug Fixes + +* [#1531](https://github.com/vscode-neovim/vscode-neovim/issues/1531) ([deb41d4](https://github.com/vscode-neovim/vscode-neovim/commit/deb41d463de8d04453f1ca5e2b8acf6393e7464a)) +* fix semver comparison ([d22850c](https://github.com/vscode-neovim/vscode-neovim/commit/d22850c42223c07571bdb40cb2ac48e8c232f8a7)) +* **highlight:** do not widen the decoration's range ([deb41d4](https://github.com/vscode-neovim/vscode-neovim/commit/deb41d463de8d04453f1ca5e2b8acf6393e7464a)), closes [#1531](https://github.com/vscode-neovim/vscode-neovim/issues/1531) +* **keybinds:** Ctrl+n and Ctrl+p in cmdline ([#1533](https://github.com/vscode-neovim/vscode-neovim/issues/1533)) ([305bc1a](https://github.com/vscode-neovim/vscode-neovim/commit/305bc1aae7e444ee67ba5d5fe6438c9cda36f99f)) +* properly set the client info ([c0422ef](https://github.com/vscode-neovim/vscode-neovim/commit/c0422efbf9cb0ee59989f7e7d52435019b8182a5)) + + +### Miscellaneous Chores + +* release 0.9.1 ([11e7705](https://github.com/vscode-neovim/vscode-neovim/commit/11e77056d6d19af810b24401efa4d5ef16fc19f1)) + +## [0.9.0](https://github.com/vscode-neovim/vscode-neovim/compare/v0.8.3...v0.9.0) (2023-10-10) + + +### Features + +* add options to disable or change selection debounce time ([#1504](https://github.com/vscode-neovim/vscode-neovim/issues/1504)) ([2515e46](https://github.com/vscode-neovim/vscode-neovim/commit/2515e466a532ca280c8800d00e786de96cc0b1d9)) + + +### Bug Fixes + +* cleanup temporary buffers for dotrepeat ([#1506](https://github.com/vscode-neovim/vscode-neovim/issues/1506)) ([7a3d5e9](https://github.com/vscode-neovim/vscode-neovim/commit/7a3d5e953dcd090dbc516a91c005ab76d97d35c2)) +* **config:** ignore init path when nvim running in clean mode ([#1503](https://github.com/vscode-neovim/vscode-neovim/issues/1503)) ([0615b3e](https://github.com/vscode-neovim/vscode-neovim/commit/0615b3e5190bcee9293a206c2c919a5e6b25bd24)) +* **cursor:** avoid unnecessary selections updates ([#1507](https://github.com/vscode-neovim/vscode-neovim/issues/1507)) ([bb0faed](https://github.com/vscode-neovim/vscode-neovim/commit/bb0faed07935c450128c857e154447623dd755f0)) + + +### Performance Improvements + +* **highlight:** avoid redundant highlight IDs ([#1520](https://github.com/vscode-neovim/vscode-neovim/issues/1520)) ([a7cf325](https://github.com/vscode-neovim/vscode-neovim/commit/a7cf325003a5b1d42daf522491781f144f91c467)) + +## [0.8.3](https://github.com/vscode-neovim/vscode-neovim/compare/v0.8.2...v0.8.3) (2023-10-07) + + +### Features + +* add filetype module ([#1500](https://github.com/vscode-neovim/vscode-neovim/issues/1500)) ([56fbadc](https://github.com/vscode-neovim/vscode-neovim/commit/56fbadc729fe23d206c798acf61ad03a4c9ec0e5)) +* optimize end-of-line highlighting rendering ([72bc537](https://github.com/vscode-neovim/vscode-neovim/commit/72bc5372c19dda231c20be683c718af0cc042d0c)) + + +### Bug Fixes + +* **highlight:** avoid leftover highlights ([#1499](https://github.com/vscode-neovim/vscode-neovim/issues/1499)) ([72bc537](https://github.com/vscode-neovim/vscode-neovim/commit/72bc5372c19dda231c20be683c718af0cc042d0c)) + + +### Miscellaneous Chores + +* release 0.8.3 ([40ac24c](https://github.com/vscode-neovim/vscode-neovim/commit/40ac24cf2af8f97b37eb48a407ccd44f9b662fd3)) + +## [0.8.2](https://github.com/vscode-neovim/vscode-neovim/compare/v0.8.1...v0.8.2) (2023-10-06) + + +### Bug Fixes + +* bump min nvim version ([#1495](https://github.com/vscode-neovim/vscode-neovim/issues/1495)) ([653c06f](https://github.com/vscode-neovim/vscode-neovim/commit/653c06f08e876404994d27893efc7d039c6d8f74)) + +## [0.8.1](https://github.com/vscode-neovim/vscode-neovim/compare/v0.8.0...v0.8.1) (2023-10-05) + + +### Bug Fixes + +* dot-repeat special symbols handling ([#1167](https://github.com/vscode-neovim/vscode-neovim/issues/1167)) ([5e955d6](https://github.com/vscode-neovim/vscode-neovim/commit/5e955d615b1bbc9257b3d299f48b84dd962062aa)) + +## [0.8.0](https://github.com/vscode-neovim/vscode-neovim/compare/v0.7.0...v0.8.0) (2023-10-05) + + +### ⚠ BREAKING CHANGES + +* **highlights:** redesign of highlighting approach ([#1449](https://github.com/vscode-neovim/vscode-neovim/issues/1449)) + +### Features + +* **highlights:** redesign of highlighting approach ([#1449](https://github.com/vscode-neovim/vscode-neovim/issues/1449)) ([f688d23](https://github.com/vscode-neovim/vscode-neovim/commit/f688d23669ac0a86e2cb6200d1970f9da6822634)) + +## [0.7.0](https://github.com/vscode-neovim/vscode-neovim/compare/v0.6.1...v0.7.0) (2023-10-04) + + +### Features + +* **buffer:** add external buffer doc provider (de48ee2) ([ba9d0dd](https://github.com/vscode-neovim/vscode-neovim/commit/ba9d0dde18bac45cb8c902360d65273b75eac80e)) +* **command line:** add a configurable completion timer delay ([#1467](https://github.com/vscode-neovim/vscode-neovim/issues/1467)) ([0cb897c](https://github.com/vscode-neovim/vscode-neovim/commit/0cb897c0d7805dafad5967602534a2f8b61ffadf)) +* hide completion widgets when leaving insert mode ([#1478](https://github.com/vscode-neovim/vscode-neovim/issues/1478)) ([6d1dbba](https://github.com/vscode-neovim/vscode-neovim/commit/6d1dbbaa01e21fd71fde1d94ad1a1b504b1fc600)) +* **options:** synchronize editor line numbers ([#1426](https://github.com/vscode-neovim/vscode-neovim/issues/1426)) ([4a13f06](https://github.com/vscode-neovim/vscode-neovim/commit/4a13f06c08ae040ea7811376a4a8dddaf8007a59)) +* warn on empty `vscode-neovim.send` args ([#1455](https://github.com/vscode-neovim/vscode-neovim/issues/1455)) ([d1cbcf9](https://github.com/vscode-neovim/vscode-neovim/commit/d1cbcf977f84df110b5b94d53334b7c9fb98fd01)) + + +### Bug Fixes + +* **cursor:** ensure normal visual mode for mouse selection ([#1463](https://github.com/vscode-neovim/vscode-neovim/issues/1463)) ([1b0ea63](https://github.com/vscode-neovim/vscode-neovim/commit/1b0ea63c67c5247e8451df8b94af7bdb0ff80f89)) +* **cursor:** update position after exiting insert mode ([#1479](https://github.com/vscode-neovim/vscode-neovim/issues/1479)) ([da787ed](https://github.com/vscode-neovim/vscode-neovim/commit/da787ed0170637f8a9ca19c46d929189527aa7c6)) +* **viewport:** reduce cursor jitter (temporary solution) ([#1459](https://github.com/vscode-neovim/vscode-neovim/issues/1459)) ([237e795](https://github.com/vscode-neovim/vscode-neovim/commit/237e795fb48374fbef8a6a7cb7f40810630ab6ee)) + +## [0.6.1](https://github.com/vscode-neovim/vscode-neovim/compare/v0.6.0...v0.6.1) (2023-09-17) + + +### Bug Fixes + +* **buffer, change:** save and restore local marks ([#1439](https://github.com/vscode-neovim/vscode-neovim/issues/1439)) ([9e194a0](https://github.com/vscode-neovim/vscode-neovim/commit/9e194a0ba3534b1e3b3473c625052388f1ba4a32)) +* **cursor, visual:** fix sync mouse selection ([#1451](https://github.com/vscode-neovim/vscode-neovim/issues/1451)) ([bdf3b19](https://github.com/vscode-neovim/vscode-neovim/commit/bdf3b19a49611a9be94c795985cd7de5ff9b1259)) +* **test:** clean up reg '/' after cmdline testing ([#1453](https://github.com/vscode-neovim/vscode-neovim/issues/1453)) ([2bc2a80](https://github.com/vscode-neovim/vscode-neovim/commit/2bc2a807e7d7f3d18a72918fb0d790a564e1eb39)) + +## [0.6.0](https://github.com/vscode-neovim/vscode-neovim/compare/v0.5.0...v0.6.0) (2023-09-11) + + +### Features + +* **options:** prompt to enable experimental affinity([#1051](https://github.com/vscode-neovim/vscode-neovim/issues/1051), [#1267](https://github.com/vscode-neovim/vscode-neovim/issues/1267)) ([#1415](https://github.com/vscode-neovim/vscode-neovim/issues/1415)) ([482cfd8](https://github.com/vscode-neovim/vscode-neovim/commit/482cfd8a36c654163314fbbe4816a55bfa062d8e)) +* **statusline:** combine status line items ([#1429](https://github.com/vscode-neovim/vscode-neovim/issues/1429)) ([7f0de58](https://github.com/vscode-neovim/vscode-neovim/commit/7f0de58fd39add25d53d3ff074dc33fce88fa1eb)) + + +### Bug Fixes + +* **buffer:** Ensure proper cleanup of windows and buffers ([#1438](https://github.com/vscode-neovim/vscode-neovim/issues/1438)) ([7c9dc96](https://github.com/vscode-neovim/vscode-neovim/commit/7c9dc9671ba2010e3607f86fa3c7b3d061a4e808)) + +## [0.5.0](https://github.com/vscode-neovim/vscode-neovim/compare/v0.4.5...v0.5.0) (2023-09-08) + + +### Features + +* handle window change event ([#1417](https://github.com/vscode-neovim/vscode-neovim/issues/1417)) ([325b10f](https://github.com/vscode-neovim/vscode-neovim/commit/325b10f86916a906b6261d6f0fba60d3f6079b38)) + + +### Bug Fixes + +* clean up buffers properly ([#1428](https://github.com/vscode-neovim/vscode-neovim/issues/1428)) ([48ef8e6](https://github.com/vscode-neovim/vscode-neovim/commit/48ef8e6302f6f3d87897cc1c900af8dc1bca3593)) +* **highlights:** fix highlights when emojis exist ([#1430](https://github.com/vscode-neovim/vscode-neovim/issues/1430)) ([050be0b](https://github.com/vscode-neovim/vscode-neovim/commit/050be0b37728e1aa2be7f74dac311deec896334b)) + +## [0.4.5](https://github.com/vscode-neovim/vscode-neovim/compare/v0.4.4...v0.4.5) (2023-09-06) + + +### Bug Fixes + +* **buffer:** avoid sync conflicts during startup ([#1414](https://github.com/vscode-neovim/vscode-neovim/issues/1414)) ([0b3ab8f](https://github.com/vscode-neovim/vscode-neovim/commit/0b3ab8f7d53ba5271dadba54dfa37e90544737b9)) +* **buffer:** the output document should be modifiable ([#1416](https://github.com/vscode-neovim/vscode-neovim/issues/1416)) ([bc7e09b](https://github.com/vscode-neovim/vscode-neovim/commit/bc7e09b5125d9f04f168b9aaf4b017911df9daef)) + +## [0.4.4](https://github.com/vscode-neovim/vscode-neovim/compare/v0.4.3...v0.4.4) (2023-09-03) + + +### Bug Fixes + +* **cursor:** optimized cursor synchronization debouncing ([#1406](https://github.com/vscode-neovim/vscode-neovim/issues/1406)) ([7326aae](https://github.com/vscode-neovim/vscode-neovim/commit/7326aaed7f8cd588e02869274f3f1df8c89086fd)) +* **mode:** synchronize mode after startup ([#1411](https://github.com/vscode-neovim/vscode-neovim/issues/1411)) ([3804505](https://github.com/vscode-neovim/vscode-neovim/commit/380450514efadd29074761e039657fd97bfc7008)) + +## [0.4.3](https://github.com/vscode-neovim/vscode-neovim/compare/v0.4.2...v0.4.3) (2023-08-30) + + +### Bug Fixes + +* **highlights:** fix misaligned rendering in visual mode ([#1401](https://github.com/vscode-neovim/vscode-neovim/issues/1401)) ([479f525](https://github.com/vscode-neovim/vscode-neovim/commit/479f525efac1b23e4ca146a96f7e7145b69b88d8)) +* **options:** force disable colorcolumn and winblend ([de11cf3](https://github.com/vscode-neovim/vscode-neovim/commit/de11cf32c72f3cc741efc18044ebefd5a12a62dc)) + +## [0.4.2](https://github.com/vscode-neovim/vscode-neovim/compare/v0.4.1...v0.4.2) (2023-08-18) + + +### Bug Fixes + +* **highlight:** remove flash.nvim lag ([#1389](https://github.com/vscode-neovim/vscode-neovim/issues/1389)) ([e38e628](https://github.com/vscode-neovim/vscode-neovim/commit/e38e628b084a716cc5718545016f34cac28713f6)) + +## [0.4.1](https://github.com/vscode-neovim/vscode-neovim/compare/v0.4.0...v0.4.1) (2023-07-30) + + +### Bug Fixes + +* **cursor:** re-add new `VSCodeNotifyRange` impl ([368c58d](https://github.com/vscode-neovim/vscode-neovim/commit/368c58db5fe5b6ae2bca37df3d6cfeb2fb98d62e)) +* **cursor:** re-add new VSCodeNotifyRange impl ([#1358](https://github.com/vscode-neovim/vscode-neovim/issues/1358)) ([368c58d](https://github.com/vscode-neovim/vscode-neovim/commit/368c58db5fe5b6ae2bca37df3d6cfeb2fb98d62e)) +* **custom_commands:** wait for cursor update before issuing command ([368c58d](https://github.com/vscode-neovim/vscode-neovim/commit/368c58db5fe5b6ae2bca37df3d6cfeb2fb98d62e)) +* **lua:** rename vscode lua plugin to vscode-neovim ([#1356](https://github.com/vscode-neovim/vscode-neovim/issues/1356)) ([72adf16](https://github.com/vscode-neovim/vscode-neovim/commit/72adf160dcc5bc0066555c33c526140c2f835f95)) +* re-add `VSCodeCommentary` ([368c58d](https://github.com/vscode-neovim/vscode-neovim/commit/368c58db5fe5b6ae2bca37df3d6cfeb2fb98d62e)) + +## [0.4.0](https://github.com/vscode-neovim/vscode-neovim/compare/v0.3.2...v0.4.0) (2023-07-26) + + +### ⚠ BREAKING CHANGES + +* **highlight:** remove easymotion support +* **highlight:** `"vscode-neovim.highlightGroups.ignoreHighlights"` is removed, ignore syntax groups from nvim instead by using `hi MySyntaxGroup NONE`. +* **cursor:** `VSCodeNotifyVisual` and `VSCodeNotifyRange` is removed, use `VSCodeNotify` instead +* **cursor:** send vscode selections to neovim, including intuitive mouse selections (remove mouse setting) + +### fact + +* **highlight:** ignore undesired highlights from vim side instead of vscode side ([#1334](https://github.com/vscode-neovim/vscode-neovim/issues/1334)) ([5ed8081](https://github.com/vscode-neovim/vscode-neovim/commit/5ed80815676217565fbdb759d7e1c26139e11a6c)) +* **highlight:** remove easymotion support ([161371e](https://github.com/vscode-neovim/vscode-neovim/commit/161371ee385b1da0c9f6d0df7db2ef4c98498b62)) + + +### Features + +* **cursor:** improve performance and flicker ([c01548e](https://github.com/vscode-neovim/vscode-neovim/commit/c01548e08a2c5edfec8a070a291a64aafc6a7db6)) +* **cursor:** remove range-based commands ([c01548e](https://github.com/vscode-neovim/vscode-neovim/commit/c01548e08a2c5edfec8a070a291a64aafc6a7db6)) +* **cursor:** send vscode selections to neovim, including intuitive mouse selections (remove mouse setting) ([c01548e](https://github.com/vscode-neovim/vscode-neovim/commit/c01548e08a2c5edfec8a070a291a64aafc6a7db6)) +* **cursor:** sync visual selections with vscode ([#1258](https://github.com/vscode-neovim/vscode-neovim/issues/1258)) ([c01548e](https://github.com/vscode-neovim/vscode-neovim/commit/c01548e08a2c5edfec8a070a291a64aafc6a7db6)) +* **lua:** add lua api ([#1339](https://github.com/vscode-neovim/vscode-neovim/issues/1339)) ([6be0ff3](https://github.com/vscode-neovim/vscode-neovim/commit/6be0ff383be87558a062e09cefb3c41e4e76625a)) + + +### Bug Fixes + +* **cursor:** cursor promise resolving ([9ed40f3](https://github.com/vscode-neovim/vscode-neovim/commit/9ed40f3db2cfb48f2b5cdea7e26acb35ef901136)) +* **cursor:** don't overwrite cursor promise and wait for document change ([0d334af](https://github.com/vscode-neovim/vscode-neovim/commit/0d334af2c6ac352ccfd6f3cf25ea3b0d3f688e73)) +* **highlight:** fix blank extmarks ([#1143](https://github.com/vscode-neovim/vscode-neovim/issues/1143)) ([c01548e](https://github.com/vscode-neovim/vscode-neovim/commit/c01548e08a2c5edfec8a070a291a64aafc6a7db6)) +* **highlight:** fix extmarks beyond end of line ([c01548e](https://github.com/vscode-neovim/vscode-neovim/commit/c01548e08a2c5edfec8a070a291a64aafc6a7db6)) +* **highlight:** ignore compound group names, like MatchParenVisual ([c01548e](https://github.com/vscode-neovim/vscode-neovim/commit/c01548e08a2c5edfec8a070a291a64aafc6a7db6)) +* **highlight:** wait for document change before creating highlights ([c01548e](https://github.com/vscode-neovim/vscode-neovim/commit/c01548e08a2c5edfec8a070a291a64aafc6a7db6)) +* **typing:** fix rapid typing after entering insert mode ([c01548e](https://github.com/vscode-neovim/vscode-neovim/commit/c01548e08a2c5edfec8a070a291a64aafc6a7db6)) + + +### Miscellaneous Chores + +* release 0.4.0 ([ced7306](https://github.com/vscode-neovim/vscode-neovim/commit/ced7306622d0e39f71ede44513482452e35b1a5a)) + +## [0.3.2](https://github.com/vscode-neovim/vscode-neovim/compare/v0.3.1...v0.3.2) (2023-07-12) + + +### Bug Fixes + +* **main:** set `WSLENV` to pass `NVIM_APPNAME` into WSL ([#1310](https://github.com/vscode-neovim/vscode-neovim/issues/1310)) ([2b27081](https://github.com/vscode-neovim/vscode-neovim/commit/2b270812de8d53a282550ec9aeb0176cbc4c0c36)) +* **mode:** allow escaping from replace mode ([#1305](https://github.com/vscode-neovim/vscode-neovim/issues/1305)) ([76d473c](https://github.com/vscode-neovim/vscode-neovim/commit/76d473c6b97bcf582e3a9ee0806ccda8294dc9cf)), closes [#1304](https://github.com/vscode-neovim/vscode-neovim/issues/1304) + +## [0.3.1](https://github.com/vscode-neovim/vscode-neovim/compare/v0.3.0...v0.3.1) (2023-07-07) + + +### Bug Fixes + +* colliding ctrl+w bindings in terminal ([#1300](https://github.com/vscode-neovim/vscode-neovim/issues/1300)) ([f5a25f9](https://github.com/vscode-neovim/vscode-neovim/commit/f5a25f9d73649883af78b1331c8052cecb8e46d4)) + +## [0.3.0](https://github.com/vscode-neovim/vscode-neovim/compare/v0.2.0...v0.3.0) (2023-07-06) + + +### Features + +* **bindings:** support <c-t> as navigateBack ([#827](https://github.com/vscode-neovim/vscode-neovim/issues/827)) ([1cd8afb](https://github.com/vscode-neovim/vscode-neovim/commit/1cd8afb8401ee13d398ec836d990a97bee3ec7bc)) +* **bindings:** z fold bindings for lists (incl. files explorer) ([#1250](https://github.com/vscode-neovim/vscode-neovim/issues/1250)) ([a86bd36](https://github.com/vscode-neovim/vscode-neovim/commit/a86bd36a062184be2a8739d88d50053cb53763f4)) + + +### Bug Fixes + +* **bindings:** {count}gt command not jumping to correct tab [#670](https://github.com/vscode-neovim/vscode-neovim/issues/670) ([a2c9b03](https://github.com/vscode-neovim/vscode-neovim/commit/a2c9b03bd995f941b16278a4f9ea402e8b9c063d)) +* **mode:** cmdline mode bindings [#1298](https://github.com/vscode-neovim/vscode-neovim/issues/1298) ([#1299](https://github.com/vscode-neovim/vscode-neovim/issues/1299)) ([6f4b9a0](https://github.com/vscode-neovim/vscode-neovim/commit/6f4b9a0ecb5a5d53a239c8c398eb41c066e9e44c)) + +## [0.2.0](https://github.com/vscode-neovim/vscode-neovim/compare/v0.1.0...v0.2.0) (2023-07-05) + + +### Features + +* **bindings:** global window navigations ([#1248](https://github.com/vscode-neovim/vscode-neovim/issues/1248)) ([88103a8](https://github.com/vscode-neovim/vscode-neovim/commit/88103a83010f57a24acf506610d4a89c7019aa20)) +* **main:** add options.lua ([#1254](https://github.com/vscode-neovim/vscode-neovim/issues/1254)) ([504d462](https://github.com/vscode-neovim/vscode-neovim/commit/504d46249f81351f8131109cb430e70424c0adb3)) +* **mode:** switch to `ModeChanged` for more detailed mode information ([#1255](https://github.com/vscode-neovim/vscode-neovim/issues/1255)) ([97140a7](https://github.com/vscode-neovim/vscode-neovim/commit/97140a735b97d172bfb8c02a95def0d1675a232b)) + +## [0.1.0](https://github.com/vscode-neovim/vscode-neovim/compare/v0.0.96...v0.1.0) (2023-06-27) + +### Features + +- add $NVIM_APPNAME option ([#1186](https://github.com/vscode-neovim/vscode-neovim/issues/1186)) + ([5b54212](https://github.com/vscode-neovim/vscode-neovim/commit/5b5421201701be67fc92d42b39fb049708b4d0f1)) +- **ci:** add automatic releases ([#1244](https://github.com/vscode-neovim/vscode-neovim/issues/1244)) + ([0bcee88](https://github.com/vscode-neovim/vscode-neovim/commit/0bcee88bbdb746a64fb58204a605797fdbdd14da)) +- add Neovim toggle (#1033) +- use k instead of i to moveEditorToAboveGroup (vscode-neovim#1119) + +### Bug Fixes + +- wrong VSCode selections if cursor is at start of selection + [#1180](https://github.com/vscode-neovim/vscode-neovim/issues/1180) + ([f9bcd25](https://github.com/vscode-neovim/vscode-neovim/commit/f9bcd2555c01ad238d9eca06f1c051c43ee71b15)) + +## [0.0.96] + +- fix issues with tabs creating visual glitches (#1099) + +## [0.0.95] + +- fix navigation on lines with emojis (#1083) +- fix random characters shown as an extmark overlay (#1075) + +## [0.0.94] + +- revert accidentally-released scrolling PR (#885). This caused C-u/C-d to stop working as expected. + +## [0.0.93] + +- fix mouse selection while not starting visual mode (#1055) + +## [0.0.92] + +- allow vscode sync viewport with neovim (#919) +- this makes lightspeed/leap work better. May cause some issues with jumping around. Will eventually be fixed by + (#993) + +## [0.0.91] + +- don't exit insert mode when switching tabs (#1050) +- replay insert-mode edits in realtime using `nvim_buf_set_text` (#992) +- when vscode reports changed document, changes get sent immediately to nvim +- in insert mode, changes get sent immediately, instead of on exit + +## [0.0.90] + +- Fix non-english input method issues (#1009) +- list.toggleKeyboardNavigation => list.find (#1015) +- Fix highlights not updating by :hi (#1010) +- Add shortcut to navigate code action menu (#1029) +- switch from yarn to npm (#1035) +- specify default nvim binary path (#1047) +- fix mouse selection starts visual mode (#1045) + +## [0.0.89] + +- silence "No viewport for gridId" warning (#978) +- improve readme, and add plugins to wiki (#969) +- fix non-english input replacing chars in normal mode (#900) +- improve compatibility with lightspeed/leap by fixing highlight provider (#982) + +## [0.0.88] + +- add `--clean` option (#952) +- remove `textDecorationsAtTop` (#957) +- remove custom insert mode mappings, now C-w/C-u/C-r/etc are called natively (#886) +- fix freezing after switching windows (#886) +- fix cursor and highlight on long lines (#971) + +## [0.0.87] + +- Command line improvements! Enable paste cmdline keybindings and fix history (#908) and fix path completions (#860) + +## [0.0.86] + +- Fix bug with remote workspaces/WSL where plugin would try to set pwd to invalid path + +## [0.0.85] + +- Show more messages in output ( [#881](https://github.com/asvetliakov/vscode-neovim/issues/881), [#902](https://github.com/asvetliakov/vscode-neovim/issues/902) ) +- Fix insert mode C-a ( [#737](https://github.com/asvetliakov/vscode-neovim/issues/737) ) +- Improve efficiency applying small edits ( [#830](https://github.com/asvetliakov/vscode-neovim/issues/830) ) +- Support extmark_overlay, adding hop/lightspeed/sneak support ( [#868](https://github.com/asvetliakov/vscode-neovim/issues/868) ) +- Fix CI + +## [0.0.84] + +- More keybinding improvements with notebook support ( [#680](https://github.com/asvetliakov/vscode-neovim/issues/680) ) +- Small bugfixes and project maintenance ( [#772](https://github.com/asvetliakov/vscode-neovim/issues/772), [#723](https://github.com/asvetliakov/vscode-neovim/issues/723), [#731](https://github.com/asvetliakov/vscode-neovim/issues/731) ) + +## [0.0.83] + +- Allow installation in Codespaces ( [#262](https://github.com/asvetliakov/vscode-neovim/issues/262) ) +- Send visual selection with C-S-F ( [#535](https://github.com/asvetliakov/vscode-neovim/issues/535) ) + +## [0.0.82] + +- Big updates to keybindings ! ( [#513](https://github.com/asvetliakov/vscode-neovim/issues/513) , [#654](https://github.com/asvetliakov/vscode-neovim/issues/654) , [#557](https://github.com/asvetliakov/vscode-neovim/issues/557) , [#585](https://github.com/asvetliakov/vscode-neovim/issues/585) , [#655](https://github.com/asvetliakov/vscode-neovim/issues/655) ) + +## [0.0.81] + +- Revert ( [#649](https://github.com/asvetliakov/vscode-neovim/issues/649) ) + +## [0.0.80] + +- Improve cursor position behaviour ( [#649](https://github.com/asvetliakov/vscode-neovim/issues/649) ) + +## [0.0.79] + +- Fix infinity file opened loop on recent neovim versions ( [#632](https://github.com/asvetliakov/vscode-neovim/issues/632) ) + +## [0.0.78] + +- Fix init error with no workspace folders open ( [#526](https://github.com/asvetliakov/vscode-neovim/issues/526) ) +- Update README.md ( [#527](https://github.com/asvetliakov/vscode-neovim/issues/527) ) + +## [0.0.77] + +- Fix cursor with tab indentation ( [#516](https://github.com/asvetliakov/vscode-neovim/issues/516) , [#515](https://github.com/asvetliakov/vscode-neovim/issues/515) ) +- Handle correctly WSL path with spaces ( [#509](https://github.com/asvetliakov/vscode-neovim/issues/509) ) + +## [0.0.76] + +- Fix mutli-column character handling ( [#503](https://github.com/asvetliakov/vscode-neovim/issues/503) ) + +## [0.0.75] + +- Improvements to cursor logic ( [#501](https://github.com/asvetliakov/vscode-neovim/issues/501) ) +- Cancel current mode when switching editor ( [#156](https://github.com/asvetliakov/vscode-neovim/issues/156) ) + +## [0.0.74] + +- Fix cursor logic ( [#467](https://github.com/asvetliakov/vscode-neovim/issues/467) , [#488](https://github.com/asvetliakov/vscode-neovim/issues/488) ) +- Trigger matching word highlight after movement ( [#159](https://github.com/asvetliakov/vscode-neovim/issues/159) ) +- VIM highlight adjustments ( [#482](https://github.com/asvetliakov/vscode-neovim/issues/482) ) + +## [0.0.73] + +- Improve cursor reveailing logic ( [#479](https://github.com/asvetliakov/vscode-neovim/issues/479) ) +- Hook g0 / g\$ ( [#455](https://github.com/asvetliakov/vscode-neovim/issues/455) ) + +## [0.0.72] + +- Fix undo regression introduced in `0.0.70` + +## [0.0.71] + +- Fix `Unable to determine neovim windows id` error spam ( [#418](https://github.com/asvetliakov/vscode-neovim/issues/418) ) + +## [0.0.70] + +- Use vscode jumplist actions instead of neovim +- Fix uppercase marks ( [#228](https://github.com/asvetliakov/vscode-neovim/issues/228) ) +- Various cursor & buffer management fixes ( [#404](https://github.com/asvetliakov/vscode-neovim/issues/404) , [#392](https://github.com/asvetliakov/vscode-neovim/issues/392) , [#386](https://github.com/asvetliakov/vscode-neovim/issues/386) ) +- Implement manageEditorHeight and manageEditorWidth ( [#444](https://github.com/asvetliakov/vscode-neovim/issues/444) ) +- Fix `` in insert mode ( [#283](https://github.com/asvetliakov/vscode-neovim/issues/283) ) +- Set vim cwd as vscode workspace ( [#429](https://github.com/asvetliakov/vscode-neovim/issues/429) ) +- Fix shell-agnostic WSL integration ( [#147](https://github.com/asvetliakov/vscode-neovim/issues/147) ) +- Map :x to Wq ( [#396](https://github.com/asvetliakov/vscode-neovim/issues/396) ) +- Various docs contributions +- Improve build ( [#378](https://github.com/asvetliakov/vscode-neovim/issues/378) ) + +## [0.0.63] + +- Allow to put text decorations (usually EasyMotion ones) at top setting (`vscode-neovim.textDecorationsAtTop`) ( [#358](https://github.com/asvetliakov/vscode-neovim/issues/358) + ), contributed by @jhgarner +- Fix incorrect `/w` mappings ( [#359](https://github.com/asvetliakov/vscode-neovim/issues/359) ), contributed by @tschaei +- Replace/modernize neovim vscode command line interop mappings by `call` ( [#362](https://github.com/asvetliakov/vscode-neovim/issues/362) ), contributed by @theol0403 +- Fix incorrect `gf` mapping ( [#365](https://github.com/asvetliakov/vscode-neovim/issues/365) ), contributed by @Yuuki77 +- Fix applying vim HL (such as `MatchParen`) at end of a line ( [#371](https://github.com/asvetliakov/vscode-neovim/issues/371) ) +- Fix incorrect cursor position when selecting next/prev search result ( [#366](https://github.com/asvetliakov/vscode-neovim/issues/366) ) +- Fix/improve behavior of auto-accepting vim return prompt `Press enter to continue`. In some cases it was excess ( + [#372](https://github.com/asvetliakov/vscode-neovim/issues/372) ) +- Bundle extension by webpack ( [#377](https://github.com/asvetliakov/vscode-neovim/issues/377) ) + +## [0.0.62] + +- Fix jumplist ( [#350](https://github.com/asvetliakov/vscode-neovim/issues/350) ) +- Add `K` and `gO` mappings (mapped to `showHover` and `goToSymbol`) ( [#108](https://github.com/asvetliakov/vscode-neovim/issues/108) ) (@Shatur95) +- Fix images/icon (@Shatur95) + +## [0.0.60/61] + +Started from this version `neovim 0.5` nightly version is required Many things have been refactored/changed internally +in this release. So if you see any regression - please fill an issue + +- Turn on VIM smartindenting/autoindenting and remove custom vscode bindings to `o`/`O` (so it uses VIM ones) +- New buffer,window and cursor management. This makes the extension finally work with git diff view, peek views, + search editor views and even in output channels! ( [#53](https://github.com/asvetliakov/vscode-neovim/issues/53) , [#187](https://github.com/asvetliakov/vscode-neovim/issues/187) , [#220](https://github.com/asvetliakov/vscode-neovim/issues/220) , [#223](https://github.com/asvetliakov/vscode-neovim/issues/223), [#226](https://github.com/asvetliakov/vscode-neovim/issues/226)) +- Implement multi-line messages pager. Things like `:registers`, `:changes`, `:jumps`, `:messages` are working + correctly now ( [#202](https://github.com/asvetliakov/vscode-neovim/issues/202) , [#78](https://github.com/asvetliakov/vscode-neovim/issues/78) , [#296](https://github.com/asvetliakov/vscode-neovim/issues/296) ) +- Fix tab indent problems and sync vscode tab settings with neovim ( [#275](https://github.com/asvetliakov/vscode-neovim/issues/275) , [#239](https://github.com/asvetliakov/vscode-neovim/issues/239) , [#264](https://github.com/asvetliakov/vscode-neovim/issues/264) , [#167](https://github.com/asvetliakov/vscode-neovim/issues/167) , [#100](https://github.com/asvetliakov/vscode-neovim/issues/100) , [#152](https://github.com/asvetliakov/vscode-neovim/issues/152) , [#289](https://github.com/asvetliakov/vscode-neovim/issues/289) ) +- Fix few macro recording problems ( [#207](https://github.com/asvetliakov/vscode-neovim/issues/207) ) +- Fix ghost keys after exiting insert mode ( [#324](https://github.com/asvetliakov/vscode-neovim/issues/324) ). For `jj` / `jk` users there are still few problems ( [#330](https://github.com/asvetliakov/vscode-neovim/issues/330) ) but + they will be sorted in next releases +- Fix few command line problems ( [#155](https://github.com/asvetliakov/vscode-neovim/issues/155) , [#288](https://github.com/asvetliakov/vscode-neovim/issues/288) ) +- Fix some buffer desync issues ( [#312](https://github.com/asvetliakov/vscode-neovim/issues/312) ) +- Fix `v/s` split shortcuts ( [#331](https://github.com/asvetliakov/vscode-neovim/issues/331) ) +- Fix brackets for substitute command ( [#300](https://github.com/asvetliakov/vscode-neovim/issues/300) ) +- Add logger and log-related configuration to options +- Change some default code-actions mappings ( [#339](https://github.com/asvetliakov/vscode-neovim/issues/339) ) +- Add extension icon. Many thanks to + +## [0.0.52] + +- Implement dot repeat (`.`) command ( [#209](https://github.com/asvetliakov/vscode-neovim/issues/209) , [#173](https://github.com/asvetliakov/vscode-neovim/issues/173) ). Also fixes `` insert comamnds, like [#255](https://github.com/asvetliakov/vscode-neovim/issues/255) , [#249](https://github.com/asvetliakov/vscode-neovim/issues/249) +- Removed file name from statusbar ( [#291](https://github.com/asvetliakov/vscode-neovim/issues/291) , [#230](https://github.com/asvetliakov/vscode-neovim/issues/230) ), thanks @Shatur95 +- Fix visual selection conversion ( [#233](https://github.com/asvetliakov/vscode-neovim/issues/233) ), thanks @Shatur95 +- Fix wrong string comparsions ( [#308](https://github.com/asvetliakov/vscode-neovim/issues/308) ), thanks @Shatur95 +- Make espace keys work only when editor has focus ( [#290](https://github.com/asvetliakov/vscode-neovim/issues/290) ) , thanks @David-Else +- Added some file name completion in commandline ( [#192](https://github.com/asvetliakov/vscode-neovim/issues/192) ), thanks @ppwwyyxx +- Fix missing `c` mapping ( [#180](https://github.com/asvetliakov/vscode-neovim/issues/180) ), thanks @trkoch +- Add operating system dependent path settings ( [#137](https://github.com/asvetliakov/vscode-neovim/issues/137) ), thanks @3nuc +- bind gh to mousehover ( [#107](https://github.com/asvetliakov/vscode-neovim/issues/107) ), thanks @kwonoj + +## [0.0.50] + +- Fix cursor & extension hang for some cases ( [#153](https://github.com/asvetliakov/vscode-neovim/issues/153) ) + +## [0.0.49] + +- Use command line completion only for command line originated via `:` command ( [#146](https://github.com/asvetliakov/vscode-neovim/issues/146) ) + +## [0.0.48] + +- Fix incorrect cursor for multibyte single column width characters ( [#142](https://github.com/asvetliakov/vscode-neovim/issues/142) ) +- Fix vim-easymotion decorators drifting when text has multi-byte characters ( [#144](https://github.com/asvetliakov/vscode-neovim/issues/144) ) +- Disabled vim modeline processing +- Force vim folds to be always opened to prevent problems +- Fix vim-easymotion decorators drifting to the end of line ( [#60](https://github.com/asvetliakov/vscode-neovim/issues/60) ) +- Fix incorrect cursor positions after commands/mappings such as `>gv` ( [#141](https://github.com/asvetliakov/vscode-neovim/issues/141) ) +- Fix double command prompt ( [#120](https://github.com/asvetliakov/vscode-neovim/issues/120) ) + +## [0.0.47] + +- Fix the problem when cursor/extension stucks for second+ editor columns ( [#126](https://github.com/asvetliakov/vscode-neovim/issues/126) ) + +## [0.0.46] + +- Update `neovim-client` to latest version. This should eliminate delay between operations and generally improve the + performance. Kudos to @kwonoj for impressive work here +- Fix cursor movement for 2-byte chars ( [#127](https://github.com/asvetliakov/vscode-neovim/issues/127) ) + +## [0.0.45] + +- Fix VIM filetype detection ( [#115](https://github.com/asvetliakov/vscode-neovim/issues/115) ). This means `FileType` autocmd should work correctly now. Also fixes + `vim-matchup` plugin. This may introduce some side effects from previously disabled filetype plugins - just fill an + issue if something doesn't work +- Fix broken cursor position in insert mode for special keys (such as `del`/`backspace`/etc) if you had recorded a + macro in insert mode previously + +## [0.0.44] + +- Hotfix broken `VSCodeCallRange` (commenting/formatting didn't work because of this) + +## [0.0.43] + +- Visual modes DON'T produce vscode selections right now. These were implemented through various workarounds, gave + really small value and were constant origin of headache. Also this fixes few issues related to visual modes ( [#105](https://github.com/asvetliakov/vscode-neovim/issues/105), + [#118](https://github.com/asvetliakov/vscode-neovim/issues/118) ). To round the corners, invoking vscode's command palette (by using default vscode hotkeys) from visual mode + will convert neovim visual selection to vscode visual selection, this should cover most use cases. Also, there are + `VScodeNotifyRange`/`VSCodeCallRange`/`VSCodeNotifyRangePos`/`VSCodeCallRangePos` vim functions if you need to call + vscode command with selection. See + [this for example](https://github.com/asvetliakov/vscode-neovim/blob/e61832119988bb1e73b81df72956878819426ce2/vim/vscode-code-actions.vim#L42-L54) + and + [mapping](https://github.com/asvetliakov/vscode-neovim/blob/e61832119988bb1e73b81df72956878819426ce2/vim/vscode-code-actions.vim#L98) + if you're doing custom mappings and assuming there is some vscode selection exist. Use `VSCodeNotifyRange` when you + don't need a column pos (e.g. for visual line mode) and `VSCodeNotifyRangePos` when you need them (e.g for visual + mode). +- Refactored vscode<->neovim cursor syncrhonization +- Fix `ma`/`mi` not working when selecting lines upward ( [#117](https://github.com/asvetliakov/vscode-neovim/issues/117) ) +- Changed `ma`/`mi` to skip empty lines. Added `mA`/`mI` for the previous behavior +- Macro recording fixes +- Refactored & optimized HL provider (highlight should be faster now) +- Override default keybindings only when neovim was initialized succesfully ( [#112](https://github.com/asvetliakov/vscode-neovim/issues/112) ) +- Don't preselect `'<,'>` marks when invoking cmdline from visual line ( [#111](https://github.com/asvetliakov/vscode-neovim/issues/111) ) +- Implemented commandline history ( [#88](https://github.com/asvetliakov/vscode-neovim/issues/88) ) +- Add the option to start the visual mode with mouse selection ( [#94](https://github.com/asvetliakov/vscode-neovim/issues/94) ) + +## [0.0.42] + +- Disabled jj/jk escape keys by default + +## [0.0.40] + +- Fix cursor/highlight not working with multi-byte width characters (Russian, Chinese, Japanese, etc...), i.e the + extension should work normally with them (#68, [#91](https://github.com/asvetliakov/vscode-neovim/issues/91)) +- Fix incorrect vim highlight when using tab indentation (#81) +- Removed multiple cursors by default from visual line/block modes (visual block mode still spawns cursors but they + are pruly visual) (#59, [#61](https://github.com/asvetliakov/vscode-neovim/issues/61)). Previous behavior is still accessible by `mi` or `ma` keybindings while in visual + line/block modes +- Allow to override keys/mappings set by extension (previously they have been set after user config loaded) +- Allow to identify if neovim is running through vscode extension by checking `if exists('g:vscode')` (#83) +- Added `` and `Escape` as escape keys (#74) +- Added `` and `` to select next autocomplete suggestion/show next/prev parameter hint +- Added `jj` and `jk` as escape keys from the insert mode (#75) +- Pass `` to neovim and call VSCodeCommentary (still recommended to bind it to own keys) (#89) +- Pass `` to neovim +- Allow to pass additional ctrl keys to neovim (see Readme) +- Added workaround for `gk`/`gj` motions +- Corrected `gf`/`gF` keybindings. Add `` as go-to-def (works in help too) (#77). Add `gd`/`gD` as secondary + mappings to go-to-def/peek-def. Add `gd` to reveal definition aside + +## [0.0.39] + +- Fix bug with incorrect buffer edits +- Fix cursor jumping after pressing something like `cw` and fast typing text in large file + +## [0.0.38] + +- Fix cursor position after deleting a line and possibly other operations + +## [0.0.37] + +- Fix performance of o/O. If you're using custom bindings for them, you might need to rebind them to call new action. + See vscode-insert.vim + +## [0.0.36] + +- Fix macros with insert mode +- Big performance improvements, fix undo & macros performance +- Allow to use neovim installed in WSL. Tick useWSL conf checkbox and specify linux path to neovim + +## [0.0.35] + +- Use VIM jumplist for ``/``/`` + +## [0.0.33-0.0.34] + +- Fix extension for linux/macos users +- Fix buffer-vscode desynchornization after redo + +## [0.0.32] + +- Cmdline fixes/improvements (#50, [#51](https://github.com/asvetliakov/vscode-neovim/issues/51)) + +## [0.0.31] + +- Fix crazy cursor jumping when having opened multiple editors panes + +## [0.0.30] + +- Implemented nvim's ext_multigrid support. This solves almost all problems with vim highlighting and potentially + enables easymotion's overwin motions (they still don't work however). Window management still should be performed by + vscode +- Removed vim-style cursor following on editor scrolling. This totally screwed vscode jumplist, so better to have + working jumplist than such minor feature. +- Cursor position fixes +- `:e [filepath]` works again + +## [0.0.29] + +- Fix selection is being reset in visual mode after typing `vk$` (#48) +- Fix not cleaning incsearch highlight after canceling the incsearch (#46) +- Fix incorrect cursor after switching the editor to the same document but in different editor column (#49) + +## [0.0.28] + +- Use non-blocking rpc requests when communicatings with vscode for file management operations (closing, opening, + etc...). Should eliminate the issue when vim is 'stuck' and doesn't respond anymore +- Fix incorrect cursor positions after opening `:help something` (#44) +- Fix visual block selection for single column in multiple rows (#42) +- Enable VIM syntax highlighting for help files and external buffers like `:PlugStatus`. It's slow and sometimes buggy + but better than nothing in meantime + +## [0.0.27] + +- Fix incsearch and allow to use ``/`` with it +- Reworked/Refactored command line. Now with wildmenu completion support. Also keys like `` or `` are + working fine now in cmdline now + +## [0.0.26] + +- Partially revert [#41](https://github.com/asvetliakov/vscode-neovim/issues/41) + +## [0.0.25] + +- Tab management commands & keys, like `gt` or `tabo[nly]` +- Window management commands & keys like `sp[lit]`/`vs[plit]` and ` j/k/l/h` keys +- Bind scroll commands in neovim instead of vscode extension + ([#41](https://github.com/asvetliakov/vscode-neovim/issues/41)) + +## [0.0.24] + +- File management commands, like `:w` or `:q` (bound to vscode actions) +- Fix [#40](https://github.com/asvetliakov/vscode-neovim/issues/40) + +## [0.0.1-0.0.23] + +- A bunch of development versions. 0.0.23 has the following features +- Correct editing and the cursor management +- Control keys in the insert & normal/visual modes +- Visual mode produces vscode selections +- Working VIM highlighting (most of a default VIM HL groups are ignored since they don't make sense in VSCode, but non + standard groups are processed, so things like vim-easymotion or vim-highlight are working fine) +- Scrolling commands (scrolling is done by vscode so things are slighly different here) +- Special vim-easymotion fork to use vscode text decorators instead of replacing text (as original vim-easymotion + does) +- Analogue of vim-commentary (original vim-commentary works fine too) +- Working external vim buffers, like `:help` or `:PlugStatus` +- Multiple cursors for visual line/visual block modes + +## [0.0.1] + +- Initial release diff --git a/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js new file mode 100644 index 0000000..af10195 --- /dev/null +++ b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js @@ -0,0 +1,3 @@ +/*! For license information please see extension.js.LICENSE.txt */ +(()=>{var __webpack_modules__={163:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createChainableApi=function(e,t,n,o){const s=this;if(s[`${e}Promise`]&&0===s[`${e}Promise`].status&&s[`${e}Proxy`])return s[`${e}Proxy`];s[`${e}Promise`]=n(),[...i,...Object.getOwnPropertyNames(t.prototype)].forEach((t=>{Object.defineProperty(s[`${e}Promise`],t,{enumerable:!0,writable:!0,configurable:!0})}));const a={get:(n,i)=>{const a=Object.prototype.hasOwnProperty.call(t.prototype,i)||Object.prototype.hasOwnProperty.call(r.BaseApi.prototype,i),u=Object.getOwnPropertyDescriptor(t.prototype,i)||Object.getOwnPropertyDescriptor(r.BaseApi.prototype,i),c=u&&(void 0!==u.get||void 0!==u.set);return t&&a?a&&!c&&(i in t.prototype&&"function"==typeof t.prototype[i]||i in r.BaseApi.prototype&&"function"==typeof r.BaseApi.prototype[i])?(...t)=>s[`${e}Promise`].then((e=>e[i].call(e,...t))):o&&o()||s[`${e}Promise`].then((e=>e[i])):i in n?"function"==typeof n[i]?n[i].bind(n):n[i]:null},set:(e,t,n,r)=>(r&&(r instanceof Promise||"then"in r)?r.then((e=>{t in e&&(e[t]=n)})):e[t]=n,!0)};return s[`${e}Proxy`]=new Proxy(s[`${e}Promise`],a),s[`${e}Proxy`]};const r=n(9691),i=Object.getOwnPropertyNames(r.BaseApi.prototype)},181:e=>{"use strict";e.exports=require("buffer")},203:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.exportsForTesting=void 0,t.findNvim=function(e={}){var t,n,s;const h=function(){const e=new Set,{PATH:t,USERPROFILE:n,LOCALAPPDATA:r,PROGRAMFILES:o,HOME:s}=process.env;return null==t||t.split(i.delimiter).forEach((t=>e.add(f(t)))),l?(n&&e.add(f(`${n}/scoop/shims`)),e.add(f("C:/ProgramData/scoop/shims")),r&&(e.add(f(`${r}/Microsoft/WindowsApps`)),e.add(f(`${r}/Microsoft/WinGet/Packages`))),o&&(e.add(f(`${o}/Neovim/bin`)),e.add(f(`${o} (x86)/Neovim/bin`)),e.add(f(`${o}/WinGet/Packages`)),e.add(f(`${o} (x86)/WinGet/Packages`)))):(["/usr/local/bin","/usr/bin","/opt/homebrew/bin","/home/linuxbrew/.linuxbrew/bin","/snap/nvim/current/usr/bin"].forEach((t=>e.add(t))),s&&(e.add(f(`${s}/bin`)),e.add(f(`${s}/.linuxbrew/bin`)))),e}(),p=l?"nvim.exe":"nvim",g=(null!==(t=e.paths)&&void 0!==t?t:[]).map(f),v=new Set([...g,...(null!==(n=e.dirs)&&void 0!==n?n:[]).map((e=>f((0,i.join)(e,p)))),...[...h].map((e=>(0,i.join)(e,p)))]),m=new Array,y=new Array;for(const t of v)if((0,o.existsSync)(t)||g.includes(t))try{(0,o.accessSync)(t,o.constants.X_OK);const n=(0,r.execFileSync)(t,["--version"]).toString(),i=a.exec(n),l=u.exec(n),h=c.exec(n);if(i&&l&&h)if("minVersion"in e&&1===d(null!==(s=e.minVersion)&&void 0!==s?s:"0.0.0",i[1]))y.push({nvimVersion:i[1],path:t,buildType:l[1],luaJitVersion:h[1]});else if(m.push({nvimVersion:i[1],path:t,buildType:l[1],luaJitVersion:h[1]}),e.firstMatch)return{matches:m,invalid:y}}catch(e){y.push({path:t,error:e})}return void 0!==e.orderBy&&"desc"!==e.orderBy||m.sort(((e,t)=>{var n,r;return d(null!==(n=t.nvimVersion)&&void 0!==n?n:"0.0.0",null!==(r=e.nvimVersion)&&void 0!==r?r:"0.0.0")})),{matches:m,invalid:y}};const r=n(1421),i=n(6760),o=n(3024),s=/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/,a=/^NVIM\s+v(.+)$/m,u=/^Build\s+type:\s+(.+)$/m,c=/^LuaJIT\s+(.+)$/m,l="win32"===process.platform;function h(e){if("string"!=typeof e)throw new TypeError("Invalid version format: not a string");const t=e.match(s);if(!t)return;const[,n,r,i,o]=t,a=[Number(n),Number(r),Number(i)];return void 0!==o?a.push(o):a.push("zzz"),a}function d(e,t){var n,r,i,o,s,a;const u=h(e),c=h(t),l=Math.min(null!==(n=null==u?void 0:u.length)&&void 0!==n?n:0,null!==(r=null==c?void 0:c.length)&&void 0!==r?r:0);for(let e=0;en)return 1}return(null!==(s=null==c?void 0:c.length)&&void 0!==s?s:0)>(null!==(a=null==u?void 0:u.length)&&void 0!==a?a:0)?-1:0}function f(e){return(0,i.normalize)(l?e.toLowerCase():e)}},223:e=>{"use strict";const t={};function n(e,n,r){r||(r=Error);class i extends r{constructor(e,t,r){super(function(e,t,r){return"string"==typeof n?n:n(e,t,r)}(e,t,r))}}i.prototype.name=r.name,i.prototype.code=e,t[e]=i}function r(e,t){if(Array.isArray(e)){const n=e.length;return e=e.map((e=>String(e))),n>2?`one of ${t} ${e.slice(0,n-1).join(", ")}, or `+e[n-1]:2===n?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}return`of ${t} ${String(e)}`}n("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),n("ERR_INVALID_ARG_TYPE",(function(e,t,n){let i;var o;let s;if("string"==typeof t&&(o="not ",t.substr(0,4)===o)?(i="must not be",t=t.replace(/^not /,"")):i="must be",function(e,t,n){return(void 0===n||n>e.length)&&(n=e.length),e.substring(n-9,n)===t}(e," argument"))s=`The ${e} ${i} ${r(t,"type")}`;else{s=`The "${e}" ${"number"!=typeof u&&(u=0),u+1>(a=e).length||-1===a.indexOf(".",u)?"argument":"property"} ${i} ${r(t,"type")}`}var a,u;return s+=". Received type "+typeof n,s}),TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.F=t},257:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(0,o.isAsync)(e)?function(...t){const n=t.pop();return a(e.apply(this,t),n)}:(0,r.default)((function(t,n){var r;try{r=e.apply(this,t)}catch(e){return n(e)}if(r&&"function"==typeof r.then)return a(r,n);n(null,r)}))};var r=s(n(795)),i=s(n(6368)),o=n(4877);function s(e){return e&&e.__esModule?e:{default:e}}function a(e,t){return e.then((e=>{u(t,null,e)}),(e=>{u(t,e&&(e instanceof Error||e.message)?e:new Error(e))}))}function u(e,t,n){try{e(t,n)}catch(e){(0,i.default)((e=>{throw e}),e)}}e.exports=t.default},358:e=>{"use strict";function t(e,t){r(e,t),n(e)}function n(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function r(e,t){e.emit("error",t)}e.exports={destroy:function(e,i){var o=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(i?i(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(r,this,e)):process.nextTick(r,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!i&&e?o._writableState?o._writableState.errorEmitted?process.nextTick(n,o):(o._writableState.errorEmitted=!0,process.nextTick(t,o,e)):process.nextTick(t,o,e):i?(process.nextTick(n,o),i(e)):process.nextTick(n,o)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var n=e._readableState,r=e._writableState;n&&n.autoDestroy||r&&r.autoDestroy?e.destroy(t):e.emit("error",t)}}},504:(e,t,n)=>{"use strict";const r=n(857),i=n(8521),o=n(7918)("winston:exception"),s=n(7347),a=n(5031),u=n(5238);e.exports=class{constructor(e){if(!e)throw new Error("Logger is required to handle exceptions");this.logger=e,this.handlers=new Map}handle(...e){e.forEach((e=>{if(Array.isArray(e))return e.forEach((e=>this._addHandler(e)));this._addHandler(e)})),this.catcher||(this.catcher=this._uncaughtException.bind(this),process.on("uncaughtException",this.catcher))}unhandle(){this.catcher&&(process.removeListener("uncaughtException",this.catcher),this.catcher=!1,Array.from(this.handlers.values()).forEach((e=>this.logger.unpipe(e))))}getAllInfo(e){let t=null;return e&&(t="string"==typeof e?e:e.message),{error:e,level:"error",message:[`uncaughtException: ${t||"(no error message)"}`,e&&e.stack||" No stack trace"].join("\n"),stack:e&&e.stack,exception:!0,date:(new Date).toString(),process:this.getProcessInfo(),os:this.getOsInfo(),trace:this.getTrace(e)}}getProcessInfo(){return{pid:process.pid,uid:process.getuid?process.getuid():null,gid:process.getgid?process.getgid():null,cwd:process.cwd(),execPath:process.execPath,version:process.version,argv:process.argv,memoryUsage:process.memoryUsage()}}getOsInfo(){return{loadavg:r.loadavg(),uptime:r.uptime()}}getTrace(e){return(e?a.parse(e):a.get()).map((e=>({column:e.getColumnNumber(),file:e.getFileName(),function:e.getFunctionName(),line:e.getLineNumber(),method:e.getMethodName(),native:e.isNative()})))}_addHandler(e){if(!this.handlers.has(e)){e.handleExceptions=!0;const t=new u(e);this.handlers.set(e,t),this.logger.pipe(t)}}_uncaughtException(e){const t=this.getAllInfo(e),n=this._getExceptionHandlers();let r,a="function"==typeof this.logger.exitOnError?this.logger.exitOnError(e):this.logger.exitOnError;function u(){o("doExit",a),o("process._exiting",process._exiting),a&&!process._exiting&&(r&&clearTimeout(r),process.exit(1))}if(!n.length&&a&&(console.warn("winston: exitOnError cannot be true with no exception handlers."),console.warn("winston: not exiting process."),a=!1),!n||0===n.length)return process.nextTick(u);i(n,((e,t)=>{const n=s(t),r=e.transport||e;function i(e){return()=>{o(e),n()}}r._ending=!0,r.once("finish",i("finished")),r.once("error",i("error"))}),(()=>a&&u())),this.logger.log(t),a&&(r=setTimeout(u,3e3))}_getExceptionHandlers(){return this.logger.transports.filter((e=>(e.transport||e).handleExceptions))}}},555:(e,t,n)=>{"use strict";const r=n(2711),{warn:i}=n(2159);t.version=n(6256).version,t.transports=n(3475),t.config=n(4575),t.addColors=r.levels,t.format=r.format,t.createLogger=n(2751),t.Logger=n(8010),t.ExceptionHandler=n(504),t.RejectionHandler=n(2134),t.Container=n(7083),t.Transport=n(3623),t.loggers=new t.Container;const o=t.createLogger();Object.keys(t.config.npm.levels).concat(["log","query","stream","add","remove","clear","profile","startTimer","handleExceptions","unhandleExceptions","handleRejections","unhandleRejections","configure","child"]).forEach((e=>t[e]=(...t)=>o[e](...t))),Object.defineProperty(t,"level",{get:()=>o.level,set(e){o.level=e}}),Object.defineProperty(t,"exceptions",{get:()=>o.exceptions}),Object.defineProperty(t,"rejections",{get:()=>o.rejections}),["exitOnError"].forEach((e=>{Object.defineProperty(t,e,{get:()=>o[e],set(t){o[e]=t}})})),Object.defineProperty(t,"default",{get:()=>({exceptionHandlers:o.exceptionHandlers,rejectionHandlers:o.rejectionHandlers,transports:o.transports})}),i.deprecated(t,"setLevels"),i.forFunctions(t,"useFormat",["cli"]),i.forProperties(t,"useFormat",["padLevels","stripColors"]),i.forFunctions(t,"deprecated",["addRewriter","addFilter","clone","extend"]),i.forProperties(t,"deprecated",["emitErrs","levelLength"])},589:(e,t)=>{"use strict";t.levels={emerg:0,alert:1,crit:2,error:3,warning:4,notice:5,info:6,debug:7},t.colors={emerg:"red",alert:"yellow",crit:"red",error:"red",warning:"red",notice:"yellow",info:"green",debug:"blue"}},618:(e,t)=>{"use strict";t.iT=void 0;class n{constructor(e){this.state=e,this.c=0,this.result={value:null,done:!1}}[Symbol.iterator](){return this}next(){const{state:e,result:t}=this;if(this.c>1)return t.done=!0,t.value=void 0,t;const n=function(e,t){const{b:n,eq:r,stack_base:i}=e;let{i:o,N:s,j:a,M:u,Z:c,stack_top:l}=e;for(;;)switch(t){case 0:e:for(;s>0&&u>0;){n.fill(0,0,2*c);const e=s-u,t=s+u,h=1&t,d=o+s-1,f=a+u-1,p=(t+h)/2;let g;t:for(let t=0;t<=p;t++){const p=2*Math.max(0,t-u)-t,v=t-2*Math.max(0,t-s);for(let d=p;d<=v;d+=2){const f=n[d-1-c*Math.floor((d-1)/c)],p=n[d+1-c*Math.floor((d+1)/c)],v=d===-t||d!==t&&f=1-t&&g=s){if(t>1||y!==v){i[l++]=o+y,i[l++]=s-y,i[l++]=a+b,i[l++]=u-b,s=v,u=m,c=2*(Math.min(s,u)+1);continue e}break t}}for(let m=p;m<=v;m+=2){const p=n[c+m-1-c*Math.floor((m-1)/c)],v=n[c+m+1-c*Math.floor((m+1)/c)],y=m===-t||m!==t&&p=-t&&g<=t&&w+n[g-c*Math.floor(g/c)]>=s){if(t>0||w!==y){i[l++]=o+s-y,i[l++]=y,i[l++]=a+u-b,i[l++]=b,s-=w,u-=_,c=2*(Math.min(s,u)+1);continue e}break t}}}if(s!==u){u>s?(o+=s,a+=s,u-=s,s=0):(o+=u,a+=u,s-=u,u=0);break}}if(s+u!==0)if(e.pxe===o||e.pye===a)e.pxe=o+s,e.pye=a+u;else{const t=e.pxs;if(e.oxs=e.pxs,e.oxe=e.pxe,e.oys=e.pys,e.oye=e.pye,e.pxs=o,e.pxe=o+s,e.pys=a,e.pye=a+u,t>=0)return e.i=o,e.N=s,e.j=a,e.M=u,e.Z=c,e.stack_top=l,1}case 1:if(0===l)return 2;u=i[--l],a=i[--l],s=i[--l],o=i[--l],c=2*(Math.min(s,u)+1),t=0}}(e,this.c);return this.c=n,1===n?(t.value=[e.oxs,e.oxe,e.oys,e.oye],t):e.pxs>=0?(t.value=[e.pxs,e.pxe,e.pys,e.pye],t):(t.done=!0,t.value=void 0,t)}}function r(e,t,r){let[i,o,s]=[0,e.length,t.length];if("function"==typeof r){for(;ii&&s>i;);}else{for(;ii&&s>i;);r=(n,r)=>e[n]===t[r]}return function(e,t,r,i,o){const s=2*(Math.min(t,i)+1),a=t+i,u=new(a<256?Uint8Array:a<65536?Uint16Array:Uint32Array)(2*s);return new n({i:e,N:t,j:r,M:i,Z:s,b:u,eq:o,pxs:-1,pxe:-1,pys:-1,pye:-1,oxs:-1,oxe:-1,oys:-1,oye:-1,stack_top:0,stack_base:[]})}(i,o+1-i,i,s+1-i,r)}Symbol.iterator;t.iT=function*(e,t,n){const i=ArrayBuffer.isView(e)?Uint8Array.prototype.subarray:e.slice;for(const o of r(e,t,n))o[2]=i.call(t,o[2],o[3]),yield o}},795:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return function(...t){var n=t.pop();return e.call(this,t,n)}},e.exports=t.default},811:e=>{e.exports=function(e){var t=["underline","inverse","grey","yellow","red","green","blue","white","cyan","magenta","brightYellow","brightRed","brightGreen","brightBlue","brightWhite","brightCyan","brightMagenta"];return function(n,r,i){return" "===n?n:e[t[Math.round(Math.random()*(t.length-2))]](n)}}},857:e=>{"use strict";e.exports=require("os")},929:(e,t,n)=>{"use strict";const r=n(5532),{MESSAGE:i}=n(4763),o=n(2068);e.exports=r((e=>{const t=o(Object.assign({},e,{level:void 0,message:void 0,splat:void 0})),n=e.padding&&e.padding[e.level]||"";return e[i]="{}"!==t?`${e.level}:${n} ${e.message} ${t}`:`${e.level}:${n} ${e.message}`,e}))},963:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e[Symbol.iterator]&&e[Symbol.iterator]()},e.exports=t.default},1019:(e,t,n)=>{"use strict";n.d(t,{$:()=>a});var r=n(1398),i=n(2640),o=n(2298);const s="win32"===process.platform,a=new class{constructor(){this.disposables=[],this.root=i.Gv,this.requireRestartConfigs=["highlightGroups.highlights","neovimClean","NVIM_APPNAME","logOutputToConsole","neovimWidth","useWSL","wslDistribution","neovimInitVimPaths.darwin","neovimInitVimPaths.linux","neovimInitVimPaths.win32","neovimExecutablePaths.darwin","neovimExecutablePaths.linux","neovimExecutablePaths.win32","afterInitConfig"].map((e=>`${this.root}.${e}`))}dispose(){(0,o.v3)(this.disposables)}init(){this.onConfigurationChanged(),r.workspace.onDidChangeConfiguration(this.onConfigurationChanged,this,this.disposables)}onConfigurationChanged(e){this.cfg=r.workspace.getConfiguration(this.root),o.CJ.set("neovim.editorLangIdExclusions",this.editorLangIdExclusions);const t=this.ctrlKeysNormalMode,n=this.ctrlKeysInsertMode;if(i.Dz.forEach((e=>{o.CJ.set(`neovim.ctrlKeysNormal.${e}`,t.includes(e)),o.CJ.set(`neovim.ctrlKeysInsert.${e}`,n.includes(e))})),!e)return;const s=this.requireRestartConfigs.find((t=>e.affectsConfiguration(t)));s&&r.window.showInformationMessage(`Changing "${s}" requires restart to take effect.`,"Restart").then((e=>{"Restart"===e&&r.commands.executeCommand("vscode-neovim.restart")}))}getSystemSpecificSetting(e){let t=process.platform;return t=this.useWsl&&"win32"===t?"linux":t,this.cfg.get(`${e}.${t}`)}getNeovimPath(){var e;return null!==(e=this.getSystemSpecificSetting("neovimExecutablePaths"))&&void 0!==e?e:"nvim"}getNeovimInitPath(){return this.getSystemSpecificSetting("neovimInitVimPaths")}get highlights(){return this.cfg.get("highlightGroups.highlights")}get ctrlKeysNormalMode(){return this.cfg.get("ctrlKeysForNormalMode")}get ctrlKeysInsertMode(){return this.cfg.get("ctrlKeysForInsertMode")}get editorLangIdExclusions(){return this.cfg.get("editorLangIdExclusions")}get useWsl(){return r.extensions.getExtension(i.sp).extensionKind!==r.ExtensionKind.Workspace&&s&&this.cfg.get("useWSL",!1)}get wslDistribution(){return this.cfg.get("wslDistribution","")}get revealCursorScrollLine(){return this.cfg.get("revealCursorScrollLine",!1)}get neovimWidth(){return this.cfg.get("neovimWidth",1e3)}get neovimViewportWidth(){return this.neovimWidth}get neovimViewportHeightExtend(){return this.cfg.get("neovimViewportHeightExtend",1)}get neovimPath(){return this.getNeovimPath()}get neovimInitPath(){var e;return null!==(e=this.getNeovimInitPath())&&void 0!==e?e:""}get clean(){return this.cfg.get("neovimClean",!1)}get NVIM_APPNAME(){return this.cfg.get("NVIM_APPNAME","")}get logPath(){return this.cfg.get("logPath","")}get outputToConsole(){return this.cfg.get("logOutputToConsole",!1)}get statusLineSeparator(){return this.cfg.get("statusLineSeparator","|")}get normalSelectionDebounceTime(){return this.cfg.get("normalSelectionDebounceTime",50)}get mouseSelectionDebounceTime(){return this.cfg.get("mouseSelectionDebounceTime",100)}get disableMouseSelection(){return 0===this.mouseSelectionDebounceTime}get compositeTimeout(){return this.cfg.get("compositeTimeout",300)}get compositeKeys(){return this.cfg.get("compositeKeys",{})}get autoGeneratedDocumentSchemes(){return this.cfg.get("autoGeneratedDocumentSchemes",[])}}},1049:(e,t,n)=>{"use strict";const r=n(5532),{MESSAGE:i}=n(4763),o=n(2068);function s(e,t){return"bigint"==typeof t?t.toString():t}e.exports=r(((e,t)=>{const n=o.configure(t);return e[i]=n(e,t.replacer||s,t.space),e}))},1136:(e,t,n)=>{"use strict";const r=n(9023),{LEVEL:i}=n(4763),o=n(8056),s=e.exports=function(e={}){if(o.call(this,e),!e.transport||"function"!=typeof e.transport.log)throw new Error("Invalid transport, must be an object with a log method.");this.transport=e.transport,this.level=this.level||e.transport.level,this.handleExceptions=this.handleExceptions||e.transport.handleExceptions,this._deprecated(),this.transport.__winstonError||(this.transport.__winstonError=function(e){this.emit("error",e,this.transport)}.bind(this),this.transport.on("error",this.transport.__winstonError))};r.inherits(s,o),s.prototype._write=function(e,t,n){if(this.silent||!0===e.exception&&!this.handleExceptions)return n(null);(!this.level||this.levels[this.level]>=this.levels[e[i]])&&this.transport.log(e[i],e.message,e,this._nop),n(null)},s.prototype._writev=function(e,t){for(let t=0;t{"use strict";const t=e=>null!==e&&"object"==typeof e&&"function"==typeof e.pipe;t.writable=e=>t(e)&&!1!==e.writable&&"function"==typeof e._write&&"object"==typeof e._writableState,t.readable=e=>t(e)&&!1!==e.readable&&"function"==typeof e._read&&"object"==typeof e._readableState,t.duplex=e=>t.writable(e)&&t.readable(e),t.transform=e=>t.duplex(e)&&"function"==typeof e._transform,e.exports=t},1377:(e,t,n)=>{"use strict";n.d(t,{h:()=>l,vF:()=>c});var r=n(9896),i=n.n(r),o=n(9023),s=n(1398),a=n(2298),u=n(2640);const c=new class{constructor(){this.disposables=[],this.loggers=new Map}init(e,t=!1){this.outputChannel=s.window.createOutputChannel(`${u.Gv} logs`,{log:!0}),this.disposables.push(this.outputChannel,this.outputChannel.onDidChangeLogLevel((e=>this.onLogLevelChanged(e)))),this.level=this.outputChannel.logLevel,this.logToConsole=t,this.filePath=e,this.setupLogFile()}dispose(){(0,a.v3)(this.disposables)}onLogLevelChanged(e){this.level=e,this.setupLogFile()}setupLogFile(){if(this.filePath){if(this.level===s.LogLevel.Off||!this.fd){if(this.level===s.LogLevel.Off&&this.fd)return i().closeSync(this.fd),void(this.fd=void 0);try{this.fd=i().openSync(this.filePath,"w")}catch(e){return void s.window.showErrorMessage(`Can not open log file at ${this.filePath}: ${e}`)}this.disposables.push({dispose:()=>{this.fd&&i().closeSync(this.fd)}})}}else this.fd&&(i().closeSync(this.fd),this.fd=void 0)}log(e,t,n,r){var a,u;const c=r.reduce(((e,t,n)=>{if("object"==typeof t)try{t=(0,o.inspect)(t,!1,2,!1)}catch(e){}return e+(n>0?" ":"")+t}),"");if(this.fd||this.logToConsole){const n=`${(new Date).toISOString()} ${t}: ${c}`;this.fd&&i().appendFileSync(this.fd,n+"\n"),this.logToConsole&&console[e===s.LogLevel.Error?"error":"log"](n)}const l=null===(a=s.window.activeTextEditor)||void 0===a?void 0:a.document,h="output"===(null==l?void 0:l.uri.scheme)||(null===(u=null==l?void 0:l.fileName)||void 0===u?void 0:u.startsWith("output:"));if(n&&this.outputChannel&&l&&!h){const n=`${t}: ${c}`;switch(e){case s.LogLevel.Error:this.outputChannel.error(n);break;case s.LogLevel.Warning:this.outputChannel.warn(n);break;case s.LogLevel.Info:this.outputChannel.info(n);break;case s.LogLevel.Debug:this.outputChannel.debug(n);break;case s.LogLevel.Trace:this.outputChannel.trace(n);case s.LogLevel.Off:}}e===s.LogLevel.Error&&s.window.showErrorMessage(c)}createLogger(e,t){const n=this.loggers.has(e)?this.loggers.get(e):{trace:(...n)=>{this.level<=s.LogLevel.Trace&&this.log(s.LogLevel.Trace,e,t,n)},debug:(...n)=>{this.level<=s.LogLevel.Debug&&this.log(s.LogLevel.Debug,e,t,n)},info:(...n)=>{this.level<=s.LogLevel.Info&&this.log(s.LogLevel.Info,e,t,n)},warn:(...n)=>{this.level<=s.LogLevel.Warning&&this.log(s.LogLevel.Warning,e,t,n)},error:(...n)=>{this.level<=s.LogLevel.Error&&this.log(s.LogLevel.Error,e,t,n)},log(e,t,...r){if(e&&"output"!==e.scheme&&!e.toString().startsWith("output:")&&!/[/\\]output:[^/\\]+$/i.test(e.path))switch(t){case s.LogLevel.Error:n.error(...r);break;case s.LogLevel.Warning:n.warn(...r);break;case s.LogLevel.Info:n.info(...r);break;case s.LogLevel.Debug:n.debug(...r);break;case s.LogLevel.Trace:n.trace(...r);case s.LogLevel.Off:}}};return this.loggers.set(e,n),n}};function l(e="Neovim",t=!0){return c.createLogger(e,t)}},1398:e=>{"use strict";e.exports=require("vscode")},1421:e=>{"use strict";e.exports=require("node:child_process")},1588:e=>{e.exports=function(e){var t=["red","yellow","green","blue","magenta"];return function(n,r,i){return" "===n?n:e[t[r++%t.length]](n)}}},1716:function(e,t,n){"use strict";var r,i,o=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Buffer=t.ATTACH=t.DETACH=void 0;const s=n(9691),a=n(7905);t.DETACH=Symbol("detachBuffer"),t.ATTACH=Symbol("attachBuffer");class u extends s.BaseApi{constructor(){super(...arguments),this.prefix=a.Metadata[a.ExtType.Buffer].prefix,this[r]=(...e)=>o(this,[...e],void 0,(function*(e=!1,t={}){return!!this.client.isAttached(this)||this.request(`${this.prefix}attach`,[this,e,t])})),this[i]=()=>this.request(`${this.prefix}detach`,[this])}get isAttached(){return this.client.isAttached(this)}get id(){return this.data}get length(){return this.request(`${this.prefix}line_count`,[this])}get lines(){return this.getLines()}get changedtick(){return this.request(`${this.prefix}get_changedtick`,[this])}get commands(){return this.getCommands()}getCommands(e={}){return this.request(`${this.prefix}get_commands`,[this,e])}getLines({start:e,end:t,strictIndexing:n}={start:0,end:-1,strictIndexing:!0}){const r=void 0===n||n;return this.request(`${this.prefix}get_lines`,[this,e,t,r])}setLines(e,{start:t,end:n,strictIndexing:r}={strictIndexing:!0}){if(void 0===t||void 0===n)throw new Error("start and end are required");const i=void 0===r||r,o="string"==typeof e?[e]:e,s=void 0!==n?n:t+1;return this.request(`${this.prefix}set_lines`,[this,t,s,i,o])}insert(e,t){return this.setLines(e,{start:t,end:t,strictIndexing:!0})}replace(e,t){const n="string"==typeof e?[e]:e;return this.setLines(n,{start:t,end:t+n.length,strictIndexing:!1})}remove(e,t,n){return this.setLines([],{start:e,end:t,strictIndexing:n})}append(e){return this.setLines(e,{start:-1,end:-1,strictIndexing:!1})}get name(){return this.request(`${this.prefix}get_name`,[this])}set name(e){this.request(`${this.prefix}set_name`,[this,e])}get valid(){return this.request(`${this.prefix}is_valid`,[this])}mark(e){return this.request(`${this.prefix}get_mark`,[this,e])}getKeymap(e){return this.request(`${this.prefix}get_keymap`,[this,e])}get loaded(){return this.request(`${this.prefix}is_loaded`,[this])}getOffset(e){return this.request(`${this.prefix}get_offset`,[this,e])}addHighlight({hlGroup:e,line:t,colStart:n,colEnd:r,srcId:i}){const o=void 0!==e?e:"",s=void 0!==r?r:-1,a=void 0!==n?n:-0,u=void 0!==i?i:-1;return this.request(`${this.prefix}add_highlight`,[this,u,o,t,a,s])}clearHighlight(e={}){console.warn("`clearHighlight` is deprecated, use ``clearNamespace()` instead");const{srcId:t,lineStart:n,lineEnd:r}=Object.assign(Object.assign({},{srcId:-1,lineStart:0,lineEnd:-1}),e);return this.request(`${this.prefix}clear_highlight`,[this,t,n,r])}clearNamespace(e){const{nsId:t,lineStart:n,lineEnd:r}=Object.assign(Object.assign({},{nsId:-1,lineStart:0,lineEnd:-1}),e);this.request(`${this.prefix}clear_namespace`,[this,t,n,r])}setVirtualText(e,t,n,r={}){return this.request(`${this.prefix}set_virtual_text`,[this,e,t,n,r])}listen(e,n){return this.isAttached||this[t.ATTACH]().then((t=>{t||this.unlisten(e,n)})),this.client.attachBuffer(this,e,n),()=>{this.unlisten(e,n)}}unlisten(e,n){this.isAttached&&this.client.detachBuffer(this,e,n)&&this[t.DETACH]()}}t.Buffer=u,r=t.ATTACH,i=t.DETACH},1814:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return function(...t){if(null===e)throw new Error("Callback was already called.");var n=e;e=null,n.apply(this,t)}},e.exports=t.default},1863:function(e,t,n){"use strict";const r=n(5532),i=n(6585);e.exports=r((e=>{const t=+new Date;return this.diff=t-(this.prevTime||t),this.prevTime=t,e.ms=`+${i(this.diff)}`,e}))},1911:(e,t,n)=>{"use strict";function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n}},{key:"concat",value:function(e){if(0===this.length)return u.alloc(0);for(var t,n,r,i=u.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,n=i,r=s,u.prototype.copy.call(t,n,r),s+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var n;return ei.length?i.length:e;if(o===i.length?r+=i:r+=i.slice(0,e),0==(e-=o)){o===i.length?(++n,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++n}return this.length-=n,r}},{key:"_getBuffer",value:function(e){var t=u.allocUnsafe(e),n=this.head,r=1;for(n.data.copy(t),e-=n.data.length;n=n.next;){var i=n.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++r,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=i.slice(o));break}++r}return this.length-=r,t}},{key:l,value:function(e,t){return c(this,i(i({},t),{},{depth:0,customInspect:!1}))}}])&&s(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}()},1928:(e,t,n)=>{"use strict";function r(e,t){if(0===t||!e)return 0;let n=0,r=0;for(;n=e.length)return r}return r}function i(e,t){let n=0,r=0;for(;n=e.length)return r+(t-n);const i=o(e.codePointAt(r));n+=i,r+=4===i?2:1}return r}function o(e){return null==e?0:e<=127?1:e<=2047?2:e>=55296&&e<=57343?4:e<65535?3:4}function s(e,t=!0){let n=e.replace(/");return t&&(n=n.replace(/\n/g,"")),n}n.d(t,{$V:()=>r,LH:()=>s,Z6:()=>i})},2017:(e,t,n)=>{try{var r=n(9023);if("function"!=typeof r.inherits)throw"";e.exports=r.inherits}catch(t){e.exports=n(6698)}},2052:e=>{e.exports&&(e.exports=function(){var e=3,t=4,n=12,r=13,i=16,o=17;function s(e,t){void 0===t&&(t=0);var n=e.charCodeAt(t);if(55296<=n&&n<=56319&&t=1){var i=n;return 55296<=(r=e.charCodeAt(t-1))&&r<=56319?1024*(r-55296)+(i-56320)+65536:i}return n}function a(s,a,u){var c=[s].concat(a).concat([u]),l=c[c.length-2],h=u,d=c.lastIndexOf(14);if(d>1&&c.slice(1,d).every((function(t){return t==e}))&&-1==[e,r,o].indexOf(s))return 2;var f=c.lastIndexOf(t);if(f>0&&c.slice(1,f).every((function(e){return e==t}))&&-1==[n,t].indexOf(l))return c.filter((function(e){return e==t})).length%2==1?3:4;if(0==l&&1==h)return 0;if(2==l||0==l||1==l)return 14==h&&a.every((function(t){return t==e}))?2:1;if(2==h||0==h||1==h)return 1;if(6==l&&(6==h||7==h||9==h||10==h))return 0;if(!(9!=l&&7!=l||7!=h&&8!=h))return 0;if((10==l||8==l)&&8==h)return 0;if(h==e||15==h)return 0;if(5==h)return 0;if(l==n)return 0;var p=-1!=c.indexOf(e)?c.lastIndexOf(e)-1:c.length-2;return-1!=[r,o].indexOf(c[p])&&c.slice(p+1,-1).every((function(t){return t==e}))&&14==h||15==l&&-1!=[i,o].indexOf(h)?0:-1!=a.indexOf(t)?2:l==t&&h==t?0:1}function u(s){return 1536<=s&&s<=1541||1757==s||1807==s||2274==s||3406==s||69821==s||70082<=s&&s<=70083||72250==s||72326<=s&&s<=72329||73030==s?n:13==s?0:10==s?1:0<=s&&s<=9||11<=s&&s<=12||14<=s&&s<=31||127<=s&&s<=159||173==s||1564==s||6158==s||8203==s||8206<=s&&s<=8207||8232==s||8233==s||8234<=s&&s<=8238||8288<=s&&s<=8292||8293==s||8294<=s&&s<=8303||55296<=s&&s<=57343||65279==s||65520<=s&&s<=65528||65529<=s&&s<=65531||113824<=s&&s<=113827||119155<=s&&s<=119162||917504==s||917505==s||917506<=s&&s<=917535||917632<=s&&s<=917759||918e3<=s&&s<=921599?2:768<=s&&s<=879||1155<=s&&s<=1159||1160<=s&&s<=1161||1425<=s&&s<=1469||1471==s||1473<=s&&s<=1474||1476<=s&&s<=1477||1479==s||1552<=s&&s<=1562||1611<=s&&s<=1631||1648==s||1750<=s&&s<=1756||1759<=s&&s<=1764||1767<=s&&s<=1768||1770<=s&&s<=1773||1809==s||1840<=s&&s<=1866||1958<=s&&s<=1968||2027<=s&&s<=2035||2070<=s&&s<=2073||2075<=s&&s<=2083||2085<=s&&s<=2087||2089<=s&&s<=2093||2137<=s&&s<=2139||2260<=s&&s<=2273||2275<=s&&s<=2306||2362==s||2364==s||2369<=s&&s<=2376||2381==s||2385<=s&&s<=2391||2402<=s&&s<=2403||2433==s||2492==s||2494==s||2497<=s&&s<=2500||2509==s||2519==s||2530<=s&&s<=2531||2561<=s&&s<=2562||2620==s||2625<=s&&s<=2626||2631<=s&&s<=2632||2635<=s&&s<=2637||2641==s||2672<=s&&s<=2673||2677==s||2689<=s&&s<=2690||2748==s||2753<=s&&s<=2757||2759<=s&&s<=2760||2765==s||2786<=s&&s<=2787||2810<=s&&s<=2815||2817==s||2876==s||2878==s||2879==s||2881<=s&&s<=2884||2893==s||2902==s||2903==s||2914<=s&&s<=2915||2946==s||3006==s||3008==s||3021==s||3031==s||3072==s||3134<=s&&s<=3136||3142<=s&&s<=3144||3146<=s&&s<=3149||3157<=s&&s<=3158||3170<=s&&s<=3171||3201==s||3260==s||3263==s||3266==s||3270==s||3276<=s&&s<=3277||3285<=s&&s<=3286||3298<=s&&s<=3299||3328<=s&&s<=3329||3387<=s&&s<=3388||3390==s||3393<=s&&s<=3396||3405==s||3415==s||3426<=s&&s<=3427||3530==s||3535==s||3538<=s&&s<=3540||3542==s||3551==s||3633==s||3636<=s&&s<=3642||3655<=s&&s<=3662||3761==s||3764<=s&&s<=3769||3771<=s&&s<=3772||3784<=s&&s<=3789||3864<=s&&s<=3865||3893==s||3895==s||3897==s||3953<=s&&s<=3966||3968<=s&&s<=3972||3974<=s&&s<=3975||3981<=s&&s<=3991||3993<=s&&s<=4028||4038==s||4141<=s&&s<=4144||4146<=s&&s<=4151||4153<=s&&s<=4154||4157<=s&&s<=4158||4184<=s&&s<=4185||4190<=s&&s<=4192||4209<=s&&s<=4212||4226==s||4229<=s&&s<=4230||4237==s||4253==s||4957<=s&&s<=4959||5906<=s&&s<=5908||5938<=s&&s<=5940||5970<=s&&s<=5971||6002<=s&&s<=6003||6068<=s&&s<=6069||6071<=s&&s<=6077||6086==s||6089<=s&&s<=6099||6109==s||6155<=s&&s<=6157||6277<=s&&s<=6278||6313==s||6432<=s&&s<=6434||6439<=s&&s<=6440||6450==s||6457<=s&&s<=6459||6679<=s&&s<=6680||6683==s||6742==s||6744<=s&&s<=6750||6752==s||6754==s||6757<=s&&s<=6764||6771<=s&&s<=6780||6783==s||6832<=s&&s<=6845||6846==s||6912<=s&&s<=6915||6964==s||6966<=s&&s<=6970||6972==s||6978==s||7019<=s&&s<=7027||7040<=s&&s<=7041||7074<=s&&s<=7077||7080<=s&&s<=7081||7083<=s&&s<=7085||7142==s||7144<=s&&s<=7145||7149==s||7151<=s&&s<=7153||7212<=s&&s<=7219||7222<=s&&s<=7223||7376<=s&&s<=7378||7380<=s&&s<=7392||7394<=s&&s<=7400||7405==s||7412==s||7416<=s&&s<=7417||7616<=s&&s<=7673||7675<=s&&s<=7679||8204==s||8400<=s&&s<=8412||8413<=s&&s<=8416||8417==s||8418<=s&&s<=8420||8421<=s&&s<=8432||11503<=s&&s<=11505||11647==s||11744<=s&&s<=11775||12330<=s&&s<=12333||12334<=s&&s<=12335||12441<=s&&s<=12442||42607==s||42608<=s&&s<=42610||42612<=s&&s<=42621||42654<=s&&s<=42655||42736<=s&&s<=42737||43010==s||43014==s||43019==s||43045<=s&&s<=43046||43204<=s&&s<=43205||43232<=s&&s<=43249||43302<=s&&s<=43309||43335<=s&&s<=43345||43392<=s&&s<=43394||43443==s||43446<=s&&s<=43449||43452==s||43493==s||43561<=s&&s<=43566||43569<=s&&s<=43570||43573<=s&&s<=43574||43587==s||43596==s||43644==s||43696==s||43698<=s&&s<=43700||43703<=s&&s<=43704||43710<=s&&s<=43711||43713==s||43756<=s&&s<=43757||43766==s||44005==s||44008==s||44013==s||64286==s||65024<=s&&s<=65039||65056<=s&&s<=65071||65438<=s&&s<=65439||66045==s||66272==s||66422<=s&&s<=66426||68097<=s&&s<=68099||68101<=s&&s<=68102||68108<=s&&s<=68111||68152<=s&&s<=68154||68159==s||68325<=s&&s<=68326||69633==s||69688<=s&&s<=69702||69759<=s&&s<=69761||69811<=s&&s<=69814||69817<=s&&s<=69818||69888<=s&&s<=69890||69927<=s&&s<=69931||69933<=s&&s<=69940||70003==s||70016<=s&&s<=70017||70070<=s&&s<=70078||70090<=s&&s<=70092||70191<=s&&s<=70193||70196==s||70198<=s&&s<=70199||70206==s||70367==s||70371<=s&&s<=70378||70400<=s&&s<=70401||70460==s||70462==s||70464==s||70487==s||70502<=s&&s<=70508||70512<=s&&s<=70516||70712<=s&&s<=70719||70722<=s&&s<=70724||70726==s||70832==s||70835<=s&&s<=70840||70842==s||70845==s||70847<=s&&s<=70848||70850<=s&&s<=70851||71087==s||71090<=s&&s<=71093||71100<=s&&s<=71101||71103<=s&&s<=71104||71132<=s&&s<=71133||71219<=s&&s<=71226||71229==s||71231<=s&&s<=71232||71339==s||71341==s||71344<=s&&s<=71349||71351==s||71453<=s&&s<=71455||71458<=s&&s<=71461||71463<=s&&s<=71467||72193<=s&&s<=72198||72201<=s&&s<=72202||72243<=s&&s<=72248||72251<=s&&s<=72254||72263==s||72273<=s&&s<=72278||72281<=s&&s<=72283||72330<=s&&s<=72342||72344<=s&&s<=72345||72752<=s&&s<=72758||72760<=s&&s<=72765||72767==s||72850<=s&&s<=72871||72874<=s&&s<=72880||72882<=s&&s<=72883||72885<=s&&s<=72886||73009<=s&&s<=73014||73018==s||73020<=s&&s<=73021||73023<=s&&s<=73029||73031==s||92912<=s&&s<=92916||92976<=s&&s<=92982||94095<=s&&s<=94098||113821<=s&&s<=113822||119141==s||119143<=s&&s<=119145||119150<=s&&s<=119154||119163<=s&&s<=119170||119173<=s&&s<=119179||119210<=s&&s<=119213||119362<=s&&s<=119364||121344<=s&&s<=121398||121403<=s&&s<=121452||121461==s||121476==s||121499<=s&&s<=121503||121505<=s&&s<=121519||122880<=s&&s<=122886||122888<=s&&s<=122904||122907<=s&&s<=122913||122915<=s&&s<=122916||122918<=s&&s<=122922||125136<=s&&s<=125142||125252<=s&&s<=125258||917536<=s&&s<=917631||917760<=s&&s<=917999?e:127462<=s&&s<=127487?t:2307==s||2363==s||2366<=s&&s<=2368||2377<=s&&s<=2380||2382<=s&&s<=2383||2434<=s&&s<=2435||2495<=s&&s<=2496||2503<=s&&s<=2504||2507<=s&&s<=2508||2563==s||2622<=s&&s<=2624||2691==s||2750<=s&&s<=2752||2761==s||2763<=s&&s<=2764||2818<=s&&s<=2819||2880==s||2887<=s&&s<=2888||2891<=s&&s<=2892||3007==s||3009<=s&&s<=3010||3014<=s&&s<=3016||3018<=s&&s<=3020||3073<=s&&s<=3075||3137<=s&&s<=3140||3202<=s&&s<=3203||3262==s||3264<=s&&s<=3265||3267<=s&&s<=3268||3271<=s&&s<=3272||3274<=s&&s<=3275||3330<=s&&s<=3331||3391<=s&&s<=3392||3398<=s&&s<=3400||3402<=s&&s<=3404||3458<=s&&s<=3459||3536<=s&&s<=3537||3544<=s&&s<=3550||3570<=s&&s<=3571||3635==s||3763==s||3902<=s&&s<=3903||3967==s||4145==s||4155<=s&&s<=4156||4182<=s&&s<=4183||4228==s||6070==s||6078<=s&&s<=6085||6087<=s&&s<=6088||6435<=s&&s<=6438||6441<=s&&s<=6443||6448<=s&&s<=6449||6451<=s&&s<=6456||6681<=s&&s<=6682||6741==s||6743==s||6765<=s&&s<=6770||6916==s||6965==s||6971==s||6973<=s&&s<=6977||6979<=s&&s<=6980||7042==s||7073==s||7078<=s&&s<=7079||7082==s||7143==s||7146<=s&&s<=7148||7150==s||7154<=s&&s<=7155||7204<=s&&s<=7211||7220<=s&&s<=7221||7393==s||7410<=s&&s<=7411||7415==s||43043<=s&&s<=43044||43047==s||43136<=s&&s<=43137||43188<=s&&s<=43203||43346<=s&&s<=43347||43395==s||43444<=s&&s<=43445||43450<=s&&s<=43451||43453<=s&&s<=43456||43567<=s&&s<=43568||43571<=s&&s<=43572||43597==s||43755==s||43758<=s&&s<=43759||43765==s||44003<=s&&s<=44004||44006<=s&&s<=44007||44009<=s&&s<=44010||44012==s||69632==s||69634==s||69762==s||69808<=s&&s<=69810||69815<=s&&s<=69816||69932==s||70018==s||70067<=s&&s<=70069||70079<=s&&s<=70080||70188<=s&&s<=70190||70194<=s&&s<=70195||70197==s||70368<=s&&s<=70370||70402<=s&&s<=70403||70463==s||70465<=s&&s<=70468||70471<=s&&s<=70472||70475<=s&&s<=70477||70498<=s&&s<=70499||70709<=s&&s<=70711||70720<=s&&s<=70721||70725==s||70833<=s&&s<=70834||70841==s||70843<=s&&s<=70844||70846==s||70849==s||71088<=s&&s<=71089||71096<=s&&s<=71099||71102==s||71216<=s&&s<=71218||71227<=s&&s<=71228||71230==s||71340==s||71342<=s&&s<=71343||71350==s||71456<=s&&s<=71457||71462==s||72199<=s&&s<=72200||72249==s||72279<=s&&s<=72280||72343==s||72751==s||72766==s||72873==s||72881==s||72884==s||94033<=s&&s<=94078||119142==s||119149==s?5:4352<=s&&s<=4447||43360<=s&&s<=43388?6:4448<=s&&s<=4519||55216<=s&&s<=55238?7:4520<=s&&s<=4607||55243<=s&&s<=55291?8:44032==s||44060==s||44088==s||44116==s||44144==s||44172==s||44200==s||44228==s||44256==s||44284==s||44312==s||44340==s||44368==s||44396==s||44424==s||44452==s||44480==s||44508==s||44536==s||44564==s||44592==s||44620==s||44648==s||44676==s||44704==s||44732==s||44760==s||44788==s||44816==s||44844==s||44872==s||44900==s||44928==s||44956==s||44984==s||45012==s||45040==s||45068==s||45096==s||45124==s||45152==s||45180==s||45208==s||45236==s||45264==s||45292==s||45320==s||45348==s||45376==s||45404==s||45432==s||45460==s||45488==s||45516==s||45544==s||45572==s||45600==s||45628==s||45656==s||45684==s||45712==s||45740==s||45768==s||45796==s||45824==s||45852==s||45880==s||45908==s||45936==s||45964==s||45992==s||46020==s||46048==s||46076==s||46104==s||46132==s||46160==s||46188==s||46216==s||46244==s||46272==s||46300==s||46328==s||46356==s||46384==s||46412==s||46440==s||46468==s||46496==s||46524==s||46552==s||46580==s||46608==s||46636==s||46664==s||46692==s||46720==s||46748==s||46776==s||46804==s||46832==s||46860==s||46888==s||46916==s||46944==s||46972==s||47e3==s||47028==s||47056==s||47084==s||47112==s||47140==s||47168==s||47196==s||47224==s||47252==s||47280==s||47308==s||47336==s||47364==s||47392==s||47420==s||47448==s||47476==s||47504==s||47532==s||47560==s||47588==s||47616==s||47644==s||47672==s||47700==s||47728==s||47756==s||47784==s||47812==s||47840==s||47868==s||47896==s||47924==s||47952==s||47980==s||48008==s||48036==s||48064==s||48092==s||48120==s||48148==s||48176==s||48204==s||48232==s||48260==s||48288==s||48316==s||48344==s||48372==s||48400==s||48428==s||48456==s||48484==s||48512==s||48540==s||48568==s||48596==s||48624==s||48652==s||48680==s||48708==s||48736==s||48764==s||48792==s||48820==s||48848==s||48876==s||48904==s||48932==s||48960==s||48988==s||49016==s||49044==s||49072==s||49100==s||49128==s||49156==s||49184==s||49212==s||49240==s||49268==s||49296==s||49324==s||49352==s||49380==s||49408==s||49436==s||49464==s||49492==s||49520==s||49548==s||49576==s||49604==s||49632==s||49660==s||49688==s||49716==s||49744==s||49772==s||49800==s||49828==s||49856==s||49884==s||49912==s||49940==s||49968==s||49996==s||50024==s||50052==s||50080==s||50108==s||50136==s||50164==s||50192==s||50220==s||50248==s||50276==s||50304==s||50332==s||50360==s||50388==s||50416==s||50444==s||50472==s||50500==s||50528==s||50556==s||50584==s||50612==s||50640==s||50668==s||50696==s||50724==s||50752==s||50780==s||50808==s||50836==s||50864==s||50892==s||50920==s||50948==s||50976==s||51004==s||51032==s||51060==s||51088==s||51116==s||51144==s||51172==s||51200==s||51228==s||51256==s||51284==s||51312==s||51340==s||51368==s||51396==s||51424==s||51452==s||51480==s||51508==s||51536==s||51564==s||51592==s||51620==s||51648==s||51676==s||51704==s||51732==s||51760==s||51788==s||51816==s||51844==s||51872==s||51900==s||51928==s||51956==s||51984==s||52012==s||52040==s||52068==s||52096==s||52124==s||52152==s||52180==s||52208==s||52236==s||52264==s||52292==s||52320==s||52348==s||52376==s||52404==s||52432==s||52460==s||52488==s||52516==s||52544==s||52572==s||52600==s||52628==s||52656==s||52684==s||52712==s||52740==s||52768==s||52796==s||52824==s||52852==s||52880==s||52908==s||52936==s||52964==s||52992==s||53020==s||53048==s||53076==s||53104==s||53132==s||53160==s||53188==s||53216==s||53244==s||53272==s||53300==s||53328==s||53356==s||53384==s||53412==s||53440==s||53468==s||53496==s||53524==s||53552==s||53580==s||53608==s||53636==s||53664==s||53692==s||53720==s||53748==s||53776==s||53804==s||53832==s||53860==s||53888==s||53916==s||53944==s||53972==s||54e3==s||54028==s||54056==s||54084==s||54112==s||54140==s||54168==s||54196==s||54224==s||54252==s||54280==s||54308==s||54336==s||54364==s||54392==s||54420==s||54448==s||54476==s||54504==s||54532==s||54560==s||54588==s||54616==s||54644==s||54672==s||54700==s||54728==s||54756==s||54784==s||54812==s||54840==s||54868==s||54896==s||54924==s||54952==s||54980==s||55008==s||55036==s||55064==s||55092==s||55120==s||55148==s||55176==s?9:44033<=s&&s<=44059||44061<=s&&s<=44087||44089<=s&&s<=44115||44117<=s&&s<=44143||44145<=s&&s<=44171||44173<=s&&s<=44199||44201<=s&&s<=44227||44229<=s&&s<=44255||44257<=s&&s<=44283||44285<=s&&s<=44311||44313<=s&&s<=44339||44341<=s&&s<=44367||44369<=s&&s<=44395||44397<=s&&s<=44423||44425<=s&&s<=44451||44453<=s&&s<=44479||44481<=s&&s<=44507||44509<=s&&s<=44535||44537<=s&&s<=44563||44565<=s&&s<=44591||44593<=s&&s<=44619||44621<=s&&s<=44647||44649<=s&&s<=44675||44677<=s&&s<=44703||44705<=s&&s<=44731||44733<=s&&s<=44759||44761<=s&&s<=44787||44789<=s&&s<=44815||44817<=s&&s<=44843||44845<=s&&s<=44871||44873<=s&&s<=44899||44901<=s&&s<=44927||44929<=s&&s<=44955||44957<=s&&s<=44983||44985<=s&&s<=45011||45013<=s&&s<=45039||45041<=s&&s<=45067||45069<=s&&s<=45095||45097<=s&&s<=45123||45125<=s&&s<=45151||45153<=s&&s<=45179||45181<=s&&s<=45207||45209<=s&&s<=45235||45237<=s&&s<=45263||45265<=s&&s<=45291||45293<=s&&s<=45319||45321<=s&&s<=45347||45349<=s&&s<=45375||45377<=s&&s<=45403||45405<=s&&s<=45431||45433<=s&&s<=45459||45461<=s&&s<=45487||45489<=s&&s<=45515||45517<=s&&s<=45543||45545<=s&&s<=45571||45573<=s&&s<=45599||45601<=s&&s<=45627||45629<=s&&s<=45655||45657<=s&&s<=45683||45685<=s&&s<=45711||45713<=s&&s<=45739||45741<=s&&s<=45767||45769<=s&&s<=45795||45797<=s&&s<=45823||45825<=s&&s<=45851||45853<=s&&s<=45879||45881<=s&&s<=45907||45909<=s&&s<=45935||45937<=s&&s<=45963||45965<=s&&s<=45991||45993<=s&&s<=46019||46021<=s&&s<=46047||46049<=s&&s<=46075||46077<=s&&s<=46103||46105<=s&&s<=46131||46133<=s&&s<=46159||46161<=s&&s<=46187||46189<=s&&s<=46215||46217<=s&&s<=46243||46245<=s&&s<=46271||46273<=s&&s<=46299||46301<=s&&s<=46327||46329<=s&&s<=46355||46357<=s&&s<=46383||46385<=s&&s<=46411||46413<=s&&s<=46439||46441<=s&&s<=46467||46469<=s&&s<=46495||46497<=s&&s<=46523||46525<=s&&s<=46551||46553<=s&&s<=46579||46581<=s&&s<=46607||46609<=s&&s<=46635||46637<=s&&s<=46663||46665<=s&&s<=46691||46693<=s&&s<=46719||46721<=s&&s<=46747||46749<=s&&s<=46775||46777<=s&&s<=46803||46805<=s&&s<=46831||46833<=s&&s<=46859||46861<=s&&s<=46887||46889<=s&&s<=46915||46917<=s&&s<=46943||46945<=s&&s<=46971||46973<=s&&s<=46999||47001<=s&&s<=47027||47029<=s&&s<=47055||47057<=s&&s<=47083||47085<=s&&s<=47111||47113<=s&&s<=47139||47141<=s&&s<=47167||47169<=s&&s<=47195||47197<=s&&s<=47223||47225<=s&&s<=47251||47253<=s&&s<=47279||47281<=s&&s<=47307||47309<=s&&s<=47335||47337<=s&&s<=47363||47365<=s&&s<=47391||47393<=s&&s<=47419||47421<=s&&s<=47447||47449<=s&&s<=47475||47477<=s&&s<=47503||47505<=s&&s<=47531||47533<=s&&s<=47559||47561<=s&&s<=47587||47589<=s&&s<=47615||47617<=s&&s<=47643||47645<=s&&s<=47671||47673<=s&&s<=47699||47701<=s&&s<=47727||47729<=s&&s<=47755||47757<=s&&s<=47783||47785<=s&&s<=47811||47813<=s&&s<=47839||47841<=s&&s<=47867||47869<=s&&s<=47895||47897<=s&&s<=47923||47925<=s&&s<=47951||47953<=s&&s<=47979||47981<=s&&s<=48007||48009<=s&&s<=48035||48037<=s&&s<=48063||48065<=s&&s<=48091||48093<=s&&s<=48119||48121<=s&&s<=48147||48149<=s&&s<=48175||48177<=s&&s<=48203||48205<=s&&s<=48231||48233<=s&&s<=48259||48261<=s&&s<=48287||48289<=s&&s<=48315||48317<=s&&s<=48343||48345<=s&&s<=48371||48373<=s&&s<=48399||48401<=s&&s<=48427||48429<=s&&s<=48455||48457<=s&&s<=48483||48485<=s&&s<=48511||48513<=s&&s<=48539||48541<=s&&s<=48567||48569<=s&&s<=48595||48597<=s&&s<=48623||48625<=s&&s<=48651||48653<=s&&s<=48679||48681<=s&&s<=48707||48709<=s&&s<=48735||48737<=s&&s<=48763||48765<=s&&s<=48791||48793<=s&&s<=48819||48821<=s&&s<=48847||48849<=s&&s<=48875||48877<=s&&s<=48903||48905<=s&&s<=48931||48933<=s&&s<=48959||48961<=s&&s<=48987||48989<=s&&s<=49015||49017<=s&&s<=49043||49045<=s&&s<=49071||49073<=s&&s<=49099||49101<=s&&s<=49127||49129<=s&&s<=49155||49157<=s&&s<=49183||49185<=s&&s<=49211||49213<=s&&s<=49239||49241<=s&&s<=49267||49269<=s&&s<=49295||49297<=s&&s<=49323||49325<=s&&s<=49351||49353<=s&&s<=49379||49381<=s&&s<=49407||49409<=s&&s<=49435||49437<=s&&s<=49463||49465<=s&&s<=49491||49493<=s&&s<=49519||49521<=s&&s<=49547||49549<=s&&s<=49575||49577<=s&&s<=49603||49605<=s&&s<=49631||49633<=s&&s<=49659||49661<=s&&s<=49687||49689<=s&&s<=49715||49717<=s&&s<=49743||49745<=s&&s<=49771||49773<=s&&s<=49799||49801<=s&&s<=49827||49829<=s&&s<=49855||49857<=s&&s<=49883||49885<=s&&s<=49911||49913<=s&&s<=49939||49941<=s&&s<=49967||49969<=s&&s<=49995||49997<=s&&s<=50023||50025<=s&&s<=50051||50053<=s&&s<=50079||50081<=s&&s<=50107||50109<=s&&s<=50135||50137<=s&&s<=50163||50165<=s&&s<=50191||50193<=s&&s<=50219||50221<=s&&s<=50247||50249<=s&&s<=50275||50277<=s&&s<=50303||50305<=s&&s<=50331||50333<=s&&s<=50359||50361<=s&&s<=50387||50389<=s&&s<=50415||50417<=s&&s<=50443||50445<=s&&s<=50471||50473<=s&&s<=50499||50501<=s&&s<=50527||50529<=s&&s<=50555||50557<=s&&s<=50583||50585<=s&&s<=50611||50613<=s&&s<=50639||50641<=s&&s<=50667||50669<=s&&s<=50695||50697<=s&&s<=50723||50725<=s&&s<=50751||50753<=s&&s<=50779||50781<=s&&s<=50807||50809<=s&&s<=50835||50837<=s&&s<=50863||50865<=s&&s<=50891||50893<=s&&s<=50919||50921<=s&&s<=50947||50949<=s&&s<=50975||50977<=s&&s<=51003||51005<=s&&s<=51031||51033<=s&&s<=51059||51061<=s&&s<=51087||51089<=s&&s<=51115||51117<=s&&s<=51143||51145<=s&&s<=51171||51173<=s&&s<=51199||51201<=s&&s<=51227||51229<=s&&s<=51255||51257<=s&&s<=51283||51285<=s&&s<=51311||51313<=s&&s<=51339||51341<=s&&s<=51367||51369<=s&&s<=51395||51397<=s&&s<=51423||51425<=s&&s<=51451||51453<=s&&s<=51479||51481<=s&&s<=51507||51509<=s&&s<=51535||51537<=s&&s<=51563||51565<=s&&s<=51591||51593<=s&&s<=51619||51621<=s&&s<=51647||51649<=s&&s<=51675||51677<=s&&s<=51703||51705<=s&&s<=51731||51733<=s&&s<=51759||51761<=s&&s<=51787||51789<=s&&s<=51815||51817<=s&&s<=51843||51845<=s&&s<=51871||51873<=s&&s<=51899||51901<=s&&s<=51927||51929<=s&&s<=51955||51957<=s&&s<=51983||51985<=s&&s<=52011||52013<=s&&s<=52039||52041<=s&&s<=52067||52069<=s&&s<=52095||52097<=s&&s<=52123||52125<=s&&s<=52151||52153<=s&&s<=52179||52181<=s&&s<=52207||52209<=s&&s<=52235||52237<=s&&s<=52263||52265<=s&&s<=52291||52293<=s&&s<=52319||52321<=s&&s<=52347||52349<=s&&s<=52375||52377<=s&&s<=52403||52405<=s&&s<=52431||52433<=s&&s<=52459||52461<=s&&s<=52487||52489<=s&&s<=52515||52517<=s&&s<=52543||52545<=s&&s<=52571||52573<=s&&s<=52599||52601<=s&&s<=52627||52629<=s&&s<=52655||52657<=s&&s<=52683||52685<=s&&s<=52711||52713<=s&&s<=52739||52741<=s&&s<=52767||52769<=s&&s<=52795||52797<=s&&s<=52823||52825<=s&&s<=52851||52853<=s&&s<=52879||52881<=s&&s<=52907||52909<=s&&s<=52935||52937<=s&&s<=52963||52965<=s&&s<=52991||52993<=s&&s<=53019||53021<=s&&s<=53047||53049<=s&&s<=53075||53077<=s&&s<=53103||53105<=s&&s<=53131||53133<=s&&s<=53159||53161<=s&&s<=53187||53189<=s&&s<=53215||53217<=s&&s<=53243||53245<=s&&s<=53271||53273<=s&&s<=53299||53301<=s&&s<=53327||53329<=s&&s<=53355||53357<=s&&s<=53383||53385<=s&&s<=53411||53413<=s&&s<=53439||53441<=s&&s<=53467||53469<=s&&s<=53495||53497<=s&&s<=53523||53525<=s&&s<=53551||53553<=s&&s<=53579||53581<=s&&s<=53607||53609<=s&&s<=53635||53637<=s&&s<=53663||53665<=s&&s<=53691||53693<=s&&s<=53719||53721<=s&&s<=53747||53749<=s&&s<=53775||53777<=s&&s<=53803||53805<=s&&s<=53831||53833<=s&&s<=53859||53861<=s&&s<=53887||53889<=s&&s<=53915||53917<=s&&s<=53943||53945<=s&&s<=53971||53973<=s&&s<=53999||54001<=s&&s<=54027||54029<=s&&s<=54055||54057<=s&&s<=54083||54085<=s&&s<=54111||54113<=s&&s<=54139||54141<=s&&s<=54167||54169<=s&&s<=54195||54197<=s&&s<=54223||54225<=s&&s<=54251||54253<=s&&s<=54279||54281<=s&&s<=54307||54309<=s&&s<=54335||54337<=s&&s<=54363||54365<=s&&s<=54391||54393<=s&&s<=54419||54421<=s&&s<=54447||54449<=s&&s<=54475||54477<=s&&s<=54503||54505<=s&&s<=54531||54533<=s&&s<=54559||54561<=s&&s<=54587||54589<=s&&s<=54615||54617<=s&&s<=54643||54645<=s&&s<=54671||54673<=s&&s<=54699||54701<=s&&s<=54727||54729<=s&&s<=54755||54757<=s&&s<=54783||54785<=s&&s<=54811||54813<=s&&s<=54839||54841<=s&&s<=54867||54869<=s&&s<=54895||54897<=s&&s<=54923||54925<=s&&s<=54951||54953<=s&&s<=54979||54981<=s&&s<=55007||55009<=s&&s<=55035||55037<=s&&s<=55063||55065<=s&&s<=55091||55093<=s&&s<=55119||55121<=s&&s<=55147||55149<=s&&s<=55175||55177<=s&&s<=55203?10:9757==s||9977==s||9994<=s&&s<=9997||127877==s||127938<=s&&s<=127940||127943==s||127946<=s&&s<=127948||128066<=s&&s<=128067||128070<=s&&s<=128080||128110==s||128112<=s&&s<=128120||128124==s||128129<=s&&s<=128131||128133<=s&&s<=128135||128170==s||128372<=s&&s<=128373||128378==s||128400==s||128405<=s&&s<=128406||128581<=s&&s<=128583||128587<=s&&s<=128591||128675==s||128692<=s&&s<=128694||128704==s||128716==s||129304<=s&&s<=129308||129310<=s&&s<=129311||129318==s||129328<=s&&s<=129337||129341<=s&&s<=129342||129489<=s&&s<=129501?r:127995<=s&&s<=127999?14:8205==s?15:9792==s||9794==s||9877<=s&&s<=9878||9992==s||10084==s||127752==s||127806==s||127859==s||127891==s||127908==s||127912==s||127979==s||127981==s||128139==s||128187<=s&&s<=128188||128295==s||128300==s||128488==s||128640==s||128658==s?i:128102<=s&&s<=128105?o:11}return this.nextBreak=function(e,t){if(void 0===t&&(t=0),t<0)return 0;if(t>=e.length-1)return e.length;for(var n,r,i=u(s(e,t)),o=[],c=t+1;c{"use strict";const{hasOwnProperty:n}=Object.prototype,r=d();r.configure=d,r.stringify=r,r.default=r,t.stringify=r,t.configure=d,e.exports=r;const i=/[\u0000-\u001f\u0022\u005c\ud800-\udfff]/;function o(e){return e.length<5e3&&!i.test(e)?`"${e}"`:JSON.stringify(e)}function s(e,t){if(e.length>200||t)return e.sort(t);for(let t=1;tn;)e[r]=e[r-1],r--;e[r]=n}return e}const a=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(Object.getPrototypeOf(new Int8Array)),Symbol.toStringTag).get;function u(e){return void 0!==a.call(e)&&0!==e.length}function c(e,t,n){e.length= 1`)}return void 0===r?1/0:r}function h(e){return 1===e?"1 item":`${e} items`}function d(e){const t=function(e){if(n.call(e,"strict")){const t=e.strict;if("boolean"!=typeof t)throw new TypeError('The "strict" argument must be of type boolean');if(t)return e=>{let t="Object can not safely be stringified. Received type "+typeof e;throw"function"!=typeof e&&(t+=` (${e.toString()})`),new Error(t)}}}(e={...e});t&&(void 0===e.bigint&&(e.bigint=!1),"circularValue"in e||(e.circularValue=Error));const r=function(e){if(n.call(e,"circularValue")){const t=e.circularValue;if("string"==typeof t)return`"${t}"`;if(null==t)return t;if(t===Error||t===TypeError)return{toString(){throw new TypeError("Converting circular structure to JSON")}};throw new TypeError('The "circularValue" argument must be of type string or the value null or undefined')}return'"[Circular]"'}(e),i=function(e,t){let r;if(n.call(e,t)&&(r=e[t],"boolean"!=typeof r))throw new TypeError(`The "${t}" argument must be of type boolean`);return void 0===r||r}(e,"bigint"),a=function(e){let t;if(n.call(e,"deterministic")&&(t=e.deterministic,"boolean"!=typeof t&&"function"!=typeof t))throw new TypeError('The "deterministic" argument must be of type boolean or comparator function');return void 0===t||t}(e),d="function"==typeof a?a:void 0,f=l(e,"maximumDepth"),p=l(e,"maximumBreadth");function g(e,n,c,l,v,m){let y=n[e];switch("object"==typeof y&&null!==y&&"function"==typeof y.toJSON&&(y=y.toJSON(e)),y=l.call(n,e,y),typeof y){case"string":return o(y);case"object":{if(null===y)return"null";if(-1!==c.indexOf(y))return r;let e="",t=",";const n=m;if(Array.isArray(y)){if(0===y.length)return"[]";if(fp&&(e+=`${t}"... ${h(y.length-p-1)} not stringified"`),""!==v&&(e+=`\n${n}`),c.pop(),`[${e}]`}let i=Object.keys(y);const b=i.length;if(0===b)return"{}";if(fp&&(e+=`${_}"...":${w}"${h(b-p)} not stringified"`,_=t),""!==v&&_.length>1&&(e=`\n${m}${e}\n${n}`),c.pop(),`{${e}}`}case"number":return isFinite(y)?String(y):t?t(y):"null";case"boolean":return!0===y?"true":"false";case"undefined":return;case"bigint":if(i)return String(y);default:return t?t(y):void 0}}function v(e,n,s,a,u,c){switch("object"==typeof n&&null!==n&&"function"==typeof n.toJSON&&(n=n.toJSON(e)),typeof n){case"string":return o(n);case"object":{if(null===n)return"null";if(-1!==s.indexOf(n))return r;const e=c;let t="",i=",";if(Array.isArray(n)){if(0===n.length)return"[]";if(fp&&(t+=`${i}"... ${h(n.length-p-1)} not stringified"`),""!==u&&(t+=`\n${e}`),s.pop(),`[${t}]`}s.push(n);let l="";""!==u&&(i=`,\n${c+=u}`,l=" ");let d="";for(const e of a){const r=v(e,n[e],s,a,u,c);void 0!==r&&(t+=`${d}${o(e)}:${l}${r}`,d=i)}return""!==u&&d.length>1&&(t=`\n${c}${t}\n${e}`),s.pop(),`{${t}}`}case"number":return isFinite(n)?String(n):t?t(n):"null";case"boolean":return!0===n?"true":"false";case"undefined":return;case"bigint":if(i)return String(n);default:return t?t(n):void 0}}function m(e,n,l,g,v){switch(typeof n){case"string":return o(n);case"object":{if(null===n)return"null";if("function"==typeof n.toJSON){if("object"!=typeof(n=n.toJSON(e)))return m(e,n,l,g,v);if(null===n)return"null"}if(-1!==l.indexOf(n))return r;const t=v;if(Array.isArray(n)){if(0===n.length)return"[]";if(fp&&(e+=`${r}"... ${h(n.length-p-1)} not stringified"`),e+=`\n${t}`,l.pop(),`[${e}]`}let i=Object.keys(n);const y=i.length;if(0===y)return"{}";if(fp&&(w+=`${_}"...": "${h(y-p)} not stringified"`,_=b),""!==_&&(w=`\n${v}${w}\n${t}`),l.pop(),`{${w}}`}case"number":return isFinite(n)?String(n):t?t(n):"null";case"boolean":return!0===n?"true":"false";case"undefined":return;case"bigint":if(i)return String(n);default:return t?t(n):void 0}}function y(e,n,l){switch(typeof n){case"string":return o(n);case"object":{if(null===n)return"null";if("function"==typeof n.toJSON){if("object"!=typeof(n=n.toJSON(e)))return y(e,n,l);if(null===n)return"null"}if(-1!==l.indexOf(n))return r;let t="";const i=void 0!==n.length;if(i&&Array.isArray(n)){if(0===n.length)return"[]";if(fp&&(t+=`,"... ${h(n.length-p-1)} not stringified"`),l.pop(),`[${t}]`}let g=Object.keys(n);const v=g.length;if(0===v)return"{}";if(fp&&(t+=`${m}"...":"${h(v-p)} not stringified"`),l.pop(),`{${t}}`}case"number":return isFinite(n)?String(n):t?t(n):"null";case"boolean":return!0===n?"true":"false";case"undefined":return;case"bigint":if(i)return String(n);default:return t?t(n):void 0}}return function(e,t,n){if(arguments.length>1){let r="";if("number"==typeof n?r=" ".repeat(Math.min(n,10)):"string"==typeof n&&(r=n.slice(0,10)),null!=t){if("function"==typeof t)return g("",{"":e},[],t,r,"");if(Array.isArray(t))return v("",e,[],function(e){const t=new Set;for(const n of e)"string"!=typeof n&&"number"!=typeof n||t.add(String(n));return t}(t),r,"")}if(0!==r.length)return m("",e,[],r,"")}return y("",e,[])}}},2092:(e,t,n)=>{var r=n(2203);"disable"===process.env.READABLE_STREAM&&r?(e.exports=r.Readable,Object.assign(e.exports,r),e.exports.Stream=r):((t=e.exports=n(9362)).Stream=r||t,t.Readable=t,t.Writable=n(5494),t.Duplex=n(2812),t.Transform=n(2828),t.PassThrough=n(3622),t.finished=n(6856),t.pipeline=n(2452))},2102:(e,t,n)=>{"use strict";const r=n(5532);function i(e){if(e.every(o))return t=>{let n=t;for(let t=0;t{const t=r(i(e)),n=t();return n.Format=t.Format,n},e.exports.cascade=i},2132:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){function t(...t){if(null!==e){var n=e;e=null,n.apply(this,t)}}return Object.assign(t,e),t},e.exports=t.default},2134:(e,t,n)=>{"use strict";const r=n(857),i=n(8521),o=n(7918)("winston:rejection"),s=n(7347),a=n(5031),u=n(4048);e.exports=class{constructor(e){if(!e)throw new Error("Logger is required to handle rejections");this.logger=e,this.handlers=new Map}handle(...e){e.forEach((e=>{if(Array.isArray(e))return e.forEach((e=>this._addHandler(e)));this._addHandler(e)})),this.catcher||(this.catcher=this._unhandledRejection.bind(this),process.on("unhandledRejection",this.catcher))}unhandle(){this.catcher&&(process.removeListener("unhandledRejection",this.catcher),this.catcher=!1,Array.from(this.handlers.values()).forEach((e=>this.logger.unpipe(e))))}getAllInfo(e){let t=null;return e&&(t="string"==typeof e?e:e.message),{error:e,level:"error",message:[`unhandledRejection: ${t||"(no error message)"}`,e&&e.stack||" No stack trace"].join("\n"),stack:e&&e.stack,rejection:!0,date:(new Date).toString(),process:this.getProcessInfo(),os:this.getOsInfo(),trace:this.getTrace(e)}}getProcessInfo(){return{pid:process.pid,uid:process.getuid?process.getuid():null,gid:process.getgid?process.getgid():null,cwd:process.cwd(),execPath:process.execPath,version:process.version,argv:process.argv,memoryUsage:process.memoryUsage()}}getOsInfo(){return{loadavg:r.loadavg(),uptime:r.uptime()}}getTrace(e){return(e?a.parse(e):a.get()).map((e=>({column:e.getColumnNumber(),file:e.getFileName(),function:e.getFunctionName(),line:e.getLineNumber(),method:e.getMethodName(),native:e.isNative()})))}_addHandler(e){if(!this.handlers.has(e)){e.handleRejections=!0;const t=new u(e);this.handlers.set(e,t),this.logger.pipe(t)}}_unhandledRejection(e){const t=this.getAllInfo(e),n=this._getRejectionHandlers();let r,a="function"==typeof this.logger.exitOnError?this.logger.exitOnError(e):this.logger.exitOnError;function u(){o("doExit",a),o("process._exiting",process._exiting),a&&!process._exiting&&(r&&clearTimeout(r),process.exit(1))}if(!n.length&&a&&(console.warn("winston: exitOnError cannot be true with no rejection handlers."),console.warn("winston: not exiting process."),a=!1),!n||0===n.length)return process.nextTick(u);i(n,((e,t)=>{const n=s(t),r=e.transport||e;function i(e){return()=>{o(e),n()}}r._ending=!0,r.once("finish",i("finished")),r.once("error",i("error"))}),(()=>a&&u())),this.logger.log(t),a&&(r=setTimeout(u,3e3))}_getRejectionHandlers(){return this.logger.transports.filter((e=>(e.transport||e).handleRejections))}}},2159:(e,t,n)=>{"use strict";const{format:r}=n(9023);t.warn={deprecated:e=>()=>{throw new Error(r("{ %s } was removed in winston@3.0.0.",e))},useFormat:e=>()=>{throw new Error([r("{ %s } was removed in winston@3.0.0.",e),"Use a custom winston.format = winston.format(function) instead."].join("\n"))},forFunctions(e,n,r){r.forEach((r=>{e[r]=t.warn[n](r)}))},forProperties(e,n,r){r.forEach((r=>{const i=t.warn[n](r);Object.defineProperty(e,r,{get:i,set:i})}))}}},2203:e=>{"use strict";e.exports=require("stream")},2204:(e,t)=>{"use strict";t.levels={error:0,warn:1,help:2,data:3,info:4,debug:5,prompt:6,verbose:7,input:8,silly:9},t.colors={error:"red",warn:"yellow",help:"cyan",data:"grey",info:"green",debug:"blue",prompt:"grey",verbose:"cyan",input:"grey",silly:"magenta"}},2228:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Transport=t.exportsForTesting=void 0;const r=n(8474),i=n(7975),o=n(3986),s=n(7905);class a{constructor(e,t){this.encoder=e,this.requestId=t}send(e,t){if(this.sent)throw new Error(`Response to id ${this.requestId} already sent`);const n=(0,o.encode)([1,this.requestId,t?e:null,t?null:e]);this.encoder.write(Buffer.from(n.buffer,n.byteOffset,n.byteLength)),this.sent=!0}}class u extends r.EventEmitter{constructor(){super(...arguments),this.pending=new Map,this.nextRequestId=1,this.extensionCodec=this.initializeExtensionCodec()}initializeExtensionCodec(){const e=new o.ExtensionCodec;return s.Metadata.forEach((({constructor:t},n)=>{e.register({type:n,encode:e=>e instanceof t?(0,o.encode)(e.data):null,decode:e=>new t({transport:this,client:this.client,data:(0,o.decode)(e)})})})),e}encodeToBuffer(e){const t=(0,o.encode)(e,{extensionCodec:this.extensionCodec});return Buffer.from(t.buffer,t.byteOffset,t.byteLength)}attach(e,n,r){this.writer=e,this.reader=n,this.client=r,this.reader.on("end",(()=>{this.emit("detach")}));const s=(0,o.decodeMultiStream)(this.reader,{extensionCodec:this.extensionCodec}),a=e=>{e.next().then((n=>{if(!n.done){if(!Array.isArray(n.value)){let e="?";try{e=(0,i.inspect)(n.value,{sorted:!0,maxArrayLength:10,maxStringLength:500,compact:!0,breakLength:500})}catch(e){}const r=`invalid msgpack-RPC message: expected array, got: ${e}`,o=null===t.exportsForTesting||void 0===t.exportsForTesting?void 0:t.exportsForTesting.onTransportFail;if(o)return void o.emit("fail",r);throw new TypeError(r)}return this.parseMessage(n.value),void a(e)}Promise.resolve()}))};a(s)}request(e,t,n){this.nextRequestId=this.nextRequestId+1,this.writer.write(this.encodeToBuffer([0,this.nextRequestId,e,t])),this.pending.set(this.nextRequestId,n)}notify(e,t){this.writer.write(this.encodeToBuffer([2,e,t]))}parseMessage(e){const t=e[0];if(0===t)this.emit("request",e[2].toString(),e[3],new a(this.writer,e[1]));else if(1===t){const t=e[1],n=this.pending.get(t);if(!n)throw new Error(`no pending handler for id ${t}`);this.pending.delete(t),n(e[2],e[3])}else 2===t?this.emit("notification",e[1].toString(),e[2]):this.writer.write(this.encodeToBuffer([1,0,"Invalid message type",null]))}}t.Transport=u},2270:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.autocmd=function(e,t){return function(n,i){const o=t&&!!t.sync,s="string"==typeof i,a=s?n[i]:n,u={pattern:""};["pattern","eval"].forEach((e=>{t&&void 0!==t[e]&&(u[e]=t[e])}));const c=`${e}${(null==t?void 0:t.pattern)?`:${t.pattern}`:""}`;return Object.defineProperty(a,r.NVIM_METHOD_NAME,{value:`autocmd:${c}`}),Object.defineProperty(a,r.NVIM_SYNC,{value:!!o}),Object.defineProperty(a,r.NVIM_SPEC,{value:{type:"autocmd",name:e,sync:!!o,opts:u}}),s&&(n[i]=a),n}};const r=n(3118)},2294:e=>{"use strict";var t=Object.prototype.toString;e.exports=function(e){if("string"==typeof e.displayName&&e.constructor.name)return e.displayName;if("string"==typeof e.name&&e.name)return e.name;if("object"==typeof e&&e.constructor&&"string"==typeof e.constructor.name)return e.constructor.name;var n=e.toString(),r=t.call(e).slice(8,-1);return(n="Function"===r?n.substring(n.indexOf("(")+1,n.indexOf(")")):r)||"anonymous"}},2298:(e,t,n)=>{"use strict";n.d(t,{ie:()=>o,ke:()=>k,CJ:()=>T,rZ:()=>E,IH:()=>v,Z6:()=>l.Z6,$V:()=>l.$V,Gf:()=>w,IP:()=>b,v3:()=>m,hR:()=>c,KV:()=>i,ZM:()=>y,H$:()=>S,RP:()=>_,E1:()=>x,LH:()=>l.LH,Jq:()=>C,uk:()=>s,i9:()=>M});var r=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};function i(e,t){return t.findLast((([t])=>t===e))}class o{constructor(){this.resolve=()=>{},this.reject=()=>{},this.promise=new Promise(((e,t)=>{this.resolve=e,this.reject=t})),this.promise.catch((e=>{}))}}function s(e){return r(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}var a=n(1398),u=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};function c(e){return u(this,void 0,void 0,(function*(){try{yield a.workspace.fs.stat(e)}catch(e){return!1}return!0}))}var l=n(1928),h=n(5317),d=n(618),f=n(1019),p=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};function g(e,t,n){let r=n,i=e.length-1;for(;r0?e[r-1]:0]}function*v(e,t){const n=(0,d.iT)(e,t),r=e.split("\n"),i=new Array(r.length);let o=0;for(let e=0;e=t.line&&s>=t.character)return!0}return!1}function x(e,t){return{rangeLength:e.rangeLength,rangeOffset:e.rangeOffset,text:e.text,eol:t}}function E(e,t){const n=Object.assign({},t),r=e.rangeOffset<=t.rangeOffset?e.rangeOffset-t.rangeOffset+e.rangeLength:e.rangeLength,i=e.rangeOffset<=t.rangeOffset?0:e.rangeOffset-t.rangeOffset,o=e.rangeOffset-t.rangeOffset+r;return n.text=t.text.slice(0,i)+e.text+t.text.slice(o),e.rangeOffset=r&&e.rangeOffset<=i||e.rangeOffset=r}function C(e,t){return e.map((e=>{const n=new a.Position(e.start.line,e.start.character),r=new a.Position(e.end.line,e.end.character);if(!t)return new a.Selection(n,r);const i=n.isAfter(r),o=t.validateRange(new a.Range(n,r));return o.start.isBefore(o.end)&&i?new a.Selection(o.end,o.start):new a.Selection(o.start,o.end)}))}const M=e=>{const t=f.$.wslDistribution.length?["-d",f.$.wslDistribution]:[],n=(0,h.spawnSync)("C:\\Windows\\system32\\wsl.exe",[...t,"wslpath",e],{encoding:"utf-8"});if(n.error)throw new Error(`Failed to run wslpath: ${n.error.message}`);return n.stdout.trim()};class T{static set(e,t){return p(this,void 0,void 0,(function*(){this.get(e)!==t&&(void 0===t?this.cache.delete(e):this.cache.set(e,t),yield a.commands.executeCommand("setContext",e,t))}))}static get(e){return this.cache.get(e)}static reset(){for(const e of this.cache.keys())a.commands.executeCommand("setContext",e,void 0);this.cache.clear()}}T.cache=new Map;class k{constructor(){this.disposed=!1}get isProgressing(){return!!this.progress}report(e){var t;this.message=e;try{null===(t=this.progress)||void 0===t||t.report({message:e})}catch(e){}}start(e,t=0){this.disposed||(this.done(),this.startTimer=setTimeout((()=>{this.promise=new o,a.window.withProgress(e,(e=>p(this,void 0,void 0,(function*(){var t;this.progress=e,this.message&&e.report({message:this.message}),yield null===(t=this.promise)||void 0===t?void 0:t.promise}))))}),t))}done(){var e;this.progress=void 0,null===(e=this.promise)||void 0===e||e.resolve(),this.promise=void 0,clearTimeout(this.startTimer),this.startTimer=void 0,this.message=void 0}dispose(){this.done(),this.disposed=!0}}},2365:(e,t,n)=>{"use strict";var r=n(3291).F.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(e,t,n,i){var o=function(e,t,n){return null!=e.highWaterMark?e.highWaterMark:t?e[n]:null}(t,i,n);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new r(i?n:"highWaterMark",o);return Math.floor(o)}return e.objectMode?16:16384}}},2452:(e,t,n)=>{"use strict";var r,i=n(3291).F,o=i.ERR_MISSING_ARGS,s=i.ERR_STREAM_DESTROYED;function a(e){if(e)throw e}function u(e){e()}function c(e,t){return e.pipe(t)}e.exports=function(){for(var e=arguments.length,t=new Array(e),i=0;i0,(function(e){l||(l=e),e&&d.forEach(u),o||(d.forEach(u),h(l))}))}));return t.reduce(c)}},2543:function(e,t,n){var r;e=n.nmd(e),function(){var i,o="Expected a function",s="__lodash_hash_undefined__",a="__lodash_placeholder__",u=32,c=128,l=1/0,h=9007199254740991,d=NaN,f=4294967295,p=[["ary",c],["bind",1],["bindKey",2],["curry",8],["curryRight",16],["flip",512],["partial",u],["partialRight",64],["rearg",256]],g="[object Arguments]",v="[object Array]",m="[object Boolean]",y="[object Date]",b="[object Error]",w="[object Function]",_="[object GeneratorFunction]",x="[object Map]",E="[object Number]",S="[object Object]",C="[object Promise]",M="[object RegExp]",T="[object Set]",k="[object String]",O="[object Symbol]",L="[object WeakMap]",P="[object ArrayBuffer]",I="[object DataView]",R="[object Float32Array]",A="[object Float64Array]",$="[object Int8Array]",D="[object Int16Array]",j="[object Int32Array]",N="[object Uint8Array]",B="[object Uint8ClampedArray]",q="[object Uint16Array]",U="[object Uint32Array]",F=/\b__p \+= '';/g,W=/\b(__p \+=) '' \+/g,V=/(__e\(.*?\)|\b__t\)) \+\n'';/g,H=/&(?:amp|lt|gt|quot|#39);/g,z=/[&<>"']/g,G=RegExp(H.source),K=RegExp(z.source),Y=/<%-([\s\S]+?)%>/g,J=/<%([\s\S]+?)%>/g,Z=/<%=([\s\S]+?)%>/g,Q=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,X=/^\w*$/,ee=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,te=/[\\^$.*+?()[\]{}|]/g,ne=RegExp(te.source),re=/^\s+/,ie=/\s/,oe=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,se=/\{\n\/\* \[wrapped with (.+)\] \*/,ae=/,? & /,ue=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ce=/[()=,{}\[\]\/\s]/,le=/\\(\\)?/g,he=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,de=/\w*$/,fe=/^[-+]0x[0-9a-f]+$/i,pe=/^0b[01]+$/i,ge=/^\[object .+?Constructor\]$/,ve=/^0o[0-7]+$/i,me=/^(?:0|[1-9]\d*)$/,ye=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,be=/($^)/,we=/['\n\r\u2028\u2029\\]/g,_e="\\ud800-\\udfff",xe="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Ee="\\u2700-\\u27bf",Se="a-z\\xdf-\\xf6\\xf8-\\xff",Ce="A-Z\\xc0-\\xd6\\xd8-\\xde",Me="\\ufe0e\\ufe0f",Te="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",ke="["+_e+"]",Oe="["+Te+"]",Le="["+xe+"]",Pe="\\d+",Ie="["+Ee+"]",Re="["+Se+"]",Ae="[^"+_e+Te+Pe+Ee+Se+Ce+"]",$e="\\ud83c[\\udffb-\\udfff]",De="[^"+_e+"]",je="(?:\\ud83c[\\udde6-\\uddff]){2}",Ne="[\\ud800-\\udbff][\\udc00-\\udfff]",Be="["+Ce+"]",qe="\\u200d",Ue="(?:"+Re+"|"+Ae+")",Fe="(?:"+Be+"|"+Ae+")",We="(?:['’](?:d|ll|m|re|s|t|ve))?",Ve="(?:['’](?:D|LL|M|RE|S|T|VE))?",He="(?:"+Le+"|"+$e+")?",ze="["+Me+"]?",Ge=ze+He+"(?:"+qe+"(?:"+[De,je,Ne].join("|")+")"+ze+He+")*",Ke="(?:"+[Ie,je,Ne].join("|")+")"+Ge,Ye="(?:"+[De+Le+"?",Le,je,Ne,ke].join("|")+")",Je=RegExp("['’]","g"),Ze=RegExp(Le,"g"),Qe=RegExp($e+"(?="+$e+")|"+Ye+Ge,"g"),Xe=RegExp([Be+"?"+Re+"+"+We+"(?="+[Oe,Be,"$"].join("|")+")",Fe+"+"+Ve+"(?="+[Oe,Be+Ue,"$"].join("|")+")",Be+"?"+Ue+"+"+We,Be+"+"+Ve,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Pe,Ke].join("|"),"g"),et=RegExp("["+qe+_e+xe+Me+"]"),tt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,nt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],rt=-1,it={};it[R]=it[A]=it[$]=it[D]=it[j]=it[N]=it[B]=it[q]=it[U]=!0,it[g]=it[v]=it[P]=it[m]=it[I]=it[y]=it[b]=it[w]=it[x]=it[E]=it[S]=it[M]=it[T]=it[k]=it[L]=!1;var ot={};ot[g]=ot[v]=ot[P]=ot[I]=ot[m]=ot[y]=ot[R]=ot[A]=ot[$]=ot[D]=ot[j]=ot[x]=ot[E]=ot[S]=ot[M]=ot[T]=ot[k]=ot[O]=ot[N]=ot[B]=ot[q]=ot[U]=!0,ot[b]=ot[w]=ot[L]=!1;var st={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},at=parseFloat,ut=parseInt,ct="object"==typeof global&&global&&global.Object===Object&&global,lt="object"==typeof self&&self&&self.Object===Object&&self,ht=ct||lt||Function("return this")(),dt=t&&!t.nodeType&&t,ft=dt&&e&&!e.nodeType&&e,pt=ft&&ft.exports===dt,gt=pt&&ct.process,vt=function(){try{return ft&&ft.require&&ft.require("util").types||gt&>.binding&>.binding("util")}catch(e){}}(),mt=vt&&vt.isArrayBuffer,yt=vt&&vt.isDate,bt=vt&&vt.isMap,wt=vt&&vt.isRegExp,_t=vt&&vt.isSet,xt=vt&&vt.isTypedArray;function Et(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function St(e,t,n,r){for(var i=-1,o=null==e?0:e.length;++i-1}function Lt(e,t,n){for(var r=-1,i=null==e?0:e.length;++r-1;);return n}function Xt(e,t){for(var n=e.length;n--&&Bt(t,e[n],0)>-1;);return n}var en=Vt({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),tn=Vt({"&":"&","<":"<",">":">",'"':""","'":"'"});function nn(e){return"\\"+st[e]}function rn(e){return et.test(e)}function on(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function sn(e,t){return function(n){return e(t(n))}}function an(e,t){for(var n=-1,r=e.length,i=0,o=[];++n",""":'"',"'":"'"}),pn=function e(t){var n,r=(t=null==t?ht:pn.defaults(ht.Object(),t,pn.pick(ht,nt))).Array,ie=t.Date,_e=t.Error,xe=t.Function,Ee=t.Math,Se=t.Object,Ce=t.RegExp,Me=t.String,Te=t.TypeError,ke=r.prototype,Oe=xe.prototype,Le=Se.prototype,Pe=t["__core-js_shared__"],Ie=Oe.toString,Re=Le.hasOwnProperty,Ae=0,$e=(n=/[^.]+$/.exec(Pe&&Pe.keys&&Pe.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",De=Le.toString,je=Ie.call(Se),Ne=ht._,Be=Ce("^"+Ie.call(Re).replace(te,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),qe=pt?t.Buffer:i,Ue=t.Symbol,Fe=t.Uint8Array,We=qe?qe.allocUnsafe:i,Ve=sn(Se.getPrototypeOf,Se),He=Se.create,ze=Le.propertyIsEnumerable,Ge=ke.splice,Ke=Ue?Ue.isConcatSpreadable:i,Ye=Ue?Ue.iterator:i,Qe=Ue?Ue.toStringTag:i,et=function(){try{var e=uo(Se,"defineProperty");return e({},"",{}),e}catch(e){}}(),st=t.clearTimeout!==ht.clearTimeout&&t.clearTimeout,ct=ie&&ie.now!==ht.Date.now&&ie.now,lt=t.setTimeout!==ht.setTimeout&&t.setTimeout,dt=Ee.ceil,ft=Ee.floor,gt=Se.getOwnPropertySymbols,vt=qe?qe.isBuffer:i,Dt=t.isFinite,Vt=ke.join,gn=sn(Se.keys,Se),vn=Ee.max,mn=Ee.min,yn=ie.now,bn=t.parseInt,wn=Ee.random,_n=ke.reverse,xn=uo(t,"DataView"),En=uo(t,"Map"),Sn=uo(t,"Promise"),Cn=uo(t,"Set"),Mn=uo(t,"WeakMap"),Tn=uo(Se,"create"),kn=Mn&&new Mn,On={},Ln=jo(xn),Pn=jo(En),In=jo(Sn),Rn=jo(Cn),An=jo(Mn),$n=Ue?Ue.prototype:i,Dn=$n?$n.valueOf:i,jn=$n?$n.toString:i;function Nn(e){if(ea(e)&&!Ws(e)&&!(e instanceof Fn)){if(e instanceof Un)return e;if(Re.call(e,"__wrapped__"))return No(e)}return new Un(e)}var Bn=function(){function e(){}return function(t){if(!Xs(t))return{};if(He)return He(t);e.prototype=t;var n=new e;return e.prototype=i,n}}();function qn(){}function Un(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=i}function Fn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=f,this.__views__=[]}function Wn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function sr(e,t,n,r,o,s){var a,u=1&t,c=2&t,l=4&t;if(n&&(a=o?n(e,r,o,s):n(e)),a!==i)return a;if(!Xs(e))return e;var h=Ws(e);if(h){if(a=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Re.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!u)return Mi(e,a)}else{var d=ho(e),f=d==w||d==_;if(Gs(e))return wi(e,u);if(d==S||d==g||f&&!o){if(a=c||f?{}:po(e),!u)return c?function(e,t){return Ti(e,lo(e),t)}(e,function(e,t){return e&&Ti(t,Pa(t),e)}(a,e)):function(e,t){return Ti(e,co(e),t)}(e,nr(a,e))}else{if(!ot[d])return o?e:{};a=function(e,t,n){var r,i=e.constructor;switch(t){case P:return _i(e);case m:case y:return new i(+e);case I:return function(e,t){var n=t?_i(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case R:case A:case $:case D:case j:case N:case B:case q:case U:return xi(e,n);case x:return new i;case E:case k:return new i(e);case M:return function(e){var t=new e.constructor(e.source,de.exec(e));return t.lastIndex=e.lastIndex,t}(e);case T:return new i;case O:return r=e,Dn?Se(Dn.call(r)):{}}}(e,d,u)}}s||(s=new Gn);var p=s.get(e);if(p)return p;s.set(e,a),oa(e)?e.forEach((function(r){a.add(sr(r,t,n,r,e,s))})):ta(e)&&e.forEach((function(r,i){a.set(i,sr(r,t,n,i,e,s))}));var v=h?i:(l?c?to:eo:c?Pa:La)(e);return Ct(v||e,(function(r,i){v&&(r=e[i=r]),Xn(a,i,sr(r,t,n,i,e,s))})),a}function ar(e,t,n){var r=n.length;if(null==e)return!r;for(e=Se(e);r--;){var o=n[r],s=t[o],a=e[o];if(a===i&&!(o in e)||!s(a))return!1}return!0}function ur(e,t,n){if("function"!=typeof e)throw new Te(o);return ko((function(){e.apply(i,n)}),t)}function cr(e,t,n,r){var i=-1,o=Ot,s=!0,a=e.length,u=[],c=t.length;if(!a)return u;n&&(t=Pt(t,Yt(n))),r?(o=Lt,s=!1):t.length>=200&&(o=Zt,s=!1,t=new zn(t));e:for(;++i-1},Vn.prototype.set=function(e,t){var n=this.__data__,r=er(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this},Hn.prototype.clear=function(){this.size=0,this.__data__={hash:new Wn,map:new(En||Vn),string:new Wn}},Hn.prototype.delete=function(e){var t=so(this,e).delete(e);return this.size-=t?1:0,t},Hn.prototype.get=function(e){return so(this,e).get(e)},Hn.prototype.has=function(e){return so(this,e).has(e)},Hn.prototype.set=function(e,t){var n=so(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this},zn.prototype.add=zn.prototype.push=function(e){return this.__data__.set(e,s),this},zn.prototype.has=function(e){return this.__data__.has(e)},Gn.prototype.clear=function(){this.__data__=new Vn,this.size=0},Gn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Gn.prototype.get=function(e){return this.__data__.get(e)},Gn.prototype.has=function(e){return this.__data__.has(e)},Gn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Vn){var r=n.__data__;if(!En||r.length<199)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Hn(r)}return n.set(e,t),this.size=n.size,this};var lr=Li(yr),hr=Li(br,!0);function dr(e,t){var n=!0;return lr(e,(function(e,r,i){return n=!!t(e,r,i)})),n}function fr(e,t,n){for(var r=-1,o=e.length;++r0&&n(a)?t>1?gr(a,t-1,n,r,i):It(i,a):r||(i[i.length]=a)}return i}var vr=Pi(),mr=Pi(!0);function yr(e,t){return e&&vr(e,t,La)}function br(e,t){return e&&mr(e,t,La)}function wr(e,t){return kt(t,(function(t){return Js(e[t])}))}function _r(e,t){for(var n=0,r=(t=vi(t,e)).length;null!=e&&nt}function Cr(e,t){return null!=e&&Re.call(e,t)}function Mr(e,t){return null!=e&&t in Se(e)}function Tr(e,t,n){for(var o=n?Lt:Ot,s=e[0].length,a=e.length,u=a,c=r(a),l=1/0,h=[];u--;){var d=e[u];u&&t&&(d=Pt(d,Yt(t))),l=mn(d.length,l),c[u]=!n&&(t||s>=120&&d.length>=120)?new zn(u&&d):i}d=e[0];var f=-1,p=c[0];e:for(;++f=a?u:u*("desc"==n[r]?-1:1)}return e.index-t.index}(e,t,n)}));t--;)e[t]=e[t].value;return e}(i)}function Fr(e,t,n){for(var r=-1,i=t.length,o={};++r-1;)a!==e&&Ge.call(a,u,1),Ge.call(e,u,1);return e}function Vr(e,t){for(var n=e?t.length:0,r=n-1;n--;){var i=t[n];if(n==r||i!==o){var o=i;vo(i)?Ge.call(e,i,1):ui(e,i)}}return e}function Hr(e,t){return e+ft(wn()*(t-e+1))}function zr(e,t){var n="";if(!e||t<1||t>h)return n;do{t%2&&(n+=e),(t=ft(t/2))&&(e+=e)}while(t);return n}function Gr(e,t){return Oo(So(e,t,nu),e+"")}function Kr(e){return Yn(Ba(e))}function Yr(e,t){var n=Ba(e);return Io(n,or(t,0,n.length))}function Jr(e,t,n,r){if(!Xs(e))return e;for(var o=-1,s=(t=vi(t,e)).length,a=s-1,u=e;null!=u&&++oo?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var s=r(o);++i>>1,s=e[o];null!==s&&!aa(s)&&(n?s<=t:s=200){var c=t?null:zi(e);if(c)return un(c);s=!1,i=Zt,u=new zn}else u=t?[]:a;e:for(;++r=r?e:ei(e,t,n)}var bi=st||function(e){return ht.clearTimeout(e)};function wi(e,t){if(t)return e.slice();var n=e.length,r=We?We(n):new e.constructor(n);return e.copy(r),r}function _i(e){var t=new e.constructor(e.byteLength);return new Fe(t).set(new Fe(e)),t}function xi(e,t){var n=t?_i(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Ei(e,t){if(e!==t){var n=e!==i,r=null===e,o=e==e,s=aa(e),a=t!==i,u=null===t,c=t==t,l=aa(t);if(!u&&!l&&!s&&e>t||s&&a&&c&&!u&&!l||r&&a&&c||!n&&c||!o)return 1;if(!r&&!s&&!l&&e1?n[o-1]:i,a=o>2?n[2]:i;for(s=e.length>3&&"function"==typeof s?(o--,s):i,a&&mo(n[0],n[1],a)&&(s=o<3?i:s,o=1),t=Se(t);++r-1?o[s?t[a]:a]:i}}function Di(e){return Xi((function(t){var n=t.length,r=n,s=Un.prototype.thru;for(e&&t.reverse();r--;){var a=t[r];if("function"!=typeof a)throw new Te(o);if(s&&!u&&"wrapper"==ro(a))var u=new Un([],!0)}for(r=u?r:n;++r1&&w.reverse(),f&&hu))return!1;var l=s.get(e),h=s.get(t);if(l&&h)return l==t&&h==e;var d=-1,f=!0,p=2&n?new zn:i;for(s.set(e,t),s.set(t,e);++d-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(n>2?", ":" "),e.replace(oe,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return Ct(p,(function(n){var r="_."+n[0];t&n[1]&&!Ot(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(se);return t?t[1].split(ae):[]}(r),n)))}function Po(e){var t=0,n=0;return function(){var r=yn(),o=16-(r-n);if(n=r,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(i,arguments)}}function Io(e,t){var n=-1,r=e.length,o=r-1;for(t=t===i?r:t;++n1?e[t-1]:i;return n="function"==typeof n?(e.pop(),n):i,is(e,n)}));function hs(e){var t=Nn(e);return t.__chain__=!0,t}function ds(e,t){return t(e)}var fs=Xi((function(e){var t=e.length,n=t?e[0]:0,r=this.__wrapped__,o=function(t){return ir(t,e)};return!(t>1||this.__actions__.length)&&r instanceof Fn&&vo(n)?((r=r.slice(n,+n+(t?1:0))).__actions__.push({func:ds,args:[o],thisArg:i}),new Un(r,this.__chain__).thru((function(e){return t&&!e.length&&e.push(i),e}))):this.thru(o)})),ps=ki((function(e,t,n){Re.call(e,n)?++e[n]:rr(e,n,1)})),gs=$i(Fo),vs=$i(Wo);function ms(e,t){return(Ws(e)?Ct:lr)(e,oo(t,3))}function ys(e,t){return(Ws(e)?Mt:hr)(e,oo(t,3))}var bs=ki((function(e,t,n){Re.call(e,n)?e[n].push(t):rr(e,n,[t])})),ws=Gr((function(e,t,n){var i=-1,o="function"==typeof t,s=Hs(e)?r(e.length):[];return lr(e,(function(e){s[++i]=o?Et(t,e,n):kr(e,t,n)})),s})),_s=ki((function(e,t,n){rr(e,n,t)}));function xs(e,t){return(Ws(e)?Pt:Dr)(e,oo(t,3))}var Es=ki((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]})),Ss=Gr((function(e,t){if(null==e)return[];var n=t.length;return n>1&&mo(e,t[0],t[1])?t=[]:n>2&&mo(t[0],t[1],t[2])&&(t=[t[0]]),Ur(e,gr(t,1),[])})),Cs=ct||function(){return ht.Date.now()};function Ms(e,t,n){return t=n?i:t,t=e&&null==t?e.length:t,Ki(e,c,i,i,i,i,t)}function Ts(e,t){var n;if("function"!=typeof t)throw new Te(o);return e=fa(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=i),n}}var ks=Gr((function(e,t,n){var r=1;if(n.length){var i=an(n,io(ks));r|=u}return Ki(e,r,t,n,i)})),Os=Gr((function(e,t,n){var r=3;if(n.length){var i=an(n,io(Os));r|=u}return Ki(t,r,e,n,i)}));function Ls(e,t,n){var r,s,a,u,c,l,h=0,d=!1,f=!1,p=!0;if("function"!=typeof e)throw new Te(o);function g(t){var n=r,o=s;return r=s=i,h=t,u=e.apply(o,n)}function v(e){var n=e-l;return l===i||n>=t||n<0||f&&e-h>=a}function m(){var e=Cs();if(v(e))return y(e);c=ko(m,function(e){var n=t-(e-l);return f?mn(n,a-(e-h)):n}(e))}function y(e){return c=i,p&&r?g(e):(r=s=i,u)}function b(){var e=Cs(),n=v(e);if(r=arguments,s=this,l=e,n){if(c===i)return function(e){return h=e,c=ko(m,t),d?g(e):u}(l);if(f)return bi(c),c=ko(m,t),g(l)}return c===i&&(c=ko(m,t)),u}return t=ga(t)||0,Xs(n)&&(d=!!n.leading,a=(f="maxWait"in n)?vn(ga(n.maxWait)||0,t):a,p="trailing"in n?!!n.trailing:p),b.cancel=function(){c!==i&&bi(c),h=0,r=l=s=c=i},b.flush=function(){return c===i?u:y(Cs())},b}var Ps=Gr((function(e,t){return ur(e,1,t)})),Is=Gr((function(e,t,n){return ur(e,ga(t)||0,n)}));function Rs(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new Te(o);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var s=e.apply(this,r);return n.cache=o.set(i,s)||o,s};return n.cache=new(Rs.Cache||Hn),n}function As(e){if("function"!=typeof e)throw new Te(o);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}Rs.Cache=Hn;var $s=mi((function(e,t){var n=(t=1==t.length&&Ws(t[0])?Pt(t[0],Yt(oo())):Pt(gr(t,1),Yt(oo()))).length;return Gr((function(r){for(var i=-1,o=mn(r.length,n);++i=t})),Fs=Or(function(){return arguments}())?Or:function(e){return ea(e)&&Re.call(e,"callee")&&!ze.call(e,"callee")},Ws=r.isArray,Vs=mt?Yt(mt):function(e){return ea(e)&&Er(e)==P};function Hs(e){return null!=e&&Qs(e.length)&&!Js(e)}function zs(e){return ea(e)&&Hs(e)}var Gs=vt||gu,Ks=yt?Yt(yt):function(e){return ea(e)&&Er(e)==y};function Ys(e){if(!ea(e))return!1;var t=Er(e);return t==b||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!ra(e)}function Js(e){if(!Xs(e))return!1;var t=Er(e);return t==w||t==_||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Zs(e){return"number"==typeof e&&e==fa(e)}function Qs(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=h}function Xs(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function ea(e){return null!=e&&"object"==typeof e}var ta=bt?Yt(bt):function(e){return ea(e)&&ho(e)==x};function na(e){return"number"==typeof e||ea(e)&&Er(e)==E}function ra(e){if(!ea(e)||Er(e)!=S)return!1;var t=Ve(e);if(null===t)return!0;var n=Re.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Ie.call(n)==je}var ia=wt?Yt(wt):function(e){return ea(e)&&Er(e)==M},oa=_t?Yt(_t):function(e){return ea(e)&&ho(e)==T};function sa(e){return"string"==typeof e||!Ws(e)&&ea(e)&&Er(e)==k}function aa(e){return"symbol"==typeof e||ea(e)&&Er(e)==O}var ua=xt?Yt(xt):function(e){return ea(e)&&Qs(e.length)&&!!it[Er(e)]},ca=Wi($r),la=Wi((function(e,t){return e<=t}));function ha(e){if(!e)return[];if(Hs(e))return sa(e)?hn(e):Mi(e);if(Ye&&e[Ye])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[Ye]());var t=ho(e);return(t==x?on:t==T?un:Ba)(e)}function da(e){return e?(e=ga(e))===l||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function fa(e){var t=da(e),n=t%1;return t==t?n?t-n:t:0}function pa(e){return e?or(fa(e),0,f):0}function ga(e){if("number"==typeof e)return e;if(aa(e))return d;if(Xs(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Xs(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Kt(e);var n=pe.test(e);return n||ve.test(e)?ut(e.slice(2),n?2:8):fe.test(e)?d:+e}function va(e){return Ti(e,Pa(e))}function ma(e){return null==e?"":si(e)}var ya=Oi((function(e,t){if(_o(t)||Hs(t))Ti(t,La(t),e);else for(var n in t)Re.call(t,n)&&Xn(e,n,t[n])})),ba=Oi((function(e,t){Ti(t,Pa(t),e)})),wa=Oi((function(e,t,n,r){Ti(t,Pa(t),e,r)})),_a=Oi((function(e,t,n,r){Ti(t,La(t),e,r)})),xa=Xi(ir),Ea=Gr((function(e,t){e=Se(e);var n=-1,r=t.length,o=r>2?t[2]:i;for(o&&mo(t[0],t[1],o)&&(r=1);++n1),t})),Ti(e,to(e),n),r&&(n=sr(n,7,Zi));for(var i=t.length;i--;)ui(n,t[i]);return n})),$a=Xi((function(e,t){return null==e?{}:function(e,t){return Fr(e,t,(function(t,n){return Ma(e,n)}))}(e,t)}));function Da(e,t){if(null==e)return{};var n=Pt(to(e),(function(e){return[e]}));return t=oo(t),Fr(e,n,(function(e,n){return t(e,n[0])}))}var ja=Gi(La),Na=Gi(Pa);function Ba(e){return null==e?[]:Jt(e,La(e))}var qa=Ri((function(e,t,n){return t=t.toLowerCase(),e+(n?Ua(t):t)}));function Ua(e){return Ya(ma(e).toLowerCase())}function Fa(e){return(e=ma(e))&&e.replace(ye,en).replace(Ze,"")}var Wa=Ri((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Va=Ri((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),Ha=Ii("toLowerCase"),za=Ri((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()})),Ga=Ri((function(e,t,n){return e+(n?" ":"")+Ya(t)})),Ka=Ri((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Ya=Ii("toUpperCase");function Ja(e,t,n){return e=ma(e),(t=n?i:t)===i?function(e){return tt.test(e)}(e)?function(e){return e.match(Xe)||[]}(e):function(e){return e.match(ue)||[]}(e):e.match(t)||[]}var Za=Gr((function(e,t){try{return Et(e,i,t)}catch(e){return Ys(e)?e:new _e(e)}})),Qa=Xi((function(e,t){return Ct(t,(function(t){t=Do(t),rr(e,t,ks(e[t],e))})),e}));function Xa(e){return function(){return e}}var eu=Di(),tu=Di(!0);function nu(e){return e}function ru(e){return Rr("function"==typeof e?e:sr(e,1))}var iu=Gr((function(e,t){return function(n){return kr(n,e,t)}})),ou=Gr((function(e,t){return function(n){return kr(e,n,t)}}));function su(e,t,n){var r=La(t),i=wr(t,r);null!=n||Xs(t)&&(i.length||!r.length)||(n=t,t=e,e=this,i=wr(t,La(t)));var o=!(Xs(n)&&"chain"in n&&!n.chain),s=Js(e);return Ct(i,(function(n){var r=t[n];e[n]=r,s&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__);return(n.__actions__=Mi(this.__actions__)).push({func:r,args:arguments,thisArg:e}),n.__chain__=t,n}return r.apply(e,It([this.value()],arguments))})})),e}function au(){}var uu=qi(Pt),cu=qi(Tt),lu=qi($t);function hu(e){return yo(e)?Wt(Do(e)):function(e){return function(t){return _r(t,e)}}(e)}var du=Fi(),fu=Fi(!0);function pu(){return[]}function gu(){return!1}var vu,mu=Bi((function(e,t){return e+t}),0),yu=Hi("ceil"),bu=Bi((function(e,t){return e/t}),1),wu=Hi("floor"),_u=Bi((function(e,t){return e*t}),1),xu=Hi("round"),Eu=Bi((function(e,t){return e-t}),0);return Nn.after=function(e,t){if("function"!=typeof t)throw new Te(o);return e=fa(e),function(){if(--e<1)return t.apply(this,arguments)}},Nn.ary=Ms,Nn.assign=ya,Nn.assignIn=ba,Nn.assignInWith=wa,Nn.assignWith=_a,Nn.at=xa,Nn.before=Ts,Nn.bind=ks,Nn.bindAll=Qa,Nn.bindKey=Os,Nn.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Ws(e)?e:[e]},Nn.chain=hs,Nn.chunk=function(e,t,n){t=(n?mo(e,t,n):t===i)?1:vn(fa(t),0);var o=null==e?0:e.length;if(!o||t<1)return[];for(var s=0,a=0,u=r(dt(o/t));so?0:o+n),(r=r===i||r>o?o:fa(r))<0&&(r+=o),r=n>r?0:pa(r);n>>0)?(e=ma(e))&&("string"==typeof t||null!=t&&!ia(t))&&!(t=si(t))&&rn(e)?yi(hn(e),0,n):e.split(t,n):[]},Nn.spread=function(e,t){if("function"!=typeof e)throw new Te(o);return t=null==t?0:vn(fa(t),0),Gr((function(n){var r=n[t],i=yi(n,0,t);return r&&It(i,r),Et(e,this,i)}))},Nn.tail=function(e){var t=null==e?0:e.length;return t?ei(e,1,t):[]},Nn.take=function(e,t,n){return e&&e.length?ei(e,0,(t=n||t===i?1:fa(t))<0?0:t):[]},Nn.takeRight=function(e,t,n){var r=null==e?0:e.length;return r?ei(e,(t=r-(t=n||t===i?1:fa(t)))<0?0:t,r):[]},Nn.takeRightWhile=function(e,t){return e&&e.length?li(e,oo(t,3),!1,!0):[]},Nn.takeWhile=function(e,t){return e&&e.length?li(e,oo(t,3)):[]},Nn.tap=function(e,t){return t(e),e},Nn.throttle=function(e,t,n){var r=!0,i=!0;if("function"!=typeof e)throw new Te(o);return Xs(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),Ls(e,t,{leading:r,maxWait:t,trailing:i})},Nn.thru=ds,Nn.toArray=ha,Nn.toPairs=ja,Nn.toPairsIn=Na,Nn.toPath=function(e){return Ws(e)?Pt(e,Do):aa(e)?[e]:Mi($o(ma(e)))},Nn.toPlainObject=va,Nn.transform=function(e,t,n){var r=Ws(e),i=r||Gs(e)||ua(e);if(t=oo(t,4),null==n){var o=e&&e.constructor;n=i?r?new o:[]:Xs(e)&&Js(o)?Bn(Ve(e)):{}}return(i?Ct:yr)(e,(function(e,r,i){return t(n,e,r,i)})),n},Nn.unary=function(e){return Ms(e,1)},Nn.union=es,Nn.unionBy=ts,Nn.unionWith=ns,Nn.uniq=function(e){return e&&e.length?ai(e):[]},Nn.uniqBy=function(e,t){return e&&e.length?ai(e,oo(t,2)):[]},Nn.uniqWith=function(e,t){return t="function"==typeof t?t:i,e&&e.length?ai(e,i,t):[]},Nn.unset=function(e,t){return null==e||ui(e,t)},Nn.unzip=rs,Nn.unzipWith=is,Nn.update=function(e,t,n){return null==e?e:ci(e,t,gi(n))},Nn.updateWith=function(e,t,n,r){return r="function"==typeof r?r:i,null==e?e:ci(e,t,gi(n),r)},Nn.values=Ba,Nn.valuesIn=function(e){return null==e?[]:Jt(e,Pa(e))},Nn.without=os,Nn.words=Ja,Nn.wrap=function(e,t){return Ds(gi(t),e)},Nn.xor=ss,Nn.xorBy=as,Nn.xorWith=us,Nn.zip=cs,Nn.zipObject=function(e,t){return fi(e||[],t||[],Xn)},Nn.zipObjectDeep=function(e,t){return fi(e||[],t||[],Jr)},Nn.zipWith=ls,Nn.entries=ja,Nn.entriesIn=Na,Nn.extend=ba,Nn.extendWith=wa,su(Nn,Nn),Nn.add=mu,Nn.attempt=Za,Nn.camelCase=qa,Nn.capitalize=Ua,Nn.ceil=yu,Nn.clamp=function(e,t,n){return n===i&&(n=t,t=i),n!==i&&(n=(n=ga(n))==n?n:0),t!==i&&(t=(t=ga(t))==t?t:0),or(ga(e),t,n)},Nn.clone=function(e){return sr(e,4)},Nn.cloneDeep=function(e){return sr(e,5)},Nn.cloneDeepWith=function(e,t){return sr(e,5,t="function"==typeof t?t:i)},Nn.cloneWith=function(e,t){return sr(e,4,t="function"==typeof t?t:i)},Nn.conformsTo=function(e,t){return null==t||ar(e,t,La(t))},Nn.deburr=Fa,Nn.defaultTo=function(e,t){return null==e||e!=e?t:e},Nn.divide=bu,Nn.endsWith=function(e,t,n){e=ma(e),t=si(t);var r=e.length,o=n=n===i?r:or(fa(n),0,r);return(n-=t.length)>=0&&e.slice(n,o)==t},Nn.eq=Bs,Nn.escape=function(e){return(e=ma(e))&&K.test(e)?e.replace(z,tn):e},Nn.escapeRegExp=function(e){return(e=ma(e))&&ne.test(e)?e.replace(te,"\\$&"):e},Nn.every=function(e,t,n){var r=Ws(e)?Tt:dr;return n&&mo(e,t,n)&&(t=i),r(e,oo(t,3))},Nn.find=gs,Nn.findIndex=Fo,Nn.findKey=function(e,t){return jt(e,oo(t,3),yr)},Nn.findLast=vs,Nn.findLastIndex=Wo,Nn.findLastKey=function(e,t){return jt(e,oo(t,3),br)},Nn.floor=wu,Nn.forEach=ms,Nn.forEachRight=ys,Nn.forIn=function(e,t){return null==e?e:vr(e,oo(t,3),Pa)},Nn.forInRight=function(e,t){return null==e?e:mr(e,oo(t,3),Pa)},Nn.forOwn=function(e,t){return e&&yr(e,oo(t,3))},Nn.forOwnRight=function(e,t){return e&&br(e,oo(t,3))},Nn.get=Ca,Nn.gt=qs,Nn.gte=Us,Nn.has=function(e,t){return null!=e&&fo(e,t,Cr)},Nn.hasIn=Ma,Nn.head=Ho,Nn.identity=nu,Nn.includes=function(e,t,n,r){e=Hs(e)?e:Ba(e),n=n&&!r?fa(n):0;var i=e.length;return n<0&&(n=vn(i+n,0)),sa(e)?n<=i&&e.indexOf(t,n)>-1:!!i&&Bt(e,t,n)>-1},Nn.indexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:fa(n);return i<0&&(i=vn(r+i,0)),Bt(e,t,i)},Nn.inRange=function(e,t,n){return t=da(t),n===i?(n=t,t=0):n=da(n),function(e,t,n){return e>=mn(t,n)&&e=-9007199254740991&&e<=h},Nn.isSet=oa,Nn.isString=sa,Nn.isSymbol=aa,Nn.isTypedArray=ua,Nn.isUndefined=function(e){return e===i},Nn.isWeakMap=function(e){return ea(e)&&ho(e)==L},Nn.isWeakSet=function(e){return ea(e)&&"[object WeakSet]"==Er(e)},Nn.join=function(e,t){return null==e?"":Vt.call(e,t)},Nn.kebabCase=Wa,Nn.last=Yo,Nn.lastIndexOf=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var o=r;return n!==i&&(o=(o=fa(n))<0?vn(r+o,0):mn(o,r-1)),t==t?function(e,t,n){for(var r=n+1;r--;)if(e[r]===t)return r;return r}(e,t,o):Nt(e,Ut,o,!0)},Nn.lowerCase=Va,Nn.lowerFirst=Ha,Nn.lt=ca,Nn.lte=la,Nn.max=function(e){return e&&e.length?fr(e,nu,Sr):i},Nn.maxBy=function(e,t){return e&&e.length?fr(e,oo(t,2),Sr):i},Nn.mean=function(e){return Ft(e,nu)},Nn.meanBy=function(e,t){return Ft(e,oo(t,2))},Nn.min=function(e){return e&&e.length?fr(e,nu,$r):i},Nn.minBy=function(e,t){return e&&e.length?fr(e,oo(t,2),$r):i},Nn.stubArray=pu,Nn.stubFalse=gu,Nn.stubObject=function(){return{}},Nn.stubString=function(){return""},Nn.stubTrue=function(){return!0},Nn.multiply=_u,Nn.nth=function(e,t){return e&&e.length?qr(e,fa(t)):i},Nn.noConflict=function(){return ht._===this&&(ht._=Ne),this},Nn.noop=au,Nn.now=Cs,Nn.pad=function(e,t,n){e=ma(e);var r=(t=fa(t))?ln(e):0;if(!t||r>=t)return e;var i=(t-r)/2;return Ui(ft(i),n)+e+Ui(dt(i),n)},Nn.padEnd=function(e,t,n){e=ma(e);var r=(t=fa(t))?ln(e):0;return t&&rt){var r=e;e=t,t=r}if(n||e%1||t%1){var o=wn();return mn(e+o*(t-e+at("1e-"+((o+"").length-1))),t)}return Hr(e,t)},Nn.reduce=function(e,t,n){var r=Ws(e)?Rt:Ht,i=arguments.length<3;return r(e,oo(t,4),n,i,lr)},Nn.reduceRight=function(e,t,n){var r=Ws(e)?At:Ht,i=arguments.length<3;return r(e,oo(t,4),n,i,hr)},Nn.repeat=function(e,t,n){return t=(n?mo(e,t,n):t===i)?1:fa(t),zr(ma(e),t)},Nn.replace=function(){var e=arguments,t=ma(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Nn.result=function(e,t,n){var r=-1,o=(t=vi(t,e)).length;for(o||(o=1,e=i);++rh)return[];var n=f,r=mn(e,f);t=oo(t),e-=f;for(var i=Gt(r,t);++n=s)return e;var u=n-ln(r);if(u<1)return r;var c=a?yi(a,0,u).join(""):e.slice(0,u);if(o===i)return c+r;if(a&&(u+=c.length-u),ia(o)){if(e.slice(u).search(o)){var l,h=c;for(o.global||(o=Ce(o.source,ma(de.exec(o))+"g")),o.lastIndex=0;l=o.exec(h);)var d=l.index;c=c.slice(0,d===i?u:d)}}else if(e.indexOf(si(o),u)!=u){var f=c.lastIndexOf(o);f>-1&&(c=c.slice(0,f))}return c+r},Nn.unescape=function(e){return(e=ma(e))&&G.test(e)?e.replace(H,fn):e},Nn.uniqueId=function(e){var t=++Ae;return ma(e)+t},Nn.upperCase=Ka,Nn.upperFirst=Ya,Nn.each=ms,Nn.eachRight=ys,Nn.first=Ho,su(Nn,(vu={},yr(Nn,(function(e,t){Re.call(Nn.prototype,t)||(vu[t]=e)})),vu),{chain:!1}),Nn.VERSION="4.17.21",Ct(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Nn[e].placeholder=Nn})),Ct(["drop","take"],(function(e,t){Fn.prototype[e]=function(n){n=n===i?1:vn(fa(n),0);var r=this.__filtered__&&!t?new Fn(this):this.clone();return r.__filtered__?r.__takeCount__=mn(n,r.__takeCount__):r.__views__.push({size:mn(n,f),type:e+(r.__dir__<0?"Right":"")}),r},Fn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),Ct(["filter","map","takeWhile"],(function(e,t){var n=t+1,r=1==n||3==n;Fn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:oo(e,3),type:n}),t.__filtered__=t.__filtered__||r,t}})),Ct(["head","last"],(function(e,t){var n="take"+(t?"Right":"");Fn.prototype[e]=function(){return this[n](1).value()[0]}})),Ct(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");Fn.prototype[e]=function(){return this.__filtered__?new Fn(this):this[n](1)}})),Fn.prototype.compact=function(){return this.filter(nu)},Fn.prototype.find=function(e){return this.filter(e).head()},Fn.prototype.findLast=function(e){return this.reverse().find(e)},Fn.prototype.invokeMap=Gr((function(e,t){return"function"==typeof e?new Fn(this):this.map((function(n){return kr(n,e,t)}))})),Fn.prototype.reject=function(e){return this.filter(As(oo(e)))},Fn.prototype.slice=function(e,t){e=fa(e);var n=this;return n.__filtered__&&(e>0||t<0)?new Fn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==i&&(n=(t=fa(t))<0?n.dropRight(-t):n.take(t-e)),n)},Fn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},Fn.prototype.toArray=function(){return this.take(f)},yr(Fn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),r=/^(?:head|last)$/.test(t),o=Nn[r?"take"+("last"==t?"Right":""):t],s=r||/^find/.test(t);o&&(Nn.prototype[t]=function(){var t=this.__wrapped__,a=r?[1]:arguments,u=t instanceof Fn,c=a[0],l=u||Ws(t),h=function(e){var t=o.apply(Nn,It([e],a));return r&&d?t[0]:t};l&&n&&"function"==typeof c&&1!=c.length&&(u=l=!1);var d=this.__chain__,f=!!this.__actions__.length,p=s&&!d,g=u&&!f;if(!s&&l){t=g?t:new Fn(this);var v=e.apply(t,a);return v.__actions__.push({func:ds,args:[h],thisArg:i}),new Un(v,d)}return p&&g?e.apply(this,a):(v=this.thru(h),p?r?v.value()[0]:v.value():v)})})),Ct(["pop","push","shift","sort","splice","unshift"],(function(e){var t=ke[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);Nn.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var i=this.value();return t.apply(Ws(i)?i:[],e)}return this[n]((function(n){return t.apply(Ws(n)?n:[],e)}))}})),yr(Fn.prototype,(function(e,t){var n=Nn[t];if(n){var r=n.name+"";Re.call(On,r)||(On[r]=[]),On[r].push({name:t,func:n})}})),On[ji(i,2).name]=[{name:"wrapper",func:i}],Fn.prototype.clone=function(){var e=new Fn(this.__wrapped__);return e.__actions__=Mi(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=Mi(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=Mi(this.__views__),e},Fn.prototype.reverse=function(){if(this.__filtered__){var e=new Fn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},Fn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=Ws(e),r=t<0,i=n?e.length:0,o=function(e,t,n){for(var r=-1,i=n.length;++r=this.__values__.length;return{done:e,value:e?i:this.__values__[this.__index__++]}},Nn.prototype.plant=function(e){for(var t,n=this;n instanceof qn;){var r=No(n);r.__index__=0,r.__values__=i,t?o.__wrapped__=r:t=r;var o=r;n=n.__wrapped__}return o.__wrapped__=e,t},Nn.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof Fn){var t=e;return this.__actions__.length&&(t=new Fn(this)),(t=t.reverse()).__actions__.push({func:ds,args:[Xo],thisArg:i}),new Un(t,this.__chain__)}return this.thru(Xo)},Nn.prototype.toJSON=Nn.prototype.valueOf=Nn.prototype.value=function(){return hi(this.__wrapped__,this.__actions__)},Nn.prototype.first=Nn.prototype.head,Ye&&(Nn.prototype[Ye]=function(){return this}),Nn}();ht._=pn,(r=function(){return pn}.call(t,n,t,e))===i||(e.exports=r)}.call(this)},2545:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.partialClone=function e(t,n=3,r=[],i=void 0){if("object"!=typeof t||null===t||0===Object.getOwnPropertyNames(t).length)return t;const o=Array.isArray(t)?[]:{};if(0===n)return i||o;for(const s of Object.keys(t))r.includes(s)?o[s]=i||(Array.isArray(t)?[]:{}):Object.prototype.hasOwnProperty.call(t,s)&&(o[s]=e(t[s],n-1,r,i));return o}},2584:(e,t,n)=>{"use strict";const{configs:r,LEVEL:i,MESSAGE:o}=n(4763);class s{constructor(e={levels:r.npm.levels}){this.paddings=s.paddingForLevels(e.levels,e.filler),this.options=e}static getLongestLevel(e){const t=Object.keys(e).map((e=>e.length));return Math.max(...t)}static paddingForLevel(e,t,n){const r=n+1-e.length,i=Math.floor(r/t.length);return`${t}${t.repeat(i)}`.slice(0,r)}static paddingForLevels(e,t=" "){const n=s.getLongestLevel(e);return Object.keys(e).reduce(((e,r)=>(e[r]=s.paddingForLevel(r,t,n),e)),{})}transform(e,t){return e.message=`${this.paddings[e[i]]}${e.message}`,e[o]&&(e[o]=`${this.paddings[e[i]]}${e[o]}`),e}}e.exports=e=>new s(e),e.exports.Padder=e.exports.Format=s},2640:(e,t,n)=>{"use strict";n.d(t,{D4:()=>r,Dz:()=>a,EO:()=>i,Gv:()=>o,sp:()=>s});const r="0.10.0",i={COMMAND:"⌘",SEARCH_FORWARD:"⟳",SEARCH_BACKWARD:"⟲"},o="vscode-neovim",s=`asvetliakov.${o}`,a=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","/","]","right","left","up","down","backspace","delete"]},2711:(e,t,n)=>{"use strict";const r=t.format=n(5532);function i(e,t){Object.defineProperty(r,e,{get:()=>t(),configurable:!0})}t.levels=n(8272),i("align",(function(){return n(9426)})),i("errors",(function(){return n(7360)})),i("cli",(function(){return n(8745)})),i("combine",(function(){return n(2102)})),i("colorize",(function(){return n(9680)})),i("json",(function(){return n(1049)})),i("label",(function(){return n(8525)})),i("logstash",(function(){return n(6816)})),i("metadata",(function(){return n(8266)})),i("ms",(function(){return n(1863)})),i("padLevels",(function(){return n(2584)})),i("prettyPrint",(function(){return n(7133)})),i("printf",(function(){return n(8668)})),i("simple",(function(){return n(929)})),i("splat",(function(){return n(9099)})),i("timestamp",(function(){return n(4867)})),i("uncolorize",(function(){return n(6439)}))},2751:(e,t,n)=>{"use strict";const{LEVEL:r}=n(4763),i=n(4575),o=n(8010),s=n(7918)("winston:create-logger");e.exports=function(e={}){e.levels=e.levels||i.npm.levels;class t extends o{constructor(e){super(e)}}const n=new t(e);return Object.keys(e.levels).forEach((function(e){s('Define prototype method for "%s"',e),"log"!==e?(t.prototype[e]=function(...t){const i=this||n;if(1===t.length){const[o]=t,s=o&&o.message&&o||{message:o};return s.level=s[r]=e,i._addDefaultMeta(s),i.write(s),this||n}return 0===t.length?(i.log(e,""),i):i.log(e,...t)},t.prototype[function(e){return"is"+e.charAt(0).toUpperCase()+e.slice(1)+"Enabled"}(e)]=function(){return(this||n).isLevelEnabled(e)}):console.warn('Level "log" not defined: conflicts with the method "log". Use a different level name.')})),n}},2812:(e,t,n)=>{"use strict";var r=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=c;var i=n(9362),o=n(5494);n(2017)(c,i);for(var s=r(o.prototype),a=0;a{"use strict";e.exports=l;var r=n(3291).F,i=r.ERR_METHOD_NOT_IMPLEMENTED,o=r.ERR_MULTIPLE_CALLBACK,s=r.ERR_TRANSFORM_ALREADY_TRANSFORMING,a=r.ERR_TRANSFORM_WITH_LENGTH_0,u=n(2812);function c(e,t){var n=this._transformState;n.transforming=!1;var r=n.writecb;if(null===r)return this.emit("error",new o);n.writechunk=null,n.writecb=null,null!=t&&this.push(t),r(e);var i=this._readableState;i.reading=!1,(i.needReadable||i.length{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=c(n(2132)),i=c(n(8303)),o=c(n(1814)),s=n(4877),a=c(n(8494)),u=c(n(6884));function c(e){return e&&e.__esModule?e:{default:e}}t.default=e=>(t,n,c)=>{if(c=(0,r.default)(c),e<=0)throw new RangeError("concurrency limit cannot be less than 1");if(!t)return c(null);if((0,s.isAsyncGenerator)(t))return(0,a.default)(t,e,n,c);if((0,s.isAsyncIterable)(t))return(0,a.default)(t[Symbol.asyncIterator](),e,n,c);var l=(0,i.default)(t),h=!1,d=!1,f=0,p=!1;function g(e,t){if(!d)if(f-=1,e)h=!0,c(e);else if(!1===e)h=!0,d=!0;else{if(t===u.default||h&&f<=0)return h=!0,c(null);p||v()}}function v(){for(p=!0;f{var r=n(181),i=r.Buffer;function o(e,t){for(var n in e)t[n]=e[n]}function s(e,t,n){return i(e,t,n)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=r:(o(r,t),t.Buffer=s),o(i,s),s.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,n)},s.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=i(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},s.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},s.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},3018:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.command=function(e,t){return function(n,i){const o=t&&!!t.sync,s="string"==typeof i,a=s?n[i]:n,u={};return["range","nargs","complete"].forEach((e=>{t&&void 0!==t[e]&&(u[e]=t[e])})),Object.defineProperty(a,r.NVIM_METHOD_NAME,{value:`command:${e}`}),Object.defineProperty(a,r.NVIM_SYNC,{value:!!o}),Object.defineProperty(a,r.NVIM_SPEC,{value:{type:"command",name:e,sync:!!o,opts:u}}),s&&(n[i]=a),n}};const r=n(3118)},3024:e=>{"use strict";e.exports=require("node:fs")},3106:e=>{"use strict";e.exports=require("zlib")},3118:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NVIM_METHOD_NAME=t.NVIM_SYNC=t.NVIM_SPEC=t.NVIM_DEV_MODE=t.NVIM_PLUGIN=void 0,t.NVIM_PLUGIN="_nvim_plugin",t.NVIM_DEV_MODE="_nvim_dev_mode",t.NVIM_SPEC="_nvim_rpc_spec",t.NVIM_SYNC="_nvim_rpc_sync",t.NVIM_METHOD_NAME="_nvim_rpc_method_name"},3141:(e,t,n)=>{"use strict";var r=n(2861).Buffer,i=r.isEncoding||function(e){switch((e=""+e)&&e.toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":case"raw":return!0;default:return!1}};function o(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return"utf8";for(var t;;)switch(e){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return e;default:if(t)return;e=(""+e).toLowerCase(),t=!0}}(e);if("string"!=typeof t&&(r.isEncoding===i||!i(e)))throw new Error("Unknown encoding: "+e);return t||e}(e),this.encoding){case"utf16le":this.text=u,this.end=c,t=4;break;case"utf8":this.fillLast=a,t=4;break;case"base64":this.text=l,this.end=h,t=3;break;default:return this.write=d,void(this.end=f)}this.lastNeed=0,this.lastTotal=0,this.lastChar=r.allocUnsafe(t)}function s(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a(e){var t=this.lastTotal-this.lastNeed,n=function(e,t){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==n?n:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2==0){var n=e.toString("utf16le",t);if(n){var r=n.charCodeAt(n.length-1);if(r>=55296&&r<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],n.slice(0,-1)}return n}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var n=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,n)}return t}function l(e,t){var n=(e.length-t)%3;return 0===n?e.toString("base64",t):(this.lastNeed=3-n,this.lastTotal=3,1===n?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-n))}function h(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function d(e){return e.toString(this.encoding)}function f(e){return e&&e.length?this.write(e):""}t.I=o,o.prototype.write=function(e){if(0===e.length)return"";var t,n;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";n=this.lastNeed,this.lastNeed=0}else n=0;return n=0?(i>0&&(e.lastNeed=i-1),i):--r=0?(i>0&&(e.lastNeed=i-2),i):--r=0?(i>0&&(2===i?i=0:e.lastNeed=i-3),i):0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=n;var r=e.length-(n-this.lastNeed);return e.copy(this.lastChar,0,r),e.toString("utf8",t,r)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},3193:e=>{"use strict";e.exports=require("string_decoder")},3199:e=>{"use strict";e.exports=function(e,t){var n=(t=t||process.argv||[]).indexOf("--"),r=/^-{1,2}/.test(e)?"":"--",i=t.indexOf(r+e);return-1!==i&&(-1===n||i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Tabpage=t.Window=t.Buffer=t.NeovimClient=t.Neovim=void 0;var r=n(3324);Object.defineProperty(t,"Neovim",{enumerable:!0,get:function(){return r.Neovim}});var i=n(5085);Object.defineProperty(t,"NeovimClient",{enumerable:!0,get:function(){return i.NeovimClient}});var o=n(1716);Object.defineProperty(t,"Buffer",{enumerable:!0,get:function(){return o.Buffer}});var s=n(6866);Object.defineProperty(t,"Window",{enumerable:!0,get:function(){return s.Window}});var a=n(6104);Object.defineProperty(t,"Tabpage",{enumerable:!0,get:function(){return a.Tabpage}})},3283:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assign:()=>l,default:()=>L,defaultI18n:()=>p,format:()=>k,parse:()=>O,setGlobalDateI18n:()=>v,setGlobalDateMasks:()=>T});var r=/d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g,i="\\d\\d?",o="\\d\\d",s="[^\\s]+",a=/\[([^]*?)\]/gm;function u(e,t){for(var n=[],r=0,i=e.length;r-1?i:null}};function l(e){for(var t=[],n=1;n3?0:(e-e%10!=10?1:0)*e%10]}},g=l({},p),v=function(e){return g=l(g,e)},m=function(e){return e.replace(/[|\\{()[^$+*?.-]/g,"\\$&")},y=function(e,t){for(void 0===t&&(t=2),e=String(e);e.length0?"-":"+")+y(100*Math.floor(Math.abs(t)/60)+Math.abs(t)%60,4)},Z:function(e){var t=e.getTimezoneOffset();return(t>0?"-":"+")+y(Math.floor(Math.abs(t)/60),2)+":"+y(Math.abs(t)%60,2)}},w=function(e){return+e-1},_=[null,i],x=[null,s],E=["isPm",s,function(e,t){var n=e.toLowerCase();return n===t.amPm[0]?0:n===t.amPm[1]?1:null}],S=["timezoneOffset","[^\\s]*?[\\+\\-]\\d\\d:?\\d\\d|[^\\s]*?Z?",function(e){var t=(e+"").match(/([+-]|\d\d)/gi);if(t){var n=60*+t[1]+parseInt(t[2],10);return"+"===t[0]?n:-n}return 0}],C={D:["day",i],DD:["day",o],Do:["day",i+s,function(e){return parseInt(e,10)}],M:["month",i,w],MM:["month",o,w],YY:["year",o,function(e){var t=+(""+(new Date).getFullYear()).substr(0,2);return+(""+(+e>68?t-1:t)+e)}],h:["hour",i,void 0,"isPm"],hh:["hour",o,void 0,"isPm"],H:["hour",i],HH:["hour",o],m:["minute",i],mm:["minute",o],s:["second",i],ss:["second",o],YYYY:["year","\\d{4}"],S:["millisecond","\\d",function(e){return 100*+e}],SS:["millisecond",o,function(e){return 10*+e}],SSS:["millisecond","\\d{3}"],d:_,dd:_,ddd:x,dddd:x,MMM:["month",s,c("monthNamesShort")],MMMM:["month",s,c("monthNames")],a:E,A:E,ZZ:S,Z:S},M={default:"ddd MMM DD YYYY HH:mm:ss",shortDate:"M/D/YY",mediumDate:"MMM D, YYYY",longDate:"MMMM D, YYYY",fullDate:"dddd, MMMM D, YYYY",isoDate:"YYYY-MM-DD",isoDateTime:"YYYY-MM-DDTHH:mm:ssZ",shortTime:"HH:mm",mediumTime:"HH:mm:ss",longTime:"HH:mm:ss.SSS"},T=function(e){return l(M,e)},k=function(e,t,n){if(void 0===t&&(t=M.default),void 0===n&&(n={}),"number"==typeof e&&(e=new Date(e)),"[object Date]"!==Object.prototype.toString.call(e)||isNaN(e.getTime()))throw new Error("Invalid Date pass to format");t=M[t]||t;var i=[];t=t.replace(a,(function(e,t){return i.push(t),"@@@"}));var o=l(l({},g),n);return(t=t.replace(r,(function(t){return b[t](e,o)}))).replace(/@@@/g,(function(){return i.shift()}))};function O(e,t,n){if(void 0===n&&(n={}),"string"!=typeof t)throw new Error("Invalid format in fecha parse");if(t=M[t]||t,e.length>1e3)return null;var i={year:(new Date).getFullYear(),month:0,day:1,hour:0,minute:0,second:0,millisecond:0,isPm:null,timezoneOffset:null},o=[],s=[],u=t.replace(a,(function(e,t){return s.push(m(t)),"@@@"})),c={},h={};u=m(u).replace(r,(function(e){var t=C[e],n=t[0],r=t[1],i=t[3];if(c[n])throw new Error("Invalid format. "+n+" specified twice in format");return c[n]=!0,i&&(h[i]=!0),o.push(t),"("+r+")"})),Object.keys(h).forEach((function(e){if(!c[e])throw new Error("Invalid format. "+e+" is required in specified format")})),u=u.replace(/@@@/g,(function(){return s.shift()}));var d=e.match(new RegExp(u,"i"));if(!d)return null;for(var f,p=l(l({},g),n),v=1;v11||i.month<0||i.day>31||i.day<1||i.hour>23||i.hour<0||i.minute>59||i.minute<0||i.second>59||i.second<0)return null;return f}const L={format:k,parse:O,defaultI18n:p,setGlobalDateI18n:v,setGlobalDateMasks:T}},3285:(e,t,n)=>{"use strict";var r;function i(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=n(3484),s=Symbol("lastResolve"),a=Symbol("lastReject"),u=Symbol("error"),c=Symbol("ended"),l=Symbol("lastPromise"),h=Symbol("handlePromise"),d=Symbol("stream");function f(e,t){return{value:e,done:t}}function p(e){var t=e[s];if(null!==t){var n=e[d].read();null!==n&&(e[l]=null,e[s]=null,e[a]=null,t(f(n,!1)))}}function g(e){process.nextTick(p,e)}var v=Object.getPrototypeOf((function(){})),m=Object.setPrototypeOf((i(r={get stream(){return this[d]},next:function(){var e=this,t=this[u];if(null!==t)return Promise.reject(t);if(this[c])return Promise.resolve(f(void 0,!0));if(this[d].destroyed)return new Promise((function(t,n){process.nextTick((function(){e[u]?n(e[u]):t(f(void 0,!0))}))}));var n,r=this[l];if(r)n=new Promise(function(e,t){return function(n,r){e.then((function(){t[c]?n(f(void 0,!0)):t[h](n,r)}),r)}}(r,this));else{var i=this[d].read();if(null!==i)return Promise.resolve(f(i,!1));n=new Promise(this[h])}return this[l]=n,n}},Symbol.asyncIterator,(function(){return this})),i(r,"return",(function(){var e=this;return new Promise((function(t,n){e[d].destroy(null,(function(e){e?n(e):t(f(void 0,!0))}))}))})),r),v);e.exports=function(e){var t,n=Object.create(m,(i(t={},d,{value:e,writable:!0}),i(t,s,{value:null,writable:!0}),i(t,a,{value:null,writable:!0}),i(t,u,{value:null,writable:!0}),i(t,c,{value:e._readableState.endEmitted,writable:!0}),i(t,h,{value:function(e,t){var r=n[d].read();r?(n[l]=null,n[s]=null,n[a]=null,e(f(r,!1))):(n[s]=e,n[a]=t)},writable:!0}),t));return n[l]=null,o(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=n[a];return null!==t&&(n[l]=null,n[s]=null,n[a]=null,t(e)),void(n[u]=e)}var r=n[s];null!==r&&(n[l]=null,n[s]=null,n[a]=null,r(f(void 0,!0))),n[c]=!0})),e.on("readable",g.bind(null,n)),n}},3291:e=>{"use strict";const t={};function n(e,n,r){r||(r=Error);class i extends r{constructor(e,t,r){super(function(e,t,r){return"string"==typeof n?n:n(e,t,r)}(e,t,r))}}i.prototype.name=r.name,i.prototype.code=e,t[e]=i}function r(e,t){if(Array.isArray(e)){const n=e.length;return e=e.map((e=>String(e))),n>2?`one of ${t} ${e.slice(0,n-1).join(", ")}, or `+e[n-1]:2===n?`one of ${t} ${e[0]} or ${e[1]}`:`of ${t} ${e[0]}`}return`of ${t} ${String(e)}`}n("ERR_INVALID_OPT_VALUE",(function(e,t){return'The value "'+t+'" is invalid for option "'+e+'"'}),TypeError),n("ERR_INVALID_ARG_TYPE",(function(e,t,n){let i;var o;let s;if("string"==typeof t&&(o="not ",t.substr(0,4)===o)?(i="must not be",t=t.replace(/^not /,"")):i="must be",function(e,t,n){return(void 0===n||n>e.length)&&(n=e.length),e.substring(n-9,n)===t}(e," argument"))s=`The ${e} ${i} ${r(t,"type")}`;else{s=`The "${e}" ${"number"!=typeof u&&(u=0),u+1>(a=e).length||-1===a.indexOf(".",u)?"argument":"property"} ${i} ${r(t,"type")}`}var a,u;return s+=". Received type "+typeof n,s}),TypeError),n("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),n("ERR_METHOD_NOT_IMPLEMENTED",(function(e){return"The "+e+" method is not implemented"})),n("ERR_STREAM_PREMATURE_CLOSE","Premature close"),n("ERR_STREAM_DESTROYED",(function(e){return"Cannot call "+e+" after a stream was destroyed"})),n("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),n("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),n("ERR_STREAM_WRITE_AFTER_END","write after end"),n("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),n("ERR_UNKNOWN_ENCODING",(function(e){return"Unknown encoding: "+e}),TypeError),n("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),e.exports.F=t},3324:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Neovim=void 0;const r=n(9691),i=n(163),o=n(1716),s=n(6104),a=n(6866);class u extends r.BaseApi{constructor(){super(...arguments),this.prefix="nvim_",this.Buffer=o.Buffer,this.Window=a.Window,this.Tabpage=s.Tabpage}get apiInfo(){return this.request(`${this.prefix}get_api_info`)}get buffers(){return this.request(`${this.prefix}list_bufs`)}get buffer(){return i.createChainableApi.call(this,"Buffer",o.Buffer,(()=>this.request(`${this.prefix}get_current_buf`)))}set buffer(e){this.request(`${this.prefix}set_current_buf`,[e])}get chans(){return this.request(`${this.prefix}list_chans`)}getChanInfo(e){return this.request(`${this.prefix}get_chan_info`,[e])}get commands(){return this.getCommands()}getCommands(e={}){return this.request(`${this.prefix}get_commands`,[e])}get tabpages(){return this.request(`${this.prefix}list_tabpages`)}get tabpage(){return i.createChainableApi.call(this,"Tabpage",s.Tabpage,(()=>this.request(`${this.prefix}get_current_tabpage`)))}set tabpage(e){this.request(`${this.prefix}set_current_tabpage`,[e])}get windows(){return this.getWindows()}get window(){return this.getWindow()}set window(e){e instanceof a.Window?this.setWindow(e):e.then((e=>this.setWindow(e)))}getWindows(){return this.request(`${this.prefix}list_wins`)}getWindow(){return i.createChainableApi.call(this,"Window",a.Window,(()=>this.request(`${this.prefix}get_current_win`)))}setWindow(e){return this.request(`${this.prefix}set_current_win`,[e])}get runtimePaths(){return this.request(`${this.prefix}list_runtime_paths`)}set dir(e){this.request(`${this.prefix}set_current_dir`,[e])}get line(){return this.getLine()}set line(e){"string"==typeof e&&this.setLine(e)}getLine(){return this.request(`${this.prefix}get_current_line`)}setLine(e){return this.request(`${this.prefix}set_current_line`,[e])}getKeymap(e){return this.request(`${this.prefix}get_keymap`,[e])}get mode(){return this.request(`${this.prefix}get_mode`)}get colorMap(){return this.request(`${this.prefix}get_color_map`)}getColorByName(e){return this.request(`${this.prefix}get_color_by_name`,[e])}getHighlight(e,t=!0){const n="string"==typeof e?"by_name":"by_id";return this.request(`${this.prefix}get_hl_${n}`,[e,t])}getHighlightByName(e,t=!0){return this.request(`${this.prefix}get_hl_by_name`,[e,t])}getHighlightById(e,t=!0){return this.request(`${this.prefix}get_hl_by_id`,[e,t])}deleteCurrentLine(){return this.request(`${this.prefix}del_current_line`)}eval(e){return this.request(`${this.prefix}eval`,[e])}lua(e,t=[]){const n=Array.isArray(t)?t:[t];return this.request(`${this.prefix}execute_lua`,[e,n])}executeLua(e,t=[]){return this.lua(e,t)}callDictFunction(e,t,n=[]){const r=Array.isArray(n)?n:[n];return this.request(`${this.prefix}call_dict_function`,[e,t,r])}call(e,t=[]){const n=Array.isArray(t)?t:[t];return this.request(`${this.prefix}call_function`,[e,n])}callFunction(e,t=[]){return this.call(e,t)}callAtomic(e){return this.request(`${this.prefix}call_atomic`,[e])}command(e){return this.request(`${this.prefix}command`,[e])}commandOutput(e){return this.request(`${this.prefix}command_output`,[e])}getVvar(e){return this.request(`${this.prefix}get_vvar`,[e])}setVvar(e,t){return this.request(`${this.prefix}set_vvar`,[e,t])}feedKeys(e,t,n){return this.request(`${this.prefix}feedkeys`,[e,t,n])}input(e){return this.request(`${this.prefix}input`,[e])}inputMouse(e,t,n,r,i,o){return this.request(`${this.prefix}input_mouse`,[e,t,n,r,i,o])}parseExpression(e,t,n){return this.request(`${this.prefix}parse_expression`,[e,t,n])}getProc(e){return this.request(`${this.prefix}get_proc`,[e])}getProcChildren(e){return this.request(`${this.prefix}get_proc_children`,[e])}replaceTermcodes(e,t,n,r){return this.request(`${this.prefix}replace_termcodes`,[e,t,n,r])}strWidth(e){return this.request(`${this.prefix}strwidth`,[e])}outWrite(e){return this.request(`${this.prefix}out_write`,[e])}outWriteLine(e){return this.outWrite(`${e}\n`)}errWrite(e){return this.request(`${this.prefix}err_write`,[e])}errWriteLine(e){return this.request(`${this.prefix}err_writeln`,[e])}get uis(){return this.request(`${this.prefix}list_uis`)}uiAttach(e,t,n){return this.request(`${this.prefix}ui_attach`,[e,t,n])}uiDetach(){return this.request(`${this.prefix}ui_detach`,[])}uiTryResize(e,t){return this.request(`${this.prefix}ui_try_resize`,[e,t])}uiTryResizeGrid(e,t,n){return this.request(`${this.prefix}ui_try_resize_grid`,[e,t,n])}uiSetOption(e,t){return this.request(`${this.prefix}ui_set_option`,[e,t])}subscribe(e){return this.request(`${this.prefix}subscribe`,[e])}unsubscribe(e){return this.request(`${this.prefix}unsubscribe`,[e])}setClientInfo(e,t,n,r,i){this.request(`${this.prefix}set_client_info`,[e,t,n,r,i])}createNamespace(e=""){return this.request(`${this.prefix}create_namespace`,[e])}get namespaces(){return this.getNamespaces()}getNamespaces(){return this.request(`${this.prefix}get_namespaces`)}selectPopupmenuItem(e,t,n,r={}){return this.request(`${this.prefix}select_popupmenu_item`,[e,t,n,r])}createBuf(e,t){return this.request(`${this.prefix}create_buf`,[e,t])}createBuffer(e,t){return this.createBuf(e,t)}openWin(e,t,n){return this.request(`${this.prefix}open_win`,[e,t,n])}openWindow(e,t,n){return this.openWin(e,t,n)}winConfig(e,t={}){return e.config(t)}windowConfig(e,t={}){return this.winConfig(e,t)}winClose(e,t){return e.close(t)}windowClose(e,t){return this.winClose(e,t)}quit(){this.command("qa!")}}t.Neovim=u},3336:(e,t,n)=>{"use strict";var r=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};e.exports=c;var i=n(3342),o=n(4418);n(2017)(c,i);for(var s=r(o.prototype),a=0;a{"use strict";e.exports=require("module")},3342:(e,t,n)=>{"use strict";var r;e.exports=S,S.ReadableState=E,n(4434).EventEmitter;var i,o=function(e,t){return e.listeners(t).length},s=n(5926),a=n(181).Buffer,u=("undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){},c=n(9023);i=c&&c.debuglog?c.debuglog("stream"):function(){};var l,h,d,f=n(4979),p=n(358),g=n(6969).getHighWaterMark,v=n(223).F,m=v.ERR_INVALID_ARG_TYPE,y=v.ERR_STREAM_PUSH_AFTER_EOF,b=v.ERR_METHOD_NOT_IMPLEMENTED,w=v.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;n(2017)(S,s);var _=p.errorOrDestroy,x=["error","close","destroy","pause","resume"];function E(e,t,i){r=r||n(3336),e=e||{},"boolean"!=typeof i&&(i=t instanceof r),this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=g(this,e,"readableHighWaterMark",i),this.buffer=new f,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(l||(l=n(3141).I),this.decoder=new l(e.encoding),this.encoding=e.encoding)}function S(e){if(r=r||n(3336),!(this instanceof S))return new S(e);var t=this instanceof r;this._readableState=new E(e,this,t),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),s.call(this)}function C(e,t,n,r,o){i("readableAddChunk",t);var s,c=e._readableState;if(null===t)c.reading=!1,function(e,t){if(i("onEofChunk"),!t.ended){if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,t.sync?O(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,L(e)))}}(e,c);else if(o||(s=function(e,t){var n,r;return r=t,a.isBuffer(r)||r instanceof u||"string"==typeof t||void 0===t||e.objectMode||(n=new m("chunk",["string","Buffer","Uint8Array"],t)),n}(c,t)),s)_(e,s);else if(c.objectMode||t&&t.length>0)if("string"==typeof t||c.objectMode||Object.getPrototypeOf(t)===a.prototype||(t=function(e){return a.from(e)}(t)),r)c.endEmitted?_(e,new w):M(e,c,t,!0);else if(c.ended)_(e,new y);else{if(c.destroyed)return!1;c.reading=!1,c.decoder&&!n?(t=c.decoder.write(t),c.objectMode||0!==t.length?M(e,c,t,!1):P(e,c)):M(e,c,t,!1)}else r||(c.reading=!1,P(e,c));return!c.ended&&(c.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=T?e=T:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function O(e){var t=e._readableState;i("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(i("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(L,e))}function L(e){var t=e._readableState;i("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,D(e)}function P(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(I,e,t))}function I(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function A(e){i("readable nexttick read 0"),e.read(0)}function $(e,t){i("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),D(e),t.flowing&&!t.reading&&e.read(0)}function D(e){var t=e._readableState;for(i("flow",t.flowing);t.flowing&&null!==e.read(););}function j(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):n=t.buffer.consume(e,t.decoder),n);var n}function N(e){var t=e._readableState;i("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(B,t,e))}function B(e,t){if(i("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var n=t._writableState;(!n||n.autoDestroy&&n.finished)&&t.destroy()}}function q(e,t){for(var n=0,r=e.length;n=t.highWaterMark:t.length>0)||t.ended))return i("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?N(this):O(this),null;if(0===(e=k(e,t))&&t.ended)return 0===t.length&&N(this),null;var r,o=t.needReadable;return i("need readable",o),(0===t.length||t.length-e0?j(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&N(this)),null!==r&&this.emit("data",r),r},S.prototype._read=function(e){_(this,new b("_read()"))},S.prototype.pipe=function(e,t){var n=this,r=this._readableState;switch(r.pipesCount){case 0:r.pipes=e;break;case 1:r.pipes=[r.pipes,e];break;default:r.pipes.push(e)}r.pipesCount+=1,i("pipe count=%d opts=%j",r.pipesCount,t);var s=t&&!1===t.end||e===process.stdout||e===process.stderr?p:a;function a(){i("onend"),e.end()}r.endEmitted?process.nextTick(s):n.once("end",s),e.on("unpipe",(function t(o,s){i("onunpipe"),o===n&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),e.removeListener("close",d),e.removeListener("finish",f),e.removeListener("drain",u),e.removeListener("error",h),e.removeListener("unpipe",t),n.removeListener("end",a),n.removeListener("end",p),n.removeListener("data",l),c=!0,!r.awaitDrain||e._writableState&&!e._writableState.needDrain||u())}));var u=function(e){return function(){var t=e._readableState;i("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&o(e,"data")&&(t.flowing=!0,D(e))}}(n);e.on("drain",u);var c=!1;function l(t){i("ondata");var o=e.write(t);i("dest.write",o),!1===o&&((1===r.pipesCount&&r.pipes===e||r.pipesCount>1&&-1!==q(r.pipes,e))&&!c&&(i("false write response, pause",r.awaitDrain),r.awaitDrain++),n.pause())}function h(t){i("onerror",t),p(),e.removeListener("error",h),0===o(e,"error")&&_(e,t)}function d(){e.removeListener("finish",f),p()}function f(){i("onfinish"),e.removeListener("close",d),p()}function p(){i("unpipe"),n.unpipe(e)}return n.on("data",l),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",h),e.once("close",d),e.once("finish",f),e.emit("pipe",n),r.flowing||(i("pipe resume"),n.resume()),e},S.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==r.flowing&&this.resume()):"readable"===e&&(r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.flowing=!1,r.emittedReadable=!1,i("on readable",r.length,r.reading),r.length?O(this):r.reading||process.nextTick(A,this))),n},S.prototype.addListener=S.prototype.on,S.prototype.removeListener=function(e,t){var n=s.prototype.removeListener.call(this,e,t);return"readable"===e&&process.nextTick(R,this),n},S.prototype.removeAllListeners=function(e){var t=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||process.nextTick(R,this),t},S.prototype.resume=function(){var e=this._readableState;return e.flowing||(i("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick($,e,t))}(this,e)),e.paused=!1,this},S.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},S.prototype.wrap=function(e){var t=this,n=this._readableState,r=!1;for(var o in e.on("end",(function(){if(i("wrapped end"),n.decoder&&!n.ended){var e=n.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(o){i("wrapped data"),n.decoder&&(o=n.decoder.write(o)),n.objectMode&&null==o||(n.objectMode||o&&o.length)&&(t.push(o)||(r=!0,e.pause()))})),e)void 0===this[o]&&"function"==typeof e[o]&&(this[o]=function(t){return function(){return e[t].apply(e,arguments)}}(o));for(var s=0;s{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=l(n(9875)),i=l(n(6884)),o=l(n(3852)),s=l(n(2132)),a=l(n(1814)),u=l(n(4877)),c=l(n(8409));function l(e){return e&&e.__esModule?e:{default:e}}function h(e,t,n){n=(0,s.default)(n);var r=0,o=0,{length:u}=e,c=!1;function l(e,t){!1===e&&(c=!0),!0!==c&&(e?n(e):++o!==u&&t!==i.default||n(null))}for(0===u&&n(null);r{"use strict";Object.defineProperty(t,"Console",{configurable:!0,enumerable:!0,get:()=>n(7522)}),Object.defineProperty(t,"File",{configurable:!0,enumerable:!0,get:()=>n(4873)}),Object.defineProperty(t,"Http",{configurable:!0,enumerable:!0,get:()=>n(5071)}),Object.defineProperty(t,"Stream",{configurable:!0,enumerable:!0,get:()=>n(5767)})},3484:(e,t,n)=>{"use strict";var r=n(223).F.ERR_STREAM_PREMATURE_CLOSE;function i(){}e.exports=function e(t,n,o){if("function"==typeof n)return e(t,null,n);n||(n={}),o=function(e){var t=!1;return function(){if(!t){t=!0;for(var n=arguments.length,r=new Array(n),i=0;i{var r=n(9161)((function e(t,n){return(n=n||{}).namespace=t,n.prod=!0,n.dev=!1,n.force||e.force?e.yep(n):e.nope(n)}));e.exports=r},3579:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Command=t.Autocmd=t.Function=t.Plugin=void 0;var r=n(4416);Object.defineProperty(t,"Plugin",{enumerable:!0,get:function(){return r.plugin}});var i=n(7135);Object.defineProperty(t,"Function",{enumerable:!0,get:function(){return i.nvimFunction}});var o=n(2270);Object.defineProperty(t,"Autocmd",{enumerable:!0,get:function(){return o.autocmd}});var s=n(3018);Object.defineProperty(t,"Command",{enumerable:!0,get:function(){return s.command}})},3583:(e,t,n)=>{"use strict";e.exports=class{constructor(e){const t=n(8010);if("object"!=typeof e||Array.isArray(e)||!(e instanceof t))throw new Error("Logger is required for profiling");this.logger=e,this.start=Date.now()}done(...e){"function"==typeof e[e.length-1]&&(console.warn("Callback function no longer supported as of winston@3.0.0"),e.pop());const t="object"==typeof e[e.length-1]?e.pop():{};return t.level=t.level||"info",t.durationMs=Date.now()-this.start,this.logger.write(t)}}},3622:(e,t,n)=>{"use strict";e.exports=i;var r=n(2828);function i(e){if(!(this instanceof i))return new i(e);r.call(this,e)}n(2017)(i,r),i.prototype._transform=function(e,t,n){n(null,e)}},3623:(e,t,n)=>{"use strict";e.exports=n(8056),e.exports.LegacyTransportStream=n(1136)},3852:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(2858)),i=s(n(4877)),o=s(n(8409));function s(e){return e&&e.__esModule?e:{default:e}}t.default=(0,o.default)((function(e,t,n,o){return(0,r.default)(t)(e,(0,i.default)(n),o)}),4),e.exports=t.default},3986:(e,t,n)=>{"use strict";n.r(t),n.d(t,{DataViewIndexOutOfBoundsError:()=>F,DecodeError:()=>w,Decoder:()=>H,EXT_TIMESTAMP:()=>_,Encoder:()=>I,ExtData:()=>y,ExtensionCodec:()=>L,decode:()=>G,decodeArrayStream:()=>ne,decodeAsync:()=>te,decodeMulti:()=>K,decodeMultiStream:()=>re,decodeStream:()=>ie,decodeTimestampExtension:()=>k,decodeTimestampToTimeSpec:()=>T,encode:()=>A,encodeDateToTimeSpec:()=>C,encodeTimeSpecToTimestamp:()=>S,encodeTimestampExtension:()=>M});var r,i,o,s=4294967295;function a(e,t,n){var r=Math.floor(n/4294967296),i=n;e.setUint32(t,r),e.setUint32(t+4,i)}function u(e,t){return 4294967296*e.getInt32(t)+e.getUint32(t+4)}var c=("undefined"==typeof process||"never"!==(null===(r=null===process||void 0===process?void 0:process.env)||void 0===r?void 0:r.TEXT_ENCODING))&&"undefined"!=typeof TextEncoder&&"undefined"!=typeof TextDecoder;function l(e){for(var t=e.length,n=0,r=0;r=55296&&i<=56319&&r65535&&(l-=65536,o.push(l>>>10&1023|55296),l=56320|1023&l),o.push(l)}else o.push(a);else o.push(a);o.length>=4096&&(s+=String.fromCharCode.apply(String,o),o.length=0)}return o.length>0&&(s+=String.fromCharCode.apply(String,o)),s}var g,v=c?new TextDecoder:null,m=c?"undefined"!=typeof process&&"force"!==(null===(o=null===process||void 0===process?void 0:process.env)||void 0===o?void 0:o.TEXT_DECODER)?200:0:s,y=function(e,t){this.type=e,this.data=t},b=(g=function(e,t){return g=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},g(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}g(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}),w=function(e){function t(n){var r=e.call(this,n)||this,i=Object.create(t.prototype);return Object.setPrototypeOf(r,i),Object.defineProperty(r,"name",{configurable:!0,enumerable:!1,value:t.name}),r}return b(t,e),t}(Error),_=-1,x=4294967295,E=17179869183;function S(e){var t,n=e.sec,r=e.nsec;if(n>=0&&r>=0&&n<=E){if(0===r&&n<=x){var i=new Uint8Array(4);return(t=new DataView(i.buffer)).setUint32(0,n),i}var o=n/4294967296,s=4294967295&n;return i=new Uint8Array(8),(t=new DataView(i.buffer)).setUint32(0,r<<2|3&o),t.setUint32(4,s),i}return i=new Uint8Array(12),(t=new DataView(i.buffer)).setUint32(0,r),a(t,4,n),i}function C(e){var t=e.getTime(),n=Math.floor(t/1e3),r=1e6*(t-1e3*n),i=Math.floor(r/1e9);return{sec:n+i,nsec:r-1e9*i}}function M(e){return e instanceof Date?S(C(e)):null}function T(e){var t=new DataView(e.buffer,e.byteOffset,e.byteLength);switch(e.byteLength){case 4:return{sec:t.getUint32(0),nsec:0};case 8:var n=t.getUint32(0);return{sec:4294967296*(3&n)+t.getUint32(4),nsec:n>>>2};case 12:return{sec:u(t,4),nsec:t.getUint32(0)};default:throw new w("Unrecognized data size for timestamp (expected 4, 8, or 12): ".concat(e.length))}}function k(e){var t=T(e);return new Date(1e3*t.sec+t.nsec/1e6)}var O={type:_,encode:M,decode:k},L=function(){function e(){this.builtInEncoders=[],this.builtInDecoders=[],this.encoders=[],this.decoders=[],this.register(O)}return e.prototype.register=function(e){var t=e.type,n=e.encode,r=e.decode;if(t>=0)this.encoders[t]=n,this.decoders[t]=r;else{var i=1+t;this.builtInEncoders[i]=n,this.builtInDecoders[i]=r}},e.prototype.tryToEncode=function(e,t){for(var n=0;nthis.maxDepth)throw new Error("Too deep objects in depth ".concat(t));null==e?this.encodeNil():"boolean"==typeof e?this.encodeBoolean(e):"number"==typeof e?this.encodeNumber(e):"string"==typeof e?this.encodeString(e):this.encodeObject(e,t)},e.prototype.ensureBufferSizeToWrite=function(e){var t=this.pos+e;this.view.byteLength=0?e<128?this.writeU8(e):e<256?(this.writeU8(204),this.writeU8(e)):e<65536?(this.writeU8(205),this.writeU16(e)):e<4294967296?(this.writeU8(206),this.writeU32(e)):(this.writeU8(207),this.writeU64(e)):e>=-32?this.writeU8(224|e+32):e>=-128?(this.writeU8(208),this.writeI8(e)):e>=-32768?(this.writeU8(209),this.writeI16(e)):e>=-2147483648?(this.writeU8(210),this.writeI32(e)):(this.writeU8(211),this.writeI64(e)):this.forceFloat32?(this.writeU8(202),this.writeF32(e)):(this.writeU8(203),this.writeF64(e))},e.prototype.writeStringHeader=function(e){if(e<32)this.writeU8(160+e);else if(e<256)this.writeU8(217),this.writeU8(e);else if(e<65536)this.writeU8(218),this.writeU16(e);else{if(!(e<4294967296))throw new Error("Too long string: ".concat(e," bytes in UTF-8"));this.writeU8(219),this.writeU32(e)}},e.prototype.encodeString=function(e){if(e.length>d){var t=l(e);this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),f(e,this.bytes,this.pos),this.pos+=t}else t=l(e),this.ensureBufferSizeToWrite(5+t),this.writeStringHeader(t),function(e,t,n){for(var r=e.length,i=n,o=0;o=55296&&s<=56319&&o>18&7|240,t[i++]=s>>12&63|128,t[i++]=s>>6&63|128):(t[i++]=s>>12&15|224,t[i++]=s>>6&63|128)}else t[i++]=s>>6&31|192;t[i++]=63&s|128}else t[i++]=s}}(e,this.bytes,this.pos),this.pos+=t},e.prototype.encodeObject=function(e,t){var n=this.extensionCodec.tryToEncode(e,this.context);if(null!=n)this.encodeExtension(n);else if(Array.isArray(e))this.encodeArray(e,t);else if(ArrayBuffer.isView(e))this.encodeBinary(e);else{if("object"!=typeof e)throw new Error("Unrecognized object: ".concat(Object.prototype.toString.apply(e)));this.encodeMap(e,t)}},e.prototype.encodeBinary=function(e){var t=e.byteLength;if(t<256)this.writeU8(196),this.writeU8(t);else if(t<65536)this.writeU8(197),this.writeU16(t);else{if(!(t<4294967296))throw new Error("Too large binary: ".concat(t));this.writeU8(198),this.writeU32(t)}var n=P(e);this.writeU8a(n)},e.prototype.encodeArray=function(e,t){var n=e.length;if(n<16)this.writeU8(144+n);else if(n<65536)this.writeU8(220),this.writeU16(n);else{if(!(n<4294967296))throw new Error("Too large array: ".concat(n));this.writeU8(221),this.writeU32(n)}for(var r=0,i=e;r0&&e<=this.maxKeyLength},e.prototype.find=function(e,t,n){e:for(var r=0,i=this.caches[n-1];r=this.maxLengthPerKey?n[Math.random()*n.length|0]=r:n.push(r)},e.prototype.decode=function(e,t,n){var r=this.find(e,t,n);if(null!=r)return this.hit++,r;this.miss++;var i=p(e,t,n),o=Uint8Array.prototype.slice.call(e,t,t+n);return this.store(o,i),i},e}(),j=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e},e.prototype.createExtraByteError=function(e){var t=this.view,n=this.pos;return new RangeError("Extra ".concat(t.byteLength-n," of ").concat(t.byteLength," byte(s) found at buffer[").concat(e,"]"))},e.prototype.decode=function(e){this.reinitializeState(),this.setBuffer(e);var t=this.doDecodeSync();if(this.hasRemaining(1))throw this.createExtraByteError(this.pos);return t},e.prototype.decodeMulti=function(e){return j(this,(function(t){switch(t.label){case 0:this.reinitializeState(),this.setBuffer(e),t.label=1;case 1:return this.hasRemaining(1)?[4,this.doDecodeSync()]:[3,3];case 2:return t.sent(),[3,1];case 3:return[2]}}))},e.prototype.decodeAsync=function(e){var t,n,r,i,o,s,a,u;return o=this,s=void 0,u=function(){var o,s,a,u,c,l,h,d;return j(this,(function(f){switch(f.label){case 0:o=!1,f.label=1;case 1:f.trys.push([1,6,7,12]),t=N(e),f.label=2;case 2:return[4,t.next()];case 3:if((n=f.sent()).done)return[3,5];if(a=n.value,o)throw this.createExtraByteError(this.totalPos);this.appendBuffer(a);try{s=this.doDecodeSync(),o=!0}catch(e){if(!(e instanceof F))throw e}this.totalPos+=this.pos,f.label=4;case 4:return[3,2];case 5:return[3,12];case 6:return u=f.sent(),r={error:u},[3,12];case 7:return f.trys.push([7,,10,11]),n&&!n.done&&(i=t.return)?[4,i.call(t)]:[3,9];case 8:f.sent(),f.label=9;case 9:return[3,11];case 10:if(r)throw r.error;return[7];case 11:return[7];case 12:if(o){if(this.hasRemaining(1))throw this.createExtraByteError(this.totalPos);return[2,s]}throw l=(c=this).headByte,h=c.pos,d=c.totalPos,new RangeError("Insufficient data in parsing ".concat($(l)," at ").concat(d," (").concat(h," in the current buffer)"))}}))},new((a=void 0)||(a=Promise))((function(e,t){function n(e){try{i(u.next(e))}catch(e){t(e)}}function r(e){try{i(u.throw(e))}catch(e){t(e)}}function i(t){var i;t.done?e(t.value):(i=t.value,i instanceof a?i:new a((function(e){e(i)}))).then(n,r)}i((u=u.apply(o,s||[])).next())}))},e.prototype.decodeArrayStream=function(e){return this.decodeMultiAsync(e,!0)},e.prototype.decodeStream=function(e){return this.decodeMultiAsync(e,!1)},e.prototype.decodeMultiAsync=function(e,t){return function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,i=n.apply(e,t||[]),o=[];return r={},s("next"),s("throw"),s("return"),r[Symbol.asyncIterator]=function(){return this},r;function s(e){i[e]&&(r[e]=function(t){return new Promise((function(n,r){o.push([e,t,n,r])>1||a(e,t)}))})}function a(e,t){try{(n=i[e](t)).value instanceof B?Promise.resolve(n.value.v).then(u,c):l(o[0][2],n)}catch(e){l(o[0][3],e)}var n}function u(e){a("next",e)}function c(e){a("throw",e)}function l(e,t){e(t),o.shift(),o.length&&a(o[0][0],o[0][1])}}(this,arguments,(function(){var n,r,i,o,s,a,u,c,l;return j(this,(function(h){switch(h.label){case 0:n=t,r=-1,h.label=1;case 1:h.trys.push([1,13,14,19]),i=N(e),h.label=2;case 2:return[4,B(i.next())];case 3:if((o=h.sent()).done)return[3,12];if(s=o.value,t&&0===r)throw this.createExtraByteError(this.totalPos);this.appendBuffer(s),n&&(r=this.readArraySize(),n=!1,this.complete()),h.label=4;case 4:h.trys.push([4,9,,10]),h.label=5;case 5:return[4,B(this.doDecodeSync())];case 6:return[4,h.sent()];case 7:return h.sent(),0==--r?[3,8]:[3,5];case 8:return[3,10];case 9:if(!((a=h.sent())instanceof F))throw a;return[3,10];case 10:this.totalPos+=this.pos,h.label=11;case 11:return[3,2];case 12:return[3,19];case 13:return u=h.sent(),c={error:u},[3,19];case 14:return h.trys.push([14,,17,18]),o&&!o.done&&(l=i.return)?[4,B(l.call(i))]:[3,16];case 15:h.sent(),h.label=16;case 16:return[3,18];case 17:if(c)throw c.error;return[7];case 18:return[7];case 19:return[2]}}))}))},e.prototype.doDecodeSync=function(){e:for(;;){var e=this.readHeadByte(),t=void 0;if(e>=224)t=e-256;else if(e<192)if(e<128)t=e;else if(e<144){if(0!=(r=e-128)){this.pushMapState(r),this.complete();continue e}t={}}else if(e<160){if(0!=(r=e-144)){this.pushArrayState(r),this.complete();continue e}t=[]}else{var n=e-160;t=this.decodeUtf8String(n,0)}else if(192===e)t=null;else if(194===e)t=!1;else if(195===e)t=!0;else if(202===e)t=this.readF32();else if(203===e)t=this.readF64();else if(204===e)t=this.readU8();else if(205===e)t=this.readU16();else if(206===e)t=this.readU32();else if(207===e)t=this.readU64();else if(208===e)t=this.readI8();else if(209===e)t=this.readI16();else if(210===e)t=this.readI32();else if(211===e)t=this.readI64();else if(217===e)n=this.lookU8(),t=this.decodeUtf8String(n,1);else if(218===e)n=this.lookU16(),t=this.decodeUtf8String(n,2);else if(219===e)n=this.lookU32(),t=this.decodeUtf8String(n,4);else if(220===e){if(0!==(r=this.readU16())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(221===e){if(0!==(r=this.readU32())){this.pushArrayState(r),this.complete();continue e}t=[]}else if(222===e){if(0!==(r=this.readU16())){this.pushMapState(r),this.complete();continue e}t={}}else if(223===e){if(0!==(r=this.readU32())){this.pushMapState(r),this.complete();continue e}t={}}else if(196===e){var r=this.lookU8();t=this.decodeBinary(r,1)}else if(197===e)r=this.lookU16(),t=this.decodeBinary(r,2);else if(198===e)r=this.lookU32(),t=this.decodeBinary(r,4);else if(212===e)t=this.decodeExtension(1,0);else if(213===e)t=this.decodeExtension(2,0);else if(214===e)t=this.decodeExtension(4,0);else if(215===e)t=this.decodeExtension(8,0);else if(216===e)t=this.decodeExtension(16,0);else if(199===e)r=this.lookU8(),t=this.decodeExtension(r,1);else if(200===e)r=this.lookU16(),t=this.decodeExtension(r,2);else{if(201!==e)throw new w("Unrecognized type byte: ".concat($(e)));r=this.lookU32(),t=this.decodeExtension(r,4)}this.complete();for(var i=this.stack;i.length>0;){var o=i[i.length-1];if(0===o.type){if(o.array[o.position]=t,o.position++,o.position!==o.size)continue e;i.pop(),t=o.array}else{if(1===o.type){if(void 0,"string"!=(s=typeof t)&&"number"!==s)throw new w("The type of key must be string or number but "+typeof t);if("__proto__"===t)throw new w("The key __proto__ is not allowed");o.key=t,o.type=2;continue e}if(o.map[o.key]=t,o.readCount++,o.readCount!==o.size){o.key=null,o.type=1;continue e}i.pop(),t=o.map}}return t}var s},e.prototype.readHeadByte=function(){return-1===this.headByte&&(this.headByte=this.readU8()),this.headByte},e.prototype.complete=function(){this.headByte=-1},e.prototype.readArraySize=function(){var e=this.readHeadByte();switch(e){case 220:return this.readU16();case 221:return this.readU32();default:if(e<160)return e-144;throw new w("Unrecognized array type byte: ".concat($(e)))}},e.prototype.pushMapState=function(e){if(e>this.maxMapLength)throw new w("Max length exceeded: map length (".concat(e,") > maxMapLengthLength (").concat(this.maxMapLength,")"));this.stack.push({type:1,size:e,key:null,readCount:0,map:{}})},e.prototype.pushArrayState=function(e){if(e>this.maxArrayLength)throw new w("Max length exceeded: array length (".concat(e,") > maxArrayLength (").concat(this.maxArrayLength,")"));this.stack.push({type:0,size:e,array:new Array(e),position:0})},e.prototype.decodeUtf8String=function(e,t){var n;if(e>this.maxStrLength)throw new w("Max length exceeded: UTF-8 byte length (".concat(e,") > maxStrLength (").concat(this.maxStrLength,")"));if(this.bytes.byteLengthm?function(e,t,n){var r=e.subarray(t,t+n);return v.decode(r)}(this.bytes,i,e):p(this.bytes,i,e),this.pos+=t+e,r},e.prototype.stateIsMapKey=function(){return this.stack.length>0&&1===this.stack[this.stack.length-1].type},e.prototype.decodeBinary=function(e,t){if(e>this.maxBinLength)throw new w("Max length exceeded: bin length (".concat(e,") > maxBinLength (").concat(this.maxBinLength,")"));if(!this.hasRemaining(e+t))throw W;var n=this.pos+t,r=this.bytes.subarray(n,n+e);return this.pos+=t+e,r},e.prototype.decodeExtension=function(e,t){if(e>this.maxExtLength)throw new w("Max length exceeded: ext length (".concat(e,") > maxExtLength (").concat(this.maxExtLength,")"));var n=this.view.getInt8(this.pos+t),r=this.decodeBinary(e,t+1);return this.extensionCodec.decode(r,n,this.context)},e.prototype.lookU8=function(){return this.view.getUint8(this.pos)},e.prototype.lookU16=function(){return this.view.getUint16(this.pos)},e.prototype.lookU32=function(){return this.view.getUint32(this.pos)},e.prototype.readU8=function(){var e=this.view.getUint8(this.pos);return this.pos++,e},e.prototype.readI8=function(){var e=this.view.getInt8(this.pos);return this.pos++,e},e.prototype.readU16=function(){var e=this.view.getUint16(this.pos);return this.pos+=2,e},e.prototype.readI16=function(){var e=this.view.getInt16(this.pos);return this.pos+=2,e},e.prototype.readU32=function(){var e=this.view.getUint32(this.pos);return this.pos+=4,e},e.prototype.readI32=function(){var e=this.view.getInt32(this.pos);return this.pos+=4,e},e.prototype.readU64=function(){var e,t,n=(e=this.view,t=this.pos,4294967296*e.getUint32(t)+e.getUint32(t+4));return this.pos+=8,n},e.prototype.readI64=function(){var e=u(this.view,this.pos);return this.pos+=8,e},e.prototype.readF32=function(){var e=this.view.getFloat32(this.pos);return this.pos+=4,e},e.prototype.readF64=function(){var e=this.view.getFloat64(this.pos);return this.pos+=8,e},e}(),z={};function G(e,t){return void 0===t&&(t=z),new H(t.extensionCodec,t.context,t.maxStrLength,t.maxBinLength,t.maxArrayLength,t.maxMapLength,t.maxExtLength).decode(e)}function K(e,t){return void 0===t&&(t=z),new H(t.extensionCodec,t.context,t.maxStrLength,t.maxBinLength,t.maxArrayLength,t.maxMapLength,t.maxExtLength).decodeMulti(e)}var Y=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]1||a(e,t)}))})}function a(e,t){try{(n=i[e](t)).value instanceof J?Promise.resolve(n.value.v).then(u,c):l(o[0][2],n)}catch(e){l(o[0][3],e)}var n}function u(e){a("next",e)}function c(e){a("throw",e)}function l(e,t){e(t),o.shift(),o.length&&a(o[0][0],o[0][1])}};function Q(e){return null!=e[Symbol.asyncIterator]?e:function(e){return Z(this,arguments,(function(){var t,n,r,i;return Y(this,(function(o){switch(o.label){case 0:t=e.getReader(),o.label=1;case 1:o.trys.push([1,,9,10]),o.label=2;case 2:return[4,J(t.read())];case 3:return n=o.sent(),r=n.done,i=n.value,r?[4,J(void 0)]:[3,5];case 4:return[2,o.sent()];case 5:return function(e){if(null==e)throw new Error("Assertion Failure: value must not be null nor undefined")}(i),[4,J(i)];case 6:return[4,o.sent()];case 7:return o.sent(),[3,2];case 8:return[3,10];case 9:return t.releaseLock(),[7];case 10:return[2]}}))}))}(e)}var X=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))},ee=function(e,t){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!((i=(i=s.trys).length>0&&i[i.length-1])||6!==o[0]&&2!==o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]{"use strict";const{Writable:r}=n(2092);e.exports=class extends r{constructor(e){if(super({objectMode:!0}),!e)throw new Error("RejectionStream requires a TransportStream instance.");this.handleRejections=!0,this.transport=e}_write(e,t,n){return e.rejection?this.transport.log(e,n):(n(),!0)}}},4416:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NvimPlugin=t.Neovim=void 0,t.plugin=function(e){return"function"!=typeof e?t=>s(t,e):s(e)};const r=n(3118),i=n(3324);Object.defineProperty(t,"Neovim",{enumerable:!0,get:function(){return i.Neovim}});const o=n(6329);function s(e,t){return class extends e{constructor(...n){const i=n[0];super(i.nvim,i),this.setApi(i.nvim),t&&i.setOptions(t),i.nvim.logger.info(`Decorating class ${e}`),Object.getOwnPropertyNames(e.prototype).forEach((t=>{i.nvim.logger.info(`Method name ${t}`),i.nvim.logger.info(`${e.prototype[t]} ${typeof e.prototype[t]}`),i.nvim.logger.info(`${this} ${typeof this}`);const n=e.prototype[t];if(n&&n[r.NVIM_SPEC]){const e=n[r.NVIM_SPEC];switch(e.type){case"autocmd":const t={pattern:e.opts.pattern,sync:e.sync};void 0!==e.opts.eval&&(t.eval=e.opts.eval),i.registerAutocmd(e.name,[this,n],t);break;case"command":const r={sync:e.sync};void 0!==e.opts.range&&(r.range=e.opts.range),void 0!==e.opts.nargs&&(r.nargs=e.opts.nargs),void 0!==e.opts.complete&&(r.complete=e.opts.complete),i.registerCommand(e.name,[this,n],r);break;case"function":const o={sync:e.sync};void 0!==e.opts.range&&(o.range=e.opts.range),void 0!==e.opts.eval&&(o.eval=e.opts.eval),i.registerFunction(e.name,[this,n],o)}}}))}setApi(e){this.nvim=e}}}Object.defineProperty(t,"NvimPlugin",{enumerable:!0,get:function(){return o.NvimPlugin}})},4418:(e,t,n)=>{"use strict";function r(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t){var n=e.entry;for(e.entry=null;n;){var r=n.callback;t.pendingcb--,r(undefined),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}var i;e.exports=S,S.WritableState=E;var o,s={deprecate:n(7983)},a=n(5926),u=n(181).Buffer,c=("undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){},l=n(358),h=n(6969).getHighWaterMark,d=n(223).F,f=d.ERR_INVALID_ARG_TYPE,p=d.ERR_METHOD_NOT_IMPLEMENTED,g=d.ERR_MULTIPLE_CALLBACK,v=d.ERR_STREAM_CANNOT_PIPE,m=d.ERR_STREAM_DESTROYED,y=d.ERR_STREAM_NULL_VALUES,b=d.ERR_STREAM_WRITE_AFTER_END,w=d.ERR_UNKNOWN_ENCODING,_=l.errorOrDestroy;function x(){}function E(e,t,o){i=i||n(3336),e=e||{},"boolean"!=typeof o&&(o=t instanceof i),this.objectMode=!!e.objectMode,o&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=h(this,e,"writableHighWaterMark",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===e.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,i=n.writecb;if("function"!=typeof i)throw new g;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,i){--t.pendingcb,n?(process.nextTick(i,r),process.nextTick(L,e,t),e._writableState.errorEmitted=!0,_(e,r)):(i(r),e._writableState.errorEmitted=!0,_(e,r),L(e,t))}(e,n,r,t,i);else{var o=k(n)||e.destroyed;o||n.corked||n.bufferProcessing||!n.bufferedRequest||T(e,n),r?process.nextTick(M,e,n,o,i):M(e,n,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new r(this)}function S(e){var t=this instanceof(i=i||n(3336));if(!t&&!o.call(S,this))return new S(e);this._writableState=new E(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),a.call(this)}function C(e,t,n,r,i,o,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new m("write")):n?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function M(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),L(e,t)}function T(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var i=t.bufferedRequestCount,o=new Array(i),s=t.corkedRequestsFree;s.entry=n;for(var a=0,u=!0;n;)o[a]=n,n.isBuf||(u=!1),n=n.next,a+=1;o.allBuffers=u,C(e,t,!0,t.length,o,"",s.finish),t.pendingcb++,t.lastBufferedRequest=null,s.next?(t.corkedRequestsFree=s.next,s.next=null):t.corkedRequestsFree=new r(t),t.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,l=n.encoding,h=n.callback;if(C(e,t,!1,t.objectMode?1:c.length,c,l,h),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function k(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function O(e,t){e._final((function(n){t.pendingcb--,n&&_(e,n),t.prefinished=!0,e.emit("prefinish"),L(e,t)}))}function L(e,t){var n=k(t);if(n&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,process.nextTick(O,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var r=e._readableState;(!r||r.autoDestroy&&r.endEmitted)&&e.destroy()}return n}n(2017)(S,a),E.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(E.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(o=Function.prototype[Symbol.hasInstance],Object.defineProperty(S,Symbol.hasInstance,{value:function(e){return!!o.call(this,e)||this===S&&e&&e._writableState instanceof E}})):o=function(e){return e instanceof this},S.prototype.pipe=function(){_(this,new v)},S.prototype.write=function(e,t,n){var r,i=this._writableState,o=!1,s=!i.objectMode&&(r=e,u.isBuffer(r)||r instanceof c);return s&&!u.isBuffer(e)&&(e=function(e){return u.from(e)}(e)),"function"==typeof t&&(n=t,t=null),s?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof n&&(n=x),i.ending?function(e,t){var n=new b;_(e,n),process.nextTick(t,n)}(this,n):(s||function(e,t,n,r){var i;return null===n?i=new y:"string"==typeof n||t.objectMode||(i=new f("chunk",["string","Buffer"],n)),!i||(_(e,i),process.nextTick(r,i),!1)}(this,i,e,n))&&(i.pendingcb++,o=function(e,t,n,r,i,o){if(!n){var s=function(e,t,n){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=u.from(t,n)),t}(t,r,i);r!==s&&(n=!0,i="buffer",r=s)}var a=t.objectMode?1:r.length;t.length+=a;var c=t.length-1))throw new w(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),S.prototype._write=function(e,t,n){n(new p("_write()"))},S.prototype._writev=null,S.prototype.end=function(e,t,n){var r=this._writableState;return"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||function(e,t,n){t.ending=!0,L(e,t),n&&(t.finished?process.nextTick(n):e.once("finish",n)),t.ended=!0,e.writable=!1}(this,r,n),this},Object.defineProperty(S.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(S.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),S.prototype.destroy=l.destroy,S.prototype._undestroy=l.undestroy,S.prototype._destroy=function(e,t){t(e)}},4434:e=>{"use strict";e.exports=require("events")},4466:(e,t,n)=>{var r={};e.exports=r,r.themes={};var i=n(9023),o=r.styles=n(8692),s=Object.defineProperties,a=new RegExp(/[\r\n]+/g);r.supportsColor=n(7419).supportsColor,void 0===r.enabled&&(r.enabled=!1!==r.supportsColor()),r.enable=function(){r.enabled=!0},r.disable=function(){r.enabled=!1},r.stripColors=r.strip=function(e){return(""+e).replace(/\x1B\[\d+m/g,"")},r.stylize=function(e,t){if(!r.enabled)return e+"";var n=o[t];return!n&&t in r?r[t](e):n.open+e+n.close};var u=/[|\\{}()[\]^$+*?.]/g;function c(e){var t=function e(){return f.apply(e,arguments)};return t._styles=e,t.__proto__=d,t}var l,h=(l={},o.grey=o.gray,Object.keys(o).forEach((function(e){o[e].closeRe=new RegExp(function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(u,"\\$&")}(o[e].close),"g"),l[e]={get:function(){return c(this._styles.concat(e))}}})),l),d=s((function(){}),h);function f(){var e=Array.prototype.slice.call(arguments).map((function(e){return null!=e&&e.constructor===String?e:i.inspect(e)})).join(" ");if(!r.enabled||!e)return e;for(var t=-1!=e.indexOf("\n"),n=this._styles,s=n.length;s--;){var u=o[n[s]];e=u.open+e.replace(u.closeRe,u.open)+u.close,t&&(e=e.replace(a,(function(e){return u.close+e+u.open})))}return e}r.setTheme=function(e){if("string"!=typeof e)for(var t in e)!function(t){r[t]=function(n){if("object"==typeof e[t]){var i=n;for(var o in e[t])i=r[e[t][o]](i);return i}return r[e[t]](n)}}(t);else console.log("colors.setTheme now only accepts an object, not a string. If you are trying to set a theme from a file, it is now your (the caller's) responsibility to require the file. The old syntax looked like colors.setTheme(__dirname + '/../themes/generic-logging.js'); The new syntax looks like colors.setTheme(require(__dirname + '/../themes/generic-logging.js'));")};var p=function(e,t){var n=t.split("");return(n=n.map(e)).join("")};for(var g in r.trap=n(7379),r.zalgo=n(9387),r.maps={},r.maps.america=n(4918)(r),r.maps.zebra=n(9742)(r),r.maps.rainbow=n(1588)(r),r.maps.random=n(811)(r),r.maps)!function(e){r[e]=function(t){return p(r.maps[e],t)}}(g);s(r,function(){var e={};return Object.keys(h).forEach((function(t){e[t]={get:function(){return c([t])}}})),e}())},4470:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=s(n(9875)),i=s(n(4877)),o=s(n(8409));function s(e){return e&&e.__esModule?e:{default:e}}t.default=(0,o.default)(((e,t,n)=>{var o=(0,r.default)(t)?[]:{};e(t,((e,t,n)=>{(0,i.default)(e)(((e,...r)=>{r.length<2&&([r]=r),o[t]=r,n(e)}))}),(e=>n(e,o)))}),3),e.exports=t.default},4575:(e,t,n)=>{"use strict";const r=n(2711),{configs:i}=n(4763);t.cli=r.levels(i.cli),t.npm=r.levels(i.npm),t.syslog=r.levels(i.syslog),t.addColors=r.levels},4580:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Command=t.Autocmd=t.Function=t.Plugin=void 0;var r=n(3579);Object.defineProperty(t,"Plugin",{enumerable:!0,get:function(){return r.Plugin}}),Object.defineProperty(t,"Function",{enumerable:!0,get:function(){return r.Function}}),Object.defineProperty(t,"Autocmd",{enumerable:!0,get:function(){return r.Autocmd}}),Object.defineProperty(t,"Command",{enumerable:!0,get:function(){return r.Command}})},4640:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.attach=function({reader:e,writer:t,proc:n,socket:s,options:a={}}){let u,c;if(s){const e=(0,r.createConnection)(s);u=e,c=e}else e&&t?(u=t,c=e):n&&(u=n.stdin,c=n.stdout);if(u&&c){const e=a.logger||(0,o.getLogger)(),t=new i.NeovimClient({logger:e});return t.attach({writer:u,reader:c}),t}throw new Error("Invalid arguments, could not attach")};const r=n(7030),i=n(5085),o=n(8729)},4763:(e,t,n)=>{"use strict";Object.defineProperty(t,"LEVEL",{value:Symbol.for("level")}),Object.defineProperty(t,"MESSAGE",{value:Symbol.for("message")}),Object.defineProperty(t,"SPLAT",{value:Symbol.for("splat")}),Object.defineProperty(t,"configs",{value:n(5146)})},4867:(e,t,n)=>{"use strict";const r=n(3283),i=n(5532);e.exports=i(((e,t={})=>(t.format&&(e.timestamp="function"==typeof t.format?t.format():r.format(new Date,t.format)),e.timestamp||(e.timestamp=(new Date).toISOString()),t.alias&&(e[t.alias]=e.timestamp),e)))},4873:(e,t,n)=>{"use strict";const r=n(9896),i=n(6928),o=n(7814),s=n(3106),{MESSAGE:a}=n(4763),{Stream:u,PassThrough:c}=n(2092),l=n(3623),h=n(7918)("winston:file"),d=n(857),f=n(7959);e.exports=class extends l{constructor(e={}){function t(t,...n){n.slice(1).forEach((n=>{if(e[n])throw new Error(`Cannot set ${n} and ${t} together`)}))}if(super(e),this.name=e.name||"file",this._stream=new c,this._stream.setMaxListeners(30),this._onError=this._onError.bind(this),e.filename||e.dirname)t("filename or dirname","stream"),this._basename=this.filename=e.filename?i.basename(e.filename):"winston.log",this.dirname=e.dirname||i.dirname(e.filename),this.options=e.options||{flags:"a"};else{if(!e.stream)throw new Error("Cannot log to file without filename or stream.");console.warn("options.stream will be removed in winston@4. Use winston.transports.Stream"),t("stream","filename","maxsize"),this._dest=this._stream.pipe(this._setupStream(e.stream)),this.dirname=i.dirname(this._dest.path)}this.maxsize=e.maxsize||null,this.rotationFormat=e.rotationFormat||!1,this.zippedArchive=e.zippedArchive||!1,this.maxFiles=e.maxFiles||null,this.eol="string"==typeof e.eol?e.eol:d.EOL,this.tailable=e.tailable||!1,this.lazy=e.lazy||!1,this._size=0,this._pendingSize=0,this._created=0,this._drain=!1,this._opening=!1,this._ending=!1,this._fileExist=!1,this.dirname&&this._createLogDirIfNotExist(this.dirname),this.lazy||this.open()}finishIfEnding(){this._ending&&(this._opening?this.once("open",(()=>{this._stream.once("finish",(()=>this.emit("finish"))),setImmediate((()=>this._stream.end()))})):(this._stream.once("finish",(()=>this.emit("finish"))),setImmediate((()=>this._stream.end()))))}log(e,t=()=>{}){if(this.silent)return t(),!0;if(this._drain)return void this._stream.once("drain",(()=>{this._drain=!1,this.log(e,t)}));if(this._rotate)return void this._stream.once("rotate",(()=>{this._rotate=!1,this.log(e,t)}));if(this.lazy){if(!this._fileExist)return this._opening||this.open(),void this.once("open",(()=>{this._fileExist=!0,this.log(e,t)}));if(this._needsNewFile(this._pendingSize))return void this._dest.once("close",(()=>{this._opening||this.open(),this.once("open",(()=>{this.log(e,t)}))}))}const n=`${e[a]}${this.eol}`,r=Buffer.byteLength(n);this._pendingSize+=r,this._opening&&!this.rotatedWhileOpening&&this._needsNewFile(this._size+this._pendingSize)&&(this.rotatedWhileOpening=!0);const i=this._stream.write(n,function(){this._size+=r,this._pendingSize-=r,h("logged %s %s",this._size,n),this.emit("logged",e),this._rotate||this._opening||this._needsNewFile()&&(this.lazy?this._endStream((()=>{this.emit("fileclosed")})):(this._rotate=!0,this._endStream((()=>this._rotateFile()))))}.bind(this));return i?t():(this._drain=!0,this._stream.once("drain",(()=>{this._drain=!1,t()}))),h("written",i,this._drain),this.finishIfEnding(),i}query(e,t){"function"==typeof e&&(t=e,e={}),e=function(e){return(e=e||{}).rows=e.rows||e.limit||10,e.start=e.start||0,e.until=e.until||new Date,"object"!=typeof e.until&&(e.until=new Date(e.until)),e.from=e.from||e.until-864e5,"object"!=typeof e.from&&(e.from=new Date(e.from)),e.order=e.order||"desc",e}(e);const n=i.join(this.dirname,this.filename);let o="",s=[],a=0;const u=r.createReadStream(n,{encoding:"utf8"});function c(t,n){try{const n=JSON.parse(t);(function(t){if(!t)return;if("object"!=typeof t)return;const n=new Date(t.timestamp);return!(e.from&&ne.until||e.level&&e.level!==t.level)||void 0})(n)&&function(t){e.rows&&s.length>=e.rows&&"desc"!==e.order?u.readable&&u.destroy():(e.fields&&(t=e.fields.reduce(((e,n)=>(e[n]=t[n],e)),{})),"desc"===e.order&&s.length>=e.rows&&s.shift(),s.push(t))}(n)}catch(e){n||u.emit("error",e)}}u.on("error",(e=>{if(u.readable&&u.destroy(),t)return"ENOENT"!==e.code?t(e):t(null,s)})),u.on("data",(t=>{const n=(t=(o+t).split(/\n+/)).length-1;let r=0;for(;r=e.start)&&c(t[r]),a++;o=t[n]})),u.on("close",(()=>{o&&c(o,!0),"desc"===e.order&&(s=s.reverse()),t&&t(null,s)}))}stream(e={}){const t=i.join(this.dirname,this.filename),n=new u,r={file:t,start:e.start};return n.destroy=f(r,((e,t)=>{if(e)return n.emit("error",e);try{n.emit("data",t),t=JSON.parse(t),n.emit("log",t)}catch(e){n.emit("error",e)}})),n}open(){this.filename&&(this._opening||(this._opening=!0,this.stat(((e,t)=>{if(e)return this.emit("error",e);h("stat done: %s { size: %s }",this.filename,t),this._size=t,this._dest=this._createStream(this._stream),this._opening=!1,this.once("open",(()=>{this._stream.emit("rotate")||(this._rotate=!1)}))}))))}stat(e){const t=this._getFile(),n=i.join(this.dirname,t);r.stat(n,((r,i)=>r&&"ENOENT"===r.code?(h("ENOENT ok",n),this.filename=t,e(null,0)):r?(h(`err ${r.code} ${n}`),e(r)):!i||this._needsNewFile(i.size)?this._incFile((()=>this.stat(e))):(this.filename=t,void e(null,i.size))))}close(e){this._stream&&this._stream.end((()=>{e&&e(),this.emit("flush"),this.emit("closed")}))}_needsNewFile(e){return e=e||this._size,this.maxsize&&e>=this.maxsize}_onError(e){this.emit("error",e)}_setupStream(e){return e.on("error",this._onError),e}_cleanupStream(e){return e.removeListener("error",this._onError),e.destroy(),e}_rotateFile(){this._incFile((()=>this.open()))}_endStream(e=()=>{}){this._dest?(this._stream.unpipe(this._dest),this._dest.end((()=>{this._cleanupStream(this._dest),e()}))):e()}_createStream(e){const t=i.join(this.dirname,this.filename);h("create stream start",t,this.options);const n=r.createWriteStream(t,this.options).on("error",(e=>h(e))).on("close",(()=>h("close",n.path,n.bytesWritten))).on("open",(()=>{h("file open ok",t),this.emit("open",t),e.pipe(n),this.rotatedWhileOpening&&(this._stream=new c,this._stream.setMaxListeners(30),this._rotateFile(),this.rotatedWhileOpening=!1,this._cleanupStream(n),e.end())}));return h("create stream ok",t),n}_incFile(e){h("_incFile",this.filename);const t=i.extname(this._basename),n=i.basename(this._basename,t),r=[];this.zippedArchive&&r.push(function(e){const r=this._created>0&&!this.tailable?this._created:"";this._compressFile(i.join(this.dirname,`${n}${r}${t}`),i.join(this.dirname,`${n}${r}${t}.gz`),e)}.bind(this)),r.push(function(e){this.tailable?this._checkMaxFilesTailable(t,n,e):(this._created+=1,this._checkMaxFilesIncrementing(t,n,e))}.bind(this)),o(r,e)}_getFile(){const e=i.extname(this._basename),t=i.basename(this._basename,e),n=this.rotationFormat?this.rotationFormat():this._created;return!this.tailable&&this._created?`${t}${n}${e}`:`${t}${e}`}_checkMaxFilesIncrementing(e,t,n){if(!this.maxFiles||this._created1;n--)s.push(function(n,o){let s=`${t}${n-1}${e}${a}`;const u=i.join(this.dirname,s);r.exists(u,(c=>{if(!c)return o(null);s=`${t}${n}${e}${a}`,r.rename(u,i.join(this.dirname,s),o)}))}.bind(this,n));o(s,(()=>{r.rename(i.join(this.dirname,`${t}${e}${a}`),i.join(this.dirname,`${t}1${e}${a}`),n)}))}_compressFile(e,t,n){r.access(e,r.F_OK,(i=>{if(i)return n();var o=s.createGzip(),a=r.createReadStream(e),u=r.createWriteStream(t);u.on("finish",(()=>{r.unlink(e,n)})),a.pipe(o).pipe(u)}))}_createLogDirIfNotExist(e){r.existsSync(e)||r.mkdirSync(e,{recursive:!0})}}},4877:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isAsyncIterable=t.isAsyncGenerator=t.isAsync=void 0;var r,i=(r=n(257))&&r.__esModule?r:{default:r};function o(e){return"AsyncFunction"===e[Symbol.toStringTag]}t.default=function(e){if("function"!=typeof e)throw new Error("expected a function");return o(e)?(0,i.default)(e):e},t.isAsync=o,t.isAsyncGenerator=function(e){return"AsyncGenerator"===e[Symbol.toStringTag]},t.isAsyncIterable=function(e){return"function"==typeof e[Symbol.asyncIterator]}},4918:e=>{e.exports=function(e){return function(t,n,r){if(" "===t)return t;switch(n%3){case 0:return e.red(t);case 1:return e.white(t);case 2:return e.blue(t)}}}},4979:(e,t,n)=>{"use strict";function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:"unshift",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:"shift",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n}},{key:"concat",value:function(e){if(0===this.length)return u.alloc(0);for(var t,n,r,i=u.allocUnsafe(e>>>0),o=this.head,s=0;o;)t=o.data,n=i,r=s,u.prototype.copy.call(t,n,r),s+=o.data.length,o=o.next;return i}},{key:"consume",value:function(e,t){var n;return ei.length?i.length:e;if(o===i.length?r+=i:r+=i.slice(0,e),0==(e-=o)){o===i.length?(++n,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=i.slice(o));break}++n}return this.length-=n,r}},{key:"_getBuffer",value:function(e){var t=u.allocUnsafe(e),n=this.head,r=1;for(n.data.copy(t),e-=n.data.length;n=n.next;){var i=n.data,o=e>i.length?i.length:e;if(i.copy(t,t.length-e,0,o),0==(e-=o)){o===i.length?(++r,n.next?this.head=n.next:this.head=this.tail=null):(this.head=n,n.data=i.slice(o));break}++r}return this.length-=r,t}},{key:l,value:function(e,t){return c(this,i(i({},t),{},{depth:0,customInspect:!1}))}}])&&s(t.prototype,n),Object.defineProperty(t,"prototype",{writable:!1}),e}()},5031:(e,t)=>{function n(e){for(var t in e)this[t]=e[t]}t.get=function(e){var n=Error.stackTraceLimit;Error.stackTraceLimit=1/0;var r={},i=Error.prepareStackTrace;Error.prepareStackTrace=function(e,t){return t},Error.captureStackTrace(r,e||t.get);var o=r.stack;return Error.prepareStackTrace=i,Error.stackTraceLimit=n,o},t.parse=function(e){if(!e.stack)return[];var t=this;return e.stack.split("\n").slice(1).map((function(e){if(e.match(/^\s*[-]{4,}$/))return t._createParsedCallSite({fileName:e,lineNumber:null,functionName:null,typeName:null,methodName:null,columnNumber:null,native:null});var n=e.match(/at (?:(.+)\s+\()?(?:(.+?):(\d+)(?::(\d+))?|([^)]+))\)?/);if(n){var r=null,i=null,o=null,s=null,a=null,u="native"===n[5];if(n[1]){var c=(o=n[1]).lastIndexOf(".");if("."==o[c-1]&&c--,c>0){r=o.substr(0,c),i=o.substr(c+1);var l=r.indexOf(".Module");l>0&&(o=o.substr(l+1),r=r.substr(0,l))}s=null}i&&(s=r,a=i),""===i&&(a=null,o=null);var h={fileName:n[2]||null,lineNumber:parseInt(n[3],10)||null,functionName:o,typeName:s,methodName:a,columnNumber:parseInt(n[4],10)||null,native:u};return t._createParsedCallSite(h)}})).filter((function(e){return!!e}))},["this","typeName","functionName","methodName","fileName","lineNumber","columnNumber","function","evalOrigin"].forEach((function(e){n.prototype[e]=null,n.prototype["get"+e[0].toUpperCase()+e.substr(1)]=function(){return this[e]}})),["topLevel","eval","native","constructor"].forEach((function(e){n.prototype[e]=!1,n.prototype["is"+e[0].toUpperCase()+e.substr(1)]=function(){return this[e]}})),t._createParsedCallSite=function(e){return new n(e)}},5071:(e,t,n)=>{"use strict";const r=n(8611),i=n(5692),{Stream:o}=n(2092),s=n(3623),{configure:a}=n(2068);e.exports=class extends s{constructor(e={}){super(e),this.options=e,this.name=e.name||"http",this.ssl=!!e.ssl,this.host=e.host||"localhost",this.port=e.port,this.auth=e.auth,this.path=e.path||"",this.maximumDepth=e.maximumDepth,this.agent=e.agent,this.headers=e.headers||{},this.headers["content-type"]="application/json",this.batch=e.batch||!1,this.batchInterval=e.batchInterval||5e3,this.batchCount=e.batchCount||10,this.batchOptions=[],this.batchTimeoutID=-1,this.batchCallback={},this.port||(this.port=this.ssl?443:80)}log(e,t){this._request(e,null,null,((t,n)=>{n&&200!==n.statusCode&&(t=new Error(`Invalid HTTP Status Code: ${n.statusCode}`)),t?this.emit("warn",t):this.emit("logged",e)})),t&&setImmediate(t)}query(e,t){"function"==typeof e&&(t=e,e={});const n=(e={method:"query",params:this.normalizeQuery(e)}).params.auth||null;delete e.params.auth;const r=e.params.path||null;delete e.params.path,this._request(e,n,r,((e,n,r)=>{if(n&&200!==n.statusCode&&(e=new Error(`Invalid HTTP Status Code: ${n.statusCode}`)),e)return t(e);if("string"==typeof r)try{r=JSON.parse(r)}catch(e){return t(e)}t(null,r)}))}stream(e={}){const t=new o,n=(e={method:"stream",params:e}).params.path||null;delete e.params.path;const r=e.params.auth||null;delete e.params.auth;let i="";const s=this._request(e,r,n);return t.destroy=()=>s.destroy(),s.on("data",(e=>{const n=(e=(i+e).split(/\n+/)).length-1;let r=0;for(;rt.emit("error",e))),t}_request(e,t,n,r){e=e||{},t=t||this.auth,n=n||this.path||"",this.batch?this._doBatch(e,r,t,n):this._doRequest(e,r,t,n)}_doBatch(e,t,n,r){if(this.batchOptions.push(e),1===this.batchOptions.length){const e=this;this.batchCallback=t,this.batchTimeoutID=setTimeout((function(){e.batchTimeoutID=-1,e._doBatchRequest(e.batchCallback,n,r)}),this.batchInterval)}this.batchOptions.length===this.batchCount&&this._doBatchRequest(this.batchCallback,n,r)}_doBatchRequest(e,t,n){this.batchTimeoutID>0&&(clearTimeout(this.batchTimeoutID),this.batchTimeoutID=-1);const r=this.batchOptions.slice();this.batchOptions=[],this._doRequest(r,e,t,n)}_doRequest(e,t,n,o){const s=Object.assign({},this.headers);n&&n.bearer&&(s.Authorization=`Bearer ${n.bearer}`);const u=(this.ssl?i:r).request({...this.options,method:"POST",host:this.host,port:this.port,path:`/${o.replace(/^\//,"")}`,headers:s,auth:n&&n.username&&n.password?`${n.username}:${n.password}`:"",agent:this.agent});u.on("error",t),u.on("response",(e=>e.on("end",(()=>t(null,e))).resume()));const c=a({...this.maximumDepth&&{maximumDepth:this.maximumDepth}});u.end(Buffer.from(c(e,this.options.replacer),"utf8"))}}},5085:function(e,t,n){"use strict";var r=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.NeovimClient=void 0;const i=n(2228),o=n(3324),s=/nvim_buf_(.*)_event/;class a extends o.Neovim{constructor(e={}){super({logger:e.logger,transport:e.transport||new i.Transport}),this.attachedBuffers=new Map,this.requestQueue=[],this.transportAttached=!1,this.handleRequest=this.handleRequest.bind(this),this.handleNotification=this.handleNotification.bind(this)}attach({reader:e,writer:t}){this.transport.attach(t,e,this),this.transportAttached=!0,this.setupTransport()}get isApiReady(){return this.transportAttached&&void 0!==this._channelId}get channelId(){return(()=>r(this,void 0,void 0,(function*(){if(yield this._isReady,!this._channelId)throw new Error("channelId requested before _isReady");return this._channelId})))()}isAttached(e){const t=`${e.data}`;return this.attachedBuffers.has(t)}handleRequest(e,t,n,...r){this.isApiReady||"specs"===e?(this.logger.info("handleRequest: %s",e),this.emit("request",e,t,n)):(this.logger.info("handleRequest (queued): %s",e),this.requestQueue.push({type:"request",args:[e,t,n,...r]}))}emitNotification(e,t){if(e.endsWith("_event")){if(!e.startsWith("nvim_buf_"))return void this.logger.error("Unhandled event: %s",e);const n=e.replace(s,"$1"),[r]=t,i=`${r.data}`,o=this.attachedBuffers.get(i);if(void 0===o)return;(o.get(n)||[]).forEach((e=>e(...t))),"detach"===n&&this.attachedBuffers.delete(i)}else this.emit("notification",e,t)}handleNotification(e,t,...n){this.logger.info("handleNotification: %s",e),this.isApiReady?this.emitNotification(e,t):this.requestQueue.push({type:"notification",args:[e,t,...n]})}setupTransport(){if(!this.transportAttached)throw new Error("Not attached to input/output");this.transport.on("request",this.handleRequest),this.transport.on("notification",this.handleNotification),this.transport.on("detach",(()=>{this.emit("disconnect"),this.transport.removeAllListeners("request"),this.transport.removeAllListeners("notification"),this.transport.removeAllListeners("detach")})),this._isReady=this.generateApi()}requestApi(){return new Promise(((e,t)=>{this.transport.request("nvim_get_api_info",[],((n,r)=>{n?t(n):e(r)}))}))}generateApi(){return r(this,void 0,void 0,(function*(){let e;try{e=yield this.requestApi()}catch(e){this.logger.error("Could not get vim api results"),this.logger.error(e)}if(e)try{const[t]=e;return this._channelId=t,this.requestQueue.forEach((e=>{"notification"===e.type?this.emitNotification(e.args[0],e.args[1]):this.emit(e.type,...e.args)})),this.requestQueue=[],!0}catch(e){const t=e;return this.logger.error("Could not dynamically generate neovim API: %s: %O",t.name,{error:t}),this.logger.error(t.stack),!1}return!1}))}attachBuffer(e,t,n){var r;const i=`${e.data}`;this.attachedBuffers.has(i)||this.attachedBuffers.set(i,new Map);const o=this.attachedBuffers.get(i);if(!o)throw Error(`buffer not found: ${i}`);o.get(t)||o.set(t,[]);const s=null!==(r=o.get(t))&&void 0!==r?r:[];return s.includes(n)||(s.push(n),o.set(t,s),this.attachedBuffers.set(i,o)),n}detachBuffer(e,t,n){const r=`${e.data}`,i=this.attachedBuffers.get(r);if(!i)return!1;const o=(i.get(t)||[]).filter((e=>e!==n));return o.length?i.set(t,o):i.delete(t),!i.size&&(this.attachedBuffers.delete(r),!0)}}t.NeovimClient=a},5103:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.d(__webpack_exports__,{v:()=>eval_for_client});var vscode__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(1398),vscode__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(vscode__WEBPACK_IMPORTED_MODULE_0__),_logger__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(1377),__awaiter=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};const vscode=vscode__WEBPACK_IMPORTED_MODULE_0___default(),logger=(0,_logger__WEBPACK_IMPORTED_MODULE_1__.h)("eval");function eval_for_client(code,args){return __awaiter(this,void 0,void 0,(function*(){const func=eval("async () => {"+code+"}"),result=yield func();let data;try{data=JSON.stringify(result)}catch(e){throw new Error(`Return value of eval not JSON serializable: ${e}`)}return data?JSON.parse(data):data}))}},5146:(e,t,n)=>{"use strict";Object.defineProperty(t,"cli",{value:n(2204)}),Object.defineProperty(t,"npm",{value:n(7767)}),Object.defineProperty(t,"syslog",{value:n(589)})},5238:(e,t,n)=>{"use strict";const{Writable:r}=n(2092);e.exports=class extends r{constructor(e){if(super({objectMode:!0}),!e)throw new Error("ExceptionStream requires a TransportStream instance.");this.handleExceptions=!0,this.transport=e}_write(e,t,n){return e.exception?this.transport.log(e,n):(n(),!0)}}},5314:e=>{"use strict";function t(e,t){r(e,t),n(e)}function n(e){e._writableState&&!e._writableState.emitClose||e._readableState&&!e._readableState.emitClose||e.emit("close")}function r(e,t){e.emit("error",t)}e.exports={destroy:function(e,i){var o=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(i?i(e):e&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(r,this,e)):process.nextTick(r,this,e)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!i&&e?o._writableState?o._writableState.errorEmitted?process.nextTick(n,o):(o._writableState.errorEmitted=!0,process.nextTick(t,o,e)):process.nextTick(t,o,e):i?(process.nextTick(n,o),i(e)):process.nextTick(n,o)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finalCalled=!1,this._writableState.prefinished=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)},errorOrDestroy:function(e,t){var n=e._readableState,r=e._writableState;n&&n.autoDestroy||r&&r.autoDestroy?e.destroy(t):e.emit("error",t)}}},5317:e=>{"use strict";e.exports=require("child_process")},5337:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return(t,n,r)=>e(t,r)},e.exports=t.default},5362:(e,t,n)=>{"use strict";function r(e,t,n,r,i,o,s){try{var a=e[o](s),u=a.value}catch(e){return void n(e)}a.done?t(u):Promise.resolve(u).then(r,i)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=n(3291).F.ERR_INVALID_ARG_TYPE;e.exports=function(e,t,n){var a;if(t&&"function"==typeof t.next)a=t;else if(t&&t[Symbol.asyncIterator])a=t[Symbol.asyncIterator]();else{if(!t||!t[Symbol.iterator])throw new s("iterable",["Iterable"],t);a=t[Symbol.iterator]()}var u=new e(function(e){for(var t=1;t{e.exports=n(2203)},5494:(e,t,n)=>{"use strict";function r(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t){var n=e.entry;for(e.entry=null;n;){var r=n.callback;t.pendingcb--,r(undefined),n=n.next}t.corkedRequestsFree.next=e}(t,e)}}var i;e.exports=S,S.WritableState=E;var o,s={deprecate:n(7983)},a=n(5426),u=n(181).Buffer,c=("undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){},l=n(5314),h=n(2365).getHighWaterMark,d=n(3291).F,f=d.ERR_INVALID_ARG_TYPE,p=d.ERR_METHOD_NOT_IMPLEMENTED,g=d.ERR_MULTIPLE_CALLBACK,v=d.ERR_STREAM_CANNOT_PIPE,m=d.ERR_STREAM_DESTROYED,y=d.ERR_STREAM_NULL_VALUES,b=d.ERR_STREAM_WRITE_AFTER_END,w=d.ERR_UNKNOWN_ENCODING,_=l.errorOrDestroy;function x(){}function E(e,t,o){i=i||n(2812),e=e||{},"boolean"!=typeof o&&(o=t instanceof i),this.objectMode=!!e.objectMode,o&&(this.objectMode=this.objectMode||!!e.writableObjectMode),this.highWaterMark=h(this,e,"writableHighWaterMark",o),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=!1===e.decodeStrings;this.decodeStrings=!s,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var n=e._writableState,r=n.sync,i=n.writecb;if("function"!=typeof i)throw new g;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(n),t)!function(e,t,n,r,i){--t.pendingcb,n?(process.nextTick(i,r),process.nextTick(L,e,t),e._writableState.errorEmitted=!0,_(e,r)):(i(r),e._writableState.errorEmitted=!0,_(e,r),L(e,t))}(e,n,r,t,i);else{var o=k(n)||e.destroyed;o||n.corked||n.bufferProcessing||!n.bufferedRequest||T(e,n),r?process.nextTick(M,e,n,o,i):M(e,n,o,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.bufferedRequestCount=0,this.corkedRequestsFree=new r(this)}function S(e){var t=this instanceof(i=i||n(2812));if(!t&&!o.call(S,this))return new S(e);this._writableState=new E(e,this,t),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),a.call(this)}function C(e,t,n,r,i,o,s){t.writelen=r,t.writecb=s,t.writing=!0,t.sync=!0,t.destroyed?t.onwrite(new m("write")):n?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function M(e,t,n,r){n||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,r(),L(e,t)}function T(e,t){t.bufferProcessing=!0;var n=t.bufferedRequest;if(e._writev&&n&&n.next){var i=t.bufferedRequestCount,o=new Array(i),s=t.corkedRequestsFree;s.entry=n;for(var a=0,u=!0;n;)o[a]=n,n.isBuf||(u=!1),n=n.next,a+=1;o.allBuffers=u,C(e,t,!0,t.length,o,"",s.finish),t.pendingcb++,t.lastBufferedRequest=null,s.next?(t.corkedRequestsFree=s.next,s.next=null):t.corkedRequestsFree=new r(t),t.bufferedRequestCount=0}else{for(;n;){var c=n.chunk,l=n.encoding,h=n.callback;if(C(e,t,!1,t.objectMode?1:c.length,c,l,h),n=n.next,t.bufferedRequestCount--,t.writing)break}null===n&&(t.lastBufferedRequest=null)}t.bufferedRequest=n,t.bufferProcessing=!1}function k(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function O(e,t){e._final((function(n){t.pendingcb--,n&&_(e,n),t.prefinished=!0,e.emit("prefinish"),L(e,t)}))}function L(e,t){var n=k(t);if(n&&(function(e,t){t.prefinished||t.finalCalled||("function"!=typeof e._final||t.destroyed?(t.prefinished=!0,e.emit("prefinish")):(t.pendingcb++,t.finalCalled=!0,process.nextTick(O,e,t)))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"),t.autoDestroy))){var r=e._readableState;(!r||r.autoDestroy&&r.endEmitted)&&e.destroy()}return n}n(2017)(S,a),E.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(E.prototype,"buffer",{get:s.deprecate((function(){return this.getBuffer()}),"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(o=Function.prototype[Symbol.hasInstance],Object.defineProperty(S,Symbol.hasInstance,{value:function(e){return!!o.call(this,e)||this===S&&e&&e._writableState instanceof E}})):o=function(e){return e instanceof this},S.prototype.pipe=function(){_(this,new v)},S.prototype.write=function(e,t,n){var r,i=this._writableState,o=!1,s=!i.objectMode&&(r=e,u.isBuffer(r)||r instanceof c);return s&&!u.isBuffer(e)&&(e=function(e){return u.from(e)}(e)),"function"==typeof t&&(n=t,t=null),s?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof n&&(n=x),i.ending?function(e,t){var n=new b;_(e,n),process.nextTick(t,n)}(this,n):(s||function(e,t,n,r){var i;return null===n?i=new y:"string"==typeof n||t.objectMode||(i=new f("chunk",["string","Buffer"],n)),!i||(_(e,i),process.nextTick(r,i),!1)}(this,i,e,n))&&(i.pendingcb++,o=function(e,t,n,r,i,o){if(!n){var s=function(e,t,n){return e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=u.from(t,n)),t}(t,r,i);r!==s&&(n=!0,i="buffer",r=s)}var a=t.objectMode?1:r.length;t.length+=a;var c=t.length-1))throw new w(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(S.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(S.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),S.prototype._write=function(e,t,n){n(new p("_write()"))},S.prototype._writev=null,S.prototype.end=function(e,t,n){var r=this._writableState;return"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||function(e,t,n){t.ending=!0,L(e,t),n&&(t.finished?process.nextTick(n):e.once("finish",n)),t.ended=!0,e.writable=!1}(this,r,n),this},Object.defineProperty(S.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(S.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),S.prototype.destroy=l.destroy,S.prototype._undestroy=l.undestroy,S.prototype._destroy=function(e,t){t(e)}},5532:e=>{"use strict";class t extends Error{constructor(e){super(`Format functions must be synchronous taking a two arguments: (info, opts)\nFound: ${e.toString().split("\n")[0]}\n`),Error.captureStackTrace(this,t)}}e.exports=e=>{if(e.length>2)throw new t(e);function n(e={}){this.options=e}function r(e){return new n(e)}return n.prototype.transform=e,r.Format=n,r}},5692:e=>{"use strict";e.exports=require("https")},5767:(e,t,n)=>{"use strict";const r=n(1232),{MESSAGE:i}=n(4763),o=n(857),s=n(3623);e.exports=class extends s{constructor(e={}){if(super(e),!e.stream||!r(e.stream))throw new Error("options.stream is required.");this._stream=e.stream,this._stream.setMaxListeners(1/0),this.isObjectMode=e.stream._writableState.objectMode,this.eol="string"==typeof e.eol?e.eol:o.EOL}log(e,t){if(setImmediate((()=>this.emit("logged",e))),this.isObjectMode)return this._stream.write(e),void(t&&t());this._stream.write(`${e[i]}${this.eol}`),t&&t()}}},5874:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=o(n(3852)),i=o(n(8409));function o(e){return e&&e.__esModule?e:{default:e}}t.default=(0,i.default)((function(e,t,n){return(0,r.default)(e,1,t,n)}),3),e.exports=t.default},5926:(e,t,n)=>{e.exports=n(2203)},6104:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Tabpage=void 0;const r=n(9691),i=n(7905),o=n(163),s=n(6866);class a extends r.BaseApi{constructor(){super(...arguments),this.prefix=i.Metadata[i.ExtType.Tabpage].prefix}get windows(){return this.request(`${this.prefix}list_wins`,[this])}get window(){return o.createChainableApi.call(this,"Window",s.Window,(()=>this.request(`${this.prefix}get_win`,[this])))}get valid(){return this.request(`${this.prefix}is_valid`,[this])}get number(){return this.request(`${this.prefix}get_number`,[this])}getOption(){this.logger.error("Tabpage does not have `getOption`")}setOption(){this.logger.error("Tabpage does not have `setOption`")}}t.Tabpage=a},6182:(e,t,n)=>{"use strict";function r(e,t,n,r,i,o,s){try{var a=e[o](s),u=a.value}catch(e){return void n(e)}a.done?t(u):Promise.resolve(u).then(r,i)}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var s=n(223).F.ERR_INVALID_ARG_TYPE;e.exports=function(e,t,n){var a;if(t&&"function"==typeof t.next)a=t;else if(t&&t[Symbol.asyncIterator])a=t[Symbol.asyncIterator]();else{if(!t||!t[Symbol.iterator])throw new s("iterable",["Iterable"],t);a=t[Symbol.iterator]()}var u=new e(function(e){for(var t=1;t{"use strict";e.exports={version:"3.14.1"}},6329:function(e,t){"use strict";var n=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};function r(e){if("function"==typeof e)return e;if(Array.isArray(e)&&2===e.length)return function(...t){return e[1].apply(e[0],t)};throw new Error}Object.defineProperty(t,"__esModule",{value:!0}),t.NvimPlugin=void 0,t.callable=r,t.NvimPlugin=class{constructor(e,t,n){this.filename=e,this.nvim=n,this.dev=!1,this.alwaysInit=!1,this.autocmds={},this.commands={},this.functions={};try{this.instance=new t(this)}catch(e){if(!(e instanceof TypeError))throw e;this.instance=t(this)}}setOptions(e){this.dev=void 0===e.dev?this.dev:e.dev,this.alwaysInit=!!e.alwaysInit}get shouldCacheModule(){return!this.dev}registerAutocmd(e,t,n){if(!(null==n?void 0:n.pattern))return void this.nvim.logger.error(`registerAutocmd expected pattern option for ${e}`);const i={type:"autocmd",name:e,sync:!!(null==n?void 0:n.sync),opts:{}};["pattern","eval"].forEach((e=>{n&&void 0!==n[e]&&(i.opts[e]=n[e])}));try{this.autocmds[`${e} ${n.pattern}`]={fn:r(t),spec:i}}catch(t){this.nvim.logger.error(`registerAutocmd expected callable argument for ${e}`)}}registerCommand(e,t,n){const i={type:"command",name:e,sync:!!(null==n?void 0:n.sync),opts:{}};["range","nargs","complete"].forEach((e=>{n&&void 0!==n[e]&&(i.opts[e]=n[e])}));try{this.commands[e]={fn:r(t),spec:i}}catch(t){this.nvim.logger.error(`registerCommand expected callable argument for ${e}`)}}registerFunction(e,t,n){const i={type:"function",name:e,sync:!!(null==n?void 0:n.sync),opts:{}};["range","eval"].forEach((e=>{n&&void 0!==n[e]&&(i.opts[e]=n[e])}));try{this.functions[e]={fn:r(t),spec:i}}catch(t){this.nvim.logger.error(`registerFunction expected callable argument for ${e}`)}}get specs(){const e=Object.keys(this.autocmds).map((e=>this.autocmds[e].spec)),t=Object.keys(this.commands).map((e=>this.commands[e].spec)),n=Object.keys(this.functions).map((e=>this.functions[e].spec));return e.concat(t).concat(n)}handleRequest(e,t,r){return n(this,void 0,void 0,(function*(){let n;switch(t){case"autocmd":n=this.autocmds;break;case"command":n=this.commands;break;case"function":n=this.functions;break;default:const r=`No handler for unknown type ${t}: "${e}" in ${this.filename}`;throw this.nvim.logger.error(r),new Error(r)}if(!n.hasOwnProperty(e)){const n=`Missing handler for ${t}: "${e}" in ${this.filename}`;throw this.nvim.logger.error(n),new Error(n)}{const i=n[e];try{return i.spec.sync?i.fn(...r):yield i.fn(...r)}catch(n){const r=n,i=`Error in plugin for ${t}:${e}: ${r.message}`;throw this.nvim.logger.error(`${i} (file: ${this.filename}, stack: ${r.stack})`),new Error(i,{cause:r})}}}))}}},6368:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fallback=s,t.wrap=a;var n,r=t.hasQueueMicrotask="function"==typeof queueMicrotask&&queueMicrotask,i=t.hasSetImmediate="function"==typeof setImmediate&&setImmediate,o=t.hasNextTick="object"==typeof process&&"function"==typeof process.nextTick;function s(e){setTimeout(e,0)}function a(e){return(t,...n)=>e((()=>t(...n)))}n=r?queueMicrotask:i?setImmediate:o?process.nextTick:s,t.default=a(n)},6372:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.loadPlugin=function(e,t,r={}){try{return function(e,t,r={}){try{if(t.logger.debug(`createPlugin.${e}.clearCache: ${r&&!r.cache}`),r&&!r.cache)try{delete a._cache[n(7699).resolve(e)]}catch(e){}const i=n(7699)(e),o=i&&i.default||i;if("function"==typeof o)return new u.NvimPlugin(e,o,t)}catch(n){const r=n,i=s.basename(e);t.logger.error(`[${i}] ${r.stack}`),t.logger.error(`[${i}] Error loading child ChildPlugin ${e}`)}return null}(e,t,r)}catch(e){return null}};const s=o(n(6760)),a=n(3339),u=n(6329)},6439:(e,t,n)=>{"use strict";const r=n(7627),i=n(5532),{MESSAGE:o}=n(4763);e.exports=i(((e,t)=>(!1!==t.level&&(e.level=r.strip(e.level)),!1!==t.message&&(e.message=r.strip(String(e.message))),!1!==t.raw&&e[o]&&(e[o]=r.strip(String(e[o]))),e)))},6585:e=>{var t=1e3,n=60*t,r=60*n,i=24*r,o=7*i;function s(e,t,n,r){var i=t>=1.5*n;return Math.round(e/n)+" "+r+(i?"s":"")}e.exports=function(e,a){a=a||{};var u,c,l=typeof e;if("string"===l&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var s=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(s){var a=parseFloat(s[1]);switch((s[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*a;case"weeks":case"week":case"w":return a*o;case"days":case"day":case"d":return a*i;case"hours":case"hour":case"hrs":case"hr":case"h":return a*r;case"minutes":case"minute":case"mins":case"min":case"m":return a*n;case"seconds":case"second":case"secs":case"sec":case"s":return a*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return a;default:return}}}}(e);if("number"===l&&isFinite(e))return a.long?(u=e,(c=Math.abs(u))>=i?s(u,c,i,"day"):c>=r?s(u,c,r,"hour"):c>=n?s(u,c,n,"minute"):c>=t?s(u,c,t,"second"):u+" ms"):function(e){var o=Math.abs(e);return o>=i?Math.round(e/i)+"d":o>=r?Math.round(e/r)+"h":o>=n?Math.round(e/n)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},6698:e=>{"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},6760:e=>{"use strict";e.exports=require("node:path")},6816:(e,t,n)=>{"use strict";const r=n(5532),{MESSAGE:i}=n(4763),o=n(2068);e.exports=r((e=>{const t={};return e.message&&(t["@message"]=e.message,delete e.message),e.timestamp&&(t["@timestamp"]=e.timestamp,delete e.timestamp),t["@fields"]=e,e[i]=o(t),e}))},6856:(e,t,n)=>{"use strict";var r=n(3291).F.ERR_STREAM_PREMATURE_CLOSE;function i(){}e.exports=function e(t,n,o){if("function"==typeof n)return e(t,null,n);n||(n={}),o=function(e){var t=!1;return function(){if(!t){t=!0;for(var n=arguments.length,r=new Array(n),i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Window=void 0;const r=n(9691),i=n(7905),o=n(163),s=n(6104),a=n(1716);class u extends r.BaseApi{constructor(){super(...arguments),this.prefix=i.Metadata[i.ExtType.Window].prefix}get id(){return this.data}get buffer(){return o.createChainableApi.call(this,"Buffer",a.Buffer,(()=>this.request(`${this.prefix}get_buf`,[this])))}get tabpage(){return o.createChainableApi.call(this,"Tabpage",s.Tabpage,(()=>this.request(`${this.prefix}get_tabpage`,[this])))}get cursor(){return this.request(`${this.prefix}get_cursor`,[this])}set cursor(e){this.request(`${this.prefix}set_cursor`,[this,e])}get height(){return this.request(`${this.prefix}get_height`,[this])}set height(e){this.request(`${this.prefix}set_height`,[this,e])}get width(){return this.request(`${this.prefix}get_width`,[this])}set width(e){this.request(`${this.prefix}set_width`,[this,e])}get position(){return this.request(`${this.prefix}get_position`,[this])}get row(){return this.request(`${this.prefix}get_position`,[this]).then((e=>e[0]))}get col(){return this.request(`${this.prefix}get_position`,[this]).then((e=>e[1]))}get valid(){return this.request(`${this.prefix}is_valid`,[this])}get number(){return this.request(`${this.prefix}get_number`,[this])}close(e=!1){return this.request(`${this.prefix}close`,[this,e])}config(e={}){return this.request(`${this.prefix}set_config`,[this,e])}}t.Window=u},6884:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={},e.exports=t.default},6928:e=>{"use strict";e.exports=require("path")},6969:(e,t,n)=>{"use strict";var r=n(223).F.ERR_INVALID_OPT_VALUE;e.exports={getHighWaterMark:function(e,t,n,i){var o=function(e,t,n){return null!=e.highWaterMark?e.highWaterMark:t?e[n]:null}(t,i,n);if(null!=o){if(!isFinite(o)||Math.floor(o)!==o||o<0)throw new r(i?n:"highWaterMark",o);return Math.floor(o)}return e.objectMode?16:16384}}},7030:e=>{"use strict";e.exports=require("node:net")},7083:(e,t,n)=>{"use strict";const r=n(2751);e.exports=class{constructor(e={}){this.loggers=new Map,this.options=e}add(e,t){if(!this.loggers.has(e)){const n=(t=Object.assign({},t||this.options)).transports||this.options.transports;t.transports=n?Array.isArray(n)?n.slice():[n]:[];const i=r(t);i.on("close",(()=>this._delete(e))),this.loggers.set(e,i)}return this.loggers.get(e)}get(e,t){return this.add(e,t)}has(e){return!!this.loggers.has(e)}close(e){if(e)return this._removeLogger(e);this.loggers.forEach(((e,t)=>this._removeLogger(t)))}_removeLogger(e){this.loggers.has(e)&&(this.loggers.get(e).close(),this._delete(e))}_delete(e){this.loggers.delete(e)}}},7133:(e,t,n)=>{"use strict";const r=n(9023).inspect,i=n(5532),{LEVEL:o,MESSAGE:s,SPLAT:a}=n(4763);e.exports=i(((e,t={})=>{const n=Object.assign({},e);return delete n[o],delete n[s],delete n[a],e[s]=r(n,!1,t.depth||null,t.colorize),e}))},7135:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.nvimFunction=function(e,t={}){return function(n,i){const o=t&&!!t.sync,s="string"==typeof i,a=s?n[i]:n,u={};return t&&t.range&&(u.range=t.range),t&&t.eval&&(u.eval=t.eval),Object.defineProperty(a,r.NVIM_METHOD_NAME,{value:`function:${e}`}),Object.defineProperty(a,r.NVIM_SYNC,{value:!!o}),Object.defineProperty(a,r.NVIM_SPEC,{value:{type:"function",name:e,sync:!!o,opts:u}}),s&&(n[i]=a),n}};const r=n(3118)},7177:(e,t,n)=>{"use strict";var r;function i(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var o=n(6856),s=Symbol("lastResolve"),a=Symbol("lastReject"),u=Symbol("error"),c=Symbol("ended"),l=Symbol("lastPromise"),h=Symbol("handlePromise"),d=Symbol("stream");function f(e,t){return{value:e,done:t}}function p(e){var t=e[s];if(null!==t){var n=e[d].read();null!==n&&(e[l]=null,e[s]=null,e[a]=null,t(f(n,!1)))}}function g(e){process.nextTick(p,e)}var v=Object.getPrototypeOf((function(){})),m=Object.setPrototypeOf((i(r={get stream(){return this[d]},next:function(){var e=this,t=this[u];if(null!==t)return Promise.reject(t);if(this[c])return Promise.resolve(f(void 0,!0));if(this[d].destroyed)return new Promise((function(t,n){process.nextTick((function(){e[u]?n(e[u]):t(f(void 0,!0))}))}));var n,r=this[l];if(r)n=new Promise(function(e,t){return function(n,r){e.then((function(){t[c]?n(f(void 0,!0)):t[h](n,r)}),r)}}(r,this));else{var i=this[d].read();if(null!==i)return Promise.resolve(f(i,!1));n=new Promise(this[h])}return this[l]=n,n}},Symbol.asyncIterator,(function(){return this})),i(r,"return",(function(){var e=this;return new Promise((function(t,n){e[d].destroy(null,(function(e){e?n(e):t(f(void 0,!0))}))}))})),r),v);e.exports=function(e){var t,n=Object.create(m,(i(t={},d,{value:e,writable:!0}),i(t,s,{value:null,writable:!0}),i(t,a,{value:null,writable:!0}),i(t,u,{value:null,writable:!0}),i(t,c,{value:e._readableState.endEmitted,writable:!0}),i(t,h,{value:function(e,t){var r=n[d].read();r?(n[l]=null,n[s]=null,n[a]=null,e(f(r,!1))):(n[s]=e,n[a]=t)},writable:!0}),t));return n[l]=null,o(e,(function(e){if(e&&"ERR_STREAM_PREMATURE_CLOSE"!==e.code){var t=n[a];return null!==t&&(n[l]=null,n[s]=null,n[a]=null,t(e)),void(n[u]=e)}var r=n[s];null!==r&&(n[l]=null,n[s]=null,n[a]=null,r(f(void 0,!0))),n[c]=!0})),e.on("readable",g.bind(null,n)),n}},7260:(e,t)=>{"use strict";t.P=void 0;var n=function(){function e(){this.current=0,this.queued=[]}return e.prototype.queue=function(e){0===this.current?e():this.queued.push(e)},e.prototype.resolveQueue=function(){for(var e;this.queued.length>0;)null===(e=this.queued.shift())||void 0===e||e()},e.prototype.add=function(e){if(void 0===e&&(e=1),this.current+=e,this.current<0)throw new Error("Negative WaitGroup counter");0===this.current&&this.resolveQueue()},e.prototype.done=function(){this.add(-1)},e.prototype.wait=function(){var e=this;return new Promise((function(t){e.queue((function(){return t()}))}))},e}();t.P=n},7347:(e,t,n)=>{"use strict";var r=n(2294);e.exports=function(e){var t,n=0;function i(){return n||(n=1,t=e.apply(this,arguments),e=null),t}return i.displayName=r(e),i}},7360:(e,t,n)=>{"use strict";const r=n(5532),{LEVEL:i,MESSAGE:o}=n(4763);e.exports=r(((e,{stack:t,cause:n})=>{if(e instanceof Error){const r=Object.assign({},e,{level:e.level,[i]:e[i]||e.level,message:e.message,[o]:e[o]||e.message});return t&&(r.stack=e.stack),n&&(r.cause=e.cause),r}if(!(e.message instanceof Error))return e;const r=e.message;return Object.assign(e,r),e.message=r.message,e[o]=r.message,t&&(e.stack=r.stack),n&&(e.cause=r.cause),e}))},7379:e=>{e.exports=function(e,t){var n="";e=(e=e||"Run the trap, drop the bass").split("");var r={a:["@","Ą","Ⱥ","Ʌ","Δ","Λ","Д"],b:["ß","Ɓ","Ƀ","ɮ","β","฿"],c:["©","Ȼ","Ͼ"],d:["Ð","Ɗ","Ԁ","ԁ","Ԃ","ԃ"],e:["Ë","ĕ","Ǝ","ɘ","Σ","ξ","Ҽ","੬"],f:["Ӻ"],g:["ɢ"],h:["Ħ","ƕ","Ң","Һ","Ӈ","Ԋ"],i:["༏"],j:["Ĵ"],k:["ĸ","Ҡ","Ӄ","Ԟ"],l:["Ĺ"],m:["ʍ","Ӎ","ӎ","Ԡ","ԡ","൩"],n:["Ñ","ŋ","Ɲ","Ͷ","Π","Ҋ"],o:["Ø","õ","ø","Ǿ","ʘ","Ѻ","ם","۝","๏"],p:["Ƿ","Ҏ"],q:["্"],r:["®","Ʀ","Ȑ","Ɍ","ʀ","Я"],s:["§","Ϟ","ϟ","Ϩ"],t:["Ł","Ŧ","ͳ"],u:["Ʊ","Ս"],v:["ט"],w:["Ш","Ѡ","Ѽ","൰"],x:["Ҳ","Ӿ","Ӽ","ӽ"],y:["¥","Ұ","Ӌ"],z:["Ƶ","ɀ"]};return e.forEach((function(e){e=e.toLowerCase();var t=r[e]||[" "],i=Math.floor(Math.random()*t.length);n+=void 0!==r[e]?r[e][i]:e})),n}},7419:(e,t,n)=>{"use strict";var r=n(857),i=n(3199),o=process.env,s=void 0;function a(e){var t=function(e){if(!1===s)return 0;if(i("color=16m")||i("color=full")||i("color=truecolor"))return 3;if(i("color=256"))return 2;if(e&&!e.isTTY&&!0!==s)return 0;var t=s?1:0;if("win32"===process.platform){var n=r.release().split(".");return Number(process.versions.node.split(".")[0])>=8&&Number(n[0])>=10&&Number(n[2])>=10586?Number(n[2])>=14931?3:2:1}if("CI"in o)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI"].some((function(e){return e in o}))||"codeship"===o.CI_NAME?1:t;if("TEAMCITY_VERSION"in o)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(o.TEAMCITY_VERSION)?1:0;if("TERM_PROGRAM"in o){var a=parseInt((o.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(o.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Hyper":return 3;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(o.TERM)?2:/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(o.TERM)||"COLORTERM"in o?1:(o.TERM,t)}(e);return function(e){return 0!==e&&{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}(t)}i("no-color")||i("no-colors")||i("color=false")?s=!1:(i("color")||i("colors")||i("color=true")||i("color=always"))&&(s=!0),"FORCE_COLOR"in o&&(s=0===o.FORCE_COLOR.length||0!==parseInt(o.FORCE_COLOR,10)),e.exports={supportsColor:a,stdout:a(process.stdout),stderr:a(process.stderr)}},7522:(e,t,n)=>{"use strict";const r=n(857),{LEVEL:i,MESSAGE:o}=n(4763),s=n(3623);e.exports=class extends s{_consoleLog=console.log.bind(console);_consoleWarn=console.warn.bind(console);_consoleError=console.error.bind(console);constructor(e={}){super(e),this.name=e.name||"console",this.stderrLevels=this._stringArrayToSet(e.stderrLevels),this.consoleWarnLevels=this._stringArrayToSet(e.consoleWarnLevels),this.eol="string"==typeof e.eol?e.eol:r.EOL,this.forceConsole=e.forceConsole||!1,this.setMaxListeners(30)}log(e,t){return setImmediate((()=>this.emit("logged",e))),this.stderrLevels[e[i]]?(console._stderr&&!this.forceConsole?console._stderr.write(`${e[o]}${this.eol}`):this._consoleError(e[o]),void(t&&t())):this.consoleWarnLevels[e[i]]?(console._stderr&&!this.forceConsole?console._stderr.write(`${e[o]}${this.eol}`):this._consoleWarn(e[o]),void(t&&t())):(console._stdout&&!this.forceConsole?console._stdout.write(`${e[o]}${this.eol}`):this._consoleLog(e[o]),void(t&&t()))}_stringArrayToSet(e,t){if(!e)return{};if(t=t||"Cannot make set from type other than Array of string elements",!Array.isArray(e))throw new Error(t);return e.reduce(((e,n)=>{if("string"!=typeof n)throw new Error(t);return e[n]=!0,e}),{})}}},7627:(e,t,n)=>{var r=n(4466);e.exports=r},7699:e=>{function t(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}t.keys=()=>[],t.resolve=t,t.id=7699,e.exports=t},7767:(e,t)=>{"use strict";t.levels={error:0,warn:1,info:2,http:3,verbose:4,debug:5,silly:6},t.colors={error:"red",warn:"yellow",info:"green",http:"green",verbose:"cyan",debug:"blue",silly:"magenta"}},7814:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return(0,r.default)(i.default,e,t)};var r=o(n(4470)),i=o(n(5874));function o(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},7905:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Metadata=t.ExtType=void 0;const r=n(1716),i=n(6866),o=n(6104);var s;!function(e){e[e.Buffer=0]="Buffer",e[e.Window=1]="Window",e[e.Tabpage=2]="Tabpage"}(s||(t.ExtType=s={})),t.Metadata=[{constructor:r.Buffer,name:"Buffer",prefix:"nvim_buf_"},{constructor:i.Window,name:"Window",prefix:"nvim_win_"},{constructor:o.Tabpage,name:"Tabpage",prefix:"nvim_tabpage_"}]},7918:(e,t,n)=>{e.exports=n(3575)},7959:(e,t,n)=>{"use strict";const r=n(9896),{StringDecoder:i}=n(3193),{Stream:o}=n(2092);function s(){}e.exports=(e,t)=>{const n=Buffer.alloc(65536),a=new i("utf8"),u=new o;let c="",l=0,h=0;return-1===e.start&&delete e.start,u.readable=!0,u.destroy=()=>{u.destroyed=!0,u.emit("end"),u.emit("close")},r.open(e.file,"a+","0644",((i,o)=>{if(i)return t?t(i):u.emit("error",i),void u.destroy();!function i(){if(!u.destroyed)return r.read(o,n,0,n.length,l,((r,o)=>{if(r)return t?t(r):u.emit("error",r),void u.destroy();if(!o)return c&&((null==e.start||h>e.start)&&(t?t(null,c):u.emit("line",c)),h++,c=""),setTimeout(i,1e3);let s=a.write(n.slice(0,o));t||u.emit("data",s),s=(c+s).split(/\n+/);const d=s.length-1;let f=0;for(;fe.start)&&(t?t(null,s[f]):u.emit("line",s[f])),h++;return c=s[d],l+=o,i()}));r.close(o,s)}()})),t?u.destroy:u}},7967:(e,t,n)=>{"use strict";t.Kg=t.K0=void 0;var r=n(4640);Object.defineProperty(t,"K0",{enumerable:!0,get:function(){return r.attach}});n(3252),n(4580),n(6329),n(6372);var i=n(203);Object.defineProperty(t,"Kg",{enumerable:!0,get:function(){return i.findNvim}})},7975:e=>{"use strict";e.exports=require("node:util")},7983:(e,t,n)=>{e.exports=n(9023).deprecate},8010:(e,t,n)=>{"use strict";const{Stream:r,Transform:i}=n(2092),o=n(8521),{LEVEL:s,SPLAT:a}=n(4763),u=n(1232),c=n(504),l=n(2134),h=n(1136),d=n(3583),{warn:f}=n(2159),p=n(4575),g=/%[scdjifoO%]/g;class v extends i{constructor(e){super({objectMode:!0}),this.configure(e)}child(e){const t=this;return Object.create(t,{write:{value:function(n){const r=Object.assign({},e,n);n instanceof Error&&(r.stack=n.stack,r.message=n.message),t.write(r)}}})}configure({silent:e,format:t,defaultMeta:r,levels:i,level:o="info",exitOnError:s=!0,transports:a,colors:u,emitErrs:h,formatters:d,padLevels:f,rewriters:g,stripColors:v,exceptionHandlers:m,rejectionHandlers:y}={}){if(this.transports.length&&this.clear(),this.silent=e,this.format=t||this.format||n(1049)(),this.defaultMeta=r||null,this.levels=i||this.levels||p.npm.levels,this.level=o,this.exceptions&&this.exceptions.unhandle(),this.rejections&&this.rejections.unhandle(),this.exceptions=new c(this),this.rejections=new l(this),this.profilers={},this.exitOnError=s,a&&(a=Array.isArray(a)?a:[a]).forEach((e=>this.add(e))),u||h||d||f||g||v)throw new Error(["{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.","Use a custom winston.format(function) instead.","See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join("\n"));m&&this.exceptions.handle(m),y&&this.rejections.handle(y)}isLevelEnabled(e){const t=m(this.levels,e);if(null===t)return!1;const n=m(this.levels,this.level);return null!==n&&(this.transports&&0!==this.transports.length?-1!==this.transports.findIndex((e=>{let r=m(this.levels,e.level);return null===r&&(r=n),r>=t})):n>=t)}log(e,t,...n){if(1===arguments.length)return e[s]=e.level,this._addDefaultMeta(e),this.write(e),this;if(2===arguments.length)return t&&"object"==typeof t?(t[s]=t.level=e,this._addDefaultMeta(t),this.write(t),this):(t={[s]:e,level:e,message:t},this._addDefaultMeta(t),this.write(t),this);const[r]=n;if("object"==typeof r&&null!==r&&!(t&&t.match&&t.match(g))){const i=Object.assign({},this.defaultMeta,r,{[s]:e,[a]:n,level:e,message:t});return r.message&&(i.message=`${i.message} ${r.message}`),r.stack&&(i.stack=r.stack),this.write(i),this}return this.write(Object.assign({},this.defaultMeta,{[s]:e,[a]:n,level:e,message:t})),this}_transform(e,t,n){if(this.silent)return n();e[s]||(e[s]=e.level),this.levels[e[s]]||0===this.levels[e[s]]||console.error("[winston] Unknown logger level: %s",e[s]),this._readableState.pipes||console.error("[winston] Attempt to write logs with no transports, which can increase memory usage: %j",e);try{this.push(this.format.transform(e,this.format.options))}finally{this._writableState.sync=!1,n()}}_final(e){const t=this.transports.slice();o(t,((e,t)=>{if(!e||e.finished)return setImmediate(t);e.once("finish",t),e.end()}),e)}add(e){const t=!u(e)||e.log.length>2?new h({transport:e}):e;if(!t._writableState||!t._writableState.objectMode)throw new Error("Transports must WritableStreams in objectMode. Set { objectMode: true }.");return this._onEvent("error",t),this._onEvent("warn",t),this.pipe(t),e.handleExceptions&&this.exceptions.handle(),e.handleRejections&&this.rejections.handle(),this}remove(e){if(!e)return this;let t=e;return(!u(e)||e.log.length>2)&&(t=this.transports.filter((t=>t.transport===e))[0]),t&&this.unpipe(t),this}clear(){return this.unpipe(),this}close(){return this.exceptions.unhandle(),this.rejections.unhandle(),this.clear(),this.emit("close"),this}setLevels(){f.deprecated("setLevels")}query(e,t){"function"==typeof e&&(t=e,e={}),e=e||{};const n={},r=Object.assign({},e.query||{});o(this.transports.filter((e=>!!e.query)),(function(t,i){!function(t,n){e.query&&"function"==typeof t.formatQuery&&(e.query=t.formatQuery(r)),t.query(e,((r,i)=>{if(r)return n(r);"function"==typeof t.formatResults&&(i=t.formatResults(i,e.format)),n(null,i)}))}(t,((e,r)=>{i&&((r=e||r)&&(n[t.name]=r),i()),i=null}))}),(()=>t(null,n)))}stream(e={}){const t=new r,n=[];return t._streams=n,t.destroy=()=>{let e=n.length;for(;e--;)n[e].destroy()},this.transports.filter((e=>!!e.stream)).forEach((r=>{const i=r.stream(e);i&&(n.push(i),i.on("log",(e=>{e.transport=e.transport||[],e.transport.push(r.name),t.emit("log",e)})),i.on("error",(e=>{e.transport=e.transport||[],e.transport.push(r.name),t.emit("error",e)})))})),t}startTimer(){return new d(this)}profile(e,...t){const n=Date.now();if(this.profilers[e]){const r=this.profilers[e];delete this.profilers[e],"function"==typeof t[t.length-2]&&(console.warn("Callback function no longer supported as of winston@3.0.0"),t.pop());const i="object"==typeof t[t.length-1]?t.pop():{};return i.level=i.level||"info",i.durationMs=n-r,i.message=i.message||e,this.write(i)}return this.profilers[e]=n,this}handleExceptions(...e){console.warn("Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()"),this.exceptions.handle(...e)}unhandleExceptions(...e){console.warn("Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()"),this.exceptions.unhandle(...e)}cli(){throw new Error(["Logger.cli() was removed in winston@3.0.0","Use a custom winston.formats.cli() instead.","See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md"].join("\n"))}_onEvent(e,t){t["__winston"+e]||(t["__winston"+e]=function(n){"error"!==e||this.transports.includes(t)||this.add(t),this.emit(e,n,t)}.bind(this),t.on(e,t["__winston"+e]))}_addDefaultMeta(e){this.defaultMeta&&Object.assign(e,this.defaultMeta)}}function m(e,t){const n=e[t];return n||0===n?n:null}Object.defineProperty(v.prototype,"transports",{configurable:!1,enumerable:!0,get(){const{pipes:e}=this._readableState;return Array.isArray(e)?e:[e].filter(Boolean)}}),e.exports=v},8056:(e,t,n)=>{"use strict";const r=n(9023),i=n(4418),{LEVEL:o}=n(4763),s=e.exports=function(e={}){i.call(this,{objectMode:!0,highWaterMark:e.highWaterMark}),this.format=e.format,this.level=e.level,this.handleExceptions=e.handleExceptions,this.handleRejections=e.handleRejections,this.silent=e.silent,e.log&&(this.log=e.log),e.logv&&(this.logv=e.logv),e.close&&(this.close=e.close),this.once("pipe",(e=>{this.levels=e.levels,this.parent=e})),this.once("unpipe",(e=>{e===this.parent&&(this.parent=null,this.close&&this.close())}))};r.inherits(s,i),s.prototype._write=function(e,t,n){if(this.silent||!0===e.exception&&!this.handleExceptions)return n(null);const r=this.level||this.parent&&this.parent.level;if(!r||this.levels[r]>=this.levels[e[o]]){if(e&&!this.format)return this.log(e,n);let t,r;try{r=this.format.transform(Object.assign({},e),this.format.options)}catch(e){t=e}if(t||!r){if(n(),t)throw t;return}return this.log(r,n)}return this._writableState.sync=!1,n(null)},s.prototype._writev=function(e,t){if(this.logv){const n=e.filter(this._accept,this);return n.length?this.logv(n,t):t(null)}for(let n=0;n=this.levels[t[o]])||!this.handleExceptions&&!0===t.exception)},s.prototype._nop=function(){}},8266:(e,t,n)=>{"use strict";const r=n(5532);e.exports=r(((e,t={})=>{let n="metadata";t.key&&(n=t.key);let r=[];return t.fillExcept||t.fillWith||(r.push("level"),r.push("message")),t.fillExcept&&(r=t.fillExcept),r.length>0?function(e,t,n){const r=t.reduce(((t,n)=>(t[n]=e[n],delete e[n],t)),{}),i=Object.keys(e).reduce(((t,n)=>(t[n]=e[n],delete e[n],t)),{});return Object.assign(e,r,{[n]:i}),e}(e,r,n):t.fillWith?function(e,t,n){return e[n]=t.reduce(((t,n)=>(t[n]=e[n],delete e[n],t)),{}),e}(e,t.fillWith,n):e}))},8272:(e,t,n)=>{"use strict";const{Colorizer:r}=n(9680);e.exports=e=>(r.addColors(e.colors||e),e)},8303:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if((0,r.default)(e))return function(e){var t=-1,n=e.length;return function(){return++t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(t||(t=e.length),!t)throw new Error("arity is undefined");return function(...n){return"function"==typeof n[t-1]?e.apply(this,n):new Promise(((r,i)=>{n[t-1]=(e,...t)=>{if(e)return i(e);r(t.length>1?t:t[0])},e.apply(this,n)}))}},e.exports=t.default},8474:e=>{"use strict";e.exports=require("node:events")},8494:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,n,r){let o=!1,s=!1,a=!1,u=0,c=0;function l(){u>=t||a||o||(a=!0,e.next().then((({value:e,done:t})=>{if(!s&&!o){if(a=!1,t)return o=!0,void(u<=0&&r(null));u++,n(e,c,h),c++,l()}})).catch(d))}function h(e,t){if(u-=1,!s)return e?d(e):!1===e?(o=!0,void(s=!0)):t===i.default||o&&u<=0?(o=!0,r(null)):void l()}function d(e){s||(a=!1,o=!0,r(e))}l()};var r,i=(r=n(6884))&&r.__esModule?r:{default:r};e.exports=t.default},8521:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(n(3427)),i=a(n(5337)),o=a(n(4877)),s=a(n(8409));function a(e){return e&&e.__esModule?e:{default:e}}t.default=(0,s.default)((function(e,t,n){return(0,r.default)(e,(0,i.default)((0,o.default)(t)),n)}),3),e.exports=t.default},8525:(e,t,n)=>{"use strict";const r=n(5532);e.exports=r(((e,t)=>t.message?(e.message=`[${t.label}] ${e.message}`,e):(e.label=t.label,e)))},8611:e=>{"use strict";e.exports=require("http")},8668:(e,t,n)=>{"use strict";const{MESSAGE:r}=n(4763);class i{constructor(e){this.template=e}transform(e){return e[r]=this.template(e),e}}e.exports=e=>new i(e),e.exports.Printf=e.exports.Format=i},8692:e=>{var t={};e.exports=t;var n={reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29],black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39],grey:[90,39],brightRed:[91,39],brightGreen:[92,39],brightYellow:[93,39],brightBlue:[94,39],brightMagenta:[95,39],brightCyan:[96,39],brightWhite:[97,39],bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgGray:[100,49],bgGrey:[100,49],bgBrightRed:[101,49],bgBrightGreen:[102,49],bgBrightYellow:[103,49],bgBrightBlue:[104,49],bgBrightMagenta:[105,49],bgBrightCyan:[106,49],bgBrightWhite:[107,49],blackBG:[40,49],redBG:[41,49],greenBG:[42,49],yellowBG:[43,49],blueBG:[44,49],magentaBG:[45,49],cyanBG:[46,49],whiteBG:[47,49]};Object.keys(n).forEach((function(e){var r=n[e],i=t[e]=[];i.open="["+r[0]+"m",i.close="["+r[1]+"m"}))},8729:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);i&&!("get"in i?!t.__esModule:i.writable||i.configurable)||(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return i(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.getLogger=function(){return h||(h=function(){const e=s.createLogger({level:u});return process.env.NVIM_NODE_LOG_FILE&&e.add(new s.transports.File({filename:process.env.NVIM_NODE_LOG_FILE,level:u,format:l(!1)})),e.add(new s.transports.Console({format:l(!0)})),process.env.NVIM_NODE_LOG_FILE,Object.keys(console).forEach((t=>{const n="log"===t?"info":t;"assert"===t?console.assert=function(t,...n){t||e.error("assertion failed",...n)}:c.includes(n)&&(console[t]=function(...t){e[n].apply(e,t)})})),e}()),h};const s=o(n(555)),a=n(7975),u="error",c=["info","warn","error","debug","level"];function l(e){return s.format.combine(s.format.splat(),s.format.timestamp({format:"YYYY-MM-DD HH:mm:ss"}),s.format.printf((t=>{let n;try{n="object"==typeof t.message?(0,a.inspect)(t.message,!1,2,e):t.message}catch(e){n=t.message}const r="debug"===t.level?"DBG":t.level.slice(0,3).toUpperCase();return`${t.timestamp} ${r} ${n}`})))}let h},8745:(e,t,n)=>{"use strict";const{Colorizer:r}=n(9680),{Padder:i}=n(2584),{configs:o,MESSAGE:s}=n(4763);class a{constructor(e={}){e.levels||(e.levels=o.cli.levels),this.colorizer=new r(e),this.padder=new i(e),this.options=e}transform(e,t){return this.colorizer.transform(this.padder.transform(e,t),t),e[s]=`${e.level}:${e.message}`,e}}e.exports=e=>new a(e),e.exports.Format=a},9023:e=>{"use strict";e.exports=require("util")},9099:(e,t,n)=>{"use strict";const r=n(9023),{SPLAT:i}=n(4763),o=/%[scdjifoO%]/g,s=/%%/g;class a{constructor(e){this.options=e}_splat(e,t){const n=e.message,o=e[i]||e.splat||[],a=n.match(s),u=a&&a.length||0,c=t.length-u-o.length,l=c<0?o.splice(c,-1*c):[],h=l.length;if(h)for(let t=0;t1?n.splice(0):n,r=t.length;if(r)for(let n=0;nnew a(e)},9161:e=>{var t=[],n=[],r=function(){};function i(e){return!~t.indexOf(e)&&(t.push(e),!0)}function o(e){r=e}function s(e){for(var n=[],r=0;r{"use strict";var r;e.exports=S,S.ReadableState=E,n(4434).EventEmitter;var i,o=function(e,t){return e.listeners(t).length},s=n(5426),a=n(181).Buffer,u=("undefined"!=typeof global?global:"undefined"!=typeof window?window:"undefined"!=typeof self?self:{}).Uint8Array||function(){},c=n(9023);i=c&&c.debuglog?c.debuglog("stream"):function(){};var l,h,d,f=n(1911),p=n(5314),g=n(2365).getHighWaterMark,v=n(3291).F,m=v.ERR_INVALID_ARG_TYPE,y=v.ERR_STREAM_PUSH_AFTER_EOF,b=v.ERR_METHOD_NOT_IMPLEMENTED,w=v.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;n(2017)(S,s);var _=p.errorOrDestroy,x=["error","close","destroy","pause","resume"];function E(e,t,i){r=r||n(2812),e=e||{},"boolean"!=typeof i&&(i=t instanceof r),this.objectMode=!!e.objectMode,i&&(this.objectMode=this.objectMode||!!e.readableObjectMode),this.highWaterMark=g(this,e,"readableHighWaterMark",i),this.buffer=new f,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.paused=!0,this.emitClose=!1!==e.emitClose,this.autoDestroy=!!e.autoDestroy,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(l||(l=n(3141).I),this.decoder=new l(e.encoding),this.encoding=e.encoding)}function S(e){if(r=r||n(2812),!(this instanceof S))return new S(e);var t=this instanceof r;this._readableState=new E(e,this,t),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),s.call(this)}function C(e,t,n,r,o){i("readableAddChunk",t);var s,c=e._readableState;if(null===t)c.reading=!1,function(e,t){if(i("onEofChunk"),!t.ended){if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,t.sync?O(e):(t.needReadable=!1,t.emittedReadable||(t.emittedReadable=!0,L(e)))}}(e,c);else if(o||(s=function(e,t){var n,r;return r=t,a.isBuffer(r)||r instanceof u||"string"==typeof t||void 0===t||e.objectMode||(n=new m("chunk",["string","Buffer","Uint8Array"],t)),n}(c,t)),s)_(e,s);else if(c.objectMode||t&&t.length>0)if("string"==typeof t||c.objectMode||Object.getPrototypeOf(t)===a.prototype||(t=function(e){return a.from(e)}(t)),r)c.endEmitted?_(e,new w):M(e,c,t,!0);else if(c.ended)_(e,new y);else{if(c.destroyed)return!1;c.reading=!1,c.decoder&&!n?(t=c.decoder.write(t),c.objectMode||0!==t.length?M(e,c,t,!1):P(e,c)):M(e,c,t,!1)}else r||(c.reading=!1,P(e,c));return!c.ended&&(c.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=T?e=T:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function O(e){var t=e._readableState;i("emitReadable",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(i("emitReadable",t.flowing),t.emittedReadable=!0,process.nextTick(L,e))}function L(e){var t=e._readableState;i("emitReadable_",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit("readable"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,D(e)}function P(e,t){t.readingMore||(t.readingMore=!0,process.nextTick(I,e,t))}function I(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount("data")>0&&e.resume()}function A(e){i("readable nexttick read 0"),e.read(0)}function $(e,t){i("resume",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit("resume"),D(e),t.flowing&&!t.reading&&e.read(0)}function D(e){var t=e._readableState;for(i("flow",t.flowing);t.flowing&&null!==e.read(););}function j(e,t){return 0===t.length?null:(t.objectMode?n=t.buffer.shift():!e||e>=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):n=t.buffer.consume(e,t.decoder),n);var n}function N(e){var t=e._readableState;i("endReadable",t.endEmitted),t.endEmitted||(t.ended=!0,process.nextTick(B,t,e))}function B(e,t){if(i("endReadableNT",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit("end"),e.autoDestroy)){var n=t._writableState;(!n||n.autoDestroy&&n.finished)&&t.destroy()}}function q(e,t){for(var n=0,r=e.length;n=t.highWaterMark:t.length>0)||t.ended))return i("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?N(this):O(this),null;if(0===(e=k(e,t))&&t.ended)return 0===t.length&&N(this),null;var r,o=t.needReadable;return i("need readable",o),(0===t.length||t.length-e0?j(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&N(this)),null!==r&&this.emit("data",r),r},S.prototype._read=function(e){_(this,new b("_read()"))},S.prototype.pipe=function(e,t){var n=this,r=this._readableState;switch(r.pipesCount){case 0:r.pipes=e;break;case 1:r.pipes=[r.pipes,e];break;default:r.pipes.push(e)}r.pipesCount+=1,i("pipe count=%d opts=%j",r.pipesCount,t);var s=t&&!1===t.end||e===process.stdout||e===process.stderr?p:a;function a(){i("onend"),e.end()}r.endEmitted?process.nextTick(s):n.once("end",s),e.on("unpipe",(function t(o,s){i("onunpipe"),o===n&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),e.removeListener("close",d),e.removeListener("finish",f),e.removeListener("drain",u),e.removeListener("error",h),e.removeListener("unpipe",t),n.removeListener("end",a),n.removeListener("end",p),n.removeListener("data",l),c=!0,!r.awaitDrain||e._writableState&&!e._writableState.needDrain||u())}));var u=function(e){return function(){var t=e._readableState;i("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&o(e,"data")&&(t.flowing=!0,D(e))}}(n);e.on("drain",u);var c=!1;function l(t){i("ondata");var o=e.write(t);i("dest.write",o),!1===o&&((1===r.pipesCount&&r.pipes===e||r.pipesCount>1&&-1!==q(r.pipes,e))&&!c&&(i("false write response, pause",r.awaitDrain),r.awaitDrain++),n.pause())}function h(t){i("onerror",t),p(),e.removeListener("error",h),0===o(e,"error")&&_(e,t)}function d(){e.removeListener("finish",f),p()}function f(){i("onfinish"),e.removeListener("close",d),p()}function p(){i("unpipe"),n.unpipe(e)}return n.on("data",l),function(e,t,n){if("function"==typeof e.prependListener)return e.prependListener(t,n);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(n):e._events[t]=[n,e._events[t]]:e.on(t,n)}(e,"error",h),e.once("close",d),e.once("finish",f),e.emit("pipe",n),r.flowing||(i("pipe resume"),n.resume()),e},S.prototype.unpipe=function(e){var t=this._readableState,n={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,n)),this;if(!e){var r=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o0,!1!==r.flowing&&this.resume()):"readable"===e&&(r.endEmitted||r.readableListening||(r.readableListening=r.needReadable=!0,r.flowing=!1,r.emittedReadable=!1,i("on readable",r.length,r.reading),r.length?O(this):r.reading||process.nextTick(A,this))),n},S.prototype.addListener=S.prototype.on,S.prototype.removeListener=function(e,t){var n=s.prototype.removeListener.call(this,e,t);return"readable"===e&&process.nextTick(R,this),n},S.prototype.removeAllListeners=function(e){var t=s.prototype.removeAllListeners.apply(this,arguments);return"readable"!==e&&void 0!==e||process.nextTick(R,this),t},S.prototype.resume=function(){var e=this._readableState;return e.flowing||(i("resume"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,process.nextTick($,e,t))}(this,e)),e.paused=!1,this},S.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},S.prototype.wrap=function(e){var t=this,n=this._readableState,r=!1;for(var o in e.on("end",(function(){if(i("wrapped end"),n.decoder&&!n.ended){var e=n.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on("data",(function(o){i("wrapped data"),n.decoder&&(o=n.decoder.write(o)),n.objectMode&&null==o||(n.objectMode||o&&o.length)&&(t.push(o)||(r=!0,e.pause()))})),e)void 0===this[o]&&"function"==typeof e[o]&&(this[o]=function(t){return function(){return e[t].apply(e,arguments)}}(o));for(var s=0;s{e.exports=function(e,t){e=e||" he is here ";var n={up:["̍","̎","̄","̅","̿","̑","̆","̐","͒","͗","͑","̇","̈","̊","͂","̓","̈","͊","͋","͌","̃","̂","̌","͐","̀","́","̋","̏","̒","̓","̔","̽","̉","ͣ","ͤ","ͥ","ͦ","ͧ","ͨ","ͩ","ͪ","ͫ","ͬ","ͭ","ͮ","ͯ","̾","͛","͆","̚"],down:["̖","̗","̘","̙","̜","̝","̞","̟","̠","̤","̥","̦","̩","̪","̫","̬","̭","̮","̯","̰","̱","̲","̳","̹","̺","̻","̼","ͅ","͇","͈","͉","͍","͎","͓","͔","͕","͖","͙","͚","̣"],mid:["̕","̛","̀","́","͘","̡","̢","̧","̨","̴","̵","̶","͜","͝","͞","͟","͠","͢","̸","̷","͡"," ҉"]},r=[].concat(n.up,n.down,n.mid);function i(e){return Math.floor(Math.random()*e)}function o(e){var t=!1;return r.filter((function(n){t=n===e})),t}return function(e,t){var r,s,a="";for(s in(t=t||{}).up=void 0===t.up||t.up,t.mid=void 0===t.mid||t.mid,t.down=void 0===t.down||t.down,t.size=void 0!==t.size?t.size:"maxi",e=e.split(""))if(!o(s)){switch(a+=e[s],r={up:0,down:0,mid:0},t.size){case"mini":r.up=i(8),r.mid=i(2),r.down=i(8);break;case"maxi":r.up=i(16)+3,r.mid=i(4)+1,r.down=i(64)+3;break;default:r.up=i(8)+1,r.mid=i(6)/2,r.down=i(8)+1}var u=["up","mid","down"];for(var c in u)for(var l=u[c],h=0;h<=r[l];h++)t[l]&&(a+=n[l][i(n[l].length)])}return a}(e,t)}},9426:(e,t,n)=>{"use strict";const r=n(5532);e.exports=r((e=>(e.message=`\t${e.message}`,e)))},9680:(e,t,n)=>{"use strict";const r=n(7627),{LEVEL:i,MESSAGE:o}=n(4763);r.enabled=!0;const s=/\s+/;class a{constructor(e={}){e.colors&&this.addColors(e.colors),this.options=e}static addColors(e){const t=Object.keys(e).reduce(((t,n)=>(t[n]=s.test(e[n])?e[n].split(s):e[n],t)),{});return a.allColors=Object.assign({},a.allColors||{},t),a.allColors}addColors(e){return a.addColors(e)}colorize(e,t,n){if(void 0===n&&(n=t),!Array.isArray(a.allColors[e]))return r[a.allColors[e]](n);for(let t=0,i=a.allColors[e].length;tnew a(e),e.exports.Colorizer=e.exports.Format=a},9691:function(e,t,n){"use strict";var r,i=this&&this.__awaiter||function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.BaseApi=void 0;const o=n(8474),s=n(2545),a=n(8729),u=Symbol("DO_REQUEST");class c extends o.EventEmitter{constructor({transport:e,data:t,logger:n,metadata:i,client:o}){super(),this._isReady=Promise.resolve(!1),this[r]=(e,t=[])=>new Promise(((n,r)=>{this.transport.request(e,t,((t,i)=>{if("debug"===this.logger.level){let t;try{t=i&&"object"==typeof i?(0,s.partialClone)(i,2,["logger","transport","client"],"[Object]"):i}catch(e){t=String(i)}this.logger.debug(`response -> ${e}: %O`,t)}t?r(new Error(`${e}: ${t[1]}`)):n(i)}))})),this.transport=e,this.data=t,this.logger=n||(0,a.getLogger)(),this.client=o,i&&Object.defineProperty(this,"metadata",{value:i})}equals(e){try{return String(this.data)===String(e.data)}catch(e){return!1}}asyncRequest(e){return i(this,arguments,void 0,(function*(e,t=[]){return yield this._isReady,this.logger.debug(`request -> ${e}`),this[u](e,t).catch((t=>{const n=new Error(t.message);throw this.logger.error('failed request to "%s": %s: %s',e,n.name,n.message),n}))}))}request(e,t=[]){return this.asyncRequest(e,t)}_getArgsByPrefix(...e){const t=[];return"nvim_"!==this.prefix&&t.push(this),t.concat(e)}getVar(e){return i(this,void 0,void 0,(function*(){const t=this._getArgsByPrefix(e);return this.request(`${this.prefix}get_var`,t).then((e=>e),(e=>{if(e&&e.message&&e.message.includes("not found"))return null;throw e}))}))}setVar(e,t){const n=this._getArgsByPrefix(e,t);return this.request(`${this.prefix}set_var`,n)}deleteVar(e){const t=this._getArgsByPrefix(e);return this.request(`${this.prefix}del_var`,t)}getOption(e){const t=this._getArgsByPrefix(e);return this.request(`${this.prefix}get_option`,t)}setOption(e,t){const n=this._getArgsByPrefix(e,t);return this.request(`${this.prefix}set_option`,n)}notify(e,t){this.logger.debug(`notify -> ${e}`),this.transport.notify(e,t)}}t.BaseApi=c,r=u},9742:e=>{e.exports=function(e){return function(t,n,r){return n%2==0?t:e.inverse(t)}}},9875:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e&&"number"==typeof e.length&&e.length>=0&&e.length%1==0},e.exports=t.default},9896:e=>{"use strict";e.exports=require("fs")}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var n=__webpack_module_cache__[e]={id:e,loaded:!1,exports:{}};return __webpack_modules__[e].call(n.exports,n,n.exports,__webpack_require__),n.loaded=!0,n.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var __webpack_exports__={};(()=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{activate:()=>Pe,deactivate:()=>Ie});var e=__webpack_require__(1398),t=__webpack_require__.n(e),n=__webpack_require__(5103),r=__webpack_require__(2298),i=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};function o(e){return`neovim:${e}`}const s=new class{constructor(){this.disposables=[],this.actions=[]}init(){this.initActions(),this.initHooks()}dispose(){this.actions=[],(0,r.v3)(this.disposables)}add(t,n){if(this.actions.includes(t))throw new Error(`Action "${t}" already exist`);this.actions.push(t),this.disposables.push(e.commands.registerCommand(o(t),n))}run(t,...n){return i(this,void 0,void 0,(function*(){const r=this.actions.includes(t)?o(t):t;return e.commands.executeCommand(r,...n)}))}fireNvimEvent(e,...t){var n;null===(n=this.client)||void 0===n||n.executeLua('require"vscode.api".fire_event(...)',[e,...t])}lua(e,...t){return i(this,void 0,void 0,(function*(){var n;return null===(n=this.client)||void 0===n?void 0:n.lua(`return require"vscode.internal".${e}(...)`,t)}))}initActions(){this.add("_ping",(()=>"pong")),this.add("_wait",((e=1e3)=>(0,r.uk)(e).then((()=>"ok")))),this.add("eval",((e,t)=>(0,n.v)(e,t))),this.add("has_config",(t=>{const n=e.workspace.getConfiguration();return Array.isArray(t)?t.map((e=>n.has(e))):n.has(t)})),this.add("get_config",(t=>{const n=e.workspace.getConfiguration();return Array.isArray(t)?t.map((e=>n.get(e))):n.get(t)})),this.add("update_config",((t,n,r)=>i(this,void 0,void 0,(function*(){const i=e.workspace.getConfiguration(),o="global"===r?e.ConfigurationTarget.Global:"workspace"===r?e.ConfigurationTarget.Workspace:e.ConfigurationTarget.WorkspaceFolder;Array.isArray(t)||(t=[t],n=[n]);for(const[e,r]of t.entries())yield i.update(r,n[e],o)})))),this.add("start-multiple-cursors",(t=>{const n=e.window.activeTextEditor;n&&t.length&&(n.selections=(0,r.Jq)(t,n.document))})),this.add("setContext",((e,t)=>r.CJ.set(e,t)))}initHooks(){this.disposables.push(e.window.onDidChangeWindowState((e=>{var t;return null===(t=this.client)||void 0===t?void 0:t.command("doautocmd "+(e.focused?"FocusGained":"FocusLost"))})))}};var a=__webpack_require__(1019),u=__webpack_require__(2640);const c=new class{dispose(){this.emitter.dispose()}init(){this.emitter=new e.EventEmitter}fire(e,t){this.emitter.fire({name:e,data:t})}on(e,t,n,r){return this.emitter.event((r=>{(e===r.name||Array.isArray(e)&&e.includes(r.name))&&t.call(n,r.data)}),n,r)}};var l=__webpack_require__(1377),h=__webpack_require__(5317),d=__webpack_require__(6928),f=__webpack_require__.n(d),p=__webpack_require__(7967),g=__webpack_require__(555),v=__webpack_require__(2543),m=__webpack_require__(1716),y=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};const b=(0,l.h)("BufferManager"),w="vscode-neovim";function _(t){if(!t){const t=e.workspace.getConfiguration("editor");return{tabSize:t.get("tabSize"),insertSpaces:t.get("insertSpaces"),lineNumbers:t.get("lineNumbers")}}const{tabSize:n,insertSpaces:r,lineNumbers:i}=t;return{tabSize:n,insertSpaces:r,lineNumbers:{[e.TextEditorLineNumbersStyle.On]:"on",[e.TextEditorLineNumbersStyle.Off]:"off",[e.TextEditorLineNumbersStyle.Relative]:"relative",[e.TextEditorLineNumbersStyle.Interval]:"interval"}[i]}}function x(e){const{scheme:t}=e.uri;if(!["vscode-remote","file"].includes(t))return e.languageId.toLowerCase()}class E{get client(){return this.main.client}constructor(t){this.main=t,this.disposables=[],this.isSyncingLayout=!1,this.isLayoutOutdated=!1,this.externalTextDocuments=new Set,this.textDocumentToBufferId=new Map,this.textEditorToWinId=new Map,this.winIdToEditor=new Map,this.grids=new Map,this.editorOptionsChangedTimers=new WeakMap,this.editorOptionsMap=new WeakMap,this.handleWindowChanged=(t,n)=>y(this,void 0,void 0,(function*(){if(b.debug(`window changed, target window id: ${t}`),1e3===t)return void b.debug("window id is 1000, skipping");const i=()=>y(this,void 0,void 0,(function*(){const t=e.window.activeTextEditor;t&&(yield e.window.showTextDocument(t.document,t.viewColumn))}));let o=this.getEditorFromWinId(t);if(!o)return b.debug("target editor not found , return to active editor"),i();if(e.window.activeTextEditor===o)return;if(yield(0,r.uk)(50),yield this.waitForLayoutSync(),n.isCancellationRequested)return void b.debug(`Cancelling window change operation for winId: ${t}`);if(void 0===e.window.activeTextEditor)return void b.debug("activeTextEditor is undefined, skipping");yield this.main.cursorManager.waitForCursorUpdate(e.window.activeTextEditor);const{id:s}=yield this.client.getWindow();if(o=this.getEditorFromWinId(s),!o)return b.debug("target editor not found , return to active editor"),i();if(e.window.activeTextEditor===o)return;yield this.main.cursorManager.waitForCursorUpdate(o);const a=o.document.uri,{scheme:u}=a;switch(u){case"output":return void(yield e.commands.executeCommand("workbench.panel.output.focus"));case"vscode-notebook-cell":{const t=e.window.visibleNotebookEditors.find((e=>e.notebook.uri.fsPath===a.fsPath));if(t)return yield e.window.showTextDocument(o.document,t.viewColumn),yield(0,r.uk)(50),void(yield e.window.showTextDocument(o.document,o.viewColumn));break}default:return void(yield e.window.showTextDocument(o.document,o.viewColumn))}yield i()})),this.handleWindowChangedDebounced=(0,v.debounce)(this.handleWindowChanged,100,{leading:!1,trailing:!0}),this.onWindowChanged=t=>{var n;const[r]=t;null===(n=this.windowChangedTokenSource)||void 0===n||n.cancel(),this.windowChangedTokenSource=new e.CancellationTokenSource,this.handleWindowChangedDebounced(r,this.windowChangedTokenSource.token)},this.onEditorLayoutChanged=()=>y(this,void 0,void 0,(function*(){var t,n;this.syncLayoutPromise=null!==(t=this.syncLayoutPromise)&&void 0!==t?t:new r.ie,this.isLayoutOutdated=!0,null===(n=this.syncLayoutSource)||void 0===n||n.cancel(),this.syncLayoutSource=new e.CancellationTokenSource,this.isSyncingLayout||(yield this.syncEditorLayoutDebounced())})),this.syncEditorLayout=()=>y(this,void 0,void 0,(function*(){var t,n;this.isSyncingLayout=!0,this.syncLayoutProgress.start({title:"Syncing layout",location:e.ProgressLocation.Notification},3e3);try{for(;this.isLayoutOutdated;){this.isLayoutOutdated=!1;const n=null===(t=this.syncLayoutSource)||void 0===t?void 0:t.token,r=e.window.activeTextEditor;if(null==this.excludeEditorsWithoutViewColumn){const e=1===(yield this.client.call("has","nvim-0.10"));this.excludeEditorsWithoutViewColumn=e}const i=this.excludeEditorsWithoutViewColumn?[...e.window.visibleTextEditors].filter((e=>null!=e.viewColumn||e===r||["output","vscode-notebook-cell"].includes(e.document.uri.scheme))):[...e.window.visibleTextEditors];(null==n?void 0:n.isCancellationRequested)||(this.syncLayoutProgress.report("Cleaning up windows and buffers"),this.cleanupWindowsAndBuffers(i),(null==n?void 0:n.isCancellationRequested)||(this.syncLayoutProgress.report("Syncing visible editors"),yield this.syncVisibleEditors(i),(null==n?void 0:n.isCancellationRequested)||(this.syncLayoutProgress.report("Syncing active editor"),yield this.syncActiveEditor(r))))}}catch(e){b.error("Error syncing layout:",e)}finally{this.syncLayoutProgress.done(),this.isSyncingLayout=!1,null===(n=this.syncLayoutPromise)||void 0===n||n.resolve(),this.syncLayoutPromise=void 0}})),this.syncEditorLayoutDebounced=(0,v.debounce)(this.syncEditorLayout,100,{leading:!1,trailing:!0}),this.onDidChangeEditorOptions=e=>{let t=this.editorOptionsChangedTimers.get(e);clearTimeout(t);const n=Object.assign({},this.editorOptionsMap.get(e)),r=Object.assign({},e.options);this.editorOptionsMap.set(e,r),n&&n.tabSize===r.tabSize&&n.insertSpaces===r.insertSpaces&&n.lineNumbers===r.lineNumbers||(t=setTimeout((()=>{const t=this.textDocumentToBufferId.get(e.document);t&&s.fireNvimEvent("editor_options_changed",t,_(e.options))}),50),this.editorOptionsChangedTimers.set(e,t))},this.receivedBufferEvent=(t,n,r,i,o,s)=>{var a;null===(a=this.onBufferEvent)||void 0===a||a.call(this,t.id,n,r,i,o,s),(()=>y(this,void 0,void 0,(function*(){const n=this.buildExternalBufferUri(yield t.name,t.id);return b.log(n,e.LogLevel.Debug,`received buffer event for ${n}`),this.bufferProvider.documentDidChange.fire(n),n})))().then(void 0,(t=>{b.log(void 0,e.LogLevel.Error,`failed to notify document change: ${t}`)}))},this.bufferProvider=new S(this.client,this.receivedBufferEvent),this.syncLayoutProgress=new r.ke,this.disposables.push(this.syncLayoutProgress,e.window.onDidChangeVisibleTextEditors(this.onEditorLayoutChanged),e.window.onDidChangeActiveTextEditor(this.onEditorLayoutChanged),e.workspace.onDidCloseTextDocument(this.onEditorLayoutChanged),e.workspace.onDidCloseNotebookDocument(this.onEditorLayoutChanged),e.workspace.onDidSaveTextDocument((()=>this.syncDocumentDirtyState())),e.window.onDidChangeTextEditorOptions((e=>this.onDidChangeEditorOptions(e.textEditor))),e.workspace.registerTextDocumentContentProvider(w,this.bufferProvider),c.on("redraw",this.handleRedraw,this),c.on("open-file",this.handleOpenFile,this),c.on("external-buffer",this.handleExternalBuffer,this),c.on("window-changed",this.onWindowChanged,this),c.on("BufModifiedSet",(([e])=>this.handleBufferModifiedSet(e)))),s.add("set_editor_options",((t,n)=>{const[r]=[...this.textDocumentToBufferId.entries()].find((([e,n])=>n===t))||[];if(!r)return;const i=e.window.visibleTextEditors.find((e=>e.document===r));if(!i)return;const{tabSize:o,insertSpaces:s,lineNumbers:a}=n,u="off"===a?e.TextEditorLineNumbersStyle.Off:"on"===a?e.TextEditorLineNumbersStyle.On:e.TextEditorLineNumbersStyle.Relative;i.options={tabSize:o,insertSpaces:s,lineNumbers:u}})),s.add("save_buffer",(e=>this.handleSaveBuf(e)))}dispose(){var e;null===(e=this.syncLayoutSource)||void 0===e||e.dispose(),(0,r.v3)(this.disposables)}forceSyncLayout(){return y(this,void 0,void 0,(function*(){return b.debug("force syncing layout"),this.onEditorLayoutChanged()}))}waitForLayoutSync(){return y(this,void 0,void 0,(function*(){var e;return null===(e=this.syncLayoutPromise)||void 0===e?void 0:e.promise}))}getTextDocumentForBufferId(e){var t;const n=null===(t=[...this.textDocumentToBufferId].find((([,t])=>e===t)))||void 0===t?void 0:t[0];return n&&!n.isClosed?n:void 0}getBufferIdForTextDocument(e){return this.textDocumentToBufferId.get(e)}getGridIdForWinId(e){const t=[...this.grids].reverse().find((([,t])=>t.winId===e));return t?t[0]:void 0}getWinIdForGridId(e){var t;return null===(t=this.grids.get(e))||void 0===t?void 0:t.winId}getWinIdForTextEditor(e){return this.textEditorToWinId.get(e)}getEditorFromWinId(e){const t=[...this.textEditorToWinId].find((([,t])=>t===e));return t?t[0]:this.winIdToEditor.get(e)}getGridIdFromEditor(e){return this.getGridIdForWinId(this.getWinIdForTextEditor(e)||0)}getEditorFromGridId(e){const t=this.getWinIdForGridId(e);if(t)return this.getEditorFromWinId(t)}isExternalTextDocument(e){return"output"===e.uri.scheme||a.$.autoGeneratedDocumentSchemes.includes(e.uri.scheme)||this.externalTextDocuments.has(e)}handleRedraw({name:e,args:t}){switch(e){case"win_external_pos":case"win_pos":for(const[e,n]of t)this.grids.set(e,{winId:n.id});break;case"win_close":for(const[e]of t)this.grids.delete(e)}}handleOpenFile(t){return y(this,void 0,void 0,(function*(){const[n,i]=t,o=e.window.activeTextEditor;let s,a;try{if("__vscode_new__"===n)s=yield e.workspace.openTextDocument();else{const t=n.trim();let i=e.Uri.from({scheme:"file",path:this.findPathFromFileName(t)});(yield(0,r.hR)(i))||(i=e.Uri.from({scheme:"untitled",path:t}),s=yield e.workspace.openNotebookDocument(i)),null!=s||(s=yield e.workspace.openTextDocument(i))}}catch(t){b.log(null==s?void 0:s.uri,e.LogLevel.Error,`Error opening file ${n}, ${t}`)}s&&(i&&"all"!==i&&o&&(a=o.viewColumn,yield e.commands.executeCommand("workbench.action.revertAndCloseActiveEditor")),yield e.window.showTextDocument(s,a),"all"===i&&(yield e.commands.executeCommand("workbench.action.closeOtherEditors")))}))}handleExternalBuffer(t){return y(this,void 0,void 0,(function*(){var n;const[r,i,o]=t,{name:s,bufnr:a,variables:{vscode_uri:u}}=r;if(!u)return b.debug(`Attaching new external buffer: '${s}', id: ${a}`),1===a?void b.debug(`${a} is the first neovim buffer, skipping`):void(yield this.attachNeovimExternalBuffer(s,a,!!i,o));const c=e.Uri.parse(u,!0);b.log(c,e.LogLevel.Debug,`Buffer request for ${c.fsPath}, bufId: ${a}`);try{let t=this.findDocFromUri(c.toString());if(t||(b.log(c,e.LogLevel.Debug,`Opening a doc: ${c.fsPath}`),t=yield e.workspace.openTextDocument(c)),!this.textDocumentToBufferId.has(t)){b.log(c,e.LogLevel.Debug,"No doc -> buffer mapping exists, assigning mapping and init buffer options");const n=(yield this.client.buffers).find((e=>e.id===a));n&&(yield this.initBufferForDocument(t,n)),this.textDocumentToBufferId.set(t,a)}if((null===(n=e.window.activeTextEditor)||void 0===n?void 0:n.document)!==t){const n=yield e.window.showTextDocument(t,{viewColumn:e.window.activeTextEditor?e.window.activeTextEditor.viewColumn:e.ViewColumn.Active,preserveFocus:!1,preview:!1});this.onDidChangeEditorOptions(n)}}catch(e){}}))}syncDocumentDirtyState(){return y(this,void 0,void 0,(function*(){const e=Array.from(this.textDocumentToBufferId.entries()).map((([e,t])=>({buf:t,modified:e.isDirty})));yield this.client.lua("\n local states = ...\n for _, state in ipairs(states) do\n vim.bo[state.buf].modified = state.modified\n end\n ",[e])}))}handleBufferModifiedSet({buf:e,modified:t}){if(t)return;const n=this.getTextDocumentForBufferId(e);n&&n.isDirty&&!n.isUntitled&&!n.isClosed&&n.save()}handleSaveBuf(t){return y(this,arguments,void 0,(function*({buf:t,bang:n,current_name:i,target_name:o}){const s=this.getTextDocumentForBufferId(t);if(null==s)throw new Error(`Cannot save buffer ${t} - ${o}`);const a=s.uri;if(s.isUntitled)return void(yield e.workspace.save(a));const u=e=>f().normalize(e).split(f().sep).join(f().posix.sep),c=u(i),l=u(o);if(c===l)return void(yield e.workspace.save(a));const h=u(yield this.main.client.call("getcwd")),d=u(f().relative(h,l));if(d===l)return void(yield e.workspace.saveAs(a));const p=e.workspace.getWorkspaceFolder(a);if(!p)return void(yield e.workspace.saveAs(a));const g=e.Uri.joinPath(p.uri,d);if((yield(0,r.hR)(g))&&!n&&"Override"!==(yield e.window.showErrorMessage(`File exists (add ! to override): ${g.fsPath}`,"Override")))return;b.debug(`Saving ${a} to ${g}`);const v=s.getText(),m=(new TextEncoder).encode(v);try{yield e.workspace.fs.writeFile(g,m),e.window.setStatusBarMessage(`Saved "${f().basename(g.fsPath)}"`,3e3)}catch(t){e.window.showErrorMessage(`Failed to save "${g.fsPath}": ${t}`)}}))}cleanupWindowsAndBuffers(e){const t=[],n=[];if([...this.textEditorToWinId.entries()].forEach((([n,r])=>{e.includes(n)||(b.debug(`Editor viewColumn: ${n.viewColumn}, winId: ${r}, closing`),this.textEditorToWinId.delete(n),this.winIdToEditor.delete(r),t.push(r))})),[...this.textDocumentToBufferId.entries()].forEach((([t,r])=>{t.isClosed&&(e.some((e=>e.document===t))||(b.debug(`Document: ${t.uri}, bufId: ${r}, deleting`),this.textDocumentToBufferId.delete(t),n.push(r)))})),t.length||n.length){const e={windows:t,buffers:n},r=setTimeout((()=>b.warn("Cleanup took longer than 5s: ",e)),5e3);s.lua("cleanup_windows_and_buffers",e).catch((t=>b.warn("Failed to cleanup",e,t))).finally((()=>clearTimeout(r)))}}syncVisibleEditors(t){return y(this,void 0,void 0,(function*(){for(const n of t){const{document:t}=n;if(b.log(t.uri,e.LogLevel.Debug,`Visible editor, viewColumn: ${n.viewColumn}, doc: ${t.uri}`),!this.textDocumentToBufferId.has(t)){b.log(t.uri,e.LogLevel.Debug,"Document not known, init in neovim");const r=yield this.client.createBuffer(!1,!0);if("number"==typeof r){b.error(`Cannot create a buffer, code: ${r}`);continue}yield this.initBufferForDocument(t,r,n),b.log(t.uri,e.LogLevel.Debug,`Document: ${t.uri}, BufId: ${r.id}`),this.textDocumentToBufferId.set(t,r.id)}if(this.textEditorToWinId.has(n))continue;const r=this.textDocumentToBufferId.get(t);try{b.log(t.uri,e.LogLevel.Debug,`Creating new window for ${n.viewColumn} column (undefined is OK here)`);const i=yield this.createNeovimWindow(r);b.log(t.uri,e.LogLevel.Debug,`Created new window: ${i} ViewColumn: ${n.viewColumn}`),this.textEditorToWinId.set(n,i),this.winIdToEditor.set(i,n),yield this.main.cursorManager.updateNeovimCursorPosition(n,n.selection.active)}catch(n){b.log(t.uri,e.LogLevel.Error,n.message)}}}))}syncActiveEditor(t){return y(this,void 0,void 0,(function*(){var n;if(!t)return;const r=this.textEditorToWinId.get(t),i=t.document.uri;if(r){if((yield this.client.window).id!==r){b.log(i,e.LogLevel.Debug,`Setting active editor - winId: ${r}`),null===(n=this.windowChangedTokenSource)||void 0===n||n.cancel(),yield this.main.cursorManager.updateNeovimCursorPosition(t,t.selection.active),this.main.modeManager.isVisualMode&&(b.log(i,e.LogLevel.Debug,"Cancel visual mode to prevent selection from previous editor to carry over to active editor"),yield this.client.input(""));try{yield this.client.request("nvim_set_current_win",[r])}catch(t){b.log(i,e.LogLevel.Error,t.message)}}}else b.log(i,e.LogLevel.Error,`Unable to determine neovim window id for editor, docUri: ${i}`)}))}initBufferForDocument(t,n,r){return y(this,void 0,void 0,(function*(){var i;const o=n.id;b.log(t.uri,e.LogLevel.Debug,`Init buffer for ${o}, doc: ${t.uri}`);const a=t.eol===e.EndOfLine.LF?"\n":"\r\n",u=t.getText(),c=u.split(a),{version:l}=t,h=yield this.bufnameForTextDocument(t);yield s.lua("init_document_buffer",{buf:o,bufname:h,lines:c,uri:t.uri.toString(),uri_data:t.uri.toJSON(),editor_options:_(null==r?void 0:r.options),modifiable:!this.isExternalTextDocument(t),modified:t.isDirty,filetype:x(t)}),this.isExternalTextDocument(t)||(yield s.lua("clear_undo",o)),null===(i=this.onBufferInit)||void 0===i||i.call(this,o,t,u,l),n.listen("lines",this.receivedBufferEvent),s.fireNvimEvent("document_buffer_init",o)}))}bufnameForTextDocument(e){return y(this,void 0,void 0,(function*(){const t=e.uri;return"file"===t.scheme?a.$.useWsl?s.lua("wslpath",t.fsPath):t.fsPath:t.toString()}))}createNeovimWindow(e){return y(this,void 0,void 0,(function*(){yield this.client.setOption("eventignore","BufWinEnter,BufEnter,BufLeave");const t=yield this.client.openWindow(e,!1,{external:!0,width:a.$.neovimViewportWidth,height:100});if(yield this.client.setOption("eventignore",""),"number"==typeof t)throw new Error(`Unable to create a new neovim window, code: ${t}`);return t.id}))}findPathFromFileName(t){const n=e.workspace.workspaceFolders;return n&&n.length>0?f().resolve(n[0].uri.fsPath,t):t}findDocFromUri(t){return t.startsWith("/search-editor")&&(t=t.slice(1)),e.workspace.textDocuments.find((e=>e.uri.toString()===t))}buildExternalBufferUri(t,n){return e.Uri.file(t).with({scheme:w,authority:n.toString()})}attachNeovimExternalBuffer(t,n,i,o){return y(this,void 0,void 0,(function*(){var s;const a=this.buildExternalBufferUri(t,n);let u;b.debug(`opening external buffer ${a}`);try{u=yield e.workspace.openTextDocument(a)}catch(e){return void b.debug(`unable to open external buffer: ${e}`)}this.externalTextDocuments.add(u),this.textDocumentToBufferId.set(u,n),null===(s=this.onBufferInit)||void 0===s||s.call(this,n,u,u.getText(),u.version);const c=yield this.client.windows;let l=0;for(const e of c)(yield e.buffer).id===n&&(b.debug(`Found window assigned to external buffer ${n}, winId: ${e.id}, isKnownWindow: ${this.winIdToEditor.has(e.id)}`),this.winIdToEditor.has(e.id)||(l=e.id));const h=yield e.window.showTextDocument(u,{preserveFocus:!1,preview:!0,viewColumn:e.ViewColumn.Active});h.options.insertSpaces=i,h.options.tabSize=o,l&&(setTimeout((()=>y(this,void 0,void 0,(function*(){const t=yield this.client.request("nvim_win_get_cursor",[l]);if(t){b.debug(`Adjusting cursor pos for external buffer: ${n}, originalPos: [${t[0]}, ${t[1]}]`);const i=t[0]-1;let o=t[1];try{o=(0,r.Z6)(u.lineAt(i).text,t[1]),b.debug(`Adjusted cursor: [${i}, ${o}]`)}catch(e){b.warn(`Unable to get cursor pos for external buffer: ${n}`)}const s=new e.Selection(i,o,i,o);h.selections=[s],h.revealRange(s,e.TextEditorRevealType.AtTop)}}))),1e3),setTimeout((()=>{b.debug(`Closing window ${l} for external buffer: ${n}`);try{this.client.request("nvim_win_close",[l,!0])}catch(e){b.warn(`Closing the window: ${l} for external buffer failed: ${e.message}`)}}),5e3))}))}}class S{constructor(t,n){this.client=t,this.receivedBufferEvent=n,this.documentDidChange=new e.EventEmitter,this.onDidChange=this.documentDidChange.event}provideTextDocumentContent(e,t){return y(this,void 0,void 0,(function*(){b.debug(`trying to provide content for ${e}`);const n=parseInt(e.authority,10),r=(yield this.client.buffers).find((e=>e.id===n));if(!r||t.isCancellationRequested)return void b.debug(`external buffer ${n} not found`);const i=yield r.lines;if(i.length&&(1!==i.length||i[0]))return r.listen("lines",this.receivedBufferEvent),yield r[m.ATTACH](!0),i.join("\n");b.debug(`Skipping empty external buffer ${n}`)}))}}var C=__webpack_require__(1928);class M{constructor(){this.pendingBatches=[],this.needFlush=!1,this.lastSeenLevel=null}handleNvimRedrawEvent(e){const t=!this.needFlush;if(this.needFlush&&this.addToBatch(e),"cmdline_show"===e.name){const[t,n,r,i,o,s]=e.args[0];this.lastSeenLevel=s}else"cmdline_hide"===e.name&&1===this.lastSeenLevel&&this.prepareBatch();return t}flushBatch(){var e;const t=null!==(e=this.pendingBatches.shift())&&void 0!==e?e:null;return this.needFlush=!1,this.lastSeenLevel=null,t}prepareBatch(){this.pendingBatches.push([]),this.needFlush=!0,this.lastSeenLevel=null}addToBatch(e){if(0===this.pendingBatches.length)throw new Error("Invalid cmdline state");this.pendingBatches[this.pendingBatches.length-1].push(e)}}var T=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};const k=(0,l.h)("CmdLine",!1);class O{constructor(){this.lastTypedText="",this.level=void 0,this.ignoreHideEvent=!1,this.redrawExpected=!0,this.pendingNvimUpdates=0}}class L{constructor(t){this.main=t,this.disposables=[],this.state=new O,this.queue=new M,this.cmdlineShow=(e,t,n,r)=>{if(this.isVisible()||this.reset(),this.state.level=r,this.input.title=n||this.getTitle(t),this.state.redrawExpected){if(this.state.redrawExpected=!1,this.showInput(),this.input.value!==e){k.debug(`cmdline_show: setting input value: "${e}"`),this.state.lastTypedText=e,this.state.pendingNvimUpdates++;const t=this.input.activeItems;this.input.value=e,this.input.activeItems=t}}else k.debug(`cmdline_show: ignoring cmdline_show because no redraw expected: "${e}"`)},this.setSelection=e=>{this.input.activeItems=-1===e?[]:[this.input.items[e]]},this.onAccept=()=>T(this,void 0,void 0,(function*(){k.debug("onAccept, entering "),yield this.main.client.input("")})),this.onChange=e=>T(this,void 0,void 0,(function*(){if(this.state.pendingNvimUpdates)return this.state.pendingNvimUpdates=Math.max(0,this.state.pendingNvimUpdates-1),void k.debug(`onChange: skip updating cmdline because change originates from nvim: "${e}"`);const t=function(e,t){const n=function(e,t){const n=t.length-e.length;return e===t?{action:"none"}:1===n&&e+t[t.length-1]===t?{action:"added",char:t[t.length-1]}:-1===n&&e.substring(0,e.length-1)===t?{action:"removed",char:e[e.length-1]}:{action:"other"}}(e,t);switch(n.action){case"added":return(0,C.LH)(n.char);case"removed":return"";case"none":return"";case"other":return`${(0,C.LH)(t)}`}}(this.state.lastTypedText,e);k.debug(`onChange: sending cmdline to nvim: "${this.state.lastTypedText}" + "${t}" -> "${e}"`),yield this.main.client.input(t),this.state.lastTypedText=e})),this.onHide=()=>T(this,void 0,void 0,(function*(){this.state.ignoreHideEvent?(k.debug("onHide: skipping event"),this.state.ignoreHideEvent=!1):(k.debug("onHide: entering "),yield this.main.client.input(""));const e=this.queue.flushBatch();null!==e&&(k.debug("onHide: flushing events"),e.forEach((e=>{this.handleRedrawEvent(e)})))})),this.onSelection=e=>T(this,void 0,void 0,(function*(){if(0===e.length)return;k.debug(`onSelection: "${e[0].label}"`),this.state.redrawExpected=!0;const t=this.input.items.indexOf(e[0]);yield this.main.client.request("nvim_select_popupmenu_item",[t,!1,!1,{}])})),this.onButton=e=>T(this,void 0,void 0,(function*(){"Cancel"===e.tooltip?this.input.hide():"Accept"===e.tooltip&&(yield this.onAccept())})),this.sendRedraw=e=>{k.debug(`sendRedraw: "${e}"`),this.state.redrawExpected=!0,this.main.client.input(e)},this.testCmdline=e=>{this.input.value+=e},c.on("redraw",this.handleRedraw,this,this.disposables),this.input=e.window.createQuickPick(),this.input.sortByLabel=!1,this.input.ignoreFocusOut=!0,this.input.buttons=[{iconPath:new e.ThemeIcon("close"),tooltip:"Cancel"},{iconPath:new e.ThemeIcon("check"),tooltip:"Accept"}],this.disposables.push(this.input,this.input.onDidAccept(this.onAccept),this.input.onDidChangeValue(this.onChange),this.input.onDidHide(this.onHide),this.input.onDidChangeSelection(this.onSelection),this.input.onDidTriggerButton(this.onButton),e.commands.registerCommand("vscode-neovim.commit-cmdline",this.onAccept),e.commands.registerCommand("vscode-neovim.send-cmdline",this.sendRedraw),e.commands.registerCommand("vscode-neovim.test-cmdline",this.testCmdline))}dispose(){(0,r.v3)(this.disposables)}reset(){this.state=new O,this.input.value="",this.input.title="",this.input.items=[],this.input.activeItems=[]}handleRedraw(e){-1!==["cmdline_show","cmdline_hide","popupmenu_show","popupmenu_select","popupmenu_hide"].indexOf(e.name)&&this.queue.handleNvimRedrawEvent(e)&&this.handleRedrawEvent(e)}handleRedrawEvent({name:e,args:t}){switch(e){case"cmdline_show":{const[e,n,r,i,o,s]=t[0],a=e.map((([,e])=>e)).join("");k.debug(`cmdline_show: "${e}"`),this.cmdlineShow(a,r,i,s);break}case"popupmenu_show":{const[e,n,r,i,o]=t[0];k.debug(`popupmenu_show: ${e.length} items`),this.input.items=e.map((e=>({label:e[0],alwaysShow:!0}))),this.setSelection(n);break}case"popupmenu_select":{const[e]=t[0];k.debug(`popupmenu_select: "${e}"`),this.setSelection(e);break}case"popupmenu_hide":k.debug("popupmenu_hide"),this.input.items=[];break;case"cmdline_hide":k.debug("cmdline_hide"),this.cmdlineHide()}}cmdlineHide(){this.state.ignoreHideEvent=!0,this.state.redrawExpected=!0,1!==this.state.level&&this.isVisible()?k.debug(`visible level is ${this.state.level}, not hiding`):(k.debug(`visible level is ${this.state.level}, hiding`),this.hideInput())}getTitle(e){switch(e){case"/":return`${u.EO.SEARCH_FORWARD} Forward Search:`;case"?":return`${u.EO.SEARCH_BACKWARD} Backward Search:`;case":":return`${u.EO.COMMAND} VIM Command Line:`;default:return e}}showInput(){this.input.show()}hideInput(){this.state.level=void 0,this.input.hide()}isVisible(){return void 0!==this.state.level}}class P{constructor(n){this.main=n,this.disposables=[],this.scrollPage=(e,n)=>{t().commands.executeCommand("editorScroll",{to:n,by:e,revealCursor:!0})},this.scrollLine=e=>{t().commands.executeCommand("editorScroll",{to:e,by:"line",revealCursor:a.$.revealCursorScrollLine})},this.goToLine=e=>{const n=t().window.activeTextEditor;if(!n)return;const r=n.visibleRanges[0].start.line,i=n.visibleRanges[0].end.line,o="top"===e?r:"bottom"===e?i:Math.floor(r+(i-r)/2),s=n.document.lineAt(o);n.selections=[new(t().Selection)(o,s.firstNonWhitespaceCharacterIndex,o,s.firstNonWhitespaceCharacterIndex)]},this.revealLine=(e,n=!1)=>{const r=t().window.activeTextEditor;if(!r)return;const i=r.selection.active;if(t().commands.executeCommand("revealLine",{lineNumber:i.line,at:e}),n){const e=r.document.lineAt(i.line);r.selections=[new(t().Selection)(i.line,e.firstNonWhitespaceCharacterIndex,i.line,e.firstNonWhitespaceCharacterIndex)]}},this.main,this.disposables.push(e.commands.registerCommand("vscode-neovim.ctrl-f",(()=>this.scrollPage("page","down"))),e.commands.registerCommand("vscode-neovim.ctrl-b",(()=>this.scrollPage("page","up"))),e.commands.registerCommand("vscode-neovim.ctrl-d",(()=>this.scrollPage("halfPage","down"))),e.commands.registerCommand("vscode-neovim.ctrl-u",(()=>this.scrollPage("halfPage","up"))),e.commands.registerCommand("vscode-neovim.ctrl-e",(()=>this.scrollLine("down"))),e.commands.registerCommand("vscode-neovim.ctrl-y",(()=>this.scrollLine("up"))),c.on("reveal",(([e,t])=>this.revealLine(e,!!t))),c.on("move-cursor",(([e])=>this.goToLine(e))),c.on("scroll",(([e,t])=>this.scrollPage(e,t))),c.on("scroll-line",(([e])=>this.scrollLine(e))))}dispose(){(0,r.v3)(this.disposables)}}class I{constructor(){this.pendingUpdates=new Map}size(){return this.pendingUpdates.size}empty(){return 0===this.size()}clear(){this.pendingUpdates.clear()}entries(){return Array.from(this.pendingUpdates.entries()).map((([e,t])=>[e,()=>this.evaluateUpdates(t)]))}addConditionalUpdate(e,t){this.push(e,t)}addForceUpdate(e){this.push(e,(()=>!0))}evaluateUpdates(e){let t=!1;for(const n of e)n()&&(t=!0);return t}push(e,t){var n;const r=null!==(n=this.pendingUpdates.get(e))&&void 0!==n?n:[];r.push(t),this.pendingUpdates.set(e,r)}}var R=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};const A=(0,l.h)("CursorManager",!1);class ${get client(){return this.main.client}constructor(t){this.main=t,this.disposables=[],this.cursorModes=new Map,this.defaultCursorStyle=e.TextEditorCursorStyle.Line,this.neovimCursorPosition=new WeakMap,this.cursorUpdatePromise=new Map,this.applySelectionChangedPromise=new Map,this._wantInsertCursorUpdate=new WeakMap,this.wantInsertCursorUpdate=e=>{var t;return null!==(t=this._wantInsertCursorUpdate.get(e))&&void 0!==t&&t},this.setWantInsertCursorUpdate=(e,t)=>{e&&(t?this._wantInsertCursorUpdate.set(e,t):this._wantInsertCursorUpdate.delete(e))},this.gridCursorUpdates=new I,this.debouncedCursorUpdates=new WeakMap,this.debouncedApplySelectionChanged=new Map,this.updateCursorStyleTimeouts=new Set,this.getDebouncedUpdateCursorPos=e=>{const t=this.debouncedCursorUpdates.get(e);if(t)return t;const n=(0,v.debounce)(this.updateCursorPosInEditor,5,{leading:!1,trailing:!0,maxWait:10});return this.debouncedCursorUpdates.set(e,n),n},this.updateCursorPosInEditor=(t,n)=>R(this,void 0,void 0,(function*(){var i,o;if(A.debug("Waiting for document change completion before setting the editor cursor"),yield this.main.changeManager.getDocumentChangeCompletionLock(t.document),this.main.modeManager.isInsertMode&&!this.wantInsertCursorUpdate(t)&&!this.main.modeManager.isRecordingInInsertMode)return A.debug("Skipping insert cursor update in editor"),null===(i=this.cursorUpdatePromise.get(t))||void 0===i||i.resolve(),void this.cursorUpdatePromise.delete(t);const a=this.main.viewportManager.getCursorFromViewport(n),u=(0,r.IP)(t,a);let c=[];if(this.main.modeManager.isVisualMode){const e=this.main.bufferManager.getWinIdForTextEditor(t);if(!e)return void A.warn("No window for editor");try{const n=yield s.lua("get_selections",e);c=(0,r.Jq)(n,t.document)}catch(e){return void A.error(e)}}else c=[new e.Selection(u,u)];const{selections:l}=t;(c.length!==l.length||c.some(((e,t)=>!(e.active.isEqual(l[t].active)&&e.anchor.isEqual(l[t].anchor)))))&&(t.selections=c),this.neovimCursorPosition.set(t,c[0]),c[0].active.isEqual(l[0].active)||this.triggerMovementFunctions(t,u),null===(o=this.cursorUpdatePromise.get(t))||void 0===o||o.resolve(),this.cursorUpdatePromise.delete(t)})),this.onSelectionChanged=t=>{if(this.main.modeManager.isInsertMode)return;const{textEditor:n,kind:i}=t;A.debug(`onSelectionChanged, kind: ${i}, editor: ${n.document.uri.fsPath}, active: [${n.selection.active.line}, ${n.selection.active.character}]`),i!==e.TextEditorSelectionChangeKind.Mouse||n.selection.isEmpty||this.updateEditorCursorStyle("visual"),n.selection.isEmpty||this.applySelectionChangedPromise.has(n)||this.applySelectionChangedPromise.set(n,new r.ie),this.getDebouncedApplySelectionChanged(i)(n,i)},this.getDebouncedApplySelectionChanged=t=>{let n;n=void 0!==this.previousApplyDebounceTime?this.previousApplyDebounceTime:t===e.TextEditorSelectionChangeKind.Mouse?a.$.mouseSelectionDebounceTime:a.$.normalSelectionDebounceTime,this.previousApplyDebounceTime=n;let r=this.debouncedApplySelectionChanged.get(n);return r||(r=(0,v.debounce)(this.applySelectionChanged,n,{leading:!1,trailing:!0}),this.debouncedApplySelectionChanged.set(n,r),r)},this.applySelectionChanged=(t,n)=>R(this,void 0,void 0,(function*(){var r,i;this.updateEditorCursorStyle(this.main.modeManager.currentMode.name),A.debug("Waiting for possible layout completion operation"),yield this.main.bufferManager.waitForLayoutSync(),A.debug("Waiting for possible document change completion operation"),yield this.main.changeManager.getDocumentChangeCompletionLock(t.document),yield this.main.changeManager.documentChangeLock.waitForUnlock(),A.debug("Waiting done");const o=t.selection,s=1===t.selections.length,u=this.main.changeManager.eatDocumentCursorAfterChange(t.document);if(u&&u.isEqual(o.active))A.debug("Skipping onSelectionChanged event since it was selection produced by doc change");else if(A.debug(`Applying changed selection, kind: ${n}, cursor: [${o.active.line}, ${o.active.character}], isSingleSelection: ${s}`),o.isEmpty){const i=n===e.TextEditorSelectionChangeKind.Mouse,a=n===e.TextEditorSelectionChangeKind.Command&&(null===(r=this.neovimCursorPosition.get(t))||void 0===r?void 0:r.isEqual(o)),u=i||s&&!a;this.main.modeManager.isVisualMode&&u&&(yield this.client.input("")),yield this.updateNeovimCursorPosition(t,o.active)}else n===e.TextEditorSelectionChangeKind.Mouse&&a.$.disableMouseSelection||(yield this.updateNeovimVisualSelection(t,o));this.previousApplyDebounceTime=void 0,null===(i=this.applySelectionChangedPromise.get(t))||void 0===i||i.resolve(),this.applySelectionChangedPromise.delete(t)})),this.triggerMovementFunctions=(t,n)=>{e.commands.executeCommand("editor.action.wordHighlight.trigger");const r=Math.min(...t.visibleRanges.map((e=>e.start.line))),i=Math.max(...t.visibleRanges.map((e=>e.end.line))),o=n.line-t.selection.active.line,s=o>0?n.line>i+10?e.TextEditorRevealType.InCenterIfOutsideViewport:e.TextEditorRevealType.Default:o<0&&n.line{this.updateEditorCursorStyle();const e=setTimeout((()=>{this.updateEditorCursorStyle(),this.updateCursorStyleTimeouts.delete(e)}),100);this.updateCursorStyleTimeouts.add(e)};this.disposables.push(e.window.onDidChangeTextEditorSelection(this.onSelectionChanged),e.window.onDidChangeVisibleTextEditors(n),e.window.onDidChangeActiveTextEditor(n),c.on("redraw",this.handleRedraw,this),c.on("flush-redraw",this.handleRedrawFlush,this),c.on("visual-changed",(([e])=>{const t=this.main.bufferManager.getGridIdForWinId(e);t&&this.gridCursorUpdates.addForceUpdate(t)})),t.viewportManager.onCursorChanged((e=>this.gridCursorUpdates.addForceUpdate(e))),e.workspace.onDidChangeConfiguration((e=>{e.affectsConfiguration("editor.cursorStyle")&&(this.updateDefaultCursorStyle(),this.updateEditorCursorStyle())})),new e.Disposable((()=>{this.updateCursorStyleTimeouts.forEach((e=>clearTimeout(e))),e.window.visibleTextEditors.forEach((e=>e.options.cursorStyle=this.defaultCursorStyle))}))),this.updateDefaultCursorStyle()}updateDefaultCursorStyle(){const t=e.workspace.getConfiguration("editor").get("cursorStyle","line").split("-").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join("");this.defaultCursorStyle=e.TextEditorCursorStyle[t]}handleRedraw({name:t,args:n}){switch(t){case"grid_cursor_goto":case"grid_scroll":n.forEach((e=>this.gridCursorUpdates.addForceUpdate(e[0])));break;case"mode_info_set":n.forEach((e=>e[1].forEach((e=>{e.name&&e.cursor_shape&&this.cursorModes.set(e.name,{cursorShape:e.cursor_shape})}))));break;case"mode_change":this.main.modeManager.isInsertMode&&this.setWantInsertCursorUpdate(e.window.activeTextEditor,!0),n.forEach((e=>this.updateEditorCursorStyle(e[0])))}}handleRedrawFlush(){this.processCursorMoved(),this.gridCursorUpdates.clear()}waitForCursorUpdate(e){return R(this,void 0,void 0,(function*(){var t,n;return Promise.all([Promise.resolve(null===(t=this.cursorUpdatePromise.get(e))||void 0===t?void 0:t.promise),Promise.resolve(null===(n=this.applySelectionChangedPromise.get(e))||void 0===n?void 0:n.promise)])}))}updateEditorCursorStyle(t=this.main.modeManager.currentMode.name){const n=this.cursorModes.get(t);if(!n)return;let r;r="visual"===t?e.TextEditorCursorStyle.LineThin:"block"===n.cursorShape?e.TextEditorCursorStyle.Block:"horizontal"===n.cursorShape?e.TextEditorCursorStyle.Underline:this.defaultCursorStyle;for(const t of e.window.visibleTextEditors)t.options.cursorStyle=r}processCursorMoved(){for(const[e,t]of this.gridCursorUpdates.entries()){if(!t())continue;A.debug(`Received cursor update from neovim, gridId: ${e}`);const n=this.main.bufferManager.getEditorFromGridId(e);n?(this.cursorUpdatePromise.has(n)||this.cursorUpdatePromise.set(n,new r.ie),this.getDebouncedUpdateCursorPos(n)(n,e)):A.warn(`No editor for gridId: ${e}`)}}updateNeovimCursorPosition(e,t){return R(this,arguments,void 0,(function*(e,t,n=!0){const i=this.main.bufferManager.getWinIdForTextEditor(e);if(!i)return;const o=this.neovimCursorPosition.get(e);if(n&&o&&o.active.isEqual(t))return void A.debug("Skipping event since neovim has same cursor pos");const s=(0,r.Gf)(e,t);A.debug(`Updating cursor pos in neovim, winId: ${i}, pos: [${s.line}, ${s.character}]`);const u=[s.line+1,s.character];try{yield this.client.request("nvim_win_set_cursor",[i,u])}catch(t){a.$.autoGeneratedDocumentSchemes.includes(e.document.uri.scheme)||A.error(`${t.message}`)}}))}updateNeovimVisualSelection(e,t){return R(this,void 0,void 0,(function*(){if(this.main.modeManager.isInsertMode)return;if(!this.main.bufferManager.getWinIdForTextEditor(e))return;const n=this.main.bufferManager.getBufferIdForTextDocument(e.document);if(!n)return;const r=this.neovimCursorPosition.get(e);if(null==r?void 0:r.isEqual(t))return void A.debug("Skipping event since neovim has same visual pos");const i=t.anchor,o=t.active;yield s.lua("start_visual",n,{line:i.line,character:i.character},{line:o.line,character:o.character})}))}dispose(){(0,r.v3)(this.disposables)}}new Error("timeout while waiting for mutex to become available"),new Error("mutex already locked");const D=new Error("request for lock canceled");class j{constructor(e,t=D){this._value=e,this._cancelError=t,this._queue=[],this._weightedWaiters=[]}acquire(e=1,t=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return new Promise(((n,r)=>{const i={resolve:n,reject:r,weight:e,priority:t},o=N(this._queue,(e=>t<=e.priority));-1===o&&e<=this._value?this._dispatchItem(i):this._queue.splice(o+1,0,i)}))}runExclusive(e){return t=this,n=arguments,i=function*(e,t=1,n=0){const[r,i]=yield this.acquire(t,n);try{return yield e(r)}finally{i()}},new((r=void 0)||(r=Promise))((function(e,o){function s(e){try{u(i.next(e))}catch(e){o(e)}}function a(e){try{u(i.throw(e))}catch(e){o(e)}}function u(t){var n;t.done?e(t.value):(n=t.value,n instanceof r?n:new r((function(e){e(n)}))).then(s,a)}u((i=i.apply(t,n||[])).next())}));var t,n,r,i}waitForUnlock(e=1,t=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return this._couldLockImmediately(e,t)?Promise.resolve():new Promise((n=>{this._weightedWaiters[e-1]||(this._weightedWaiters[e-1]=[]),function(e,t){const n=N(e,(e=>t.priority<=e.priority));e.splice(n+1,0,t)}(this._weightedWaiters[e-1],{resolve:n,priority:t})}))}isLocked(){return this._value<=0}getValue(){return this._value}setValue(e){this._value=e,this._dispatchQueue()}release(e=1){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);this._value+=e,this._dispatchQueue()}cancel(){this._queue.forEach((e=>e.reject(this._cancelError))),this._queue=[]}_dispatchQueue(){for(this._drainUnlockWaiters();this._queue.length>0&&this._queue[0].weight<=this._value;)this._dispatchItem(this._queue.shift()),this._drainUnlockWaiters()}_dispatchItem(e){const t=this._value;this._value-=e.weight,e.resolve([t,this._newReleaser(e.weight)])}_newReleaser(e){let t=!1;return()=>{t||(t=!0,this.release(e))}}_drainUnlockWaiters(){if(0===this._queue.length)for(let e=this._value;e>0;e--){const t=this._weightedWaiters[e-1];t&&(t.forEach((e=>e.resolve())),this._weightedWaiters[e-1]=[])}else{const e=this._queue[0].priority;for(let t=this._value;t>0;t--){const n=this._weightedWaiters[t-1];if(!n)continue;const r=n.findIndex((t=>t.priority<=e));(-1===r?n:n.splice(0,r)).forEach((e=>e.resolve()))}}}_couldLockImmediately(e,t){return(0===this._queue.length||this._queue[0].priority=0;n--)if(t(e[n]))return n;return-1}class B{constructor(e){this._semaphore=new j(1,e)}acquire(){return e=this,t=arguments,r=function*(e=0){const[,t]=yield this._semaphore.acquire(1,e);return t},new((n=void 0)||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}));var e,t,n,r}runExclusive(e,t=0){return this._semaphore.runExclusive((()=>e()),1,t)}isLocked(){return this._semaphore.isLocked()}waitForUnlock(e=0){return this._semaphore.waitForUnlock(1,e)}release(){this._semaphore.isLocked()&&this._semaphore.release()}cancel(){return this._semaphore.cancel()}}var q=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};const U=(0,l.h)("DocumentChangeManager");class F{get isDirtyStateChange(){return 0===this.contentChanges.length}constructor(e){this.text=e.document.getText(),this.version=e.document.version,this.isDirty=e.document.isDirty,this.contentChanges=e.contentChanges}}class W{get client(){return this.main.client}constructor(t){this.main=t,this.disposables=[],this.pendingEvents=[],this.bufferSkipTicks=new Map,this.documentSkipVersionOnChange=new WeakMap,this.textDocumentChangePromise=new Map,this.cursorAfterTextDocumentChange=new WeakMap,this.documentContentInNeovim=new WeakMap,this.documentChangeQueue=new WeakMap,this.applyingEdits=!1,this.documentChangeLock=new B,this.onBufferInit=(t,n,r,i)=>{U.log(n.uri,e.LogLevel.Debug,`Init buffer content for bufId: ${t}, uri: ${n.uri}, version: ${i}`),this.documentContentInNeovim.set(n,{text:r,version:i})},this.onNeovimChangeEvent=(t,n,i,o,s,a)=>{const u=this.main.bufferManager.getTextDocumentForBufferId(t);U.log(null==u?void 0:u.uri,e.LogLevel.Debug,`Received neovim buffer changed event for bufId: ${t}, tick: ${n}`),u?(this.bufferSkipTicks.get(t)||0)>=n?U.log(u.uri,e.LogLevel.Debug,`BufId: ${t} skipping tick: ${n}`):i!==o||0!==s.length?(this.textDocumentChangePromise.has(u)||this.textDocumentChangePromise.set(u,[]),this.textDocumentChangePromise.get(u).push(new r.ie),this.pendingEvents.push([t,n,i,o,s,a]),this.applyingEdits||this.applyEdits()):U.log(u.uri,e.LogLevel.Debug,`BufId: ${t} empty change, skipping`):U.log(void 0,e.LogLevel.Debug,`No text document for buffer: ${t}`)},this.applyEdits=()=>q(this,void 0,void 0,(function*(){var t,n;for(this.applyingEdits=!0,U.log(void 0,e.LogLevel.Debug,"Applying neovim edits"),this.applyingEditsProgress.start({location:e.ProgressLocation.Notification,title:"Applying neovim edits"},1e3);this.pendingEvents.length;){const i=new Map;let o=this.pendingEvents.shift();for(;o;){const[t,n,s,a,u,c]=o,l=this.main.bufferManager.getTextDocumentForBufferId(t);if(!l){U.log(void 0,e.LogLevel.Warning,`No document for ${t}, skip`);continue}U.log(l.uri,e.LogLevel.Debug,`Accumulating edits for ${l.uri.toString()}, bufId: ${t}`),i.get(l)||i.set(l,(0,r.ZM)(l));let h=i.get(l);if(s!==a&&a===s+1&&1===u.length&&""===u[0])for(let e=s;eh.length&&u.unshift(""),0===s?h.unshift(...u):h=[...h.slice(0,s),...u,...h.slice(s)]):(s>=h.length&&u.unshift(""),h=[...h.slice(0,s),...u,...h.slice(a)]);else for(let e=0;ee.document===o));if(!t){U.log(o.uri,e.LogLevel.Debug,"No visible text editor for document, skipping");continue}const a=o.getText().replace(/\r\n/g,"\n"),u=s.join("\n"),c=t.selection.active;this.documentSkipVersionOnChange.set(o,o.version+1);const l=yield t.edit((e=>{const t=(0,r.IH)(a,u);for(const{range:n,text:r}of t)e.replace(n,r)}),{undoStopAfter:!1,undoStopBefore:!1});this.documentSkipVersionOnChange.set(o,o.version);const h=(null===(n=this.textDocumentChangePromise.get(o))||void 0===n?void 0:n.splice(0,i))||[];l?(t.selection.anchor.isEqual(t.selection.active)?t.selections=[new e.Selection(c,c)]:t.selections=[new e.Selection(t.selection.active,t.selection.active)],this.cursorAfterTextDocumentChange.set(t.document,t.selection.active),h.forEach((e=>e.resolve&&e.resolve())),U.log(o.uri,e.LogLevel.Debug,`Changes succesfully applied for ${o.uri.toString()}`),this.documentContentInNeovim.set(o,{text:o.getText(),version:o.version})):(h.forEach((t=>{t.promise.catch((()=>U.log(o.uri,e.LogLevel.Warning,`Edit was canceled for doc: ${o.uri.toString()}`))),t.reject()})),U.log(o.uri,e.LogLevel.Warning,`Changes were not applied for ${o.uri.toString()}`))}catch(t){U.log(o.uri,e.LogLevel.Error,`Error applying neovim edits, error: ${t.message}`)}}}const i=[...this.textDocumentChangePromise.values()].flatMap((e=>e));this.textDocumentChangePromise.clear(),i.forEach((e=>e.resolve&&e.resolve())),this.applyingEditsProgress.done(),this.pendingEvents.length?this.applyEdits():this.applyingEdits=!1})),this.onChangeTextDocument=e=>q(this,void 0,void 0,(function*(){const{document:t}=e;this.documentChangeQueue.has(t)||this.documentChangeQueue.set(t,[]);const n=new F(e);this.documentChangeQueue.get(t).push(n),this.documentContentInNeovim.has(t)&&(yield this.documentChangeLock.runExclusive((()=>q(this,void 0,void 0,(function*(){var e;const n=null!==(e=this.documentChangeQueue.get(t))&&void 0!==e?e:[];this.documentChangeQueue.set(t,[]);for(const e of n)yield this.processTextDocumentChange(t,e)})))))})),this.processTextDocumentChange=(t,n)=>q(this,void 0,void 0,(function*(){var i;const o=this.documentContentInNeovim.get(t);if(!o)return;const{contentChanges:a,isDirty:u,isDirtyStateChange:c,version:l}=n;if(!c&&l<=o.version)return;this.documentContentInNeovim.set(t,{text:n.text,version:n.version}),U.log(t.uri,e.LogLevel.Debug,`Change text document for: ${t.uri}`);const h=e.window.visibleTextEditors.find((e=>e.document===t)),d=this.main.bufferManager.getBufferIdForTextDocument(t);if(!d)return void U.log(t.uri,e.LogLevel.Warning,`No neovim buffer for ${t.uri}`);c&&!u&&(yield this.client.request("nvim_buf_set_option",[d,"modified",!1]));const f=null!==(i=this.documentSkipVersionOnChange.get(t))&&void 0!==i?i:0;if(U.log(t.uri,e.LogLevel.Debug,`Version: ${l}, skipVersion: ${f}`),f>=l)return void U.log(t.uri,e.LogLevel.Debug,"Skipping a change since versions equals");const p=t.eol===e.EndOfLine.LF?"\n":"\r\n",g=e.window.activeTextEditor;if(g&&g.document===t&&this.main.modeManager.isInsertMode){const e=g.selection.active;for(const t of a)(0,r.RP)(t,e,p)&&(this.dotRepeatChange&&(0,r.H$)(t,this.dotRepeatChange)?this.dotRepeatChange=(0,r.rZ)(t,this.dotRepeatChange):this.dotRepeatChange=(0,r.E1)(t,p))}const v=o.text.split(p),m=[];for(const e of a){const{text:t,range:{start:n,end:i}}=e,o=(0,r.$V)(v[n.line],n.character),s=(0,r.$V)(v[i.line],i.character);m.push([n.line,o,i.line,s,t.split(p)])}const y=yield this.client.request("nvim_buf_get_changedtick",[d]);y?(this.bufferSkipTicks.set(d,y+m.length),U.log(t.uri,e.LogLevel.Debug,"Setting wantInsertCursorUpdate to false"),h&&this.main.cursorManager.setWantInsertCursorUpdate(h,!1),yield s.lua("handle_changes",d,m),u||(yield this.client.request("nvim_buf_set_option",[d,"modified",!1])),h&&h===g&&!this.main.modeManager.isInsertMode&&this.main.cursorManager.applySelectionChanged(h)):U.log(t.uri,e.LogLevel.Warning,`Can't get changed tick for bufId: ${d}, deleted?`)})),this.main.bufferManager.onBufferEvent=this.onNeovimChangeEvent,this.main.bufferManager.onBufferInit=this.onBufferInit,this.applyingEditsProgress=new r.ke,this.disposables.push(this.applyingEditsProgress,e.workspace.onDidChangeTextDocument(this.onChangeTextDocument))}dispose(){(0,r.v3)(this.disposables)}eatDocumentCursorAfterChange(e){const t=this.cursorAfterTextDocumentChange.get(e);return this.cursorAfterTextDocumentChange.delete(e),t}getDocumentChangeCompletionLock(e){return q(this,void 0,void 0,(function*(){const t=this.textDocumentChangePromise.get(e);t&&t.length&&(yield Promise.all(t.map((e=>e.promise)).filter(Boolean)))}))}hasDocumentChangeCompletionLock(e){var t;return((null===(t=this.textDocumentChangePromise.get(e))||void 0===t?void 0:t.length)||0)>0}syncDotRepeatWithNeovim(){return q(this,void 0,void 0,(function*(){if(!this.dotRepeatChange)return;const e=this.dotRepeatChange.text.replace(/\r\n/g,"\n"),t=this.dotRepeatChange.rangeLength;if(this.dotRepeatChange=void 0,e.length||t)try{yield s.lua("dotrepeat_sync",e,t)}finally{yield s.lua("dotrepeat_restore",e,t)}}))}}var V=__webpack_require__(7260),H=__webpack_require__(2052);const z=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531],[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]],G={nul:0,control:0};function K(e,t=G){return 0===e?t.nul:e<32||e>=127&&e<160?t.control:function(e){let t,n=0,r=z.length-1;if(ez[r][1])return!1;for(;r>=n;)if(t=Math.floor((n+r)/2),e>z[t][1])n=t+1;else{if(!(e=4352&&(e<=4447||9001===e||9002===e||e>=11904&&e<=42191&&12351!==e||e>=44032&&e<=55203||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65135||e>=65280&&e<=65376||e>=65504&&e<=65510||e>=131072&&e<=196605||e>=196608&&e<=262141))}const Y=new(__webpack_require__.n(H)());function J(e){return 2===function(e){let t=G;if("string"!=typeof e)return K(e,t);let n=0;for(let r=0;r1}function Z(e,t){return Q(function(e,t){const[n,r]=e.split("").reduce((([e,n],r)=>{if("\t"===r){const r=t-n%t;return[e+" ".repeat(r),n+r]}return[e+r,n+1]}),["",0]);return n}(e,t)).reduce(((e,t)=>e+(J(t)?2:1)),0)}function Q(e){return Y.splitGraphemes(e)}class X{constructor(e){this._cells=e,this._index=0}takeNext(){return this._cells[this._index++]}discardNext(){this._index++}getNext(){return this._cells[this._index]}setNext(e){this._index{var o;if(0===t.length)return;if(t.length>1||t[0].virtText)return void r.push({textType:"virtual",highlights:t,line:e,col:i});const s=t[0],a=null!==(o=n.get(s.hlId))&&void 0!==o?o:[],u=(0,v.findLast)(a,(e=>e.endCol===i));if(u)u.endCol=i+1;else{const t={textType:"normal",hlId:s.hlId,line:e,startCol:i,endCol:i+1};a.push(t)}n.set(s.hlId,a)}));const i=Array.from(n.values()).flat();return i.push(...r),i}computeLineHighlights(e,t,n){var r;const i=(0,v.cloneDeep)(null!==(r=this.lineCells[e])&&void 0!==r?r:[]);if(!i.length)return new Map;const o=new Map,s=[];{const e=Z(t,n);s.push(...i.slice(0,e));const r=[];let o=0;for(const t of i.slice(e))t.hlId===o&&r.length?r[r.length-1].text+=t.text:r.push(t),o=t.hlId;s.push(...r)}const a=new X(s),u=Q(t),c=Q(t).reduce(((e,t)=>e+t+" ".repeat(t.length-1)),""),l=Q(c),h=e=>{let t=u.slice(0,e).lastIndexOf("\t");t=-1===t?0:t+1;const r=u.slice(t,e).join("");return n-Z(r,n)%n};let d=0,f=a.takeNext();for(;f;){const e=[],t=(t,n)=>e.push(Object.assign(Object.assign({},t),{virtText:n})),n=l[d],r=n?n.length-1:0;d+=r;const i=d-(n?[...n].length-1:0);do{if("\t"===n){t(f,f.text);for(let e=0;e{const t=e[1];return t&&(e[1]=this.groupStore.normalizeHighlightId(t)),e}));this.gridLineHandler.handleGridLine(e,t,r),this.lineDecorationsCache.delete(e),this.isDirty=!0}handleRedrawFlush(){if(this.isDirty){if(this.isDirty=!1,!this.editor)return;this.changeManager.getDocumentChangeCompletionLock(this.editor.document).then((()=>this.refreshDecorations()))}}refreshDecorations(){const{editor:e,viewport:t}=this,n=new Map,r=Math.max(0,t.topline),i=Math.min(e.document.lineCount-1,t.botline);this.getDecorations(r,i).forEach(((e,t)=>{n.has(t)||n.set(t,[]),n.get(t).push(...e)}));const o=new Set(n.keys());this.prevDecorators.forEach((e=>{o.has(e)||n.set(e,[])})),this.prevDecorators=o;for(const[t,r]of n)e.setDecorations(t,r)}getDecorations(e,t){const n=new Map;for(let r=e;r<=t;r++){const e=this.lineDecorationsCache.has(r)?this.lineDecorationsCache.get(r):this.getDecorationsForLine(r);this.lineDecorationsCache.set(r,e),e.forEach(((e,t)=>{const{decorator:r}=this.groupStore.getDecorator(t);r&&(n.has(r)||n.set(r,[]),n.get(r).push(...e))}))}return n}getDecorationsForLine(e){const t=this.editor,n=t.document.lineAt(e).text,r=t.options.tabSize,i=this.gridLineHandler.computeLineHighlights(e,n,r),o=this.gridLineHandler.lineHighlightsToRanges(e,i);return this.highlightRangesToOptions(o)}highlightRangesToOptions(t){const n=new Map,r=(e,...t)=>{n.has(e)||n.set(e,[]),n.get(e).push(...t)};return t.forEach((t=>{"normal"===t.textType&&0===t.hlId||"virtual"===t.textType&&t.highlights.every((e=>0===e.hlId))||("virtual"===t.textType?this.createColVirtTextOptions(t.line,t.col,t.highlights).forEach(((e,t)=>r(t,...e))):r(t.hlId,{range:new e.Range(t.line,t.startCol,t.line,t.endCol)}))})),n}createColVirtTextOptions(t,n,r){const i=this.editor.document.lineAt(t).text,o=new Map;r=(0,v.cloneDeep)(r);const s=[];r.forEach((({virtText:e,hlId:t,text:n})=>{null!=e||(e=n),0===t&&s.length>0?s[s.length-1].virtText+=e:s.push({hlId:t,virtText:e})}));const a=Math.min(i.length,n),u=new e.Range(t,a,t,a),c=new e.ThemeColor("editor.background");return s.forEach((({virtText:e,hlId:t},r)=>{const{decorator:s,options:a}=this.groupStore.getDecorator(t);s&&(o.has(t)||o.set(t,[]),n>i.length&&(r+=n-i.length),o.get(t).push({range:u,renderOptions:{before:Object.assign(Object.assign({backgroundColor:c},a),{contentText:e,margin:`0 0 0 ${r}ch`,width:`fit-content; position:absolute; z-index:${99-r}; white-space: pre; --hlId: ${t};`})}}))})),o}dispose(){const e=this.editor;e&&(this.prevDecorators.forEach((t=>e.setDecorations(t,[]))),this.prevDecorators.clear())}}function ne(t){return"string"==typeof t&&t.startsWith("theme.")&&(t=new e.ThemeColor(t.slice(6))),t}function re(e){const t=Object.assign({},e);return t.backgroundColor=ne(t.backgroundColor),t.borderColor=ne(t.borderColor),t.color=ne(t.color),t.outlineColor=ne(t.outlineColor),t.overviewRulerColor=ne(t.overviewRulerColor),t}class ie{constructor(){this.disposables=[],this.highlighIdToDecorator=new Map,this.decoratorConfigurations=new Map,this.visualHighlightIds=[];const e={};for(const[t,n]of Object.entries(a.$.highlights))e[t]=re(n);this.configuration={highlights:e}}createDecoratorForHighlightId(t,n){null!=n.borderColor&&null==n.border&&(n.border="1px solid");const r=e.window.createTextEditorDecorationType(Object.assign(Object.assign({},n),{rangeBehavior:e.DecorationRangeBehavior.ClosedClosed}));this.decoratorConfigurations.set(r,n),this.highlighIdToDecorator.set(t,r),this.disposables.push(r)}add(t,n,r){var i;delete n.altfont,r.includes("Visual")&&(1===r.length?this.visualHighlightId=t:this.visualHighlightIds.push(t));const o=r.reverse().find((e=>void 0!==this.configuration.highlights[e])),s=o&&this.configuration.highlights[o];if(!s||1!==r.length&&0!==Object.keys(n).length){if(this.highlighIdToDecorator.has(t)&&(null===(i=this.highlighIdToDecorator.get(t))||void 0===i||i.dispose()),Object.keys(n).length){const r=function(t){const n={};void 0!==t.background&&(n.backgroundColor="#"+t.background.toString(16).padStart(6,"0")),void 0!==t.foreground&&(n.color="#"+t.foreground.toString(16).padStart(6,"0"));const r=void 0!==t.special?"#"+t.special.toString(16).padStart(6,"0"):"";return void 0!==t.reverse&&(n.backgroundColor=new e.ThemeColor("editor.foreground"),n.color=new e.ThemeColor("editor.background")),void 0!==t.italic&&(n.fontStyle="italic"),void 0!==t.bold&&(n.fontWeight="bold"),void 0!==t.strikethrough&&(n.textDecoration="line-through solid"),void 0!==t.underline&&(n.textDecoration=`underline ${r} solid`),void 0!==t.undercurl&&(n.textDecoration=`underline ${r} wavy`),n}(n);this.createDecoratorForHighlightId(t,r)}}else this.highlighIdToDecorator.has(t)||this.createDecoratorForHighlightId(t,s)}getDecorator(e){const t=this.highlighIdToDecorator.get(e);return t?{decorator:t,options:this.decoratorConfigurations.get(t)}:{decorator:void 0,options:void 0}}normalizeHighlightId(e){return this.visualHighlightId&&this.visualHighlightIds.includes(e)?this.visualHighlightId:e}dispose(){(0,r.v3)(this.disposables)}}var oe=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};class se{constructor(e){this.main=e,this.disposables=[],this.redrawWaitGroup=new V.P,this.highlightGrids=new Map,this.groupStore=new ie,this.disposables.push(this.groupStore,c.on("redraw",this.handleRedraw,this),c.on("flush-redraw",this.handleRedrawFlush,this))}getGrid(e){return this.highlightGrids.has(e)||this.highlightGrids.set(e,new te(e,this.groupStore,this.main.bufferManager,this.main.viewportManager,this.main.changeManager)),this.highlightGrids.get(e)}handleRedraw(e){return oe(this,arguments,void 0,(function*({name:e,args:t}){this.redrawWaitGroup.add(),yield this.main.viewportManager.isSyncDone;try{switch(e){case"hl_attr_define":for(const[e,n,,r]of t)this.handleAttrDefine(e,n,r.map((e=>e.hi_name)));break;case"grid_line":for(const[e,n,r,i]of t)1!==e&&this.handleGridLine(e,n,r,i);break;case"grid_destroy":t.forEach((([e])=>this.handleGridDestroy(e)))}}finally{this.redrawWaitGroup.done()}}))}handleRedrawFlush(){return oe(this,void 0,void 0,(function*(){yield this.redrawWaitGroup.wait(),this.highlightGrids.forEach((e=>e.handleRedrawFlush()))}))}handleAttrDefine(e,t,n){this.groupStore.add(e,t,n)}handleGridLine(e,t,n,r){const i=this.main.viewportManager.getGridOffset(e),o=i.line+t,s=n+i.character,a=s<20?0:s-20;if(s<20){const e=20-s;r[0][2]>e?r[0][2]-=e:r.shift()}this.getGrid(e).handleGridLine(o,a,r)}handleGridDestroy(e){var t;null===(t=this.highlightGrids.get(e))||void 0===t||t.dispose(),this.highlightGrids.delete(e)}dispose(){(0,r.v3)(this.disposables)}}var ae=__webpack_require__(9023);const ue=(0,l.h)("MessagesManager");class ce{constructor(t){this.main=t,this.disposables=[],this.redrawing=Promise.resolve(),this.revealOutput=!1,this.displayHistory=!1,this.didChange=!1,this.messageBuffer=[],this.historyBuffer=[],this.channel=e.window.createOutputChannel(`${u.Gv} messages`);const n=c.on("redraw",(e=>{this.redrawing=this.redrawing.then((()=>this.handleRedraw(e)))})),r=c.on("flush-redraw",(()=>{this.redrawing=this.redrawing.then((()=>this.handleFlush()))}));this.disposables.push(n,r,this.channel)}dispose(){(0,r.v3)(this.disposables)}handleRedraw({name:e,args:t}){switch(e){case"msg_show":for(const[e,n,r]of t){if("return_prompt"===e)continue;const t=n.map((([e,t])=>t)).join("");r&&this.messageBuffer.pop(),this.messageBuffer.push(t)}break;case"msg_clear":this.messageBuffer=[];break;case"msg_history_show":for(const[e]of t)for(const[t,n]of e){const e=n.map((([e,t])=>t)).join("");0===t.length?this.historyBuffer.push(e):this.historyBuffer.push(`${t}: ${e}`)}this.displayHistory=!0,this.revealOutput=!0;break;case"msg_history_clear":this.historyBuffer=[];break;default:return}switch(e){case"msg_clear":case"msg_history_clear":break;default:this.didChange=!0}ue.trace(e,(0,ae.inspect)(t,{depth:5,compact:3}))}handleFlush(){return e=this,t=void 0,r=function*(){if(!this.didChange)return;const e=this.displayHistory?this.historyBuffer:this.messageBuffer;ue.trace(`Flushing ${this.displayHistory?"history":"message"} buffer: ${(0,ae.inspect)(e)}`);const t=e.join("\n"),n=t.split("\n").length,r=yield this.main.client.getOption("cmdheight"),i=this.revealOutput||n>r,{didChange:o,revealOutput:s,displayHistory:a}=this;ue.trace((0,ae.inspect)({didChange:o,revealOutput:s,displayHistory:a,lineCount:n})),this.writeMessage(this.ensureEOL(t)),i&&this.channel.show(!0),this.didChange=!1,this.displayHistory=!1,this.revealOutput=!1},new((n=void 0)||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}));var e,t,n,r}writeMessage(e){ue.info((0,ae.inspect)(e)),this.channel.clear(),this.channel.replace(e)}ensureEOL(e){return 0===e.length||"\n"===e[e.length-1]?e:e+"\n"}}const le=(0,l.h)("ModeManager");class he{constructor(e=""){this.shortname=e}get char(){return this.shortname.charAt(0).replace("","v")}get name(){switch(this.char.toLowerCase()){case"i":return"insert";case"v":return"visual";case"c":return"cmdline";case"r":return"replace";default:return"normal"}}get visual(){return"V"===this.char?"line":"v"===this.shortname.charAt(0)?"char":"block"}get isVisual(){return"visual"===this.name}get isInsert(){return"insert"===this.name}get isNormal(){return"normal"===this.name}get isCmdline(){return"cmdline"===this.name}}class de{constructor(){this.disposables=[],this.mode=new he("n"),this.isRecording=!1,this.eventEmitter=new e.EventEmitter,this.disposables.push(c.on("mode-changed",this.handleModeChanged,this),c.on("notify-recording",(()=>{le.debug("setting recording flag"),this.isRecording=!0,r.CJ.set("neovim.recording",!0)}),this))}get currentMode(){return this.mode}get isInsertMode(){return this.mode.isInsert}get isVisualMode(){return this.mode.isVisual}get isNormalMode(){return this.mode.isNormal}get isCmdlineMode(){return this.mode.isCmdline}get isRecordingInInsertMode(){return this.isRecording}onModeChange(e){return this.eventEmitter.event(e)}handleModeChanged([e]){le.debug(`Changing mode to ${e}`),this.mode=new he(e),!this.isInsertMode&&this.isRecording&&(this.isRecording=!1,r.CJ.set("neovim.recording",!1)),r.CJ.set("neovim.mode",this.mode.name),le.debug(`Setting mode context to ${this.mode.name}`),this.eventEmitter.fire(null)}dispose(){(0,r.v3)(this.disposables)}}var fe,pe;(pe=fe||(fe={}))[pe.StagedClear=0]="StagedClear",pe[pe.PerformedClear=1]="PerformedClear";class ge{constructor(e,t){this.debouncePending=!1,this.clearPending=!1,this.doClear=e,this.debouncedDoClear=(0,v.debounce)((()=>this.onDebounceReady()),t)}dispose(){this.debouncedDoClear.cancel()}onMessageEvent(){this.debouncedDoClear(),this.debouncePending=!0,this.clearPending=!1}onClearEvent(){return this.debouncePending?(this.clearPending=!0,fe.StagedClear):(this.doClear(),fe.PerformedClear)}onDebounceReady(){this.debouncePending=!1,this.clearPending&&this.doClear(),this.clearPending=!1}}const ve=(0,l.h)("StatusLineManager");var me,ye;(ye=me||(me={}))[ye.Mode=0]="Mode",ye[ye.Cmd=1]="Cmd",ye[ye.Msg=2]="Msg",ye[ye.StatusLine=3]="StatusLine";class be{get client(){return this.main.client}constructor(t){this.main=t,this.disposables=[],this._modeText="",this._cmdText="",this._msgText="",this._statusline="",this.statusBar=e.window.createStatusBarItem("vscode-neovim-status",e.StatusBarAlignment.Left,-10),this.statusBar.show(),this.messageDisplayTimer=new ge((()=>{ve.debug("Clearing statusline after timer expiry"),this.clearMessages()}),5e3),this.disposables.push(this.statusBar,this.messageDisplayTimer,c.on("redraw",this.handleRedraw,this),c.on("statusline",(([e])=>this.setStatus(e,me.StatusLine))))}setStatus(e,t){switch(t){case me.Mode:this._modeText=e;break;case me.Cmd:this._cmdText=e;break;case me.Msg:this._msgText=e;break;case me.StatusLine:this._statusline=e}this.updateStatus()}updateStatus(){this.statusBar.text=[this._statusline,this._modeText,this._cmdText,this._msgText].map((e=>e.replace(/\n/g," ").trim())).filter((e=>e.length)).join(a.$.statusLineSeparator)}handleRedraw({name:e,args:t}){switch(e){case"msg_showcmd":{const[e]=t[0],n=this.flattenMessageContent(e);this.setStatus(n,me.Cmd);break}case"msg_show":this.handleMsgShow({name:e,args:t});break;case"msg_showmode":{const[e]=t[t.length-1],n=this.flattenMessageContent(e);this.setStatus(n,me.Mode);break}case"msg_clear":this.handleMsgClear()}}dispose(){(0,r.v3)(this.disposables)}handleMsgShow({name:e,args:t}){if("msg_show"!==e)throw new Error("Expected a msg_show event");this.ensurePressEnterCleared({name:e,args:t}),this.messageDisplayTimer.onMessageEvent();const n=t.reduce(((e,[t,n,r])=>{if("return_prompt"===t)return e;const i=n.map((([e,t])=>t)).join("");return r?i:e+i}),"");this.setStatus(n,me.Msg)}handleMsgClear(){switch(this.messageDisplayTimer.onClearEvent()){case fe.PerformedClear:ve.debug("Clearing statusline after event");break;case fe.StagedClear:ve.debug("Skipping statusline clear as a message is currently pending")}}ensurePressEnterCleared({name:e,args:t}){if("msg_show"!==e)throw new Error("Expected a msg_show event");t.find((([e,t])=>"return_prompt"===e))&&this.client.input("")}clearMessages(){this.setStatus("",me.Msg)}flattenMessageContent(e){return e.map((([e,t])=>t)).join("")}}var we=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};const _e=(0,l.h)("TypingManager");class xe{get takeOverVSCodeInput(){return this._takeOverVSCodeInput}set takeOverVSCodeInput(t){var n,r;if(this._takeOverVSCodeInput=t,t)return this.typeHandler||(this.typeHandler=e.commands.registerTextEditorCommand("type",this.onVSCodeType)),void(this.replacePreviousCharHandler||(this.replacePreviousCharHandler=e.commands.registerCommand("replacePreviousChar",this.onReplacePreviousChar)));this.useCompositeKeys||(null===(n=this.typeHandler)||void 0===n||n.dispose(),this.typeHandler=void 0,null===(r=this.replacePreviousCharHandler)||void 0===r||r.dispose(),this.replacePreviousCharHandler=void 0)}get client(){return this.main.client}get isInsertMode(){return this.main.modeManager.isInsertMode}get isRecordingInInsertMode(){return this.main.modeManager.isRecordingInInsertMode}constructor(t){this.main=t,this.disposables=[],this.isExitingInsertMode=!1,this.isEnteringInsertMode=!1,this.pendingKeysAfterExit="",this.pendingKeysAfterEnter="",this.isInComposition=!1,this.composingText="",this._takeOverVSCodeInput=!1,this.vscodeDefaultType=t=>e.commands.executeCommand("default:type",{text:t}),this.onModeChange=()=>{if(this.main.modeManager.isInsertMode&&this.takeOverVSCodeInput&&!this.isRecordingInInsertMode){const t=e.window.activeTextEditor,n=t&&this.main.changeManager.getDocumentChangeCompletionLock(t.document);n?(_e.debug("Waiting for cursor completion operation before disposing type handler"),this.pendingKeysAfterEnter="",this.isEnteringInsertMode=!0,n.then((()=>we(this,void 0,void 0,(function*(){yield this.main.cursorManager.waitForCursorUpdate(t),this.isInsertMode&&(this.takeOverVSCodeInput=!1),this.pendingKeysAfterEnter&&(_e.debug(`Replaying pending keys after entering insert mode: ${this.pendingKeysAfterEnter}`),yield e.commands.executeCommand(this.isInsertMode?"default:type":"type",{text:this.pendingKeysAfterEnter}),this.pendingKeysAfterEnter=""),this.isEnteringInsertMode=!1}))))):this.takeOverVSCodeInput=!1}else this.isInsertMode||(this.isEnteringInsertMode=!1,this.isExitingInsertMode=!1,this.takeOverVSCodeInput=!0)},this.onVSCodeType=(e,t,n)=>we(this,[e,t,n],void 0,(function*(e,t,{text:n}){this.takeOverVSCodeInput?this.isEnteringInsertMode?this.pendingKeysAfterEnter+=n:this.isExitingInsertMode?this.pendingKeysAfterExit+=n:this.isInComposition?this.composingText+=n:this.isInsertMode&&!this.isRecordingInInsertMode?(yield this.client.mode).blocking?this.client.input((0,r.LH)(n,!this.isRecordingInInsertMode)):(this.takeOverVSCodeInput=!1,this.compositeInput(n)):this.client.input((0,r.LH)(n,!this.isRecordingInInsertMode)):this.isInsertMode&&!this.isInComposition?this.compositeInput(n):this.vscodeDefaultType(n)})),this.onSendCommand=t=>we(this,void 0,void 0,(function*(){if(_e.debug(`Send for: ${t}`),this.main.cursorManager.setWantInsertCursorUpdate(e.window.activeTextEditor,!0),this.isInsertMode&&!(yield this.client.mode).blocking){_e.debug(`Syncing buffers with neovim (${t})`),yield this.main.changeManager.documentChangeLock.waitForUnlock(),e.window.activeTextEditor&&(yield this.main.cursorManager.updateNeovimCursorPosition(e.window.activeTextEditor,e.window.activeTextEditor.selection.active,!1)),yield this.main.changeManager.syncDotRepeatWithNeovim();const n=(0,r.LH)(this.pendingKeysAfterExit);_e.debug(`Pending keys sent with ${t}: ${n}`),this.pendingKeysAfterExit="",yield this.client.input(`${t}${n}`)}else this.isExitingInsertMode=!1,yield this.client.input(`${t}`)})),this.onSendBlockingCommand=e=>we(this,void 0,void 0,(function*(){this.takeOverVSCodeInput=!0,yield this.onSendCommand(e)})),this.onEscapeKeyCommand=(...e)=>we(this,[...e],void 0,(function*(e=""){this.isExitingInsertMode=!0,yield this.onSendBlockingCommand(e)})),this.onReplacePreviousChar=t=>{this.takeOverVSCodeInput?this.isInComposition&&(this.composingText=this.composingText.substring(0,this.composingText.length-t.replaceCharCnt)+t.text):e.commands.executeCommand("default:replacePreviousChar",t)},this.onCompositionStart=()=>{this.isInComposition=!0},this.onCompositionEnd=()=>{this.isInComposition=!1,this.isInsertMode||this.client.input((0,r.LH)(this.composingText,!this.isRecordingInInsertMode)),this.composingText=""};const n=()=>{e.window.showWarningMessage('The command "compositeEscape1" and "compositeEscape2" are deprecated. ',"Read More").then((t=>t&&e.commands.executeCommand("vscode.open","https://github.com/vscode-neovim/vscode-neovim/tree/master#composite-escape-keys")))};this.disposables.push(e.commands.registerCommand("vscode-neovim.compositeEscape1",n),e.commands.registerCommand("vscode-neovim.compositeEscape2",n)),this.prepareCompositeKeys(),e.workspace.onDidChangeConfiguration(this.prepareCompositeKeys,this,this.disposables);const i=t=>n=>{if(n)return t.apply(this,[n]);{const t="command:workbench.action.openGlobalKeybindings?"+encodeURIComponent('["vscode-neovim.send"]');return e.window.showErrorMessage(`No args provided to vscode-neovim.send. Please check your [keybinds](${t}) to ensure that all send commands include the args parameter.`),Promise.resolve()}};this.takeOverVSCodeInput=!0;const o=(t,n)=>{this.disposables.push(e.commands.registerCommand(t,n,this))};o("vscode-neovim.send",i(this.onSendCommand)),o("vscode-neovim.send-blocking",i(this.onSendBlockingCommand)),o("vscode-neovim.escape",this.onEscapeKeyCommand),o("compositionStart",this.onCompositionStart),o("compositionEnd",this.onCompositionEnd),this.main.modeManager.onModeChange(this.onModeChange)}prepareCompositeKeys(){this.compositeKeys=a.$.compositeKeys,this.compositeFirstKeys=[],this.compositeSecondKeysForFirstKey=new Map,Object.keys(this.compositeKeys).forEach((t=>{if(!/^[ -~]{2}$/.test(t))return void e.window.showErrorMessage(`Invalid composite key: ${t}. Composite key must be exactly 2 ASCII characters long.`);const[n,r]=t.split("");this.compositeFirstKeys.push(n);const i=this.compositeSecondKeysForFirstKey.get(n)||[];i.push(r),this.compositeSecondKeysForFirstKey.set(n,i)})),this.useCompositeKeys=this.compositeFirstKeys.length>0}compositeInput(t){if(!this.compositeMatchedFirstKey)return void(this.compositeFirstKeys.includes(t)?(this.compositeMatchedFirstKey=t,this.compositeTimer=setTimeout((()=>{this.compositeTimer=void 0,this.compositeMatchedFirstKey=void 0,this.vscodeDefaultType(t)}),a.$.compositeTimeout)):this.vscodeDefaultType(t));const n=this.compositeSecondKeysForFirstKey.get(this.compositeMatchedFirstKey);if(null==n?void 0:n.includes(t)){clearTimeout(this.compositeTimer),this.compositeTimer=void 0;const n=this.compositeMatchedFirstKey;this.compositeMatchedFirstKey=void 0;const{command:r,args:i}=this.compositeKeys[n+t];e.commands.executeCommand(r,...i||[])}else{if(this.compositeTimer){clearTimeout(this.compositeTimer),this.compositeTimer=void 0;const e=this.compositeMatchedFirstKey;return this.compositeMatchedFirstKey=void 0,void this.vscodeDefaultType(e+t)}this.vscodeDefaultType(t)}}dispose(){var e,t;null===(e=this.typeHandler)||void 0===e||e.dispose(),null===(t=this.replacePreviousCharHandler)||void 0===t||t.dispose(),(0,r.v3)(this.disposables)}}class Ee{constructor(){this.line=0,this.col=0,this.topline=0,this.botline=0,this.leftcol=0,this.skipcol=0}}class Se{get isSyncDone(){var e;return Promise.resolve(null===(e=this.viewportChangedPromise)||void 0===e?void 0:e.promise)}constructor(t){this.main=t,this.disposables=[],this.gridViewport=new Map,this.cursorChanged=new e.EventEmitter,this.onCursorChanged=this.cursorChanged.event,this.debounceTime=20,this.onDidChangeVisibleRange=t=>{this.debouncedScrollNeovim||(this.refreshDebounceTime(),this.refreshDebounceScroll(),e.workspace.onDidChangeConfiguration((e=>e.affectsConfiguration("editor")&&this.refreshDebounceTime()&&this.refreshDebounceScroll()),null,this.disposables)),this.debouncedScrollNeovim(t.textEditor)},this.disposables.push(this.cursorChanged,e.window.onDidChangeTextEditorVisibleRanges(this.onDidChangeVisibleRange),c.on("redraw",this.handleRedraw,this),c.on("viewport-changed",(([e])=>this.handleViewportChanged(e))))}handleViewportChanged({winid:e,leftcol:t,skipcol:n,lnum:i,col:o,topline:s}){var a;null===(a=this.viewportChangedPromise)||void 0===a||a.resolve(),this.viewportChangedPromise=void 0;const u=this.main.bufferManager.getGridIdForWinId(e);if(!u)return;this.viewportChangedPromise=new r.ie;const c=this.getViewport(u),{line:l,col:h}=c;c.line=i,c.col=o,c.topline=s,c.leftcol=t,c.skipcol=n,l===c.line&&h===c.col||this.cursorChanged.fire(u),this.viewportChangedPromise.resolve(),this.viewportChangedPromise=void 0}getViewport(e){return this.gridViewport.has(e)||this.gridViewport.set(e,new Ee),this.gridViewport.get(e)}getCursorFromViewport(t){const n=this.getViewport(t);return new e.Position(n.line,n.col)}getGridOffset(t){const n=this.getViewport(t);return new e.Position(n.topline,n.leftcol)}handleRedraw({name:e,args:t}){switch(e){case"win_viewport":for(const[e,,n,r,i,o]of t){const t=this.getViewport(e),{line:s,col:a}=t;t.topline=n,t.botline=r,t.line=i,t.col=o,s===i&&a===o||this.cursorChanged.fire(e)}break;case"grid_destroy":for(const[e]of t)this.gridViewport.delete(e)}}refreshDebounceTime(){const t=e.workspace.getConfiguration("editor").get("smoothScrolling",!1)?100:20,n=this.debounceTime!==t;return this.debounceTime=t,n}refreshDebounceScroll(){this.debouncedScrollNeovim=(0,v.debounce)(this.scrollNeovim.bind(this),this.debounceTime,{leading:!1,trailing:!0})}scrollNeovim(e){if(null==e||this.main.modeManager.isInsertMode)return;const t=e.visibleRanges;if(!t||0===t.length||t[0].end.line-t[0].start.line<=1)return;const n=t[0].start.line-a.$.neovimViewportHeightExtend,r=t[t.length-1].end.line+t.length+a.$.neovimViewportHeightExtend,i=e.selection.active.line,o=this.main.bufferManager.getGridIdFromEditor(e);if(null==o)return;const u=this.gridViewport.get(o);u&&n!==(null==u?void 0:u.topline)&&i===(null==u?void 0:u.line)&&s.lua("scroll_viewport",Math.max(n,0),r)}dispose(){(0,r.v3)(this.disposables)}}var Ce=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};const Me=(0,l.h)("MainController");class Te{constructor(e){this.extContext=e,this.disposables=[],this.currentRedrawBatch=[],this.onNeovimNotification=(e,t)=>Ce(this,void 0,void 0,(function*(){switch(e){case"vscode-action":{const e=t[0];let n=t[1];Array.isArray(n)&&(n={});const r=n.callback;if(r)this.client.handleRequest("vscode-action",t,{send:(e,t)=>{this.client.executeLua('require"vscode.api".invoke_callback(...)',[r,e,!!t])}});else try{yield this.runAction(e,n)}catch(e){const t=e instanceof Error?e.message:e;Me.error("Error on notification: ",t)}break}case"vscode-neovim":{const[e,n]=t;c.fire(e,n);break}case"redraw":{const e=t;(0,r.KV)("flush",t)?([...this.currentRedrawBatch.splice(0),...e].forEach((e=>{const t={name:e[0],args:e.slice(1)};c.fire("redraw",t)})),c.fire("flush-redraw",[])):this.currentRedrawBatch.push(...e)}}})),this.onNeovimRequest=(e,t,n)=>Ce(this,void 0,void 0,(function*(){switch(e){case"vscode-action":{const e=t[0];let r=t[1];Array.isArray(r)&&(r={});try{const t=yield this.runAction(e,r);n.send(t)}catch(e){const t=e instanceof Error?e.message:e;n.send(t,!0),Me.error("Request error: ",t)}break}}}))}init(){return Ce(this,void 0,void 0,(function*(){const[n,i]=this.buildSpawnArgs();Me.info(`Starting nvim: ${n} ${i.join(" ")}`),this.nvimProc=(0,h.spawn)(n,i),this.disposables.push(new e.Disposable((()=>{this.nvimProc.removeAllListeners(),this.nvimProc.kill()})));const o=new Promise(((e,t)=>{this.nvimProc.once("spawn",(()=>e())),this.nvimProc.once("close",((e,n)=>t(`Neovim exited: ${e} ${n}`))),this.nvimProc.once("error",(e=>t(`Neovim spawn error: ${e.message}`)))}));yield o,this.nvimProc.removeAllListeners(),this.nvimProc.on("close",((e,t)=>this._stop(`Neovim exited: ${e} ${t}`))),this.nvimProc.on("error",(e=>this._stop(`Neovim spawn error: ${e.message}`))),Me.debug("Attaching to neovim"),this.client=(0,p.K0)({proc:this.nvimProc,options:{logger:(0,g.createLogger)({transports:[new g.transports.Console],level:"error",exitOnError:!1})}}),this.disposables.push(new e.Disposable((()=>{this.client.removeAllListeners(),this.client.quit()}))),this.client.on("disconnect",(()=>this._stop("Neovim was disconnected"))),this.client.on("notification",this.onNeovimNotification),this.client.on("request",this.onNeovimRequest),this.setClientInfo(),yield this.setCurrentDir(),yield this.client.setVar("vscode_channel",yield this.client.channelId),yield this.client.setVar("vscode_nvim_min_version",u.D4),Object.defineProperty(s,"client",{get:()=>this.client,configurable:!0}),this.disposables.push(t().commands.registerCommand("_getNeovimClient",(()=>this.client)),t().commands.registerCommand("vscode-neovim.lua",(t=>Ce(this,void 0,void 0,(function*(){const n="string"==typeof t?t:t.join("\n");if(n.length)try{yield this.client.lua(n)}catch(e){Me.error(e instanceof Error?e.message:e)}else e.window.showWarningMessage("No lua code provided")})))),this.modeManager=new de,this.typingManager=new xe(this),this.bufferManager=new E(this),this.viewportManager=new Se(this),this.cursorManager=new $(this),this.commandsController=new P(this),this.highlightManager=new se(this),this.changeManager=new W(this),this.commandLineManager=new L(this),this.statusLineManager=new be(this),this.messagesManager=new ce(this)),Me.debug("UIAttach"),yield this.client.uiAttach(a.$.neovimViewportWidth,100,{rgb:!0,ext_cmdline:!0,ext_linegrid:!0,ext_hlstate:!0,ext_messages:!0,ext_multigrid:!0,ext_popupmenu:!0,ext_tabline:!0}),yield this.bufferManager.forceSyncLayout(),yield r.CJ.set("neovim.init",!0),yield this.logNvimInfo(),yield this.validateNvimRuntime(),Me.debug("Init completed")}))}_stop(e){t().commands.executeCommand("vscode-neovim.stop"),t().window.showErrorMessage(e,"Restart").then((e=>{"Restart"===e&&t().commands.executeCommand("vscode-neovim.restart")}))}buildSpawnArgs(){let e=this.extContext.extensionPath.replace(/\\/g,"\\\\");a.$.useWsl&&(e=(0,r.i9)(e));const t=f().posix.join(e,"runtime","vscode-neovim.vim"),n=[];a.$.useWsl&&(n.push("C:\\Windows\\system32\\wsl.exe"),a.$.wslDistribution.length&&n.push("-d",a.$.wslDistribution));let i=a.$.neovimPath;if("nvim"===i&&!a.$.useWsl){const e=(0,p.Kg)({minVersion:u.D4});Me.debug("Find nvim result: ",e);const t=e.matches.find((e=>!e.error));if(!t)throw new Error("Unable to find a suitable neovim executable. Please check your neovim installation.");i=t.path}return n.push(i,"-N","--embed","--cmd",`source ${t}`),1===parseInt(process.env.NEOVIM_DEBUG||"",10)&&n.push("-u","NONE","--listen",`${process.env.NEOVIM_DEBUG_HOST||"127.0.0.1"}:${process.env.NEOVIM_DEBUG_PORT||4e3}`),a.$.clean&&n.push("--clean"),!a.$.clean&&a.$.neovimInitPath&&n.push("-u",a.$.neovimInitPath),a.$.NVIM_APPNAME&&(process.env.NVIM_APPNAME=a.$.NVIM_APPNAME,a.$.useWsl&&(process.env.WSLENV="NVIM_APPNAME/u")),[n[0],n.slice(1)]}runAction(n,r){return Ce(this,void 0,void 0,(function*(){const i=t().window.activeTextEditor;if(i&&(yield this.cursorManager.waitForCursorUpdate(i)),i&&r.range){const o=i.document,a=i.selections,u=r.range;let c;if(Array.isArray(u))if(2===u.length){const t=Math.max(0,u[0]),n=Math.min(i.document.lineCount-1,u[1]);c=new e.Range(o.lineAt(t).range.start,o.lineAt(n).range.end)}else c=new e.Range(...u);else c=new e.Range(u.start.line,u.start.character,u.end.line,u.end.character);c=o.validateRange(c),i.selections=[new(t().Selection)(c.start,c.end)];const l=yield s.run(n,...r.args||[]);return!1!==r.restore_selection&&(i.selections=a),l}return s.run(n,...r.args||[])}))}setClientInfo(){const e=this.extContext.extension.packageJSON.version,[t,n,r]=[...e.split(".").map((e=>+e)),0,0,0];Me.debug(`Setting client info: vscode-neovim ${t}.${n}.${r}`),this.client.setClientInfo("vscode-neovim",{major:t,minor:n,patch:r},"embedder",{},{})}setCurrentDir(){return Ce(this,void 0,void 0,(function*(){var n,i;let o;const s=null===(i=null===(n=t().workspace.workspaceFolders)||void 0===n?void 0:n[0])||void 0===i?void 0:i.uri.fsPath;if(!s)return o;if(t().env.remoteName?this.extContext.extension.extensionKind===e.ExtensionKind.Workspace&&(o=s):o=a.$.useWsl?(0,r.i9)(s):s,o){Me.debug(`Setting current dir to: ${o}`);try{yield this.client.request("nvim_set_current_dir",[o])}catch(e){Me.error(`Failed to set current dir: ${e}`)}}}))}logNvimInfo(){return Ce(this,void 0,void 0,(function*(){const e=yield this.client.executeLua("\n local rv = {\n configDir = vim.fn.stdpath('config'),\n configFile = vim.env.MYVIMRC,\n logFile = vim.env.NVIM_LOG_FILE,\n nvimVersion = vim.fn.api_info().version,\n }\n return rv\n ",[]);Me.info("Nvim info:",e)}))}validateNvimRuntime(){return Ce(this,void 0,void 0,(function*(){const e=yield this.client.executeLua("\n local rt = vim.env.VIMRUNTIME\n return { vim.fs.dir(rt)() ~= nil, rt }\n ",[]),[t,n]=e;t||Me.error(`Cannot read $VIMRUNTIME directory "${n}". Ensure that VSCode has access to that directory. Also try :checkhealth.`)}))}dispose(){(0,r.v3)(this.disposables)}}var ke=function(e,t,n,r){return new(n||(n=Promise))((function(i,o){function s(e){try{u(r.next(e))}catch(e){o(e)}}function a(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){var t;e.done?i(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}u((r=r.apply(e,t||[])).next())}))};const Oe=(0,l.h)(u.sp),Le=[];function Pe(t){return ke(this,arguments,void 0,(function*(t,n=!1){n||(Le.push(e.commands.registerCommand("vscode-neovim.restart",(()=>ke(this,void 0,void 0,(function*(){Ie(!0),(0,r.v3)(t.subscriptions),yield Pe(t,!0)})))),e.commands.registerCommand("vscode-neovim.stop",(()=>{Ie(!0),(0,r.v3)(t.subscriptions)}))),function(){const t=e.workspace.getConfiguration("extensions"),n=t.inspect("experimental.affinity"),r=null==n?void 0:n.workspaceValue;if(r&&u.sp in r)return void Oe.debug(`Extension affinity value ${r[u.sp]} found in Workspace settings`);const i=null==n?void 0:n.globalValue;if(i&&u.sp in i)return void Oe.debug(`Extension affinity value ${i[u.sp]} found in User settings`);Oe.debug("Extension affinity value not set in User and Workspace settings");e.window.showWarningMessage("No affinity assigned to vscode-neovim. It is recommended to assign affinity for major performance improvements. Would you like to set default affinity? [Learn more](https://github.com/vscode-neovim/vscode-neovim/issues/1051)","Yes","Cancel").then((n=>{"Yes"===n&&((e=>{Oe.debug(`Setting extension affinity value to ${e} in User settings`),t.update("experimental.affinity",Object.assign(Object.assign({},i),{[u.sp]:e}),!0).then((()=>{Oe.debug(`Successfull set extension affinity value to ${e} in User settings`)}),(e=>{Oe.error(`Error while setting experimental affinity. ${e}`)}))})(1),e.window.showInformationMessage("Requires restart of extension host for changes to take effect. This restarts all extensions.","Restart").then((t=>{"Restart"===t&&e.commands.executeCommand("workbench.action.restartExtensionHost")})))}))}()),a.$.init(),l.vF.init(a.$.logPath,a.$.outputToConsole),c.init(),s.init(),t.subscriptions.push(a.$,l.vF,c,s,new e.Disposable((()=>r.CJ.reset())));try{const e=new Te(t);t.subscriptions.push(e),yield e.init()}catch(t){e.window.showErrorMessage(`[Failed to start nvim] ${t instanceof Error?t.message:t}`,"Restart").then((t=>{"Restart"===t&&e.commands.executeCommand("vscode-neovim.restart")}))}}))}function Ie(e=!1){e||(0,r.v3)(Le)}})(),module.exports=__webpack_exports__})(); +//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js.LICENSE.txt b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js.LICENSE.txt new file mode 100644 index 0000000..b1121f5 --- /dev/null +++ b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js.LICENSE.txt @@ -0,0 +1,8 @@ +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ diff --git a/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js.map b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js.map new file mode 100644 index 0000000..60e2540 --- /dev/null +++ b/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/dist/extension.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extension.js","mappings":";0DACAA,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQE,mBAGR,SAA4BC,EAAMC,EAAMC,EAAgBC,GAEpD,MAAMC,EAAOC,KAEb,GAAID,EAAK,GAAGJ,aAC0B,IAAlCI,EAAK,GAAGJ,YAAeM,QACvBF,EAAK,GAAGJ,UACR,OAAOI,EAAK,GAAGJ,UAEnBI,EAAK,GAAGJ,YAAiBE,IAGzB,IAAIK,KAAmBZ,OAAOa,oBAAoBP,EAAKQ,YAAYC,SAAQC,IACvEhB,OAAOC,eAAeQ,EAAK,GAAGJ,YAAgBW,EAAK,CAC/CC,YAAY,EACZC,UAAU,EACVC,cAAc,GAChB,IAEN,MAAMC,EAAe,CACjBC,IAAK,CAACC,EAAQC,KAKV,MAAMC,EAAgBxB,OAAOc,UAAUW,eAAeC,KAAKpB,EAAKQ,UAAWS,IACvEvB,OAAOc,UAAUW,eAAeC,KAAKC,EAAOC,QAAQd,UAAWS,GAG7DM,EAAa7B,OAAO8B,yBAAyBxB,EAAKQ,UAAWS,IAC/DvB,OAAO8B,yBAAyBH,EAAOC,QAAQd,UAAWS,GACxDQ,EAAWF,SACc,IAAnBA,EAAWR,UACW,IAAnBQ,EAAWG,KAG1B,OAAI1B,GAAQkB,EACJA,IACCO,IACCR,KAAQjB,EAAKQ,WACqB,mBAAzBR,EAAKQ,UAAUS,IACrBA,KAAQI,EAAOC,QAAQd,WACsB,mBAAnCa,EAAOC,QAAQd,UAAUS,IAEjC,IAAIU,IAASxB,EAAK,GAAGJ,YAAe6B,MAAMC,GAAQA,EAAIZ,GAAMG,KAAKS,KAAQF,KAG3EzB,GAAoBA,KACzBC,EAAK,GAAGJ,YAAe6B,MAAMC,GAAQA,EAAIZ,KAE7CA,KAAQD,EAEoB,mBAAjBA,EAAOC,GACPD,EAAOC,GAAMa,KAAKd,GAEtBA,EAAOC,GAEX,IAAI,EAEfS,IAAK,CAACV,EAAQC,EAAMpB,EAAOkC,KAEnBA,IAAaA,aAAoBC,SAAW,SAAUD,GACtDA,EAASH,MAAKK,IACNhB,KAAQgB,IAERA,EAAIhB,GAAQpB,EAChB,IAKJmB,EAAOC,GAAQpB,GAGZ,IAKf,OADAM,EAAK,GAAGJ,UAAe,IAAImC,MAAM/B,EAAK,GAAGJ,YAAgBe,GAClDX,EAAK,GAAGJ,SACnB,EAlFA,MAAMsB,EAAS,EAAQ,MACjBf,EAAiBZ,OAAOa,oBAAoBc,EAAOC,QAAQd,iCCJjE2B,EAAOvC,QAAUwC,QAAQ,sCCCzB1C,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQyC,uBAAoB,EAC5BzC,EAAQ0C,SAqHR,SAAkBC,EAAM,CAAC,GACrB,IAAIC,EAAIC,EAAIC,EACZ,MAAMC,EAnDV,WACI,MAAMC,EAAQ,IAAIC,KACZ,KAAEC,EAAI,YAAEC,EAAW,aAAEC,EAAY,aAAEC,EAAY,KAAEC,GAASC,QAAQC,IAoCxE,OAnCAN,SAA4CA,EAAKO,MAAMC,EAAYC,WAAW9C,SAAQ+C,GAAKZ,EAAMa,IAAIC,EAAcF,MAE/GG,GAEIZ,GACAH,EAAMa,IAAIC,EAAc,GAAGX,kBAE/BH,EAAMa,IAAIC,EAAc,+BAGpBV,IACAJ,EAAMa,IAAIC,EAAc,GAAGV,4BAC3BJ,EAAMa,IAAIC,EAAc,GAAGV,iCAE3BC,IACAL,EAAMa,IAAIC,EAAc,GAAGT,iBAC3BL,EAAMa,IAAIC,EAAc,GAAGT,uBAC3BL,EAAMa,IAAIC,EAAc,GAAGT,sBAC3BL,EAAMa,IAAIC,EAAc,GAAGT,+BAK/B,CACI,iBACA,WACA,oBACA,iCACA,8BACFxC,SAAQ+C,GAAKZ,EAAMa,IAAID,KACrBN,IACAN,EAAMa,IAAIC,EAAc,GAAGR,UAC3BN,EAAMa,IAAIC,EAAc,GAAGR,uBAG5BN,CACX,CAYyBgB,GACfC,EAAiBF,EAAU,WAAa,OACxCG,GAAgD,QAApBtB,EAAKD,EAAIK,aAA0B,IAAPJ,EAAgBA,EAAK,IAAIuB,IAAIL,GACrFM,EAAW,IAAInB,IAAI,IAClBiB,MACqB,QAAnBrB,EAAKF,EAAI0B,YAAyB,IAAPxB,EAAgBA,EAAK,IAAIsB,KAAIG,GAAOR,GAAc,EAAIJ,EAAYa,MAAMD,EAAKL,SAC1G,IAAIlB,GAAcoB,KAAIG,IAAO,EAAIZ,EAAYa,MAAMD,EAAKL,OAEzDO,EAAU,IAAIC,MACdC,EAAU,IAAID,MACpB,IAAK,MAAME,KAAYP,EACnB,IAAI,EAAIQ,EAAUC,YAAYF,IAAaT,EAAwBY,SAASH,GACxE,KACI,EAAIC,EAAUG,YAAYJ,EAAUC,EAAUI,UAAUC,MACxD,MAAMC,GAAkB,EAAIC,EAAqBC,cAAcT,EAAU,CACrE,cACDU,WACGC,EAAmBC,EAAiBC,KAAKN,GACzCO,EAAiBC,EAAeF,KAAKN,GACrCS,EAAqBC,EAAmBJ,KAAKN,GACnD,GAAII,GAAoBG,GAAkBE,EACtC,GAAI,eAAgBhD,GAEZ,IADJkD,EAA0C,QAAzB/C,EAAKH,EAAImD,kBAA+B,IAAPhD,EAAgBA,EAAK,QAASwC,EAAiB,IAEjGZ,EAAQqB,KAAK,CACTC,YAAaV,EAAiB,GAC9BW,KAAMtB,EACNuB,UAAWT,EAAe,GAC1BU,cAAeR,EAAmB,UAUtC,GANAnB,EAAQuB,KAAK,CACTC,YAAaV,EAAiB,GAC9BW,KAAMtB,EACNuB,UAAWT,EAAe,GAC1BU,cAAeR,EAAmB,KAElChD,EAAIyD,WACJ,MAAO,CACH5B,UACAE,UAKpB,CACA,MAAO2B,GACH3B,EAAQqB,KAAK,CACTE,KAAMtB,EACN2B,MAAOD,GAEf,CAMR,YAHoBE,IAAhB5D,EAAI6D,SAAyC,SAAhB7D,EAAI6D,SACjChC,EAAQiC,MAAK,CAACC,EAAGC,KAAQ,IAAI/D,EAAIC,EAAI,OAAOgD,EAAyC,QAAxBjD,EAAK+D,EAAEX,mBAAgC,IAAPpD,EAAgBA,EAAK,QAAkC,QAAxBC,EAAK6D,EAAEV,mBAAgC,IAAPnD,EAAgBA,EAAK,QAAQ,IAEtL,CACH2B,UACAE,UAER,EApLA,MAAMS,EAAuB,EAAQ,MAC/BzB,EAAc,EAAQ,MACtBkB,EAAY,EAAQ,MACpBgC,EAAe,kCACfrB,EAAmB,kBACnBG,EAAiB,0BACjBE,EAAqB,mBACrB7B,EAA+B,UAArBR,QAAQsD,SACxB,SAASC,EAAaC,GAClB,GAAuB,iBAAZA,EACP,MAAM,IAAIC,UAAU,wCAExB,MAAMC,EAAQF,EAAQE,MAAML,GAC5B,IAAKK,EACD,OAEJ,MAAO,CAAEC,EAAOC,EAAOC,EAAOC,GAAcJ,EAItCK,EAAe,CAHDC,OAAOL,GACPK,OAAOJ,GACPI,OAAOH,IAY3B,YANmBb,IAAfc,EACAC,EAAavB,KAAKsB,GAGlBC,EAAavB,KAAK,OAEfuB,CACX,CAYA,SAASzB,EAAgBa,EAAGC,GACxB,IAAI/D,EAAIC,EAAIC,EAAI0E,EAAIC,EAAIC,EACxB,MAAMC,EAAWb,EAAaJ,GACxBkB,EAAWd,EAAaH,GACxBkB,EAASC,KAAKC,IAAmF,QAA9EnF,EAAK+E,aAA2C,EAASA,EAASE,cAA2B,IAAPjF,EAAgBA,EAAK,EAAkF,QAA9EC,EAAK+E,aAA2C,EAASA,EAASC,cAA2B,IAAPhF,EAAgBA,EAAK,GACnP,IAAK,IAAImF,EAAI,EAAGA,EAAIH,EAAQG,GAAQ,EAAG,CACnC,MAAMC,EAAmF,QAA1EnF,EAAK6E,aAA2C,EAASA,EAASK,UAAuB,IAAPlF,EAAgBA,EAAK,EAChHoF,EAAmF,QAA1EV,EAAKI,aAA2C,EAASA,EAASI,UAAuB,IAAPR,EAAgBA,EAAK,EACtH,GAAIS,EAAQC,EACR,OAAQ,EAEZ,GAAID,EAAQC,EACR,OAAO,CAEf,CACA,OAAoF,QAA9ET,EAAKG,aAA2C,EAASA,EAASC,cAA2B,IAAPJ,EAAgBA,EAAK,IAAqF,QAA9EC,EAAKC,aAA2C,EAASA,EAASE,cAA2B,IAAPH,EAAgBA,EAAK,IACvN,EAEL,CACX,CACA,SAAS5D,EAAcmC,GACnB,OAAO,EAAIvC,EAAYyE,WAAWpE,EAAUkC,EAAKmC,cAAgBnC,EACrE,wBCpEA,MAAMoC,EAAQ,CAAC,EAEf,SAASC,EAAgBC,EAAMC,EAASC,GACjCA,IACHA,EAAOC,OAWT,MAAMC,UAAkBF,EACtB,WAAAG,CAAaC,EAAMC,EAAMC,GACvBC,MAVJ,SAAqBH,EAAMC,EAAMC,GAC/B,MAAuB,iBAAZP,EACFA,EAEAA,EAAQK,EAAMC,EAAMC,EAE/B,CAIUE,CAAWJ,EAAMC,EAAMC,GAC/B,EAGFJ,EAAU/H,UAAUT,KAAOsI,EAAKtI,KAChCwI,EAAU/H,UAAU2H,KAAOA,EAE3BF,EAAME,GAAQI,CAChB,CAGA,SAASO,EAAMC,EAAUC,GACvB,GAAI3E,MAAM4E,QAAQF,GAAW,CAC3B,MAAMG,EAAMH,EAAStB,OAErB,OADAsB,EAAWA,EAAShF,KAAK6D,GAAMuB,OAAOvB,KAClCsB,EAAM,EACD,UAAUF,KAASD,EAASK,MAAM,EAAGF,EAAM,GAAG/E,KAAK,aACnD4E,EAASG,EAAM,GACL,IAARA,EACF,UAAUF,KAASD,EAAS,SAASA,EAAS,KAE9C,MAAMC,KAASD,EAAS,IAEnC,CACE,MAAO,MAAMC,KAASG,OAAOJ,IAEjC,CA4BAb,EAAgB,yBAAyB,SAAUnI,EAAMF,GACvD,MAAO,cAAgBA,EAAQ,4BAA8BE,EAAO,GACtE,GAAG6G,WACHsB,EAAgB,wBAAwB,SAAUnI,EAAMgJ,EAAUM,GAEhE,IAAIC,EA9BN,IAAyBC,EAsCvB,IAAIC,EACJ,GARwB,iBAAbT,IA/BYQ,EA+BkC,OAAVR,EA9BrCU,OAAyB,EAAUF,KAAmBA,IA+B9DD,EAAa,cACbP,EAAWA,EAASW,QAAQ,QAAS,KAErCJ,EAAa,UA9BjB,SAAkBK,EAAKJ,EAAQK,GAI9B,YAHiBzD,IAAbyD,GAA0BA,EAAWD,EAAIlC,UAC5CmC,EAAWD,EAAIlC,QAETkC,EAAIE,UAAUD,EAAWL,EAAeK,KAAcL,CAC9D,CA6BMO,CAAS/J,EAAM,aAEjByJ,EAAM,OAAOzJ,KAAQuJ,KAAcR,EAAMC,EAAU,cAC9C,CAELS,EAAM,QAAQzJ,MA9BK,iBAAVgK,IACTA,EAAQ,GAGNA,EAAQR,GALII,EA8BQ5J,GAzBQ0H,SAGS,IAAhCkC,EAAIK,QAsBiB,IAtBDD,GAsBqB,WAAb,cACJT,KAAcR,EAAMC,EAAU,SAC/D,CAhCF,IAAkBY,EAAaI,EAmC7B,OADAP,GAAO,0BAA0BH,EAC1BG,CACT,GAAG5C,WACHsB,EAAgB,4BAA6B,2BAC7CA,EAAgB,8BAA8B,SAAUnI,GACtD,MAAO,OAASA,EAAO,4BACzB,IACAmI,EAAgB,6BAA8B,mBAC9CA,EAAgB,wBAAwB,SAAUnI,GAChD,MAAO,eAAiBA,EAAO,+BACjC,IACAmI,EAAgB,wBAAyB,kCACzCA,EAAgB,yBAA0B,6BAC1CA,EAAgB,6BAA8B,mBAC9CA,EAAgB,yBAA0B,sCAAuCtB,WACjFsB,EAAgB,wBAAwB,SAAU+B,GAChD,MAAO,qBAAuBA,CAChC,GAAGrD,WACHsB,EAAgB,qCAAsC,oCAEtD/F,EAAOvC,QAAQ,EAAQqI,8BCjHvBvI,OAAOC,eAAeC,EAAS,aAAc,CACzCC,OAAO,IAEXD,EAAA,QAsEA,SAAkBsK,GACd,OAAI,EAAIC,EAAWC,SAASF,GACjB,YAAavI,GAChB,MAAM0I,EAAW1I,EAAK2I,MAEtB,OAAOC,EADSL,EAAKM,MAAMpK,KAAMuB,GACH0I,EAClC,GAGG,EAAII,EAAgBC,UAAS,SAAU/I,EAAM0I,GAChD,IAAIM,EACJ,IACIA,EAAST,EAAKM,MAAMpK,KAAMuB,EAC9B,CAAE,MAAOsE,GACL,OAAOoE,EAASpE,EACpB,CAEA,GAAI0E,GAAiC,mBAAhBA,EAAO/I,KACxB,OAAO2I,EAAcI,EAAQN,GAE7BA,EAAS,KAAMM,EAEvB,GACJ,EA3FA,IAEIF,EAAkBG,EAFD,EAAQ,MAMzBC,EAAiBD,EAFD,EAAQ,OAIxBT,EAAa,EAAQ,MAEzB,SAASS,EAAuB3I,GAAO,OAAOA,GAAOA,EAAI6I,WAAa7I,EAAM,CAAEyI,QAASzI,EAAO,CAmF9F,SAASsI,EAAcQ,EAASV,GAC5B,OAAOU,EAAQnJ,MAAK/B,IAChBmL,EAAeX,EAAU,KAAMxK,EAAM,IACtCoL,IACCD,EAAeX,EAAUY,IAAQA,aAAe3C,OAAS2C,EAAI7C,SAAW6C,EAAM,IAAI3C,MAAM2C,GAAK,GAErG,CAEA,SAASD,EAAeX,EAAUnE,EAAOrG,GACrC,IACIwK,EAASnE,EAAOrG,EACpB,CAAE,MAAOoL,IACL,EAAIJ,EAAeH,UAASzE,IACxB,MAAMA,CAAC,GACRgF,EACP,CACJ,CACA9I,EAAOvC,QAAUA,EAAQ8K,8BClEzB,SAASQ,EAAoBC,EAAMF,GACjCG,EAAYD,EAAMF,GAClBI,EAAYF,EACd,CACA,SAASE,EAAYF,GACfA,EAAKG,iBAAmBH,EAAKG,eAAeC,WAC5CJ,EAAKK,iBAAmBL,EAAKK,eAAeD,WAChDJ,EAAKM,KAAK,QACZ,CAkBA,SAASL,EAAYD,EAAMF,GACzBE,EAAKM,KAAK,QAASR,EACrB,CAYA9I,EAAOvC,QAAU,CACf8L,QAzFF,SAAiBT,EAAKU,GACpB,IAAIC,EAAQxL,KACRyL,EAAoBzL,KAAKoL,gBAAkBpL,KAAKoL,eAAeM,UAC/DC,EAAoB3L,KAAKkL,gBAAkBlL,KAAKkL,eAAeQ,UACnE,OAAID,GAAqBE,GACnBJ,EACFA,EAAGV,GACMA,IACJ7K,KAAKkL,eAEElL,KAAKkL,eAAeU,eAC9B5L,KAAKkL,eAAeU,cAAe,EACnC7I,QAAQ8I,SAASb,EAAahL,KAAM6K,IAHpC9H,QAAQ8I,SAASb,EAAahL,KAAM6K,IAMjC7K,OAMLA,KAAKoL,iBACPpL,KAAKoL,eAAeM,WAAY,GAI9B1L,KAAKkL,iBACPlL,KAAKkL,eAAeQ,WAAY,GAElC1L,KAAK8L,SAASjB,GAAO,MAAM,SAAUA,IAC9BU,GAAMV,EACJW,EAAMN,eAECM,EAAMN,eAAeU,aAI/B7I,QAAQ8I,SAASZ,EAAaO,IAH9BA,EAAMN,eAAeU,cAAe,EACpC7I,QAAQ8I,SAASf,EAAqBU,EAAOX,IAH7C9H,QAAQ8I,SAASf,EAAqBU,EAAOX,GAOtCU,GACTxI,QAAQ8I,SAASZ,EAAaO,GAC9BD,EAAGV,IAEH9H,QAAQ8I,SAASZ,EAAaO,EAElC,IACOxL,KACT,EA2CE+L,UAjCF,WACM/L,KAAKoL,iBACPpL,KAAKoL,eAAeM,WAAY,EAChC1L,KAAKoL,eAAeY,SAAU,EAC9BhM,KAAKoL,eAAea,OAAQ,EAC5BjM,KAAKoL,eAAec,YAAa,GAE/BlM,KAAKkL,iBACPlL,KAAKkL,eAAeQ,WAAY,EAChC1L,KAAKkL,eAAee,OAAQ,EAC5BjM,KAAKkL,eAAeiB,QAAS,EAC7BnM,KAAKkL,eAAekB,aAAc,EAClCpM,KAAKkL,eAAemB,aAAc,EAClCrM,KAAKkL,eAAeoB,UAAW,EAC/BtM,KAAKkL,eAAeU,cAAe,EAEvC,EAkBEW,eAdF,SAAwBC,EAAQ3B,GAO9B,IAAI4B,EAASD,EAAOpB,eAChBsB,EAASF,EAAOtB,eAChBuB,GAAUA,EAAOE,aAAeD,GAAUA,EAAOC,YAAaH,EAAOlB,QAAQT,GAAU2B,EAAOnB,KAAK,QAASR,EAClH,+BCjFA,MAAM+B,EAAK,EAAQ,KACbC,EAAe,EAAQ,MACvBC,EAAQ,EAAQ,KAAR,CAA6B,qBACrCC,EAAO,EAAQ,MACfC,EAAa,EAAQ,MACrBC,EAAkB,EAAQ,MAMhClL,EAAOvC,QAAU,MAKf,WAAA4I,CAAY8E,GACV,IAAKA,EACH,MAAM,IAAIhF,MAAM,2CAGlBlI,KAAKkN,OAASA,EACdlN,KAAKmN,SAAW,IAAIC,GACtB,CAOA,MAAAC,IAAU9L,GACRA,EAAKlB,SAAQwJ,IACX,GAAI5F,MAAM4E,QAAQgB,GAChB,OAAOA,EAAIxJ,SAAQiN,GAAWtN,KAAKuN,YAAYD,KAGjDtN,KAAKuN,YAAY1D,EAAI,IAGlB7J,KAAKwN,UACRxN,KAAKwN,QAAUxN,KAAKyN,mBAAmB/L,KAAK1B,MAC5C+C,QAAQ2K,GAAG,oBAAqB1N,KAAKwN,SAEzC,CAOA,QAAAG,GACM3N,KAAKwN,UACPzK,QAAQ6K,eAAe,oBAAqB5N,KAAKwN,SACjDxN,KAAKwN,SAAU,EAEfvJ,MAAM4J,KAAK7N,KAAKmN,SAASW,UACtBzN,SAAQ0N,GAAW/N,KAAKkN,OAAOc,OAAOD,KAE7C,CAOA,UAAAE,CAAWpD,GACT,IAAI7C,EAAU,KAKd,OAJI6C,IACF7C,EAAyB,iBAAR6C,EAAmBA,EAAMA,EAAI7C,SAGzC,CACLlC,MAAO+E,EAEPqD,MAAO,QACPlG,QAAS,CACP,sBAAuBA,GAAW,uBAClC6C,GAAOA,EAAIsD,OAAS,oBACpBpK,KAAK,MACPoK,MAAOtD,GAAOA,EAAIsD,MAClBC,WAAW,EACXC,MAAM,IAAIC,MAAOzJ,WACjB9B,QAAS/C,KAAKuO,iBACd3B,GAAI5M,KAAKwO,YACTC,MAAOzO,KAAK0O,SAAS7D,GAEzB,CAMA,cAAA0D,GACE,MAAO,CACLI,IAAK5L,QAAQ4L,IACbC,IAAK7L,QAAQ8L,OAAS9L,QAAQ8L,SAAW,KACzCC,IAAK/L,QAAQgM,OAAShM,QAAQgM,SAAW,KACzCC,IAAKjM,QAAQiM,MACbC,SAAUlM,QAAQkM,SAClB1I,QAASxD,QAAQwD,QACjB2I,KAAMnM,QAAQmM,KACdC,YAAapM,QAAQoM,cAEzB,CAMA,SAAAX,GACE,MAAO,CACLY,QAASxC,EAAGwC,UACZC,OAAQzC,EAAGyC,SAEf,CAOA,QAAAX,CAAS7D,GAEP,OADcA,EAAMmC,EAAWsC,MAAMzE,GAAOmC,EAAWrM,OAC1CgD,KAAI4L,IACR,CACLC,OAAQD,EAAKE,kBACbC,KAAMH,EAAKI,cACXC,SAAUL,EAAKM,kBACfC,KAAMP,EAAKQ,gBACXC,OAAQT,EAAKU,gBACbC,OAAQX,EAAKY,cAGnB,CAOA,WAAA5C,CAAYD,GACV,IAAKtN,KAAKmN,SAASiD,IAAI9C,GAAU,CAC/BA,EAAQ+C,kBAAmB,EAC3B,MAAMtC,EAAU,IAAId,EAAgBK,GACpCtN,KAAKmN,SAAS7L,IAAIgM,EAASS,GAC3B/N,KAAKkN,OAAOoD,KAAKvC,EACnB,CACF,CASA,kBAAAN,CAAmB5C,GACjB,MAAM0F,EAAOvQ,KAAKiO,WAAWpD,GACvBsC,EAAWnN,KAAKwQ,wBAEtB,IAGIC,EAHAC,EAA4C,mBAA5B1Q,KAAKkN,OAAOyD,YAC5B3Q,KAAKkN,OAAOyD,YAAY9F,GACxB7K,KAAKkN,OAAOyD,YAWhB,SAASC,IACP9D,EAAM,SAAU4D,GAChB5D,EAAM,mBAAoB/J,QAAQ8N,UAE9BH,IAAW3N,QAAQ8N,WAGjBJ,GACFK,aAAaL,GAGf1N,QAAQgO,KAAK,GAEjB,CAEA,IAvBK5D,EAAS9F,QAAUqJ,IAEtBM,QAAQC,KAAK,mEAEbD,QAAQC,KAAK,iCACbP,GAAS,IAkBNvD,GAAgC,IAApBA,EAAS9F,OACxB,OAAOtE,QAAQ8I,SAAS+E,GAI1B/D,EAAaM,GAAU,CAACG,EAAS4D,KAC/B,MAAMC,EAAOpE,EAAKmE,GACZE,EAAY9D,EAAQ8D,WAAa9D,EAGvC,SAAS+D,EAAOC,GACd,MAAO,KACLxE,EAAMwE,GACNH,GAAM,CAEV,CAEAC,EAAUG,SAAU,EACpBH,EAAUrE,KAAK,SAAUsE,EAAO,aAChCD,EAAUrE,KAAK,QAASsE,EAAO,SAAS,IACvC,IAAMX,GAAUE,MAEnB5Q,KAAKkN,OAAOsE,IAAIjB,GAIZG,IACFD,EAAUgB,WAAWb,EAAc,KAEvC,CAQA,qBAAAJ,GAKE,OAAOxQ,KAAKkN,OAAOwE,WAAWC,QAAOC,IACjBA,EAAKR,WAAaQ,GACnBvB,kBAErB,+BC1OF,MAAMwB,EAAU,EAAQ,OAClB,KAAEZ,GAAS,EAAQ,MAMzBzR,EAAQ+G,QAAU,EAAlB,cAKA/G,EAAQkS,WAAa,EAArB,MAKAlS,EAAQsS,OAAS,EAAjB,MAKAtS,EAAQuS,UAAYF,EAAQG,OAK5BxS,EAAQyS,OAASJ,EAAQI,OAKzBzS,EAAQ0S,aAAe,EAAvB,MAKA1S,EAAQ2S,OAAS,EAAjB,MAKA3S,EAAQ4S,iBAAmB,EAA3B,KAKA5S,EAAQ6S,iBAAmB,EAA3B,MAKA7S,EAAQ8S,UAAY,EAApB,MAKA9S,EAAQ+S,UAAY,EAApB,MAYA/S,EAAQgT,QAAU,IAAIhT,EAAQ8S,UAU9B,MAAMG,EAAgBjT,EAAQ0S,eAG9B5S,OAAOoT,KAAKlT,EAAQsS,OAAOa,IAAIX,QAC5BY,OAAO,CACN,MACA,QACA,SACA,MACA,SACA,QACA,UACA,aACA,mBACA,qBACA,mBACA,qBACA,YACA,UAEDvS,SACC2P,GAAWxQ,EAAQwQ,GAAU,IAAIzO,IAASkR,EAAczC,MAAWzO,KAQvEjC,OAAOC,eAAeC,EAAS,QAA/B,CACEmB,IAAG,IACM8R,EAAcvE,MAEvB,GAAA5M,CAAIuR,GACFJ,EAAcvE,MAAQ2E,CACxB,IAQFvT,OAAOC,eAAeC,EAAS,aAA/B,CACEmB,IAAG,IACM8R,EAAcK,aASzBxT,OAAOC,eAAeC,EAAS,aAA/B,CACEmB,IAAG,IACM8R,EAAcM,aASzB,CAAC,eAAe1S,SAAQQ,IACtBvB,OAAOC,eAAeC,EAASqB,EAAM,CACnCF,IAAG,IACM8R,EAAc5R,GAEvB,GAAAS,CAAIuR,GACFJ,EAAc5R,GAAQgS,CACxB,GACA,IAOJvT,OAAOC,eAAeC,EAAS,UAA/B,CACEmB,IAAG,KACM,CACLqS,kBAAmBP,EAAcO,kBACjCC,kBAAmBR,EAAcQ,kBACjCvB,WAAYe,EAAcf,eAOhCT,EAAKiC,WAAW1T,EAAS,aACzByR,EAAKkC,aAAa3T,EAAS,YAAa,CAAC,QACzCyR,EAAKmC,cAAc5T,EAAS,YAAa,CAAC,YAAa,gBACvDyR,EAAKkC,aAAa3T,EAAS,aAAc,CACvC,cACA,YACA,QACA,WAEFyR,EAAKmC,cAAc5T,EAAS,aAAc,CAAC,WAAY,0CChLvDA,EAAQwS,OAAS,CACfqB,MAAO,EACPC,MAAO,EACPC,KAAM,EACNzN,MAAO,EACP0N,QAAS,EACTC,OAAQ,EACRlD,KAAM,EACNzD,MAAO,GAOTtN,EAAQkU,OAAS,CACfL,MAAO,MACPC,MAAO,SACPC,KAAM,MACNzN,MAAO,MACP0N,QAAS,MACTC,OAAQ,SACRlD,KAAM,QACNzD,MAAO,kCCpCmGtN,EAAQ,QAAqD,EAgBzK,MAAMmU,EAAQ,WAAAvL,CAAYwL,GAAO5T,KAAK4T,MAAMA,EAAM5T,KAAK6T,EAAE,EAAE7T,KAAKuK,OAAO,CAAC9K,MAAM,KAAK0R,MAAK,EAAO,CAC/F,CAAC2C,OAAOC,YAAY,OAAO/T,IAAK,CAChC,IAAAkR,GAAO,MAAK,MAAC0C,EAAK,OAACrJ,GAAQvK,KAAK,GAAGA,KAAK6T,EAAE,EAA2C,OAAxCtJ,EAAO4G,MAAK,EAAK5G,EAAO9K,WAAMsG,EAAiBwE,EAC5F,MAAMsJ,EAnB0K,SAAuBD,EAAMC,GAAG,MAAK,EAAC1N,EAAC,GAAC6N,EAAE,WAACC,GAAYL,EAAM,IAAG,EAACpM,EAAC,EAAC0M,EAAC,EAACC,EAAC,EAACC,EAAC,EAACC,EAAC,UAACC,GAAWV,EAAM,OAAQ,OAAOC,GAAG,KAAK,EAAGU,EAAQ,KAAML,EAAE,GAAGE,EAAE,GAAE,CAACjO,EAAEqO,KAAK,EAAE,EAAE,EAAEH,GAAG,MAAMI,EAAEP,EAAEE,EAAQM,EAAER,EAAEE,EAAQO,EAAS,EAAFD,EAAUE,EAAQpN,EAAE0M,EAAE,EAAQW,EAAQV,EAAEC,EAAE,EAAQU,GAAMJ,EAAEC,GAAQ,EAAE,IAAII,EAAEC,EAAO,IAAI,IAAIC,EAAE,EAAEA,GAAGH,EAAKG,IAAI,CAAC,MAAMC,EAAK,EAAE5N,KAAK6N,IAAI,EAAEF,EAAEb,GAAGa,EAAQG,EAAKH,EAAE,EAAE3N,KAAK6N,IAAI,EAAEF,EAAEf,GAAG,IAAI,IAAImB,EAAEH,EAAKG,GAAGD,EAAKC,GAAG,EAAE,CAAC,MAAMC,EAAInP,EAAEkP,EAAE,EAAEhB,EAAE/M,KAAKiO,OAAOF,EAAE,GAAGhB,IAAUmB,EAAIrP,EAAEkP,EAAE,EAAEhB,EAAE/M,KAAKiO,OAAOF,EAAE,GAAGhB,IAAUoB,EAAGJ,KAAKJ,GAAII,IAAIJ,GAAGK,EAAIE,EAAMA,EAAIF,EAAI,EAAQI,EAAED,EAAEJ,EAAE,IAAIM,EAAEF,EAAMG,EAAEF,EAAE,KAAMC,EAAEzB,GAAG0B,EAAExB,GAAGJ,EAAGxM,EAAEmO,EAAExB,EAAEyB,IACxuBD,IAAIC,IAA6B,GAAzBzP,EAAEkP,EAAEhB,EAAE/M,KAAKiO,MAAMF,EAAEhB,IAAIsB,EAAc,IAAThB,IAAaI,EAAEN,EAAEY,IAAI,EAAEJ,GAAGF,EAAEE,GAAGU,EAAExP,EAAEkO,EAAEU,EAAEV,EAAE/M,KAAKiO,MAAMR,EAAEV,KAAKH,EAAE,CAAC,GAAGe,EAAE,GAAGU,IAAIF,EAAE,CAACxB,EAAWK,KAAa9M,EAAEmO,EAAE1B,EAAWK,KAAaJ,EAAEyB,EAAE1B,EAAWK,KAAaH,EAAEyB,EAAE3B,EAAWK,KAAaF,EAAEwB,EAAE1B,EAAEuB,EAAErB,EAAEsB,EAAErB,EAAE,GAAG/M,KAAKC,IAAI2M,EAAEE,GAAG,GAAG,SAASG,CAAQ,CAEhR,MAAMS,CAAO,CAAC,CACd,IAAI,IAAIK,EAAEH,EAAKG,GAAGD,EAAKC,GAAG,EAAE,CAAC,MAAMQ,EAAI1P,EAAEkO,EAAEgB,EAAE,EAAEhB,EAAE/M,KAAKiO,OAAOF,EAAE,GAAGhB,IAAUyB,EAAI3P,EAAEkO,EAAEgB,EAAE,EAAEhB,EAAE/M,KAAKiO,OAAOF,EAAE,GAAGhB,IAAUoB,EAAGJ,KAAKJ,GAAII,IAAIJ,GAAGY,EAAIC,EAAMA,EAAID,EAAI,EAAQH,EAAED,EAAEJ,EAAE,IAAIM,EAAEF,EAAMG,EAAEF,EAAE,KAAMC,EAAEzB,GAAG0B,EAAExB,GAAGJ,EAAGY,EAAQe,EAAEd,EAAQe,IAC7ND,IAAIC,IAA+B,GAA3BzP,EAAEkO,EAAEgB,EAAEhB,EAAE/M,KAAKiO,MAAMF,EAAEhB,IAAIsB,EAAc,IAAThB,IAAaI,EAAEN,EAAEY,KAAKJ,GAAGF,GAAGE,GAAGU,EAAExP,EAAE4O,EAAEV,EAAE/M,KAAKiO,MAAMR,EAAEV,KAAKH,EAAE,CAAC,GAAGe,EAAE,GAAGU,IAAIF,EAAE,CAACxB,EAAWK,KAAa9M,EAAE0M,EAAEuB,EAAExB,EAAWK,KAAamB,EAAExB,EAAWK,KAAaH,EAAEC,EAAEsB,EAAEzB,EAAWK,KAAaoB,EAAExB,GAAIyB,EAAEvB,GAAIwB,EAAEvB,EAAE,GAAG/M,KAAKC,IAAI2M,EAAEE,GAAG,GAAG,SAASG,CAAQ,CAEpR,MAAMS,CAAO,CAAC,CAAC,CACf,GAAGd,IAAIE,EAAP,CACYA,EAAEF,GAAG1M,GAAG0M,EAAEC,GAAGD,EAAEE,GAAGF,EAAEA,EAAE,IAC7B1M,GAAG4M,EAAED,GAAGC,EAAEF,GAAGE,EAAEA,EAAE,GACtB,KAFQ,CAEF,CACN,GAAGF,EAAEE,IAAI,EAAG,GAAGR,EAAMmC,MAAMvO,GAAGoM,EAAMoC,MAAM7B,EAAGP,EAAMmC,IAAIvO,EAAE0M,EAAEN,EAAMoC,IAAI7B,EAAEC,MACnE,CAAC,MAAM6B,EAAGrC,EAAMsC,IAAwI,GAApItC,EAAMuC,IAAIvC,EAAMsC,IAAItC,EAAMwC,IAAIxC,EAAMmC,IAAInC,EAAMyC,IAAIzC,EAAM0C,IAAI1C,EAAM2C,IAAI3C,EAAMoC,IAAIpC,EAAMsC,IAAI1O,EAAEoM,EAAMmC,IAAIvO,EAAE0M,EAAEN,EAAM0C,IAAInC,EAAEP,EAAMoC,IAAI7B,EAAEC,EAAK6B,GAAI,EAA+E,OAA5ErC,EAAMpM,EAAEA,EAAEoM,EAAMM,EAAEA,EAAEN,EAAMO,EAAEA,EAAEP,EAAMQ,EAAEA,EAAER,EAAMS,EAAEA,EAAET,EAAMU,UAAUA,EAAiB,CAAG,CAC5P,KAAK,EAAG,GAAe,IAAZA,EACX,OAAO,EAAEF,EAAEH,IAAaK,GAAWH,EAAEF,IAAaK,GAAWJ,EAAED,IAAaK,GAAW9M,EAAEyM,IAAaK,GAAWD,EAAE,GAAG/M,KAAKC,IAAI2M,EAAEE,GAAG,GAAGP,EAAE,EAAK,CAItI2C,CAAc5C,EAAM5T,KAAK6T,GAAY,OAAT7T,KAAK6T,EAAEA,EAAS,IAAJA,GAAOtJ,EAAO9K,MAAM,CAACmU,EAAMuC,IAAIvC,EAAMwC,IAAIxC,EAAMyC,IAAIzC,EAAM2C,KAAYhM,GAClHqJ,EAAMsC,KAAK,GAAG3L,EAAO9K,MAAM,CAACmU,EAAMsC,IAAItC,EAAMmC,IAAInC,EAAM0C,IAAI1C,EAAMoC,KAAYzL,IAC/EA,EAAO4G,MAAK,EAAK5G,EAAO9K,WAAMsG,EAAiBwE,EAAO,EAE1B,SAASkM,EAAKC,EAAGC,EAAG3C,GAAI,IAAIxM,EAAE0M,EAAEE,GAAG,CAAC,EAAEsC,EAAGrP,OAAOsP,EAAGtP,QAAQ,GAAe,mBAAL2M,EAAgB,CAAC,KAAMxM,EAAE0M,GAAG1M,EAAE4M,GAAGJ,EAAGxM,EAAEA,IACvIA,IAAI,GAAGA,IAAI0M,GAAG1M,IAAI4M,EAClB,MAAM,GAAGN,OAAOC,YAAY,KAAMC,IAAKE,IAAIE,IAAIF,EAAE1M,GAAG4M,EAAE5M,IAAG,KACrD,CAAC,KAAMA,EAAE0M,GAAG1M,EAAE4M,GAAGsC,EAAGlP,KAAKmP,EAAGnP,IAChCA,IAAI,GAAGA,IAAI0M,GAAG1M,IAAI4M,EAClB,MAAM,GAAGN,OAAOC,YAAY,KAAM2C,IAAKxC,KAAKyC,IAAKvC,IAAIF,EAAE1M,GAAG4M,EAAE5M,IAAGwM,EAAG,CAACxM,EAAE2M,IAAIuC,EAAGlP,KAAKmP,EAAGxC,EAAG,CACvF,OAPA,SAAmB3M,EAAE0M,EAAEC,EAAEC,EAAEJ,GAAI,MAAMK,EAAoB,GAAjB/M,KAAKC,IAAI2M,EAAEE,GAAG,GAAWM,EAAER,EAAEE,EAAQjO,EAAE,IAAIuO,EAAE,IAAIkC,WAAWlC,EAAE,MAAMmC,YAAYC,aAAa,EAAEzC,GAAG,OAAO,IAAIV,EAAQ,CAACnM,IAAE0M,IAAEC,IAAEC,IAAEC,IAAElO,IAAE6N,KAAGkC,KAAK,EAAEH,KAAK,EAAEO,KAAK,EAAEN,KAAK,EAAEG,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAEE,KAAK,EAAEjC,UAAU,EAAEL,WAAW,IAAM,CAO3P8C,CAAUvP,EAAE0M,EAAE,EAAE1M,EAAEA,EAAE4M,EAAE,EAAE5M,EAAEwM,EAAI,CAEpCF,OAAOC,SAORvU,EAAQ,GADQ,UAAmBkX,EAAGC,EAAG3C,GAAI,MAAMhL,EAAMgO,YAAYC,OAAOP,GAAIE,WAAWxW,UAAU8W,SAASR,EAAG1N,MAAM,IAAI,MAAM0M,KAAKe,EAAKC,EAAGC,EAAG3C,GAAK0B,EAAE,GAAG1M,EAAMhI,KAAK2V,EAAGjB,EAAE,GAAGA,EAAE,UAAUA,CAAG,4BCnC7LpW,OAAOC,eAAeC,EAAS,aAAc,CACzCC,OAAO,IAGXD,EAAA,QAAkB,SAAU2X,GACxB,OAAO,YAAa5V,GAChB,IAAI0I,EAAW1I,EAAK2I,MACpB,OAAOiN,EAAGnW,KAAKhB,KAAMuB,EAAM0I,EAC/B,CACJ,EAEAlI,EAAOvC,QAAUA,EAAQ8K,iBCbzBvI,EAAgB,QAAI,SAAS2R,GAC3B,IAAI0D,EAAY,CAAC,YAAa,UAAW,OAAQ,SAAU,MAAO,QAChE,OAAQ,QAAS,OAAQ,UAAW,eAAgB,YACpD,cAAe,aAAc,cAAe,aAAc,iBAC5D,OAAO,SAASC,EAAQ7P,EAAG8P,GACzB,MAAkB,MAAXD,EAAiBA,EACtB3D,EACI0D,EAAU9P,KAAKiQ,MAAMjQ,KAAKkQ,UAAYJ,EAAU/P,OAAS,MAC3DgQ,EACN,CACF,wBCVAtV,EAAOvC,QAAUwC,QAAQ,kCCGzB,MAAMiQ,EAAS,EAAQ,OACjB,QAAEwF,GAAY,EAAQ,MACtBC,EAAgB,EAAQ,MAY9B3V,EAAOvC,QAAUyS,GAAO1B,IACtB,MAAMoH,EAAkBD,EAAcpY,OAAOsY,OAAO,CAAC,EAAGrH,EAAM,CAC5DrC,WAAOnI,EACPiC,aAASjC,EACT8R,WAAO9R,KAGH+R,EAAUvH,EAAKuH,SAAWvH,EAAKuH,QAAQvH,EAAKrC,QAAU,GAO5D,OALEqC,EAAKkH,GADiB,OAApBE,EACc,GAAGpH,EAAKrC,SAAS4J,KAAWvH,EAAKvI,WAAW2P,IAE5C,GAAGpH,EAAKrC,SAAS4J,KAAWvH,EAAKvI,UAG5CuI,CAAI,8BC7BbjR,OAAOC,eAAeC,EAAS,aAAc,CACzCC,OAAO,IAGXD,EAAA,QAAkB,SAAUuY,GACxB,OAAOA,EAAKjE,OAAOC,WAAagE,EAAKjE,OAAOC,WAChD,EAEAhS,EAAOvC,QAAUA,EAAQ8K,wFCKzB,MAAM0N,EAAiC,UAArBjV,QAAQsD,SAsJbyL,EAAS,IAhJf,MAAP,cACY,KAAAmG,YAA4B,GACnB,KAAAC,KAAO,KAEP,KAAAC,sBAAwB,CACrC,6BACA,cACA,eACA,qBACA,cACA,SACA,kBACA,4BACA,2BACA,2BACA,+BACA,8BACA,8BACA,mBACFxU,KAAKkQ,GAAM,GAAG7T,KAAKkY,QAAQrE,KA2HjC,CAzHI,OAAAuE,IACI,QAAWpY,KAAKiY,YACpB,CAEO,IAAAI,GACHrY,KAAKsY,yBACL,EAAAC,UAAUC,yBAAyBxY,KAAKsY,uBAAwBtY,KAAMA,KAAKiY,YAC/E,CAEQ,sBAAAK,CAAuBzS,GAC3B7F,KAAKyY,IAAM,EAAAF,UAAUG,iBAAiB1Y,KAAKkY,MAC3C,KAAc5W,IAAI,gCAAiCtB,KAAK2Y,wBACxD,MAAMC,EAAqB5Y,KAAK4Y,mBAC1BC,EAAqB7Y,KAAK6Y,mBAMhC,GALA,KAAUxY,SAASgV,IACf,KAAc/T,IAAI,yBAAyB+T,IAAKuD,EAAmBtU,SAAS+Q,IAC5E,KAAc/T,IAAI,yBAAyB+T,IAAKwD,EAAmBvU,SAAS+Q,GAAG,KAG9ExP,EAAG,OACR,MAAMiT,EAAiB9Y,KAAKmY,sBAAsBY,MAAMlF,GAAMhO,EAAEmT,qBAAqBnF,KAChFiF,GAEL,EAAAG,OACKC,uBAAuB,aAAaJ,sCAAoD,WACxFtX,MAAM/B,IACW,YAAVA,GACA,EAAA0Z,SAASC,eAAe,wBAC5B,GAEZ,CAEQ,wBAAAC,CAAyBC,GAE7B,IAAIjT,EAAWtD,QAAQsD,SAEvB,OADAA,EAAWrG,KAAKuZ,QAAuB,UAAblT,EAAuB,QAAUA,EACpDrG,KAAKyY,IAAI9X,IAAI,GAAG2Y,KAAiBjT,IAC5C,CAEQ,aAAAmT,SACJ,OAA6D,QAAtD,EAAAxZ,KAAKqZ,yBAAyB,gCAAwB,QAAI,MACrE,CAEQ,iBAAAI,GACJ,OAAOzZ,KAAKqZ,yBAAyB,qBACzC,CAEA,cAAIK,GACA,OAAO1Z,KAAKyY,IAAI9X,IAAI,6BACxB,CAEA,sBAAIiY,GACA,OAAO5Y,KAAKyY,IAAI9X,IAAc,wBAClC,CACA,sBAAIkY,GACA,OAAO7Y,KAAKyY,IAAI9X,IAAc,wBAClC,CACA,0BAAIgY,GACA,OAAO3Y,KAAKyY,IAAI9X,IAAc,yBAClC,CAEA,UAAI4Y,GAEA,OADY,EAAAI,WAAWC,aAAa,MACzBC,gBAAkB,EAAAC,cAAcC,WAAa/B,GAAahY,KAAKyY,IAAI9X,IAAI,UAAU,EAChG,CACA,mBAAIqZ,GACA,OAAOha,KAAKyY,IAAI9X,IAAI,kBAAmB,GAC3C,CACA,0BAAIsZ,GACA,OAAOja,KAAKyY,IAAI9X,IAAI,0BAA0B,EAClD,CACA,eAAIuZ,GACA,OAAOla,KAAKyY,IAAI9X,IAAI,cAAe,IACvC,CACA,uBAAIwZ,GACA,OAAOna,KAAKka,WAChB,CACA,8BAAIE,GACA,OAAOpa,KAAKyY,IAAI9X,IAAI,6BAA8B,EACtD,CACA,cAAI0Z,GACA,OAAOra,KAAKwZ,eAChB,CACA,kBAAIc,SACA,OAA+B,QAAxB,EAAAta,KAAKyZ,2BAAmB,QAAI,EACvC,CACA,SAAIc,GACA,OAAOva,KAAKyY,IAAI9X,IAAI,eAAe,EACvC,CACA,gBAAI6Z,GACA,OAAOxa,KAAKyY,IAAI9X,IAAI,eAAgB,GACxC,CACA,WAAI8Z,GACA,OAAOza,KAAKyY,IAAI9X,IAAI,UAAW,GACnC,CACA,mBAAI+Z,GACA,OAAO1a,KAAKyY,IAAI9X,IAAI,sBAAsB,EAC9C,CACA,uBAAIga,GACA,OAAO3a,KAAKyY,IAAI9X,IAAI,sBAAuB,IAC/C,CAEA,+BAAIia,GACA,OAAO5a,KAAKyY,IAAI9X,IAAI,8BAA+B,GACvD,CACA,8BAAIka,GACA,OAAO7a,KAAKyY,IAAI9X,IAAI,6BAA8B,IACtD,CACA,yBAAIma,GACA,OAA2C,IAApC9a,KAAK6a,0BAChB,CAEA,oBAAIE,GACA,OAAO/a,KAAKyY,IAAI9X,IAAI,mBAAoB,IAC5C,CACA,iBAAIqa,GACA,OAAOhb,KAAKyY,IAAI9X,IAAI,gBAAiB,CAAC,EAC1C,CACA,gCAAIsa,GACA,OAAOjb,KAAKyY,IAAI9X,IAAI,+BAAgC,GACxD,gCChKJ,MAAMsR,EAAS,EAAQ,OACjB,QAAEwF,GAAY,EAAQ,MACtByD,EAAY,EAAQ,MAM1B,SAASC,EAAS7a,EAAKb,GAIrB,MAAqB,iBAAVA,EACFA,EAAMoF,WACRpF,CACT,CAQAsC,EAAOvC,QAAUyS,GAAO,CAAC1B,EAAM6K,KAC7B,MAAM1D,EAAgBwD,EAAUG,UAAUD,GAE1C,OADA7K,EAAKkH,GAAWC,EAAcnH,EAAM6K,EAAKD,UAAYA,EAAUC,EAAKE,OAC7D/K,CAAI,iCC1Bb,MAAMgL,EAAO,EAAQ,OACf,MAAEC,GAAU,EAAQ,MACpBC,EAAkB,EAAQ,MAU1BC,EAAwB3Z,EAAOvC,QAAU,SAA+Bmc,EAAU,CAAC,GAEvF,GADAF,EAAgBza,KAAKhB,KAAM2b,IACtBA,EAAQvK,WAA8C,mBAA1BuK,EAAQvK,UAAUI,IACjD,MAAM,IAAItJ,MAAM,2DAGlBlI,KAAKoR,UAAYuK,EAAQvK,UACzBpR,KAAKkO,MAAQlO,KAAKkO,OAASyN,EAAQvK,UAAUlD,MAC7ClO,KAAKqQ,iBAAmBrQ,KAAKqQ,kBAAoBsL,EAAQvK,UAAUf,iBAGnErQ,KAAK4b,cASA5b,KAAKoR,UAAUyK,iBAClB7b,KAAKoR,UAAUyK,eALjB,SAAwBhR,GACtB7K,KAAKqL,KAAK,QAASR,EAAK7K,KAAKoR,UAC/B,EAGiD1P,KAAK1B,MACpDA,KAAKoR,UAAU1D,GAAG,QAAS1N,KAAKoR,UAAUyK,gBAE9C,EAKAN,EAAKO,SAASJ,EAAuBD,GAUrCC,EAAsBtb,UAAU2b,OAAS,SAAgBxL,EAAMyL,EAAK/R,GAClE,GAAIjK,KAAKic,SAA8B,IAAnB1L,EAAKnC,YAAuBpO,KAAKqQ,iBACnD,OAAOpG,EAAS,QAKbjK,KAAKkO,OAASlO,KAAKgS,OAAOhS,KAAKkO,QAAUlO,KAAKgS,OAAOzB,EAAKiL,MAC7Dxb,KAAKoR,UAAUI,IAAIjB,EAAKiL,GAAQjL,EAAKvI,QAASuI,EAAMvQ,KAAKkc,MAG3DjS,EAAS,KACX,EAUAyR,EAAsBtb,UAAU+b,QAAU,SAAiBC,EAAQnS,GACjE,IAAK,IAAIzC,EAAI,EAAGA,EAAI4U,EAAO/U,OAAQG,IAC7BxH,KAAKqc,QAAQD,EAAO5U,MACtBxH,KAAKoR,UAAUI,IACb4K,EAAO5U,GAAG8U,MAAMd,GAChBY,EAAO5U,GAAG8U,MAAMtU,QAChBoU,EAAO5U,GAAG8U,MACVtc,KAAKkc,MAEPE,EAAO5U,GAAGyC,YAId,OAAOA,EAAS,KAClB,EAOAyR,EAAsBtb,UAAUwb,YAAc,WAE5C5K,QAAQlL,MAAM,CACZ,GAAG9F,KAAKoR,UAAUzR,2DAClB,mFACAoE,KAAK,MACT,EAOA2X,EAAsBtb,UAAUmc,MAAQ,WAClCvc,KAAKoR,UAAUmL,OACjBvc,KAAKoR,UAAUmL,QAGbvc,KAAKoR,UAAUyK,iBACjB7b,KAAKoR,UAAUxD,eAAe,QAAS5N,KAAKoR,UAAUyK,gBACtD7b,KAAKoR,UAAUyK,eAAiB,KAEpC,yBCpHA,MAAMW,EAAWhQ,GACL,OAAXA,GACkB,iBAAXA,GACgB,mBAAhBA,EAAO8D,KAEfkM,EAAShc,SAAWgM,GACnBgQ,EAAShQ,KACW,IAApBA,EAAOhM,UACkB,mBAAlBgM,EAAOuP,QACmB,iBAA1BvP,EAAOtB,eAEfsR,EAASC,SAAWjQ,GACnBgQ,EAAShQ,KACW,IAApBA,EAAOiQ,UACiB,mBAAjBjQ,EAAOkQ,OACmB,iBAA1BlQ,EAAOpB,eAEfoR,EAASG,OAASnQ,GACjBgQ,EAAShc,SAASgM,IAClBgQ,EAASC,SAASjQ,GAEnBgQ,EAASI,UAAYpQ,GACpBgQ,EAASG,OAAOnQ,IACa,mBAAtBA,EAAOqQ,WAEf9a,EAAOvC,QAAUgd,wHCqMV,MAAMtP,EAAS,IAhMf,MAAP,cACY,KAAA+K,YAA4B,GAC5B,KAAAzF,QAAgC,IAAIpF,GA4LhD,CA/KW,IAAAiL,CAAKyE,EAAkBC,GAAe,GACzC/c,KAAKgd,cAAgB,EAAA/D,OAAOgE,oBAAoB,GAAG,YAAiB,CAAEzL,KAAK,IAC3ExR,KAAKiY,YAAY1S,KACbvF,KAAKgd,cACLhd,KAAKgd,cAAcE,qBAAqBhP,GAAUlO,KAAKmd,kBAAkBjP,MAG7ElO,KAAKkO,MAAQlO,KAAKgd,cAAcI,SAChCpd,KAAK+c,aAAeA,EACpB/c,KAAK8c,SAAWA,EAChB9c,KAAKqd,cACT,CAEO,OAAAjF,IACH,QAAWpY,KAAKiY,YACpB,CAEQ,iBAAAkF,CAAkBjP,GACtBlO,KAAKkO,MAAQA,EACblO,KAAKqd,cACT,CAEQ,YAAAA,GACJ,GAAKrd,KAAK8c,UAOH,GAAI9c,KAAKkO,QAAU,WAAgBoP,MAAOtd,KAAKud,GAA/C,CAEA,GAAIvd,KAAKkO,QAAU,WAAgBoP,KAAOtd,KAAKud,GAGlD,OAFA,cAAavd,KAAKud,SAClBvd,KAAKud,QAAKxX,GAId,IACI/F,KAAKud,GAAK,aAAYvd,KAAK8c,SAAU,IACzC,CAAE,MAAOjS,GAEL,YADA,EAAAoO,OAAOuE,iBAAiB,4BAA4Bxd,KAAK8c,aAAajS,IAE1E,CAEA7K,KAAKiY,YAAY1S,KAAK,CAClB6S,QAAS,KACApY,KAAKud,IAIV,cAAavd,KAAKud,GAAG,GAf7B,OAXQvd,KAAKud,KACL,cAAavd,KAAKud,IAClBvd,KAAKud,QAAKxX,EA2BtB,CAEQ,GAAAyL,CAAItD,EAAwBuP,EAAeC,EAA6Bnc,WAC5E,MAAM6H,EAAM7H,EAAKoc,QAAO,CAACva,EAAGyQ,EAAGrM,KAC3B,GAAiB,iBAANqM,EACP,IACIA,GAAI,IAAA+J,SAAQ/J,GAAG,EAAO,GAAG,EAC7B,CAAE,SAEF,CAEJ,OAAOzQ,GAAKoE,EAAI,EAAI,IAAM,IAAMqM,CAAC,GAClC,IAEH,GAAI7T,KAAKud,IAAMvd,KAAK+c,aAAc,CAC9B,MAAMc,EAAS,IAvFhB,IAAIvP,MAAOwP,iBAuF0BL,MAAUrU,IAC9CpJ,KAAKud,IAAM,mBAAkBvd,KAAKud,GAAIM,EAAS,MAC/C7d,KAAK+c,cAAgB/L,QAAQ9C,IAAU,WAAgBhG,MAAQ,QAAU,OAAO2V,EACpF,CAIA,MAAME,EAAmC,QAAvB,IAAA9E,OAAO+E,wBAAgB,eAAEC,SACrCC,EAA0C,YAA1BH,aAAS,EAATA,EAAWI,IAAIC,UAA0C,QAAnB,EAAAL,aAAS,EAATA,EAAWM,gBAAQ,eAAEC,WAAW,YAC5F,GAAIZ,GAAsB1d,KAAKgd,eAAiBe,IAAcG,EAAe,CACzE,MAAMK,EAAU,GAAGd,MAAUrU,IAC7B,OAAQ8E,GACJ,KAAK,WAAgBhG,MACjBlI,KAAKgd,cAAclX,MAAMyY,GACzB,MACJ,KAAK,WAAgBC,QACjBxe,KAAKgd,cAAc/L,KAAKsN,GACxB,MACJ,KAAK,WAAgBE,KACjBze,KAAKgd,cAAczM,KAAKgO,GACxB,MACJ,KAAK,WAAgBG,MACjB1e,KAAKgd,cAAclQ,MAAMyR,GACzB,MACJ,KAAK,WAAgBI,MACjB3e,KAAKgd,cAAcvO,MAAM8P,GAE7B,KAAK,WAAgBjB,KAI7B,CAEIpP,IAAU,WAAgBhG,OAC1B,EAAA+Q,OAAOuE,iBAAiBpU,EAEhC,CAEO,YAAA8I,CAAauL,EAAeC,GAC/B,MAAMxQ,EAASlN,KAAKwS,QAAQpC,IAAIqN,GAC1Bzd,KAAKwS,QAAQ7R,IAAI8c,GACjB,CACIhP,MAAO,IAAIlN,KACHvB,KAAKkO,OAAS,WAAgByQ,OAC9B3e,KAAKwR,IAAI,WAAgBmN,MAAOlB,EAAOC,EAAoBnc,EAC/D,EAEJuL,MAAO,IAAIvL,KACHvB,KAAKkO,OAAS,WAAgBwQ,OAC9B1e,KAAKwR,IAAI,WAAgBkN,MAAOjB,EAAOC,EAAoBnc,EAC/D,EAEJgP,KAAM,IAAIhP,KACFvB,KAAKkO,OAAS,WAAgBuQ,MAC9Bze,KAAKwR,IAAI,WAAgBiN,KAAMhB,EAAOC,EAAoBnc,EAC9D,EAEJ0P,KAAM,IAAI1P,KACFvB,KAAKkO,OAAS,WAAgBsQ,SAC9Bxe,KAAKwR,IAAI,WAAgBgN,QAASf,EAAOC,EAAoBnc,EACjE,EAEJuE,MAAO,IAAIvE,KACHvB,KAAKkO,OAAS,WAAgBhG,OAC9BlI,KAAKwR,IAAI,WAAgBtJ,MAAOuV,EAAOC,EAAoBnc,EAC/D,EAEJ,GAAAiQ,CAAI2M,EAA6BjQ,KAA2B0Q,GAUxD,GARKT,GACc,WAAfA,EAAIC,SACJD,EAAItZ,WAAWyZ,WAAW,aAI1B,wBAAwBO,KAAKV,EAAI1Y,MAMrC,OAAQyI,GACJ,KAAK,WAAgBhG,MACjBgF,EAAOpH,SAAS8Y,GAChB,MACJ,KAAK,WAAgBJ,QACjBtR,EAAO+D,QAAQ2N,GACf,MACJ,KAAK,WAAgBH,KACjBvR,EAAOqD,QAAQqO,GACf,MACJ,KAAK,WAAgBF,MACjBxR,EAAOJ,SAAS8R,GAChB,MACJ,KAAK,WAAgBD,MACjBzR,EAAOuB,SAASmQ,GAEpB,KAAK,WAAgBtB,KAI7B,GAGV,OADAtd,KAAKwS,QAAQlR,IAAImc,EAAOvQ,GACjBA,CACX,GAKG,SAASgF,EAAauL,EAAQ,SAAUC,GAAqB,GAChE,OAAOxQ,EAAOgF,aAAauL,EAAOC,EACtC,yBCpOA3b,EAAOvC,QAAUwC,QAAQ,iCCAzBD,EAAOvC,QAAUwC,QAAQ,gCCAzBD,EAAgB,QAAI,SAAS2R,GAE3B,IAAIoL,EAAgB,CAAC,MAAO,SAAU,QAAS,OAAQ,WACvD,OAAO,SAASzH,EAAQ7P,EAAG8P,GACzB,MAAe,MAAXD,EACKA,EAEA3D,EAAOoL,EAActX,IAAMsX,EAAczX,SAASgQ,EAE7D,CACF,qCCTA,IASIjV,EAAIC,EATJ0c,EAAa/e,MAAQA,KAAK+e,WAAc,SAAUC,EAASC,EAAYC,EAAGC,GAE1E,OAAO,IAAKD,IAAMA,EAAItd,WAAU,SAAUwd,EAASC,GAC/C,SAASC,EAAU7f,GAAS,IAAM8f,EAAKJ,EAAUjO,KAAKzR,GAAS,CAAE,MAAOoG,GAAKwZ,EAAOxZ,EAAI,CAAE,CAC1F,SAAS2Z,EAAS/f,GAAS,IAAM8f,EAAKJ,EAAiB,MAAE1f,GAAS,CAAE,MAAOoG,GAAKwZ,EAAOxZ,EAAI,CAAE,CAC7F,SAAS0Z,EAAKhV,GAJlB,IAAe9K,EAIa8K,EAAO4G,KAAOiO,EAAQ7U,EAAO9K,QAJ1CA,EAIyD8K,EAAO9K,MAJhDA,aAAiByf,EAAIzf,EAAQ,IAAIyf,GAAE,SAAUE,GAAWA,EAAQ3f,EAAQ,KAIjB+B,KAAK8d,EAAWE,EAAW,CAC7GD,GAAMJ,EAAYA,EAAU/U,MAAM4U,EAASC,GAAc,KAAK/N,OAClE,GACJ,EAEA5R,OAAOC,eAAeC,EAAS,aAAc,CAAEC,OAAO,IACtDD,EAAQigB,OAASjgB,EAAQkgB,OAASlgB,EAAQmgB,YAAS,EACnD,MAAM1e,EAAS,EAAQ,MACjB2e,EAAU,EAAQ,MACxBpgB,EAAQmgB,OAAS7L,OAAO,gBACxBtU,EAAQkgB,OAAS5L,OAAO,gBACxB,MAAM2L,UAAexe,EAAOC,QACxB,WAAAkH,GACII,SAASqX,WACT7f,KAAK8f,OAASF,EAAQG,SAASH,EAAQI,QAAQP,QAAQK,OAQvD9f,KAAKoC,GAAM,IAAI6d,IAAWlB,EAAU/e,KAAM,IAAIigB,QAAS,GAAQ,UAAWC,GAAa,EAAOvE,EAAU,CAAC,GACrG,QAAI3b,KAAKmgB,OAAOC,WAAWpgB,OAEpBA,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,eAAgB,CAAC9f,KAAMkgB,EAAYvE,GACnE,IAIA3b,KAAKqC,GAAM,IAAMrC,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,eAAgB,CAAC9f,MAC3D,CACA,cAAIogB,GACA,OAAOpgB,KAAKmgB,OAAOC,WAAWpgB,KAClC,CAIA,MAAIsgB,GACA,OAAOtgB,KAAKugB,IAChB,CAEA,UAAIlZ,GACA,OAAOrH,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,mBAAoB,CAAC9f,MACrD,CAEA,SAAIwgB,GACA,OAAOxgB,KAAKygB,UAChB,CAEA,eAAIC,GACA,OAAO1gB,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,wBAAyB,CAAC9f,MAC1D,CACA,YAAImZ,GACA,OAAOnZ,KAAK2gB,aAChB,CACA,WAAAA,CAAYhF,EAAU,CAAC,GACnB,OAAO3b,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,qBAAsB,CAAC9f,KAAM2b,GAC7D,CAEA,QAAA8E,EAAS,MAAE9W,EAAK,IAAEiX,EAAG,eAAEC,GAAmB,CAAElX,MAAO,EAAGiX,KAAM,EAAGC,gBAAgB,IAC3E,MAAMC,OAAqC,IAAnBD,GAAwCA,EAChE,OAAO7gB,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,kBAAmB,CAC3C9f,KACA2J,EACAiX,EACAE,GAER,CAEA,QAAAC,CAASC,GAAUrX,MAAOsX,EAAQL,IAAKM,EAAI,eAAEL,GAAmB,CAC5DA,gBAAgB,IAEhB,QAAe9a,IAAXkb,QAAiClb,IAATmb,EACxB,MAAM,IAAIhZ,MAAM,8BAEpB,MAAM4Y,OAAqC,IAAnBD,GAAwCA,EAC1DL,EAA0B,iBAAXQ,EAAsB,CAACA,GAAUA,EAChDJ,OAAsB,IAATM,EAAuBA,EAAOD,EAAS,EAC1D,OAAOjhB,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,kBAAmB,CAC3C9f,KACAihB,EACAL,EACAE,EACAN,GAER,CAEA,MAAAW,CAAOX,EAAO7W,GACV,OAAO3J,KAAK+gB,SAASP,EAAO,CACxB7W,QACAiX,IAAKjX,EACLkX,gBAAgB,GAExB,CAEA,OAAAvX,CAAQ0X,EAAQrX,GACZ,MAAM6W,EAA0B,iBAAXQ,EAAsB,CAACA,GAAUA,EACtD,OAAOhhB,KAAK+gB,SAASP,EAAO,CACxB7W,QACAiX,IAAKjX,EAAQ6W,EAAMnZ,OACnBwZ,gBAAgB,GAExB,CAEA,MAAAO,CAAOzX,EAAOiX,EAAKC,GACf,OAAO7gB,KAAK+gB,SAAS,GAAI,CAAEpX,QAAOiX,MAAKC,kBAC3C,CAEA,MAAAQ,CAAOb,GACH,OAAOxgB,KAAK+gB,SAASP,EAAO,CACxB7W,OAAQ,EACRiX,KAAM,EACNC,gBAAgB,GAExB,CAEA,QAAIlhB,GACA,OAAOK,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,iBAAkB,CAAC9f,MACnD,CAEA,QAAIL,CAAKF,GACLO,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,iBAAkB,CAAC9f,KAAMP,GAClD,CAEA,SAAI6hB,GACA,OAAOthB,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,iBAAkB,CAAC9f,MACnD,CAEA,IAAAuhB,CAAK5hB,GACD,OAAOK,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,iBAAkB,CAAC9f,KAAML,GACzD,CAQA,SAAA6hB,CAAUC,GACN,OAAOzhB,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,mBAAoB,CAAC9f,KAAMyhB,GAC3D,CAKA,UAAIC,GACA,OAAO1hB,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,kBAAmB,CAAC9f,MACpD,CAeA,SAAA2hB,CAAUC,GACN,OAAO5hB,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,mBAAoB,CAAC9f,KAAM4hB,GAC3D,CA0BA,YAAAC,EAAeC,QAASC,EAAQ,KAAEjS,EAAMkS,SAAUf,EAAQgB,OAAQf,EAAMgB,MAAOC,IAC3E,MAAML,OAA8B,IAAbC,EAA2BA,EAAW,GACvDE,OAAyB,IAATf,EAAuBA,GAAQ,EAC/Cc,OAA6B,IAAXf,EAAyBA,GAAU,EACrDiB,OAA0B,IAAXC,EAAyBA,GAAU,EACxD,OAAOniB,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,sBAAuB,CAC/C9f,KACAkiB,EACAJ,EACAhS,EACAkS,EACAC,GAER,CAIA,cAAAG,CAAe7gB,EAAO,CAAC,GAEnByP,QAAQC,KAAK,mEACb,MAKM,MAAEiR,EAAK,UAAEG,EAAS,QAAEC,GAAYhjB,OAAOsY,OAAOtY,OAAOsY,OAAO,CAAC,EALlD,CACbsK,OAAQ,EACRG,UAAW,EACXC,SAAU,IAEmE/gB,GACjF,OAAOvB,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,wBAAyB,CACjD9f,KACAkiB,EACAG,EACAC,GAER,CAUA,cAAAC,CAAehhB,GACX,MAKM,KAAEihB,EAAI,UAAEH,EAAS,QAAEC,GAAYhjB,OAAOsY,OAAOtY,OAAOsY,OAAO,CAAC,EALjD,CACb4K,MAAO,EACPH,UAAW,EACXC,SAAU,IAEkE/gB,GAChFvB,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,wBAAyB,CAC1C9f,KACAwiB,EACAH,EACAC,GAER,CAgCA,cAAAG,CAAeD,EAAM1S,EAAMsM,EAAQhB,EAAO,CAAC,GACvC,OAAOpb,KAAKqgB,QAAQ,GAAGrgB,KAAK8f,yBAA0B,CAClD9f,KACAwiB,EACA1S,EACAsM,EACAhB,GAER,CAIA,MAAAsH,CAAOC,EAAWpX,GASd,OARKvL,KAAKogB,YACNpgB,KAAKR,EAAQkgB,UAAUle,MAAKohB,IACnBA,GACD5iB,KAAK6iB,SAASF,EAAWpX,EAC7B,IAGRvL,KAAKmgB,OAAO2C,aAAa9iB,KAAM2iB,EAAWpX,GACnC,KACHvL,KAAK6iB,SAASF,EAAWpX,EAAG,CAEpC,CACA,QAAAsX,CAASF,EAAWpX,GACXvL,KAAKogB,YAEWpgB,KAAKmgB,OAAO4C,aAAa/iB,KAAM2iB,EAAWpX,IAG/DvL,KAAKR,EAAQmgB,SACjB,EAEJngB,EAAQigB,OAASA,EACjBrd,EAAK5C,EAAQkgB,OAAQrd,EAAK7C,EAAQmgB,kCC7TlCrgB,OAAOC,eAAeC,EAAS,aAAc,CACzCC,OAAO,IAEXD,EAAA,QACA,SAAkB2X,GACd,OAAO,YAAa5V,GAChB,GAAW,OAAP4V,EAAa,MAAM,IAAIjP,MAAM,gCACjC,IAAI8a,EAAS7L,EACbA,EAAK,KACL6L,EAAO5Y,MAAMpK,KAAMuB,EACvB,CACJ,EACAQ,EAAOvC,QAAUA,EAAQ8K,2CCZzB,MAAM2H,EAAS,EAAQ,MACjBgR,EAAK,EAAQ,MAOnBlhB,EAAOvC,QAAUyS,GAAO1B,IACtB,MAAM2S,GAAQ,IAAI5U,KAKlB,OAJAtO,KAAKyW,KAAOyM,GAAQljB,KAAKmjB,UAAYD,GACrCljB,KAAKmjB,SAAWD,EAChB3S,EAAK0S,GAAK,IAAIA,EAAGjjB,KAAKyW,QAEflG,CAAI,iCCdb,SAAS6S,EAAQC,EAAQC,GAAkB,IAAI5Q,EAAOpT,OAAOoT,KAAK2Q,GAAS,GAAI/jB,OAAOikB,sBAAuB,CAAE,IAAIC,EAAUlkB,OAAOikB,sBAAsBF,GAASC,IAAmBE,EAAUA,EAAQ7R,QAAO,SAAU8R,GAAO,OAAOnkB,OAAO8B,yBAAyBiiB,EAAQI,GAAKljB,UAAY,KAAKmS,EAAKnN,KAAK6E,MAAMsI,EAAM8Q,EAAU,CAAE,OAAO9Q,CAAM,CACpV,SAASgR,EAAc9iB,GAAU,IAAK,IAAI4G,EAAI,EAAGA,EAAIqY,UAAUxY,OAAQG,IAAK,CAAE,IAAImc,EAAS,MAAQ9D,UAAUrY,GAAKqY,UAAUrY,GAAK,CAAC,EAAGA,EAAI,EAAI4b,EAAQ9jB,OAAOqkB,IAAS,GAAItjB,SAAQ,SAAUC,GAAOsjB,EAAgBhjB,EAAQN,EAAKqjB,EAAOrjB,GAAO,IAAKhB,OAAOukB,0BAA4BvkB,OAAOwkB,iBAAiBljB,EAAQtB,OAAOukB,0BAA0BF,IAAWP,EAAQ9jB,OAAOqkB,IAAStjB,SAAQ,SAAUC,GAAOhB,OAAOC,eAAeqB,EAAQN,EAAKhB,OAAO8B,yBAAyBuiB,EAAQrjB,GAAO,GAAI,CAAE,OAAOM,CAAQ,CACzf,SAASgjB,EAAgB/hB,EAAKvB,EAAKb,GAA4L,OAAnLa,EAAMyjB,EAAezjB,MAAiBuB,EAAOvC,OAAOC,eAAesC,EAAKvB,EAAK,CAAEb,MAAOA,EAAOc,YAAY,EAAME,cAAc,EAAMD,UAAU,IAAkBqB,EAAIvB,GAAOb,EAAgBoC,CAAK,CAE3O,SAASmiB,EAAkBpjB,EAAQqjB,GAAS,IAAK,IAAIzc,EAAI,EAAGA,EAAIyc,EAAM5c,OAAQG,IAAK,CAAE,IAAIrG,EAAa8iB,EAAMzc,GAAIrG,EAAWZ,WAAaY,EAAWZ,aAAc,EAAOY,EAAWV,cAAe,EAAU,UAAWU,IAAYA,EAAWX,UAAW,GAAMlB,OAAOC,eAAeqB,EAAQmjB,EAAe5iB,EAAWb,KAAMa,EAAa,CAAE,CAE5U,SAAS4iB,EAAela,GAAO,IAAIvJ,EACnC,SAAsB4jB,GAAe,GAAqB,iBAAVA,GAAgC,OAAVA,EAAgB,OAAOA,EAAO,IAAIC,EAAOD,EAAMpQ,OAAOsQ,aAAc,QAAare,IAAToe,EAAoB,CAAE,IAAI1iB,EAAM0iB,EAAKnjB,KAAKkjB,EAAOG,UAAoB,GAAmB,iBAAR5iB,EAAkB,OAAOA,EAAK,MAAM,IAAI+E,UAAU,+CAAiD,CAAE,OAA4BuC,OAAiBmb,EAAQ,CAD/UI,CAAaza,GAAgB,MAAsB,iBAARvJ,EAAmBA,EAAMyI,OAAOzI,EAAM,CAE1H,IACEmf,EADa,EAAQ,KACHA,OAElB7B,EADc,EAAQ,MACFA,QAClB2G,EAAS3G,GAAWA,EAAQ2G,QAAU,UAI1CxiB,EAAOvC,QAAuB,WAC5B,SAASglB,KAdX,SAAyBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIle,UAAU,oCAAwC,CAepJme,CAAgB3kB,KAAMwkB,GACtBxkB,KAAK4kB,KAAO,KACZ5kB,KAAK6kB,KAAO,KACZ7kB,KAAKqH,OAAS,CAChB,CAjBF,IAAsBqd,EAAaI,EA8KjC,OA9KoBJ,EAkBPF,GAlBoBM,EAkBR,CAAC,CACxBxkB,IAAK,OACLb,MAAO,SAAciW,GACnB,IAAIqP,EAAQ,CACVxE,KAAM7K,EACNxE,KAAM,MAEJlR,KAAKqH,OAAS,EAAGrH,KAAK6kB,KAAK3T,KAAO6T,EAAW/kB,KAAK4kB,KAAOG,EAC7D/kB,KAAK6kB,KAAOE,IACV/kB,KAAKqH,MACT,GACC,CACD/G,IAAK,UACLb,MAAO,SAAiBiW,GACtB,IAAIqP,EAAQ,CACVxE,KAAM7K,EACNxE,KAAMlR,KAAK4kB,MAEO,IAAhB5kB,KAAKqH,SAAcrH,KAAK6kB,KAAOE,GACnC/kB,KAAK4kB,KAAOG,IACV/kB,KAAKqH,MACT,GACC,CACD/G,IAAK,QACLb,MAAO,WACL,GAAoB,IAAhBO,KAAKqH,OAAT,CACA,IAAI2d,EAAMhlB,KAAK4kB,KAAKrE,KAGpB,OAFoB,IAAhBvgB,KAAKqH,OAAcrH,KAAK4kB,KAAO5kB,KAAK6kB,KAAO,KAAU7kB,KAAK4kB,KAAO5kB,KAAK4kB,KAAK1T,OAC7ElR,KAAKqH,OACA2d,CAJsB,CAK/B,GACC,CACD1kB,IAAK,QACLb,MAAO,WACLO,KAAK4kB,KAAO5kB,KAAK6kB,KAAO,KACxB7kB,KAAKqH,OAAS,CAChB,GACC,CACD/G,IAAK,OACLb,MAAO,SAAcwlB,GACnB,GAAoB,IAAhBjlB,KAAKqH,OAAc,MAAO,GAG9B,IAFA,IAAIjE,EAAIpD,KAAK4kB,KACTI,EAAM,GAAK5hB,EAAEmd,KACVnd,EAAIA,EAAE8N,MAAM8T,GAAOC,EAAI7hB,EAAEmd,KAChC,OAAOyE,CACT,GACC,CACD1kB,IAAK,SACLb,MAAO,SAAgBylB,GACrB,GAAoB,IAAhBllB,KAAKqH,OAAc,OAAOoY,EAAO0F,MAAM,GAI3C,IAHA,IA5DcC,EAAKxkB,EAAQykB,EA4DvBL,EAAMvF,EAAO6F,YAAYJ,IAAM,GAC/B9hB,EAAIpD,KAAK4kB,KACTpd,EAAI,EACDpE,GA/DOgiB,EAgEDhiB,EAAEmd,KAhEI3f,EAgEEokB,EAhEMK,EAgED7d,EA/D9BiY,EAAOrf,UAAUmlB,KAAKvkB,KAAKokB,EAAKxkB,EAAQykB,GAgElC7d,GAAKpE,EAAEmd,KAAKlZ,OACZjE,EAAIA,EAAE8N,KAER,OAAO8T,CACT,GAGC,CACD1kB,IAAK,UACLb,MAAO,SAAiBylB,EAAGM,GACzB,IAAIR,EAYJ,OAXIE,EAAIllB,KAAK4kB,KAAKrE,KAAKlZ,QAErB2d,EAAMhlB,KAAK4kB,KAAKrE,KAAKvX,MAAM,EAAGkc,GAC9BllB,KAAK4kB,KAAKrE,KAAOvgB,KAAK4kB,KAAKrE,KAAKvX,MAAMkc,IAGtCF,EAFSE,IAAMllB,KAAK4kB,KAAKrE,KAAKlZ,OAExBrH,KAAKylB,QAGLD,EAAaxlB,KAAK0lB,WAAWR,GAAKllB,KAAK2lB,WAAWT,GAEnDF,CACT,GACC,CACD1kB,IAAK,QACLb,MAAO,WACL,OAAOO,KAAK4kB,KAAKrE,IACnB,GAGC,CACDjgB,IAAK,aACLb,MAAO,SAAoBylB,GACzB,IAAI9hB,EAAIpD,KAAK4kB,KACT/Q,EAAI,EACJmR,EAAM5hB,EAAEmd,KAEZ,IADA2E,GAAKF,EAAI3d,OACFjE,EAAIA,EAAE8N,MAAM,CACjB,IAAI3H,EAAMnG,EAAEmd,KACRqF,EAAKV,EAAI3b,EAAIlC,OAASkC,EAAIlC,OAAS6d,EAGvC,GAFIU,IAAOrc,EAAIlC,OAAQ2d,GAAOzb,EAASyb,GAAOzb,EAAIP,MAAM,EAAGkc,GAEjD,IADVA,GAAKU,GACQ,CACPA,IAAOrc,EAAIlC,UACXwM,EACEzQ,EAAE8N,KAAMlR,KAAK4kB,KAAOxhB,EAAE8N,KAAUlR,KAAK4kB,KAAO5kB,KAAK6kB,KAAO,OAE5D7kB,KAAK4kB,KAAOxhB,EACZA,EAAEmd,KAAOhX,EAAIP,MAAM4c,IAErB,KACF,GACE/R,CACJ,CAEA,OADA7T,KAAKqH,QAAUwM,EACRmR,CACT,GAGC,CACD1kB,IAAK,aACLb,MAAO,SAAoBylB,GACzB,IAAIF,EAAMvF,EAAO6F,YAAYJ,GACzB9hB,EAAIpD,KAAK4kB,KACT/Q,EAAI,EAGR,IAFAzQ,EAAEmd,KAAKgF,KAAKP,GACZE,GAAK9hB,EAAEmd,KAAKlZ,OACLjE,EAAIA,EAAE8N,MAAM,CACjB,IAAI2U,EAAMziB,EAAEmd,KACRqF,EAAKV,EAAIW,EAAIxe,OAASwe,EAAIxe,OAAS6d,EAGvC,GAFAW,EAAIN,KAAKP,EAAKA,EAAI3d,OAAS6d,EAAG,EAAGU,GAEvB,IADVV,GAAKU,GACQ,CACPA,IAAOC,EAAIxe,UACXwM,EACEzQ,EAAE8N,KAAMlR,KAAK4kB,KAAOxhB,EAAE8N,KAAUlR,KAAK4kB,KAAO5kB,KAAK6kB,KAAO,OAE5D7kB,KAAK4kB,KAAOxhB,EACZA,EAAEmd,KAAOsF,EAAI7c,MAAM4c,IAErB,KACF,GACE/R,CACJ,CAEA,OADA7T,KAAKqH,QAAUwM,EACRmR,CACT,GAGC,CACD1kB,IAAKikB,EACL9kB,MAAO,SAAeqmB,EAAGnK,GACvB,OAAOiC,EAAQ5d,KAAM0jB,EAAcA,EAAc,CAAC,EAAG/H,GAAU,CAAC,EAAG,CAEjEoK,MAAO,EAEPC,eAAe,IAEnB,MA5K0EhC,EAAkBU,EAAYtkB,UAAW0kB,GAA2ExlB,OAAOC,eAAemlB,EAAa,YAAa,CAAElkB,UAAU,IA8KrPgkB,CACT,CApK8B,gCClBvB,SAASyB,EAAwBnW,EAAcoW,GAClD,GAAY,IAARA,IAAcpW,EACd,OAAO,EAGX,IAAIqW,EAAc,EACdC,EAAa,EACjB,KAAOD,EAAcD,GAAK,CAGtB,MAAMG,EAAQC,EAAsBxW,EAAKyW,YAAYJ,IAGrD,GAFAC,GAAcC,EACdF,GAAyB,IAAVE,EAAc,EAAI,EAC7BF,GAAerW,EAAKzI,OACpB,OAAO+e,CAEf,CACA,OAAOA,CACX,CAEO,SAASI,EAAwB1W,EAAcoW,GAClD,IAAIE,EAAa,EACbD,EAAc,EAClB,KAAOC,EAAaF,GAAK,CACrB,GAAIC,GAAerW,EAAKzI,OACpB,OAAO8e,GAAeD,EAAME,GAEhC,MAAMC,EAAQC,EAAsBxW,EAAKyW,YAAYJ,IACrDC,GAAcC,EACdF,GAAyB,IAAVE,EAAc,EAAI,CACrC,CACA,OAAOF,CACX,CAEA,SAASG,EAAsBG,GAC3B,OAAa,MAATA,EACO,EAEPA,GAAS,IACF,EAEPA,GAAS,KACF,EAEPA,GAAS,OAAUA,GAAS,MAErB,EAEPA,EAAQ,MACD,EAEJ,CACX,CAEO,SAASC,EAAqBnd,EAAaod,GAAY,GAC1D,IAAIC,EAAWrd,EAAID,QAAQ,KAAM,QAIjC,OAHIqd,IACAC,EAAWA,EAAStd,QAAQ,MAAO,SAEhCsd,CACX,qDC5DA,IACE,IAAIrL,EAAO,EAAQ,MAEnB,GAA6B,mBAAlBA,EAAKO,SAAyB,KAAM,GAC/C/Z,EAAOvC,QAAU+b,EAAKO,QACxB,CAAE,MAAOjW,GAEP9D,EAAOvC,QAAU,EAAjB,KACF,YCosDoCuC,EAAOvC,UACvCuC,EAAOvC,QAnsDX,WACC,IAGCqnB,EAAS,EACTC,EAAqB,EAQrBC,EAAU,GACVC,EAAS,GAGTC,EAAiB,GACjBC,EAAa,GAgBd,SAASX,EAAYhd,EAAK4d,QACdphB,IAARohB,IACFA,EAAM,GAEP,IAAIpf,EAAOwB,EAAI6d,WAAWD,GAG1B,GAAI,OAAUpf,GAAQA,GAAQ,OAC7Bof,EAAM5d,EAAIlC,OAAS,EAAE,CACrB,IAAIggB,EAAKtf,EAET,OAAI,QADAuf,EAAM/d,EAAI6d,WAAWD,EAAM,KACVG,GAAO,MACH,MAAfD,EAAK,QAAoBC,EAAM,OAAU,MAE5CD,CACR,CAGA,GAAI,OAAUtf,GAAQA,GAAQ,OAC7Bof,GAAO,EAAE,CACT,IACIG,EAAMvf,EACV,OAAI,QAFAsf,EAAK9d,EAAI6d,WAAWD,EAAM,KAEVE,GAAM,MACD,MAAfA,EAAK,QAAoBC,EAAM,OAAU,MAE5CA,CACR,CAIA,OAAOvf,CACR,CAIA,SAASwf,EAAY5d,EAAO6d,EAAK5G,GAChC,IAAI6G,EAAM,CAAC9d,GAAOiJ,OAAO4U,GAAK5U,OAAO,CAACgO,IAClC8G,EAAWD,EAAIA,EAAIpgB,OAAS,GAC5B6J,EAAO0P,EAIP+G,EAAiBF,EAAIG,YA7DZ,IA8Db,GAAGD,EAAiB,GACnBF,EAAIze,MAAM,EAAG2e,GAAgBE,OAAM,SAAShU,GAAG,OAAOA,GAAKgT,CAAM,MACjB,GAAhD,CAACA,EAAQG,EAAQE,GAAYtd,QAAQD,GACrC,OAzDO,EA+DR,IAAIme,EAAUL,EAAIG,YAAYd,GAC9B,GAAGgB,EAAU,GACZL,EAAIze,MAAM,EAAG8e,GAASD,OAAM,SAAShU,GAAG,OAAOA,GAAKiT,CAAkB,MAClB,GAApD,CAACC,EAASD,GAAoBld,QAAQ8d,GACtC,OAAGD,EAAI9V,QAAO,SAASkC,GAAG,OAAOA,GAAKiT,CAAkB,IAAGzf,OAAS,GAAK,EAlEtD,EACO,EA0E3B,GAlGQ,GAkGLqgB,GAjGE,GAiGgBxW,EACpB,OA/Ea,EAkFT,GApGK,GAoGFwW,GAtGA,GAsGuBA,GArG1B,GAqG4CA,EAChD,OAzFY,IAyFTxW,GAAsBsW,EAAIK,OAAM,SAAShU,GAAG,OAAOA,GAAKgT,CAAM,IAjF1D,EADK,EA0FR,GA7GK,GA6GF3V,GA/GA,GA+GmBA,GA9GtB,GA8GoCA,EACxC,OA3FY,EA8FR,GA7GD,GA6GIwW,IA7GJ,GA8GFxW,GA7GE,GA6GWA,GA3GV,GA2GuBA,GA1GtB,IA0GoCA,GACzC,OAjGa,EAoGT,KA/GA,GA+GIwW,GAjHL,GAiHuBA,GAjHvB,GAkHFxW,GAjHE,GAiHWA,GACd,OAtGa,EAyGT,IAnHC,IAmHGwW,GArHL,GAqHwBA,IArHxB,GAsHHxW,EACA,OA3Ga,EA8GT,GAAIA,GAAQ2V,GAnHX,IAmHqB3V,EAC1B,OA/Ga,EAkHT,GAjIS,GAiINA,EACP,OAnHa,EAsHT,GAAIwW,GAAYX,EACpB,OAvHa,EA2Hd,IAAIgB,GAAiD,GAAxBN,EAAI7d,QAAQid,GAAgBY,EAAIG,YAAYf,GAAU,EAAIY,EAAIpgB,OAAS,EACpG,OAAiE,GAA9D,CAAC2f,EAAQE,GAAYtd,QAAQ6d,EAAIM,KACnCN,EAAIze,MAAM+e,EAAyB,GAAI,GAAGF,OAAM,SAAShU,GAAG,OAAOA,GAAKgT,CAAM,KAnIlE,IAoIZ3V,GAnIK,IAwIHwW,IAAkE,GAA/C,CAACT,EAAgBC,GAAYtd,QAAQsH,GAnI7C,GAyIyB,GAApCsW,EAAI5d,QAAQkd,GAvIP,EA0ILY,GAAYZ,GAAsB5V,GAAQ4V,EA5I/B,EACD,CAiJd,CAyFA,SAASkB,EAAyBjgB,GAMjC,OACC,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,EAEHgf,EAGR,IAAUhf,EApRF,EA0RR,IAAUA,EAzRL,EAgSJ,GAAUA,GAAQA,GAAQ,GAC1B,IAAUA,GAAQA,GAAQ,IAC1B,IAAUA,GAAQA,GAAQ,IAC1B,KAAUA,GAAQA,GAAQ,KAC3B,KAAUA,GACV,MAAUA,GAEV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,OAAUA,GAAQA,GAAQ,OAC3B,OAAUA,GACT,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC5B,QAAWA,GACX,QAAWA,GACV,QAAWA,GAAQA,GAAQ,QAC3B,QAAWA,GAAQA,GAAQ,QAC3B,OAAWA,GAAQA,GAAQ,OAzTlB,EAgUT,KAAUA,GAAQA,GAAQ,KAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACV,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC3B,MAAUA,GACT,MAAUA,GAAQA,GAAQ,MAC1B,MAAUA,GAAQA,GAAQ,MAC1B,OAAUA,GAAQA,GAAQ,OAC3B,OAAUA,GACT,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC3B,OAAUA,GACT,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC3B,OAAUA,GACV,OAAUA,GACV,OAAUA,GACT,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC3B,OAAUA,GACT,OAAUA,GAAQA,GAAQ,OAC3B,OAAUA,GACV,OAAUA,GACT,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC3B,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACT,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC3B,OAAUA,GACT,OAAUA,GAAQA,GAAQ,OAC3B,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACT,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC3B,OAAWA,GACX,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACX,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACX,OAAWA,GACX,OAAWA,GACX,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACX,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACX,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACX,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC5B,OAAWA,GACV,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GAAQA,GAAQ,OAC3B,OAAWA,GA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ACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,MAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,MAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,GACV,OAAUA,EAzsCL,EA+sCJ,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAUA,GAAQA,GAAQ,OAC1B,OAAU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,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAC7C,CAAC,KAAQ,MAAS,CAAC,KAAQ,MAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAAS,CAAC,MAAQ,OAC7C,CAAC,MAAS,OAAU,CAA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","sources":[".././node_modules/neovim/lib/api/utils/createChainableApi.js","../external node-commonjs \"buffer\"",".././node_modules/neovim/lib/utils/findNvim.js",".././node_modules/winston-transport/node_modules/readable-stream/errors.js",".././node_modules/async/asyncify.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/destroy.js",".././node_modules/winston/lib/winston/exception-handler.js",".././node_modules/winston/lib/winston.js",".././node_modules/triple-beam/config/syslog.js",".././node_modules/fast-myers-diff/bin/index.js",".././node_modules/async/internal/initialParams.js",".././node_modules/@colors/colors/lib/maps/random.js","../external node-commonjs \"os\"",".././node_modules/logform/simple.js",".././node_modules/async/internal/getIterator.js",".././src/config.ts",".././node_modules/logform/json.js",".././node_modules/winston-transport/legacy.js",".././node_modules/is-stream/index.js",".././src/logger.ts","../external commonjs \"vscode\"","../external node-commonjs \"node:child_process\"",".././node_modules/@colors/colors/lib/maps/rainbow.js",".././node_modules/neovim/lib/api/Buffer.js",".././node_modules/async/internal/onlyOnce.js",".././node_modules/logform/ms.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/buffer_list.js",".././src/utils/text.ts",".././node_modules/inherits/inherits.js",".././node_modules/grapheme-splitter/index.js",".././node_modules/safe-stable-stringify/index.js",".././node_modules/winston/node_modules/readable-stream/readable.js",".././node_modules/logform/combine.js",".././node_modules/async/internal/once.js",".././node_modules/winston/lib/winston/rejection-handler.js",".././node_modules/winston/lib/winston/common.js","../external node-commonjs \"stream\"",".././node_modules/triple-beam/config/cli.js",".././node_modules/neovim/lib/utils/transport.js",".././node_modules/neovim/lib/plugin/autocmd.js",".././node_modules/fn.name/index.js",".././src/utils/async.ts",".././src/utils/fs.ts",".././src/utils/vscode.ts",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/state.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/pipeline.js",".././node_modules/lodash/lodash.js",".././node_modules/neovim/lib/utils/util.js",".././node_modules/logform/pad-levels.js",".././src/constants.ts",".././node_modules/logform/index.js",".././node_modules/winston/lib/winston/create-logger.js",".././node_modules/winston/node_modules/readable-stream/lib/_stream_duplex.js",".././node_modules/winston/node_modules/readable-stream/lib/_stream_transform.js",".././node_modules/async/internal/eachOfLimit.js",".././node_modules/safe-buffer/index.js",".././node_modules/neovim/lib/plugin/command.js","../external node-commonjs \"node:fs\"","../external node-commonjs \"zlib\"",".././node_modules/neovim/lib/plugin/properties.js",".././node_modules/string_decoder/lib/string_decoder.js","../external node-commonjs \"string_decoder\"",".././node_modules/@colors/colors/lib/system/has-flag.js",".././node_modules/neovim/lib/api/index.js",".././node_modules/fecha/lib/fecha.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/async_iterator.js",".././node_modules/winston/node_modules/readable-stream/errors.js",".././node_modules/neovim/lib/api/Neovim.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/_stream_duplex.js","../external node-commonjs \"module\"",".././node_modules/winston-transport/node_modules/readable-stream/lib/_stream_readable.js",".././node_modules/async/eachOf.js",".././node_modules/winston/lib/winston/transports/index.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/end-of-stream.js",".././node_modules/@dabh/diagnostics/node/production.js",".././node_modules/neovim/lib/plugin/index.js",".././node_modules/winston/lib/winston/profiler.js",".././node_modules/winston/node_modules/readable-stream/lib/_stream_passthrough.js",".././node_modules/winston-transport/index.js",".././node_modules/async/eachOfLimit.js",".././node_modules/@msgpack/msgpack/dist.es5+esm/utils/int.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/utils/utf8.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/DecodeError.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/ExtData.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/timestamp.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/ExtensionCodec.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/utils/typedArrays.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/Encoder.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/encode.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/utils/prettyByte.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/CachedKeyDecoder.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/Decoder.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/decode.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/utils/stream.mjs",".././node_modules/@msgpack/msgpack/dist.es5+esm/decodeAsync.mjs",".././node_modules/winston/lib/winston/rejection-stream.js",".././node_modules/neovim/lib/plugin/plugin.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/_stream_writable.js","../external node-commonjs \"events\"",".././node_modules/@colors/colors/lib/colors.js",".././node_modules/async/internal/parallel.js",".././node_modules/winston/lib/winston/config/index.js",".././node_modules/neovim/lib/plugin.js",".././node_modules/neovim/lib/attach/attach.js",".././node_modules/triple-beam/index.js",".././node_modules/logform/timestamp.js",".././node_modules/winston/lib/winston/transports/file.js",".././node_modules/async/internal/wrapAsync.js",".././node_modules/@colors/colors/lib/maps/america.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/buffer_list.js",".././node_modules/stack-trace/lib/stack-trace.js",".././node_modules/winston/lib/winston/transports/http.js",".././node_modules/neovim/lib/api/client.js",".././src/actions_eval.ts",".././node_modules/triple-beam/config/index.js",".././node_modules/winston/lib/winston/exception-stream.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/destroy.js","../external node-commonjs \"child_process\"",".././node_modules/async/internal/withoutIndex.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/from.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/stream.js",".././node_modules/winston/node_modules/readable-stream/lib/_stream_writable.js",".././node_modules/logform/format.js","../external node-commonjs \"https\"",".././node_modules/winston/lib/winston/transports/stream.js",".././node_modules/async/eachOfSeries.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/stream.js",".././node_modules/neovim/lib/api/Tabpage.js",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/from.js",".././node_modules/neovim/lib/host/NvimPlugin.js",".././node_modules/async/internal/setImmediate.js",".././node_modules/neovim/lib/host/factory.js",".././node_modules/logform/uncolorize.js",".././node_modules/ms/index.js",".././node_modules/inherits/inherits_browser.js","../external node-commonjs \"node:path\"",".././node_modules/logform/logstash.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/end-of-stream.js",".././node_modules/neovim/lib/api/Window.js",".././node_modules/async/internal/breakLoop.js","../external node-commonjs \"path\"",".././node_modules/winston-transport/node_modules/readable-stream/lib/internal/streams/state.js","../external node-commonjs \"node:net\"",".././node_modules/winston/lib/winston/container.js",".././node_modules/logform/pretty-print.js",".././node_modules/neovim/lib/plugin/function.js",".././node_modules/winston/node_modules/readable-stream/lib/internal/streams/async_iterator.js",".././node_modules/@jpwilliams/waitgroup/lib/index.js",".././node_modules/one-time/index.js",".././node_modules/logform/errors.js",".././node_modules/@colors/colors/lib/custom/trap.js",".././node_modules/@colors/colors/lib/system/supports-colors.js",".././node_modules/winston/lib/winston/transports/console.js",".././node_modules/@colors/colors/safe.js",".././node_modules/neovim/lib/host/ sync",".././node_modules/triple-beam/config/npm.js",".././node_modules/async/series.js",".././node_modules/neovim/lib/api/types.js",".././node_modules/@dabh/diagnostics/node/index.js",".././node_modules/winston/lib/winston/tail-file.js",".././node_modules/neovim/lib/index.js","../external node-commonjs \"node:util\"",".././node_modules/util-deprecate/node.js",".././node_modules/winston/lib/winston/logger.js",".././node_modules/winston-transport/modern.js",".././node_modules/logform/metadata.js",".././node_modules/logform/levels.js",".././node_modules/async/internal/iterator.js",".././node_modules/async/internal/awaitify.js","../external node-commonjs \"node:events\"",".././node_modules/async/internal/asyncEachOfLimit.js",".././node_modules/async/forEach.js",".././node_modules/logform/label.js","../external node-commonjs \"http\"",".././node_modules/logform/printf.js",".././node_modules/@colors/colors/lib/styles.js",".././node_modules/neovim/lib/utils/logger.js",".././node_modules/logform/cli.js","../external node-commonjs \"util\"",".././node_modules/logform/splat.js",".././node_modules/@dabh/diagnostics/diagnostics.js",".././node_modules/winston/node_modules/readable-stream/lib/_stream_readable.js",".././node_modules/@colors/colors/lib/custom/zalgo.js",".././node_modules/logform/align.js",".././node_modules/logform/colorize.js",".././node_modules/neovim/lib/api/Base.js",".././node_modules/@colors/colors/lib/maps/zebra.js",".././node_modules/async/internal/isArrayLike.js","../external node-commonjs \"fs\"","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator",".././src/actions.ts",".././src/eventBus.ts",".././src/buffer_manager.ts",".././src/cmdline/cmdline_queue.ts",".././src/cmdline_manager.ts",".././src/cmdline/cmdline_text.ts",".././src/commands_controller.ts",".././src/utils/pending_updates.ts",".././src/cursor_manager.ts",".././node_modules/async-mutex/index.mjs",".././src/document_change_manager.ts",".././node_modules/ts-wcwidth/dist/module/combining.js",".././node_modules/ts-wcwidth/dist/module/index.js",".././src/highlights/util.ts",".././src/highlights/grid_line_handler.ts",".././src/highlights/highlight_grid.ts",".././src/highlights/highlight_group_store.ts",".././src/highlight_manager.ts",".././src/messages_manager.ts",".././src/mode_manager.ts",".././src/status_line/status_line_message_timer.ts",".././src/status_line_manager.ts",".././src/typing_manager.ts",".././src/viewport_manager.ts",".././src/main_controller.ts",".././src/extension.ts"],"sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createChainableApi = createChainableApi;\nconst Base_1 = require(\"../Base\");\nconst baseProperties = Object.getOwnPropertyNames(Base_1.BaseApi.prototype);\nfunction createChainableApi(name, Type, requestPromise, chainCallPromise) {\n // @ts-expect-error don't know how to fix this or why this module was designed like this.\n const that = this;\n // re-use current promise if not resolved yet\n if (that[`${name}Promise`] &&\n that[`${name}Promise`].status === 0 &&\n that[`${name}Proxy`]) {\n return that[`${name}Proxy`];\n }\n that[`${name}Promise`] = requestPromise();\n // TODO: Optimize this\n // Define properties on the promise for devtools\n [...baseProperties, ...Object.getOwnPropertyNames(Type.prototype)].forEach(key => {\n Object.defineProperty(that[`${name}Promise`], key, {\n enumerable: true,\n writable: true,\n configurable: true,\n });\n });\n const proxyHandler = {\n get: (target, prop) => {\n // XXX which takes priority?\n // Check if property is property of an API object (Window, Buffer, Tabpage, etc)\n // If it is, then we return a promise of results of the call on that API object\n // i.e. await this.buffer.name will return a promise of buffer name\n const isOnPrototype = Object.prototype.hasOwnProperty.call(Type.prototype, prop) ||\n Object.prototype.hasOwnProperty.call(Base_1.BaseApi.prototype, prop);\n // Inspect the property descriptor to see if it is a getter or setter\n // Otherwise when we check if property is a method, it will call the getter\n const descriptor = Object.getOwnPropertyDescriptor(Type.prototype, prop) ||\n Object.getOwnPropertyDescriptor(Base_1.BaseApi.prototype, prop);\n const isGetter = descriptor &&\n (typeof descriptor.get !== 'undefined' ||\n typeof descriptor.set !== 'undefined');\n // XXX: the promise can potentially be stale\n // Check if resolved, else do a refresh request for current buffer?\n if (Type && isOnPrototype) {\n if (isOnPrototype &&\n !isGetter &&\n ((prop in Type.prototype &&\n typeof Type.prototype[prop] === 'function') ||\n (prop in Base_1.BaseApi.prototype &&\n typeof Base_1.BaseApi.prototype[prop] === 'function'))) {\n // If property is a method on Type, we need to invoke it with captured args\n return (...args) => that[`${name}Promise`].then((res) => res[prop].call(res, ...args));\n }\n // Otherwise return the property requested after promise is resolved\n return ((chainCallPromise && chainCallPromise()) ||\n that[`${name}Promise`].then((res) => res[prop]));\n }\n if (prop in target) {\n // Forward rest of requests to Promise\n if (typeof target[prop] === 'function') {\n return target[prop].bind(target);\n }\n return target[prop];\n }\n return null;\n },\n set: (target, prop, value, receiver) => {\n // eslint-disable-next-line no-param-reassign\n if (receiver && (receiver instanceof Promise || 'then' in receiver)) {\n receiver.then(obj => {\n if (prop in obj) {\n // eslint-disable-next-line no-param-reassign\n obj[prop] = value;\n }\n });\n }\n else {\n // eslint-disable-next-line no-param-reassign\n target[prop] = value;\n }\n // Maintain default assignment behavior\n return true;\n },\n };\n // Proxy the promise so that we can check for chained API calls\n that[`${name}Proxy`] = new Proxy(that[`${name}Promise`], proxyHandler);\n return that[`${name}Proxy`];\n}\n","module.exports = require(\"buffer\");","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.exportsForTesting = void 0;\nexports.findNvim = findNvim;\nconst node_child_process_1 = require(\"node:child_process\");\nconst node_path_1 = require(\"node:path\");\nconst node_fs_1 = require(\"node:fs\");\nconst versionRegex = /^(\\d+)\\.(\\d+)\\.(\\d+)(?:-(.+))?$/;\nconst nvimVersionRegex = /^NVIM\\s+v(.+)$/m;\nconst buildTypeRegex = /^Build\\s+type:\\s+(.+)$/m;\nconst luaJitVersionRegex = /^LuaJIT\\s+(.+)$/m;\nconst windows = process.platform === 'win32';\nfunction parseVersion(version) {\n if (typeof version !== 'string') {\n throw new TypeError('Invalid version format: not a string');\n }\n const match = version.match(versionRegex);\n if (!match) {\n return undefined;\n }\n const [, major, minor, patch, prerelease] = match;\n const majorNumber = Number(major);\n const minorNumber = Number(minor);\n const patchNumber = Number(patch);\n const versionParts = [\n majorNumber,\n minorNumber,\n patchNumber,\n ];\n if (prerelease !== undefined) {\n versionParts.push(prerelease);\n }\n else {\n versionParts.push('zzz');\n }\n return versionParts;\n}\n/**\n * Compares two versions.\n * @param a - First version to compare.\n * @param b - Second version to compare.\n * @returns -1 if a < b, 0 if a == b, 1 if a > b.\n * @throws {TypeError} If the versions are not valid.\n *\n * Format could be:\n * - 0.9.1\n * - 0.10.0-dev-658+g06694203e-Homebrew\n */\nfunction compareVersions(a, b) {\n var _a, _b, _c, _d, _e, _f;\n const versionA = parseVersion(a);\n const versionB = parseVersion(b);\n const length = Math.min((_a = versionA === null || versionA === void 0 ? void 0 : versionA.length) !== null && _a !== void 0 ? _a : 0, (_b = versionB === null || versionB === void 0 ? void 0 : versionB.length) !== null && _b !== void 0 ? _b : 0);\n for (let i = 0; i < length; i = i + 1) {\n const partA = (_c = versionA === null || versionA === void 0 ? void 0 : versionA[i]) !== null && _c !== void 0 ? _c : 0;\n const partB = (_d = versionB === null || versionB === void 0 ? void 0 : versionB[i]) !== null && _d !== void 0 ? _d : 0;\n if (partA < partB) {\n return -1;\n }\n if (partA > partB) {\n return 1;\n }\n }\n if (((_e = versionB === null || versionB === void 0 ? void 0 : versionB.length) !== null && _e !== void 0 ? _e : 0) > ((_f = versionA === null || versionA === void 0 ? void 0 : versionA.length) !== null && _f !== void 0 ? _f : 0)) {\n return -1;\n }\n return 0;\n}\nfunction normalizePath(path) {\n return (0, node_path_1.normalize)(windows ? path.toLowerCase() : path);\n}\nfunction getPlatformSearchDirs() {\n const paths = new Set();\n const { PATH, USERPROFILE, LOCALAPPDATA, PROGRAMFILES, HOME } = process.env;\n PATH === null || PATH === void 0 ? void 0 : PATH.split(node_path_1.delimiter).forEach(p => paths.add(normalizePath(p)));\n // Add common Neovim installation paths not always in the system's PATH.\n if (windows) {\n // Scoop common install location\n if (USERPROFILE) {\n paths.add(normalizePath(`${USERPROFILE}/scoop/shims`));\n }\n paths.add(normalizePath('C:/ProgramData/scoop/shims'));\n // Winget common install location\n // See https://github.com/microsoft/winget-cli/blob/master/doc/specs/%23182%20-%20Support%20for%20installation%20of%20portable%20standalone%20apps.md\n if (LOCALAPPDATA) {\n paths.add(normalizePath(`${LOCALAPPDATA}/Microsoft/WindowsApps`));\n paths.add(normalizePath(`${LOCALAPPDATA}/Microsoft/WinGet/Packages`));\n }\n if (PROGRAMFILES) {\n paths.add(normalizePath(`${PROGRAMFILES}/Neovim/bin`));\n paths.add(normalizePath(`${PROGRAMFILES} (x86)/Neovim/bin`));\n paths.add(normalizePath(`${PROGRAMFILES}/WinGet/Packages`));\n paths.add(normalizePath(`${PROGRAMFILES} (x86)/WinGet/Packages`));\n }\n }\n else {\n // Common paths for Unix-like systems\n [\n '/usr/local/bin',\n '/usr/bin',\n '/opt/homebrew/bin',\n '/home/linuxbrew/.linuxbrew/bin',\n '/snap/nvim/current/usr/bin',\n ].forEach(p => paths.add(p));\n if (HOME) {\n paths.add(normalizePath(`${HOME}/bin`));\n paths.add(normalizePath(`${HOME}/.linuxbrew/bin`));\n }\n }\n return paths;\n}\n/**\n * Tries to find a usable `nvim` binary on the current system.\n *\n * @param opt.minVersion See {@link FindNvimOptions.minVersion}\n * @param opt.orderBy See {@link FindNvimOptions.orderBy}\n * @param opt.firstMatch See {@link FindNvimOptions.firstMatch}\n * @param opt.paths See {@link FindNvimOptions.paths}\n * @param opt.dirs See {@link FindNvimOptions.dirs}\n */\nfunction findNvim(opt = {}) {\n var _a, _b, _c;\n const platformDirs = getPlatformSearchDirs();\n const nvimExecutable = windows ? 'nvim.exe' : 'nvim';\n const normalizedPathsFromUser = ((_a = opt.paths) !== null && _a !== void 0 ? _a : []).map(normalizePath);\n const allPaths = new Set([\n ...normalizedPathsFromUser,\n ...((_b = opt.dirs) !== null && _b !== void 0 ? _b : []).map(dir => normalizePath((0, node_path_1.join)(dir, nvimExecutable))),\n ...[...platformDirs].map(dir => (0, node_path_1.join)(dir, nvimExecutable)),\n ]);\n const matches = new Array();\n const invalid = new Array();\n for (const nvimPath of allPaths) {\n if ((0, node_fs_1.existsSync)(nvimPath) || normalizedPathsFromUser.includes(nvimPath)) {\n try {\n (0, node_fs_1.accessSync)(nvimPath, node_fs_1.constants.X_OK);\n const nvimVersionFull = (0, node_child_process_1.execFileSync)(nvimPath, [\n '--version',\n ]).toString();\n const nvimVersionMatch = nvimVersionRegex.exec(nvimVersionFull);\n const buildTypeMatch = buildTypeRegex.exec(nvimVersionFull);\n const luaJitVersionMatch = luaJitVersionRegex.exec(nvimVersionFull);\n if (nvimVersionMatch && buildTypeMatch && luaJitVersionMatch) {\n if ('minVersion' in opt &&\n compareVersions((_c = opt.minVersion) !== null && _c !== void 0 ? _c : '0.0.0', nvimVersionMatch[1]) ===\n 1) {\n invalid.push({\n nvimVersion: nvimVersionMatch[1],\n path: nvimPath,\n buildType: buildTypeMatch[1],\n luaJitVersion: luaJitVersionMatch[1],\n });\n }\n else {\n matches.push({\n nvimVersion: nvimVersionMatch[1],\n path: nvimPath,\n buildType: buildTypeMatch[1],\n luaJitVersion: luaJitVersionMatch[1],\n });\n if (opt.firstMatch) {\n return {\n matches,\n invalid,\n };\n }\n }\n }\n }\n catch (e) {\n invalid.push({\n path: nvimPath,\n error: e,\n });\n }\n }\n }\n if (opt.orderBy === undefined || opt.orderBy === 'desc') {\n matches.sort((a, b) => { var _a, _b; return compareVersions((_a = b.nvimVersion) !== null && _a !== void 0 ? _a : '0.0.0', (_b = a.nvimVersion) !== null && _b !== void 0 ? _b : '0.0.0'); });\n }\n return {\n matches,\n invalid,\n };\n}\n// jest sets NODE_ENV=test.\nif (process.env.NODE_ENV === 'test') {\n // These functions are intentionally not exported. After `nvim` is found, clients can use Nvim's\n // own `vim.version` module, so node-client shouldn't expose a half-baked \"semver\" implementation.\n exports.exportsForTesting = {\n parseVersion,\n compareVersions,\n normalizePath,\n };\n}\n","'use strict';\n\nconst codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error\n }\n\n function getMessage (arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message\n } else {\n return message(arg1, arg2, arg3)\n }\n }\n\n class NodeError extends Base {\n constructor (arg1, arg2, arg3) {\n super(getMessage(arg1, arg2, arg3));\n }\n }\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n\n codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n const len = expected.length;\n expected = expected.map((i) => String(i));\n if (len > 2) {\n return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +\n expected[len - 1];\n } else if (len === 2) {\n return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n } else {\n return `of ${thing} ${expected[0]}`;\n }\n } else {\n return `of ${thing} ${String(expected)}`;\n }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n\treturn str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n\tif (this_len === undefined || this_len > str.length) {\n\t\tthis_len = str.length;\n\t}\n\treturn str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"'\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n let determiner;\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n let msg;\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;\n } else {\n const type = includes(name, '.') ? 'property' : 'argument';\n msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, 'type')}`;\n }\n\n msg += `. Received type ${typeof actual}`;\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented'\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\n\nmodule.exports.codes = codes;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = asyncify;\n\nvar _initialParams = require('./internal/initialParams.js');\n\nvar _initialParams2 = _interopRequireDefault(_initialParams);\n\nvar _setImmediate = require('./internal/setImmediate.js');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(JSON.parse),\n * function (data, next) {\n * // data is the result of parsing the text.\n * // If there was a parsing error, it would have been caught.\n * }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(function (contents) {\n * return db.model.create(contents);\n * }),\n * function (model, next) {\n * // `model` is the instantiated model object.\n * // If there was an error, this function would be skipped.\n * }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n * var intermediateStep = await processFile(file);\n * return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n if ((0, _wrapAsync.isAsync)(func)) {\n return function (...args /*, callback*/) {\n const callback = args.pop();\n const promise = func.apply(this, args);\n return handlePromise(promise, callback);\n };\n }\n\n return (0, _initialParams2.default)(function (args, callback) {\n var result;\n try {\n result = func.apply(this, args);\n } catch (e) {\n return callback(e);\n }\n // if result is Promise object\n if (result && typeof result.then === 'function') {\n return handlePromise(result, callback);\n } else {\n callback(null, result);\n }\n });\n}\n\nfunction handlePromise(promise, callback) {\n return promise.then(value => {\n invokeCallback(callback, null, value);\n }, err => {\n invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err));\n });\n}\n\nfunction invokeCallback(callback, error, value) {\n try {\n callback(error, value);\n } catch (err) {\n (0, _setImmediate2.default)(e => {\n throw e;\n }, err);\n }\n}\nmodule.exports = exports.default;","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};","/**\n * exception-handler.js: Object for handling uncaughtException events.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst asyncForEach = require('async/forEach');\nconst debug = require('@dabh/diagnostics')('winston:exception');\nconst once = require('one-time');\nconst stackTrace = require('stack-trace');\nconst ExceptionStream = require('./exception-stream');\n\n/**\n * Object for handling uncaughtException events.\n * @type {ExceptionHandler}\n */\nmodule.exports = class ExceptionHandler {\n /**\n * TODO: add contructor description\n * @param {!Logger} logger - TODO: add param description\n */\n constructor(logger) {\n if (!logger) {\n throw new Error('Logger is required to handle exceptions');\n }\n\n this.logger = logger;\n this.handlers = new Map();\n }\n\n /**\n * Handles `uncaughtException` events for the current process by adding any\n * handlers passed in.\n * @returns {undefined}\n */\n handle(...args) {\n args.forEach(arg => {\n if (Array.isArray(arg)) {\n return arg.forEach(handler => this._addHandler(handler));\n }\n\n this._addHandler(arg);\n });\n\n if (!this.catcher) {\n this.catcher = this._uncaughtException.bind(this);\n process.on('uncaughtException', this.catcher);\n }\n }\n\n /**\n * Removes any handlers to `uncaughtException` events for the current\n * process. This does not modify the state of the `this.handlers` set.\n * @returns {undefined}\n */\n unhandle() {\n if (this.catcher) {\n process.removeListener('uncaughtException', this.catcher);\n this.catcher = false;\n\n Array.from(this.handlers.values())\n .forEach(wrapper => this.logger.unpipe(wrapper));\n }\n }\n\n /**\n * TODO: add method description\n * @param {Error} err - Error to get information about.\n * @returns {mixed} - TODO: add return description.\n */\n getAllInfo(err) {\n let message = null;\n if (err) {\n message = typeof err === 'string' ? err : err.message;\n }\n\n return {\n error: err,\n // TODO (indexzero): how do we configure this?\n level: 'error',\n message: [\n `uncaughtException: ${(message || '(no error message)')}`,\n err && err.stack || ' No stack trace'\n ].join('\\n'),\n stack: err && err.stack,\n exception: true,\n date: new Date().toString(),\n process: this.getProcessInfo(),\n os: this.getOsInfo(),\n trace: this.getTrace(err)\n };\n }\n\n /**\n * Gets all relevant process information for the currently running process.\n * @returns {mixed} - TODO: add return description.\n */\n getProcessInfo() {\n return {\n pid: process.pid,\n uid: process.getuid ? process.getuid() : null,\n gid: process.getgid ? process.getgid() : null,\n cwd: process.cwd(),\n execPath: process.execPath,\n version: process.version,\n argv: process.argv,\n memoryUsage: process.memoryUsage()\n };\n }\n\n /**\n * Gets all relevant OS information for the currently running process.\n * @returns {mixed} - TODO: add return description.\n */\n getOsInfo() {\n return {\n loadavg: os.loadavg(),\n uptime: os.uptime()\n };\n }\n\n /**\n * Gets a stack trace for the specified error.\n * @param {mixed} err - TODO: add param description.\n * @returns {mixed} - TODO: add return description.\n */\n getTrace(err) {\n const trace = err ? stackTrace.parse(err) : stackTrace.get();\n return trace.map(site => {\n return {\n column: site.getColumnNumber(),\n file: site.getFileName(),\n function: site.getFunctionName(),\n line: site.getLineNumber(),\n method: site.getMethodName(),\n native: site.isNative()\n };\n });\n }\n\n /**\n * Helper method to add a transport as an exception handler.\n * @param {Transport} handler - The transport to add as an exception handler.\n * @returns {void}\n */\n _addHandler(handler) {\n if (!this.handlers.has(handler)) {\n handler.handleExceptions = true;\n const wrapper = new ExceptionStream(handler);\n this.handlers.set(handler, wrapper);\n this.logger.pipe(wrapper);\n }\n }\n\n /**\n * Logs all relevant information around the `err` and exits the current\n * process.\n * @param {Error} err - Error to handle\n * @returns {mixed} - TODO: add return description.\n * @private\n */\n _uncaughtException(err) {\n const info = this.getAllInfo(err);\n const handlers = this._getExceptionHandlers();\n // Calculate if we should exit on this error\n let doExit = typeof this.logger.exitOnError === 'function'\n ? this.logger.exitOnError(err)\n : this.logger.exitOnError;\n let timeout;\n\n if (!handlers.length && doExit) {\n // eslint-disable-next-line no-console\n console.warn('winston: exitOnError cannot be true with no exception handlers.');\n // eslint-disable-next-line no-console\n console.warn('winston: not exiting process.');\n doExit = false;\n }\n\n function gracefulExit() {\n debug('doExit', doExit);\n debug('process._exiting', process._exiting);\n\n if (doExit && !process._exiting) {\n // Remark: Currently ignoring any exceptions from transports when\n // catching uncaught exceptions.\n if (timeout) {\n clearTimeout(timeout);\n }\n // eslint-disable-next-line no-process-exit\n process.exit(1);\n }\n }\n\n if (!handlers || handlers.length === 0) {\n return process.nextTick(gracefulExit);\n }\n\n // Log to all transports attempting to listen for when they are completed.\n asyncForEach(handlers, (handler, next) => {\n const done = once(next);\n const transport = handler.transport || handler;\n\n // Debug wrapping so that we can inspect what's going on under the covers.\n function onDone(event) {\n return () => {\n debug(event);\n done();\n };\n }\n\n transport._ending = true;\n transport.once('finish', onDone('finished'));\n transport.once('error', onDone('error'));\n }, () => doExit && gracefulExit());\n\n this.logger.log(info);\n\n // If exitOnError is true, then only allow the logging of exceptions to\n // take up to `3000ms`.\n if (doExit) {\n timeout = setTimeout(gracefulExit, 3000);\n }\n }\n\n /**\n * Returns the list of transports and exceptionHandlers for this instance.\n * @returns {Array} - List of transports and exceptionHandlers for this\n * instance.\n * @private\n */\n _getExceptionHandlers() {\n // Remark (indexzero): since `logger.transports` returns all of the pipes\n // from the _readableState of the stream we actually get the join of the\n // explicit handlers and the implicit transports with\n // `handleExceptions: true`\n return this.logger.transports.filter(wrap => {\n const transport = wrap.transport || wrap;\n return transport.handleExceptions;\n });\n }\n};\n","/**\n * winston.js: Top-level include defining Winston.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst logform = require('logform');\nconst { warn } = require('./winston/common');\n\n/**\n * Expose version. Use `require` method for `webpack` support.\n * @type {string}\n */\nexports.version = require('../package.json').version;\n/**\n * Include transports defined by default by winston\n * @type {Array}\n */\nexports.transports = require('./winston/transports');\n/**\n * Expose utility methods\n * @type {Object}\n */\nexports.config = require('./winston/config');\n/**\n * Hoist format-related functionality from logform.\n * @type {Object}\n */\nexports.addColors = logform.levels;\n/**\n * Hoist format-related functionality from logform.\n * @type {Object}\n */\nexports.format = logform.format;\n/**\n * Expose core Logging-related prototypes.\n * @type {function}\n */\nexports.createLogger = require('./winston/create-logger');\n/**\n * Expose core Logging-related prototypes.\n * @type {function}\n */\nexports.Logger = require('./winston/logger');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.ExceptionHandler = require('./winston/exception-handler');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.RejectionHandler = require('./winston/rejection-handler');\n/**\n * Expose core Logging-related prototypes.\n * @type {Container}\n */\nexports.Container = require('./winston/container');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.Transport = require('winston-transport');\n/**\n * We create and expose a default `Container` to `winston.loggers` so that the\n * programmer may manage multiple `winston.Logger` instances without any\n * additional overhead.\n * @example\n * // some-file1.js\n * const logger = require('winston').loggers.get('something');\n *\n * // some-file2.js\n * const logger = require('winston').loggers.get('something');\n */\nexports.loggers = new exports.Container();\n\n/**\n * We create and expose a 'defaultLogger' so that the programmer may do the\n * following without the need to create an instance of winston.Logger directly:\n * @example\n * const winston = require('winston');\n * winston.log('info', 'some message');\n * winston.error('some error');\n */\nconst defaultLogger = exports.createLogger();\n\n// Pass through the target methods onto `winston.\nObject.keys(exports.config.npm.levels)\n .concat([\n 'log',\n 'query',\n 'stream',\n 'add',\n 'remove',\n 'clear',\n 'profile',\n 'startTimer',\n 'handleExceptions',\n 'unhandleExceptions',\n 'handleRejections',\n 'unhandleRejections',\n 'configure',\n 'child'\n ])\n .forEach(\n method => (exports[method] = (...args) => defaultLogger[method](...args))\n );\n\n/**\n * Define getter / setter for the default logger level which need to be exposed\n * by winston.\n * @type {string}\n */\nObject.defineProperty(exports, 'level', {\n get() {\n return defaultLogger.level;\n },\n set(val) {\n defaultLogger.level = val;\n }\n});\n\n/**\n * Define getter for `exceptions` which replaces `handleExceptions` and\n * `unhandleExceptions`.\n * @type {Object}\n */\nObject.defineProperty(exports, 'exceptions', {\n get() {\n return defaultLogger.exceptions;\n }\n});\n\n/**\n * Define getter for `rejections` which replaces `handleRejections` and\n * `unhandleRejections`.\n * @type {Object}\n */\nObject.defineProperty(exports, 'rejections', {\n get() {\n return defaultLogger.rejections;\n }\n});\n\n/**\n * Define getters / setters for appropriate properties of the default logger\n * which need to be exposed by winston.\n * @type {Logger}\n */\n['exitOnError'].forEach(prop => {\n Object.defineProperty(exports, prop, {\n get() {\n return defaultLogger[prop];\n },\n set(val) {\n defaultLogger[prop] = val;\n }\n });\n});\n\n/**\n * The default transports and exceptionHandlers for the default winston logger.\n * @type {Object}\n */\nObject.defineProperty(exports, 'default', {\n get() {\n return {\n exceptionHandlers: defaultLogger.exceptionHandlers,\n rejectionHandlers: defaultLogger.rejectionHandlers,\n transports: defaultLogger.transports\n };\n }\n});\n\n// Have friendlier breakage notices for properties that were exposed by default\n// on winston < 3.0.\nwarn.deprecated(exports, 'setLevels');\nwarn.forFunctions(exports, 'useFormat', ['cli']);\nwarn.forProperties(exports, 'useFormat', ['padLevels', 'stripColors']);\nwarn.forFunctions(exports, 'deprecated', [\n 'addRewriter',\n 'addFilter',\n 'clone',\n 'extend'\n]);\nwarn.forProperties(exports, 'deprecated', ['emitErrs', 'levelLength']);\n\n","/**\n * syslog.js: Config that conform to syslog logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the syslog configuration.\n * @type {Object}\n */\nexports.levels = {\n emerg: 0,\n alert: 1,\n crit: 2,\n error: 3,\n warning: 4,\n notice: 5,\n info: 6,\n debug: 7\n};\n\n/**\n * Default levels for the syslog configuration.\n * @type {Object}\n */\nexports.colors = {\n emerg: 'red',\n alert: 'yellow',\n crit: 'red',\n error: 'red',\n warning: 'red',\n notice: 'yellow',\n info: 'green',\n debug: 'blue'\n};\n","\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:true});exports.calcSlices=exports.applyPatch=exports.calcPatch=exports.lcs=exports.diff=exports.diff_core=void 0;function diff_internal(state,c){const{b,eq,stack_base}=state;let{i,N,j,M,Z,stack_top}=state;for(;;){switch(c){case 0:{Z_block:while(N>0&&M>0){b.fill(0,0,2*Z);const W=N-M;const L=N+M;const parity=L&1;const offsetx=i+N-1;const offsety=j+M-1;const hmax=(L+parity)/2;let z;h_loop:for(let h=0;h<=hmax;h++){const kmin=2*Math.max(0,h-M)-h;const kmax=h-2*Math.max(0,h-N);for(let k=kmin;k<=kmax;k+=2){const gkm=b[k-1-Z*Math.floor((k-1)/Z)];const gkp=b[k+1-Z*Math.floor((k+1)/Z)];const u=(k===-h||(k!==h&&gkm=1-h&&z=N){if(h>1||x!==u){stack_base[stack_top++]=i+x;stack_base[stack_top++]=N-x;stack_base[stack_top++]=j+y;stack_base[stack_top++]=M-y;N=u;M=v;Z=2*(Math.min(N,M)+1);continue Z_block;}\nelse\nbreak h_loop;}}\nfor(let k=kmin;k<=kmax;k+=2){const pkm=b[Z+k-1-Z*Math.floor((k-1)/Z)];const pkp=b[Z+k+1-Z*Math.floor((k+1)/Z)];const u=(k===-h||(k!==h&&pkm=-h&&z<=h&&x+b[z-Z*Math.floor(z/Z)]>=N){if(h>0||x!==u){stack_base[stack_top++]=i+N-u;stack_base[stack_top++]=u;stack_base[stack_top++]=j+M-v;stack_base[stack_top++]=v;N=N-x;M=M-y;Z=2*(Math.min(N,M)+1);continue Z_block;}\nelse\nbreak h_loop;}}}\nif(N===M)\ncontinue;if(M>N){i+=N;j+=N;M-=N;N=0;}\nelse{i+=M;j+=M;N-=M;M=0;}\nbreak;}\nif(N+M!==0){if(state.pxe===i||state.pye===j){state.pxe=i+N;state.pye=j+M;}\nelse{const sx=state.pxs;state.oxs=state.pxs;state.oxe=state.pxe;state.oys=state.pys;state.oye=state.pye;state.pxs=i;state.pxe=i+N;state.pys=j;state.pye=j+M;if(sx>=0){state.i=i;state.N=N;state.j=j;state.M=M;state.Z=Z;state.stack_top=stack_top;return 1;}}}}\ncase 1:{if(stack_top===0)\nreturn 2;M=stack_base[--stack_top];j=stack_base[--stack_top];N=stack_base[--stack_top];i=stack_base[--stack_top];Z=2*(Math.min(N,M)+1);c=0;}}}}\nclass DiffGen{constructor(state){this.state=state;this.c=0;this.result={value:null,done:false};}\n[Symbol.iterator](){return this;}\nnext(){const{state,result}=this;if(this.c>1){result.done=true;result.value=undefined;return result;}\nconst c=diff_internal(state,this.c);this.c=c;if(c===1){result.value=[state.oxs,state.oxe,state.oys,state.oye];return result;}\nif(state.pxs>=0){result.value=[state.pxs,state.pxe,state.pys,state.pye];return result;}\nresult.done=true;result.value=undefined;return result;}}\nfunction diff_core(i,N,j,M,eq){const Z=(Math.min(N,M)+1)*2;const L=N+M;const b=new(L<256?Uint8Array:L<65536?Uint16Array:Uint32Array)(2*Z);return new DiffGen({i,N,j,M,Z,b,eq,pxs:-1,pxe:-1,pys:-1,pye:-1,oxs:-1,oxe:-1,oys:-1,oye:-1,stack_top:0,stack_base:[],});}\nexports.diff_core=diff_core;function diff(xs,ys,eq){let[i,N,M]=[0,xs.length,ys.length];if(typeof eq==='function'){while(ii&&M>i);}\nelse{while(ii&&M>i);eq=(i,j)=>xs[i]===ys[j];}\nreturn diff_core(i,N+1-i,i,M+1-i,eq);}\nexports.diff=diff;class LCSGen{constructor(diff,N){this.diff=diff;this.N=N;this.i=0;this.j=0;}\n[Symbol.iterator](){return this;}\nnext(){const rec=this.diff.next();if(rec.done){const{i,j,N}=this;if(i0)\nyield ins;i=dele;}\nif(i {\n const stringifiedRest = jsonStringify(Object.assign({}, info, {\n level: undefined,\n message: undefined,\n splat: undefined\n }));\n\n const padding = info.padding && info.padding[info.level] || '';\n if (stringifiedRest !== '{}') {\n info[MESSAGE] = `${info.level}:${padding} ${info.message} ${stringifiedRest}`;\n } else {\n info[MESSAGE] = `${info.level}:${padding} ${info.message}`;\n }\n\n return info;\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (coll) {\n return coll[Symbol.iterator] && coll[Symbol.iterator]();\n};\n\nmodule.exports = exports.default;","import {\n ConfigurationChangeEvent,\n Disposable,\n ExtensionKind,\n ThemableDecorationRenderOptions,\n WorkspaceConfiguration,\n commands,\n extensions,\n window,\n workspace,\n} from \"vscode\";\n\nimport { CTRL_KEYS, EXT_ID, EXT_NAME } from \"./constants\";\nimport { VSCodeContext, disposeAll } from \"./utils\";\n\nconst isWindows = process.platform === \"win32\";\n\ntype SettingPrefix = \"neovimExecutablePaths\" | \"neovimInitVimPaths\"; //this needs to be aligned with setting names in package.json\n\nexport type CompositeKeys = { [key: string]: { command: string; args?: any[] } };\n\nexport class Config implements Disposable {\n private disposables: Disposable[] = [];\n private readonly root = EXT_NAME;\n private cfg!: WorkspaceConfiguration;\n private readonly requireRestartConfigs = [\n \"highlightGroups.highlights\",\n \"neovimClean\",\n \"NVIM_APPNAME\",\n \"logOutputToConsole\",\n \"neovimWidth\",\n \"useWSL\",\n \"wslDistribution\",\n \"neovimInitVimPaths.darwin\",\n \"neovimInitVimPaths.linux\",\n \"neovimInitVimPaths.win32\",\n \"neovimExecutablePaths.darwin\",\n \"neovimExecutablePaths.linux\",\n \"neovimExecutablePaths.win32\",\n \"afterInitConfig\",\n ].map((c) => `${this.root}.${c}`);\n\n dispose() {\n disposeAll(this.disposables);\n }\n\n public init() {\n this.onConfigurationChanged();\n workspace.onDidChangeConfiguration(this.onConfigurationChanged, this, this.disposables);\n }\n\n private onConfigurationChanged(e?: ConfigurationChangeEvent) {\n this.cfg = workspace.getConfiguration(this.root);\n VSCodeContext.set(`neovim.editorLangIdExclusions`, this.editorLangIdExclusions);\n const ctrlKeysNormalMode = this.ctrlKeysNormalMode;\n const ctrlKeysInsertMode = this.ctrlKeysInsertMode;\n CTRL_KEYS.forEach((k) => {\n VSCodeContext.set(`neovim.ctrlKeysNormal.${k}`, ctrlKeysNormalMode.includes(k));\n VSCodeContext.set(`neovim.ctrlKeysInsert.${k}`, ctrlKeysInsertMode.includes(k));\n });\n\n if (!e) return;\n const requireRestart = this.requireRestartConfigs.find((c) => e.affectsConfiguration(c));\n if (!requireRestart) return;\n\n window\n .showInformationMessage(`Changing \"${requireRestart}\" requires restart to take effect.`, \"Restart\")\n .then((value) => {\n if (value === \"Restart\") {\n commands.executeCommand(\"vscode-neovim.restart\");\n }\n });\n }\n\n private getSystemSpecificSetting(settingPrefix: SettingPrefix): string | undefined {\n //https://github.com/microsoft/vscode/blob/master/src/vs/base/common/platform.ts#L63\n let platform = process.platform as \"win32\" | \"darwin\" | \"linux\";\n platform = this.useWsl && platform === \"win32\" ? \"linux\" : platform;\n return this.cfg.get(`${settingPrefix}.${platform}`);\n }\n\n private getNeovimPath(): string {\n return this.getSystemSpecificSetting(\"neovimExecutablePaths\") ?? \"nvim\";\n }\n\n private getNeovimInitPath(): string | undefined {\n return this.getSystemSpecificSetting(\"neovimInitVimPaths\");\n }\n\n get highlights(): { [key: string]: ThemableDecorationRenderOptions } {\n return this.cfg.get(\"highlightGroups.highlights\")!;\n }\n // #region Keybindings\n get ctrlKeysNormalMode(): string[] {\n return this.cfg.get(\"ctrlKeysForNormalMode\")!;\n }\n get ctrlKeysInsertMode(): string[] {\n return this.cfg.get(\"ctrlKeysForInsertMode\")!;\n }\n get editorLangIdExclusions(): string[] {\n return this.cfg.get(\"editorLangIdExclusions\")!;\n }\n // #endregion\n get useWsl() {\n const ext = extensions.getExtension(EXT_ID)!;\n return ext.extensionKind !== ExtensionKind.Workspace && isWindows && this.cfg.get(\"useWSL\", false);\n }\n get wslDistribution() {\n return this.cfg.get(\"wslDistribution\", \"\");\n }\n get revealCursorScrollLine() {\n return this.cfg.get(\"revealCursorScrollLine\", false);\n }\n get neovimWidth() {\n return this.cfg.get(\"neovimWidth\", 1000);\n }\n get neovimViewportWidth() {\n return this.neovimWidth;\n }\n get neovimViewportHeightExtend() {\n return this.cfg.get(\"neovimViewportHeightExtend\", 1);\n }\n get neovimPath() {\n return this.getNeovimPath();\n }\n get neovimInitPath() {\n return this.getNeovimInitPath() ?? \"\";\n }\n get clean() {\n return this.cfg.get(\"neovimClean\", false);\n }\n get NVIM_APPNAME() {\n return this.cfg.get(\"NVIM_APPNAME\", \"\");\n }\n get logPath() {\n return this.cfg.get(\"logPath\", \"\");\n }\n get outputToConsole() {\n return this.cfg.get(\"logOutputToConsole\", false);\n }\n get statusLineSeparator() {\n return this.cfg.get(\"statusLineSeparator\", \"|\");\n }\n\n get normalSelectionDebounceTime() {\n return this.cfg.get(\"normalSelectionDebounceTime\", 50);\n }\n get mouseSelectionDebounceTime() {\n return this.cfg.get(\"mouseSelectionDebounceTime\", 100);\n }\n get disableMouseSelection() {\n return this.mouseSelectionDebounceTime === 0;\n }\n\n get compositeTimeout(): number {\n return this.cfg.get(\"compositeTimeout\", 300);\n }\n get compositeKeys(): CompositeKeys {\n return this.cfg.get(\"compositeKeys\", {});\n }\n get autoGeneratedDocumentSchemes(): string[] {\n return this.cfg.get(\"autoGeneratedDocumentSchemes\", []);\n }\n}\n\nexport const config = new Config();\n","'use strict';\n\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\nconst stringify = require('safe-stable-stringify');\n\n/*\n * function replacer (key, value)\n * Handles proper stringification of Buffer and bigint output.\n */\nfunction replacer(key, value) {\n // safe-stable-stringify does support BigInt, however, it doesn't wrap the value in quotes.\n // Leading to a loss in fidelity if the resulting string is parsed.\n // It would also be a breaking change for logform.\n if (typeof value === 'bigint')\n return value.toString();\n return value;\n}\n\n/*\n * function json (info)\n * Returns a new instance of the JSON format that turns a log `info`\n * object into pure JSON. This was previously exposed as { json: true }\n * to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts) => {\n const jsonStringify = stringify.configure(opts);\n info[MESSAGE] = jsonStringify(info, opts.replacer || replacer, opts.space);\n return info;\n});\n","'use strict';\n\nconst util = require('util');\nconst { LEVEL } = require('triple-beam');\nconst TransportStream = require('./modern');\n\n/**\n * Constructor function for the LegacyTransportStream. This is an internal\n * wrapper `winston >= 3` uses to wrap older transports implementing\n * log(level, message, meta).\n * @param {Object} options - Options for this TransportStream instance.\n * @param {Transpot} options.transport - winston@2 or older Transport to wrap.\n */\n\nconst LegacyTransportStream = module.exports = function LegacyTransportStream(options = {}) {\n TransportStream.call(this, options);\n if (!options.transport || typeof options.transport.log !== 'function') {\n throw new Error('Invalid transport, must be an object with a log method.');\n }\n\n this.transport = options.transport;\n this.level = this.level || options.transport.level;\n this.handleExceptions = this.handleExceptions || options.transport.handleExceptions;\n\n // Display our deprecation notice.\n this._deprecated();\n\n // Properly bubble up errors from the transport to the\n // LegacyTransportStream instance, but only once no matter how many times\n // this transport is shared.\n function transportError(err) {\n this.emit('error', err, this.transport);\n }\n\n if (!this.transport.__winstonError) {\n this.transport.__winstonError = transportError.bind(this);\n this.transport.on('error', this.transport.__winstonError);\n }\n};\n\n/*\n * Inherit from TransportStream using Node.js built-ins\n */\nutil.inherits(LegacyTransportStream, TransportStream);\n\n/**\n * Writes the info object to our transport instance.\n * @param {mixed} info - TODO: add param description.\n * @param {mixed} enc - TODO: add param description.\n * @param {function} callback - TODO: add param description.\n * @returns {undefined}\n * @private\n */\nLegacyTransportStream.prototype._write = function _write(info, enc, callback) {\n if (this.silent || (info.exception === true && !this.handleExceptions)) {\n return callback(null);\n }\n\n // Remark: This has to be handled in the base transport now because we\n // cannot conditionally write to our pipe targets as stream.\n if (!this.level || this.levels[this.level] >= this.levels[info[LEVEL]]) {\n this.transport.log(info[LEVEL], info.message, info, this._nop);\n }\n\n callback(null);\n};\n\n/**\n * Writes the batch of info objects (i.e. \"object chunks\") to our transport\n * instance after performing any necessary filtering.\n * @param {mixed} chunks - TODO: add params description.\n * @param {function} callback - TODO: add params description.\n * @returns {mixed} - TODO: add returns description.\n * @private\n */\nLegacyTransportStream.prototype._writev = function _writev(chunks, callback) {\n for (let i = 0; i < chunks.length; i++) {\n if (this._accept(chunks[i])) {\n this.transport.log(\n chunks[i].chunk[LEVEL],\n chunks[i].chunk.message,\n chunks[i].chunk,\n this._nop\n );\n chunks[i].callback();\n }\n }\n\n return callback(null);\n};\n\n/**\n * Displays a deprecation notice. Defined as a function so it can be\n * overriden in tests.\n * @returns {undefined}\n */\nLegacyTransportStream.prototype._deprecated = function _deprecated() {\n // eslint-disable-next-line no-console\n console.error([\n `${this.transport.name} is a legacy winston transport. Consider upgrading: `,\n '- Upgrade docs: https://github.com/winstonjs/winston/blob/master/UPGRADE-3.0.md'\n ].join('\\n'));\n};\n\n/**\n * Clean up error handling state on the legacy transport associated\n * with this instance.\n * @returns {undefined}\n */\nLegacyTransportStream.prototype.close = function close() {\n if (this.transport.close) {\n this.transport.close();\n }\n\n if (this.transport.__winstonError) {\n this.transport.removeListener('error', this.transport.__winstonError);\n this.transport.__winstonError = null;\n }\n};\n","'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function';\n\nmodule.exports = isStream;\n","import fs from \"fs\";\nimport { inspect } from \"util\";\n\nimport { Disposable, window } from \"vscode\";\nimport * as vscode from \"vscode\";\n\nimport { disposeAll } from \"./utils\";\nimport { EXT_NAME } from \"./constants\";\n\nexport interface ILogger {\n trace(...args: any[]): void;\n debug(...args: any[]): void;\n info(...args: any[]): void;\n warn(...args: any[]): void;\n error(...args: any[]): void;\n /**\n * Logs a message only if `uri` is not a log file/channel (to avoid infinite loop).\n *\n * If the user is viewing the extension OutputChannel or logfile, we must\n * not log events triggered by that channel or file itself.\n *\n * @param uri Document that triggered the log event.\n * @param level Log level.\n * @param logArgs Log message format string followed by values.\n */\n log(uri: vscode.Uri | undefined, level: vscode.LogLevel, ...logArgs: any[]): void;\n}\n\nfunction getTimestamp(): string {\n return new Date().toISOString();\n}\n\nexport class Logger implements Disposable {\n private disposables: Disposable[] = [];\n private loggers: Map = new Map();\n private fd: number | undefined;\n private filePath: string | undefined;\n private level!: vscode.LogLevel;\n private logToConsole!: boolean;\n private outputChannel!: vscode.LogOutputChannel;\n\n /**\n * Setup logging for the extension.\n *\n * @param filePath Write messages to this file.\n * @param logToConsole Write messages to the `console` (Hint: run the \"Developer: Toggle Developer Tools\" vscode command to see the console).\n */\n public init(filePath: string, logToConsole = false) {\n this.outputChannel = window.createOutputChannel(`${EXT_NAME} logs`, { log: true });\n this.disposables.push(\n this.outputChannel,\n this.outputChannel.onDidChangeLogLevel((level) => this.onLogLevelChanged(level)),\n );\n\n this.level = this.outputChannel.logLevel;\n this.logToConsole = logToConsole;\n this.filePath = filePath;\n this.setupLogFile();\n }\n\n public dispose(): void {\n disposeAll(this.disposables);\n }\n\n private onLogLevelChanged(level: vscode.LogLevel) {\n this.level = level;\n this.setupLogFile();\n }\n\n private setupLogFile() {\n if (!this.filePath) {\n // extension restarted\n if (this.fd) {\n fs.closeSync(this.fd);\n this.fd = undefined;\n }\n return;\n } else if (this.level !== vscode.LogLevel.Off && this.fd) {\n return;\n } else if (this.level === vscode.LogLevel.Off && this.fd) {\n fs.closeSync(this.fd);\n this.fd = undefined;\n return;\n }\n\n try {\n this.fd = fs.openSync(this.filePath, \"w\");\n } catch (err) {\n window.showErrorMessage(`Can not open log file at ${this.filePath}: ${err}`);\n return;\n }\n\n this.disposables.push({\n dispose: () => {\n if (!this.fd) {\n return;\n }\n\n fs.closeSync(this.fd);\n },\n });\n }\n\n private log(level: vscode.LogLevel, scope: string, logToOutputChannel: boolean, args: any[]): void {\n const msg = args.reduce((p, c, i) => {\n if (typeof c === \"object\") {\n try {\n c = inspect(c, false, 2, false);\n } catch {\n // ignore\n }\n }\n return p + (i > 0 ? \" \" : \"\") + c;\n }, \"\");\n\n if (this.fd || this.logToConsole) {\n const logMsg = `${getTimestamp()} ${scope}: ${msg}`;\n this.fd && fs.appendFileSync(this.fd, logMsg + \"\\n\");\n this.logToConsole && console[level === vscode.LogLevel.Error ? \"error\" : \"log\"](logMsg);\n }\n\n // Half-baked attempt to avoid infinite loop.\n // Preferred approach is for modules to decide this via `createLogger(…, logToOutputChannel=…)`.\n const activeDoc = window.activeTextEditor?.document; // \"output:asvetliakov.vscode-neovim.vscode-neovim\"\n const outputFocused = activeDoc?.uri.scheme === \"output\" || activeDoc?.fileName?.startsWith(\"output:\");\n if (logToOutputChannel && this.outputChannel && activeDoc && !outputFocused) {\n const fullMsg = `${scope}: ${msg}`;\n switch (level) {\n case vscode.LogLevel.Error:\n this.outputChannel.error(fullMsg);\n break;\n case vscode.LogLevel.Warning:\n this.outputChannel.warn(fullMsg);\n break;\n case vscode.LogLevel.Info:\n this.outputChannel.info(fullMsg);\n break;\n case vscode.LogLevel.Debug:\n this.outputChannel.debug(fullMsg);\n break;\n case vscode.LogLevel.Trace:\n this.outputChannel.trace(fullMsg);\n break;\n case vscode.LogLevel.Off:\n // Do nothing. This should never happen because the logger isn't setup for level=off.\n break;\n }\n }\n\n if (level === vscode.LogLevel.Error) {\n window.showErrorMessage(msg);\n }\n }\n\n public createLogger(scope: string, logToOutputChannel: boolean): ILogger {\n const logger = this.loggers.has(scope)\n ? this.loggers.get(scope)!\n : {\n trace: (...args: any[]) => {\n if (this.level <= vscode.LogLevel.Trace) {\n this.log(vscode.LogLevel.Trace, scope, logToOutputChannel, args);\n }\n },\n debug: (...args: any[]) => {\n if (this.level <= vscode.LogLevel.Debug) {\n this.log(vscode.LogLevel.Debug, scope, logToOutputChannel, args);\n }\n },\n info: (...args: any[]) => {\n if (this.level <= vscode.LogLevel.Info) {\n this.log(vscode.LogLevel.Info, scope, logToOutputChannel, args);\n }\n },\n warn: (...args: any[]) => {\n if (this.level <= vscode.LogLevel.Warning) {\n this.log(vscode.LogLevel.Warning, scope, logToOutputChannel, args);\n }\n },\n error: (...args: any[]) => {\n if (this.level <= vscode.LogLevel.Error) {\n this.log(vscode.LogLevel.Error, scope, logToOutputChannel, args);\n }\n },\n log(uri: vscode.Uri | undefined, level: vscode.LogLevel, ...logArgs: any[]) {\n const isLogSink =\n !uri ||\n uri.scheme === \"output\" ||\n uri.toString().startsWith(\"output:\") ||\n // XXX: may get filepath like\n // \"/my/workspace/path/output:asvetliakov.vscode-neovim.vscode-neovim\"\n // This seems like a bug (\"output:…\" channel path appended to a workspace path?), but we should detect it here and avoid a loop nevertheless.\n /[/\\\\]output:[^/\\\\]+$/i.test(uri.path);\n\n if (isLogSink) {\n return;\n }\n\n switch (level) {\n case vscode.LogLevel.Error:\n logger.error(...logArgs);\n break;\n case vscode.LogLevel.Warning:\n logger.warn(...logArgs);\n break;\n case vscode.LogLevel.Info:\n logger.info(...logArgs);\n break;\n case vscode.LogLevel.Debug:\n logger.debug(...logArgs);\n break;\n case vscode.LogLevel.Trace:\n logger.trace(...logArgs);\n break;\n case vscode.LogLevel.Off:\n // Do nothing. This should never happen because the logger isn't setup for level=off.\n break;\n }\n },\n };\n this.loggers.set(scope, logger);\n return logger;\n }\n}\n\nexport const logger = new Logger();\n\nexport function createLogger(scope = \"Neovim\", logToOutputChannel = true): ILogger {\n return logger.createLogger(scope, logToOutputChannel);\n}\n","module.exports = require(\"vscode\");","module.exports = require(\"node:child_process\");","module['exports'] = function(colors) {\n // RoY G BiV\n var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta'];\n return function(letter, i, exploded) {\n if (letter === ' ') {\n return letter;\n } else {\n return colors[rainbowColors[i++ % rainbowColors.length]](letter);\n }\n };\n};\n\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Buffer = exports.ATTACH = exports.DETACH = void 0;\nconst Base_1 = require(\"./Base\");\nconst types_1 = require(\"./types\");\nexports.DETACH = Symbol('detachBuffer');\nexports.ATTACH = Symbol('attachBuffer');\nclass Buffer extends Base_1.BaseApi {\n constructor() {\n super(...arguments);\n this.prefix = types_1.Metadata[types_1.ExtType.Buffer].prefix;\n /**\n * Attach to buffer to listen to buffer events\n * @param sendBuffer Set to true if the initial notification should contain\n * the whole buffer. If so, the first notification will be a\n * `nvim_buf_lines_event`. Otherwise, the first notification will be\n * a `nvim_buf_changedtick_event`\n */\n this[_a] = (...args_1) => __awaiter(this, [...args_1], void 0, function* (sendBuffer = false, options = {}) {\n if (this.client.isAttached(this))\n return true;\n return this.request(`${this.prefix}attach`, [this, sendBuffer, options]);\n });\n /**\n * Detach from buffer to stop listening to buffer events\n */\n this[_b] = () => this.request(`${this.prefix}detach`, [this]);\n }\n get isAttached() {\n return this.client.isAttached(this);\n }\n /**\n * Get the bufnr of Buffer\n */\n get id() {\n return this.data;\n }\n /** Total number of lines in buffer */\n get length() {\n return this.request(`${this.prefix}line_count`, [this]);\n }\n /** Get lines in buffer */\n get lines() {\n return this.getLines();\n }\n /** Gets a changed tick of a buffer */\n get changedtick() {\n return this.request(`${this.prefix}get_changedtick`, [this]);\n }\n get commands() {\n return this.getCommands();\n }\n getCommands(options = {}) {\n return this.request(`${this.prefix}get_commands`, [this, options]);\n }\n /** Get specific lines of buffer */\n getLines({ start, end, strictIndexing } = { start: 0, end: -1, strictIndexing: true }) {\n const indexing = typeof strictIndexing === 'undefined' ? true : strictIndexing;\n return this.request(`${this.prefix}get_lines`, [\n this,\n start,\n end,\n indexing,\n ]);\n }\n /** Set lines of buffer given indeces */\n setLines(_lines, { start: _start, end: _end, strictIndexing } = {\n strictIndexing: true,\n }) {\n if (_start === undefined || _end === undefined) {\n throw new Error('start and end are required');\n }\n const indexing = typeof strictIndexing === 'undefined' ? true : strictIndexing;\n const lines = typeof _lines === 'string' ? [_lines] : _lines;\n const end = typeof _end !== 'undefined' ? _end : _start + 1;\n return this.request(`${this.prefix}set_lines`, [\n this,\n _start,\n end,\n indexing,\n lines,\n ]);\n }\n /** Insert lines at `start` index */\n insert(lines, start) {\n return this.setLines(lines, {\n start,\n end: start,\n strictIndexing: true,\n });\n }\n /** Replace lines starting at `start` index */\n replace(_lines, start) {\n const lines = typeof _lines === 'string' ? [_lines] : _lines;\n return this.setLines(lines, {\n start,\n end: start + lines.length,\n strictIndexing: false,\n });\n }\n /** Remove lines at index */\n remove(start, end, strictIndexing) {\n return this.setLines([], { start, end, strictIndexing });\n }\n /** Append a string or list of lines to end of buffer */\n append(lines) {\n return this.setLines(lines, {\n start: -1,\n end: -1,\n strictIndexing: false,\n });\n }\n /** Get buffer name */\n get name() {\n return this.request(`${this.prefix}get_name`, [this]);\n }\n /** Set current buffer name */\n set name(value) {\n this.request(`${this.prefix}set_name`, [this, value]);\n }\n /** Is current buffer valid */\n get valid() {\n return this.request(`${this.prefix}is_valid`, [this]);\n }\n /** Get mark position given mark name */\n mark(name) {\n return this.request(`${this.prefix}get_mark`, [this, name]);\n }\n // range(start, end) {\n // \"\"\"Return a `Range` object, which represents part of the Buffer.\"\"\"\n // return Range(this, start, end)\n // }\n /**\n * Gets a list of buffer-local |mapping| definitions.\n */\n getKeymap(mode) {\n return this.request(`${this.prefix}get_keymap`, [this, mode]);\n }\n /**\n * Checks if a buffer is valid and loaded. See |api-buffer| for\n * more info about unloaded buffers.\n */\n get loaded() {\n return this.request(`${this.prefix}is_loaded`, [this]);\n }\n /**\n * Returns the byte offset for a line.\n *\n * Line 1 (index=0) has offset 0. UTF-8 bytes are counted. EOL is\n * one byte. 'fileformat' and 'fileencoding' are ignored. The\n * line index just after the last line gives the total byte-count\n * of the buffer. A final EOL byte is counted if it would be\n * written, see 'eol'.\n *\n * Unlike |line2byte()|, throws error for out-of-bounds indexing.\n * Returns -1 for unloaded buffer.\n *\n * @return {Number} Integer byte offset, or -1 for unloaded buffer.\n */\n getOffset(index) {\n return this.request(`${this.prefix}get_offset`, [this, index]);\n }\n /**\n * Adds a highlight to buffer.\n *\n * Useful for plugins that dynamically generate highlights to a\n * buffer (like a semantic highlighter or linter). The function\n * adds a single highlight to a buffer. Unlike |matchaddpos()|\n * highlights follow changes to line numbering (as lines are\n * inserted/removed above the highlighted line), like signs and\n * marks do.\n *\n * Namespaces are used for batch deletion/updating of a set of\n * highlights. To create a namespace, use |nvim_create_namespace|\n * which returns a namespace id. Pass it in to this function as\n * `ns_id` to add highlights to the namespace. All highlights in\n * the same namespace can then be cleared with single call to\n * |nvim_buf_clear_namespace|. If the highlight never will be\n * deleted by an API call, pass `ns_id = -1`.\n *\n * As a shorthand, `ns_id = 0` can be used to create a new\n * namespace for the highlight, the allocated id is then\n * returned. If `hl_group` is the empty string no highlight is\n * added, but a new `ns_id` is still returned. This is supported\n * for backwards compatibility, new code should use\n * |nvim_create_namespace| to create a new empty namespace.\n */\n addHighlight({ hlGroup: _hlGroup, line, colStart: _start, colEnd: _end, srcId: _srcId, }) {\n const hlGroup = typeof _hlGroup !== 'undefined' ? _hlGroup : '';\n const colEnd = typeof _end !== 'undefined' ? _end : -1;\n const colStart = typeof _start !== 'undefined' ? _start : -0;\n const srcId = typeof _srcId !== 'undefined' ? _srcId : -1;\n return this.request(`${this.prefix}add_highlight`, [\n this,\n srcId,\n hlGroup,\n line,\n colStart,\n colEnd,\n ]);\n }\n /**\n * Deprecated\n */\n clearHighlight(args = {}) {\n // eslint-disable-next-line no-console\n console.warn('`clearHighlight` is deprecated, use ``clearNamespace()` instead');\n const defaults = {\n srcId: -1,\n lineStart: 0,\n lineEnd: -1,\n };\n const { srcId, lineStart, lineEnd } = Object.assign(Object.assign({}, defaults), args);\n return this.request(`${this.prefix}clear_highlight`, [\n this,\n srcId,\n lineStart,\n lineEnd,\n ]);\n }\n /**\n * Clears namespaced objects, highlights and virtual text, from a line range\n *\n * To clear the namespace in the entire buffer, pass in 0 and -1 to line_start and line_end respectively.\n *\n * @param {Number} nsId Namespace to clear, or -1 to clear all namespaces\n * @param {Number} lineStart Start of range of lines to clear\n * @param {Number} lineEnd End of range of lines to clear (exclusive) or -1 to clear to end of buffer\n */\n clearNamespace(args) {\n const defaults = {\n nsId: -1,\n lineStart: 0,\n lineEnd: -1,\n };\n const { nsId, lineStart, lineEnd } = Object.assign(Object.assign({}, defaults), args);\n this.request(`${this.prefix}clear_namespace`, [\n this,\n nsId,\n lineStart,\n lineEnd,\n ]);\n }\n /**\n * Set the virtual text (annotation) for a buffer line.\n *\n * By default (and currently the only option) the text will be\n * placed after the buffer text. Virtual text will never cause\n * reflow, rather virtual text will be truncated at the end of\n * the screen line. The virtual text will begin one cell\n * (|lcs-eol| or space) after the ordinary text.\n *\n * Namespaces are used to support batch deletion/updating of\n * virtual text. To create a namespace, use\n * |nvim_create_namespace|. Virtual text is cleared using\n * |nvim_buf_clear_namespace|. The same `ns_id` can be used for\n * both virtual text and highlights added by\n * |nvim_buf_add_highlight|, both can then be cleared with a\n * single call to |nvim_buf_clear_namespace|. If the virtual text\n * never will be cleared by an API call, pass `ns_id = -1`.\n *\n * As a shorthand, `ns_id = 0` can be used to create a new\n * namespace for the virtual text, the allocated id is then\n * returned.\n *\n * @param\n * @param {Number} nsId Namespace to use or 0 to create a namespace, or -1 for a ungrouped annotation\n * @param {Number} line Line to annotate with virtual text (zero-indexed)\n * @param {VirtualTextChunk[]} chunks A list of [text, hl_group] arrays, each\n representing a text chunk with specified\n highlight. `hl_group` element can be omitted for\n no highlight.\n * @param {Object} opts Optional parameters. Currently not used.\n */\n setVirtualText(nsId, line, chunks, opts = {}) {\n return this.request(`${this.prefix}set_virtual_text`, [\n this,\n nsId,\n line,\n chunks,\n opts,\n ]);\n }\n /**\n * Listens to buffer for events\n */\n listen(eventName, cb) {\n if (!this.isAttached) {\n this[exports.ATTACH]().then(attached => {\n if (!attached) {\n this.unlisten(eventName, cb);\n }\n });\n }\n this.client.attachBuffer(this, eventName, cb);\n return () => {\n this.unlisten(eventName, cb);\n };\n }\n unlisten(eventName, cb) {\n if (!this.isAttached)\n return;\n const shouldDetach = this.client.detachBuffer(this, eventName, cb);\n if (!shouldDetach)\n return;\n this[exports.DETACH]();\n }\n}\nexports.Buffer = Buffer;\n_a = exports.ATTACH, _b = exports.DETACH;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = onlyOnce;\nfunction onlyOnce(fn) {\n return function (...args) {\n if (fn === null) throw new Error(\"Callback was already called.\");\n var callFn = fn;\n fn = null;\n callFn.apply(this, args);\n };\n}\nmodule.exports = exports.default;","'use strict';\n\nconst format = require('./format');\nconst ms = require('ms');\n\n/*\n * function ms (info)\n * Returns an `info` with a `ms` property. The `ms` property holds the Value\n * of the time difference between two calls in milliseconds.\n */\nmodule.exports = format(info => {\n const curr = +new Date();\n this.diff = curr - (this.prevTime || curr);\n this.prevTime = curr;\n info.ms = `+${ms(this.diff)}`;\n\n return info;\n});\n","'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n Buffer = _require.Buffer;\nvar _require2 = require('util'),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: \"push\",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: \"unshift\",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: \"shift\",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: \"clear\",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: \"join\",\n value: function join(s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: \"concat\",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: \"consume\",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: \"first\",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: \"_getString\",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: \"_getBuffer\",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();","export function convertCharNumToByteNum(line: string, col: number): number {\n if (col === 0 || !line) {\n return 0;\n }\n\n let currCharNum = 0;\n let totalBytes = 0;\n while (currCharNum < col) {\n // VIM treats 2 bytes as 1 char pos for grid_cursor_goto/grid_lines (https://github.com/asvetliakov/vscode-neovim/issues/127)\n // but for setting cursor we must use original byte length\n const bytes = getBytesFromCodePoint(line.codePointAt(currCharNum));\n totalBytes += bytes;\n currCharNum += bytes === 4 ? 2 : 1;\n if (currCharNum >= line.length) {\n return totalBytes;\n }\n }\n return totalBytes;\n}\n\nexport function convertByteNumToCharNum(line: string, col: number): number {\n let totalBytes = 0;\n let currCharNum = 0;\n while (totalBytes < col) {\n if (currCharNum >= line.length) {\n return currCharNum + (col - totalBytes);\n }\n const bytes = getBytesFromCodePoint(line.codePointAt(currCharNum));\n totalBytes += bytes;\n currCharNum += bytes === 4 ? 2 : 1;\n }\n return currCharNum;\n}\n\nfunction getBytesFromCodePoint(point?: number): number {\n if (point == null) {\n return 0;\n }\n if (point <= 0x7f) {\n return 1;\n }\n if (point <= 0x7ff) {\n return 2;\n }\n if (point >= 0xd800 && point <= 0xdfff) {\n // Surrogate pair: These take 4 bytes in UTF-8/UTF-16 and 2 chars in UTF-16 (JS strings)\n return 4;\n }\n if (point < 0xffff) {\n return 3;\n }\n return 4;\n}\n\nexport function normalizeInputString(str: string, wrapEnter = true): string {\n let finalStr = str.replace(/\");\n if (wrapEnter) {\n finalStr = finalStr.replace(/\\n/g, \"\");\n }\n return finalStr;\n}\n","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n","/*\r\nBreaks a Javascript string into individual user-perceived \"characters\" \r\ncalled extended grapheme clusters by implementing the Unicode UAX-29 standard, version 10.0.0\r\n\r\nUsage:\r\nvar splitter = new GraphemeSplitter();\r\n//returns an array of strings, one string for each grapheme cluster\r\nvar graphemes = splitter.splitGraphemes(string); \r\n\r\n*/\r\nfunction GraphemeSplitter(){\r\n\tvar CR = 0,\r\n\t\tLF = 1,\r\n\t\tControl = 2,\r\n\t\tExtend = 3,\r\n\t\tRegional_Indicator = 4,\r\n\t\tSpacingMark = 5,\r\n\t\tL = 6,\r\n\t\tV = 7,\r\n\t\tT = 8,\r\n\t\tLV = 9,\r\n\t\tLVT = 10,\r\n\t\tOther = 11,\r\n\t\tPrepend = 12,\r\n\t\tE_Base = 13,\r\n\t\tE_Modifier = 14,\r\n\t\tZWJ = 15,\r\n\t\tGlue_After_Zwj = 16,\r\n\t\tE_Base_GAZ = 17;\r\n\t\t\r\n\t// BreakTypes\r\n\tvar NotBreak = 0,\r\n\t\tBreakStart = 1,\r\n\t\tBreak = 2,\r\n\t\tBreakLastRegional = 3,\r\n\t\tBreakPenultimateRegional = 4;\r\n\t\t\r\n\tfunction isSurrogate(str, pos) {\r\n\t\treturn 0xd800 <= str.charCodeAt(pos) && str.charCodeAt(pos) <= 0xdbff && \r\n\t\t\t\t0xdc00 <= str.charCodeAt(pos + 1) && str.charCodeAt(pos + 1) <= 0xdfff;\r\n\t}\r\n\t\t\r\n\t// Private function, gets a Unicode code point from a JavaScript UTF-16 string\r\n\t// handling surrogate pairs appropriately\r\n\tfunction codePointAt(str, idx){\r\n\t\tif(idx === undefined){\r\n\t\t\tidx = 0;\r\n\t\t}\r\n\t\tvar code = str.charCodeAt(idx);\r\n\r\n\t\t// if a high surrogate\r\n\t\tif (0xD800 <= code && code <= 0xDBFF && \r\n\t\t\tidx < str.length - 1){\r\n\t\t\tvar hi = code;\r\n\t\t\tvar low = str.charCodeAt(idx + 1);\r\n\t\t\tif (0xDC00 <= low && low <= 0xDFFF){\r\n\t\t\t\treturn ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;\r\n\t\t\t}\r\n\t\t\treturn hi;\r\n\t\t}\r\n\t\t\r\n\t\t// if a low surrogate\r\n\t\tif (0xDC00 <= code && code <= 0xDFFF &&\r\n\t\t\tidx >= 1){\r\n\t\t\tvar hi = str.charCodeAt(idx - 1);\r\n\t\t\tvar low = code;\r\n\t\t\tif (0xD800 <= hi && hi <= 0xDBFF){\r\n\t\t\t\treturn ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;\r\n\t\t\t}\r\n\t\t\treturn low;\r\n\t\t}\r\n\t\t\r\n\t\t//just return the char if an unmatched surrogate half or a \r\n\t\t//single-char codepoint\r\n\t\treturn code;\r\n\t}\r\n\t\r\n\t// Private function, returns whether a break is allowed between the \r\n\t// two given grapheme breaking classes\r\n\tfunction shouldBreak(start, mid, end){\r\n\t\tvar all = [start].concat(mid).concat([end]);\r\n\t\tvar previous = all[all.length - 2]\r\n\t\tvar next = end\r\n\t\t\r\n\t\t// Lookahead termintor for:\r\n\t\t// GB10. (E_Base | EBG) Extend* ?\tE_Modifier\r\n\t\tvar eModifierIndex = all.lastIndexOf(E_Modifier)\r\n\t\tif(eModifierIndex > 1 &&\r\n\t\t\tall.slice(1, eModifierIndex).every(function(c){return c == Extend}) &&\r\n\t\t\t[Extend, E_Base, E_Base_GAZ].indexOf(start) == -1){\r\n\t\t\treturn Break\r\n\t\t}\r\n\r\n\t\t// Lookahead termintor for:\r\n\t\t// GB12. ^ (RI RI)* RI\t?\tRI\r\n\t\t// GB13. [^RI] (RI RI)* RI\t?\tRI\r\n\t\tvar rIIndex = all.lastIndexOf(Regional_Indicator)\r\n\t\tif(rIIndex > 0 &&\r\n\t\t\tall.slice(1, rIIndex).every(function(c){return c == Regional_Indicator}) &&\r\n\t\t\t[Prepend, Regional_Indicator].indexOf(previous) == -1) { \r\n\t\t\tif(all.filter(function(c){return c == Regional_Indicator}).length % 2 == 1) {\r\n\t\t\t\treturn BreakLastRegional\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn BreakPenultimateRegional\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t// GB3. CR X LF\r\n\t\tif(previous == CR && next == LF){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB4. (Control|CR|LF) ÷\r\n\t\telse if(previous == Control || previous == CR || previous == LF){\r\n\t\t\tif(next == E_Modifier && mid.every(function(c){return c == Extend})){\r\n\t\t\t\treturn Break\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn BreakStart\r\n\t\t\t}\r\n\t\t}\r\n\t\t// GB5. ÷ (Control|CR|LF)\r\n\t\telse if(next == Control || next == CR || next == LF){\r\n\t\t\treturn BreakStart;\r\n\t\t}\r\n\t\t// GB6. L X (L|V|LV|LVT)\r\n\t\telse if(previous == L && \r\n\t\t\t(next == L || next == V || next == LV || next == LVT)){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB7. (LV|V) X (V|T)\r\n\t\telse if((previous == LV || previous == V) && \r\n\t\t\t(next == V || next == T)){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB8. (LVT|T) X (T)\r\n\t\telse if((previous == LVT || previous == T) && \r\n\t\t\tnext == T){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB9. X (Extend|ZWJ)\r\n\t\telse if (next == Extend || next == ZWJ){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB9a. X SpacingMark\r\n\t\telse if(next == SpacingMark){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t// GB9b. Prepend X\r\n\t\telse if (previous == Prepend){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t\r\n\t\t// GB10. (E_Base | EBG) Extend* ?\tE_Modifier\r\n\t\tvar previousNonExtendIndex = all.indexOf(Extend) != -1 ? all.lastIndexOf(Extend) - 1 : all.length - 2;\r\n\t\tif([E_Base, E_Base_GAZ].indexOf(all[previousNonExtendIndex]) != -1 &&\r\n\t\t\tall.slice(previousNonExtendIndex + 1, -1).every(function(c){return c == Extend}) &&\r\n\t\t\tnext == E_Modifier){\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\t\t\r\n\t\t// GB11. ZWJ ? (Glue_After_Zwj | EBG)\r\n\t\tif(previous == ZWJ && [Glue_After_Zwj, E_Base_GAZ].indexOf(next) != -1) {\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\r\n\t\t// GB12. ^ (RI RI)* RI ? RI\r\n\t\t// GB13. [^RI] (RI RI)* RI ? RI\r\n\t\tif(mid.indexOf(Regional_Indicator) != -1) { \r\n\t\t\treturn Break;\r\n\t\t}\r\n\t\tif(previous == Regional_Indicator && next == Regional_Indicator) {\r\n\t\t\treturn NotBreak;\r\n\t\t}\r\n\r\n\t\t// GB999. Any ? Any\r\n\t\treturn BreakStart;\r\n\t}\r\n\t\r\n\t// Returns the next grapheme break in the string after the given index\r\n\tthis.nextBreak = function(string, index){\r\n\t\tif(index === undefined){\r\n\t\t\tindex = 0;\r\n\t\t}\r\n\t\tif(index < 0){\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif(index >= string.length - 1){\r\n\t\t\treturn string.length;\r\n\t\t}\r\n\t\tvar prev = getGraphemeBreakProperty(codePointAt(string, index));\r\n\t\tvar mid = []\r\n\t\tfor (var i = index + 1; i < string.length; i++) {\r\n\t\t\t// check for already processed low surrogates\r\n\t\t\tif(isSurrogate(string, i - 1)){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\t\t\r\n\t\t\tvar next = getGraphemeBreakProperty(codePointAt(string, i));\r\n\t\t\tif(shouldBreak(prev, mid, next)){\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tmid.push(next);\r\n\t\t}\r\n\t\treturn string.length;\r\n\t};\r\n\t\r\n\t// Breaks the given string into an array of grapheme cluster strings\r\n\tthis.splitGraphemes = function(str){\r\n\t\tvar res = [];\r\n\t\tvar index = 0;\r\n\t\tvar brk;\r\n\t\twhile((brk = this.nextBreak(str, index)) < str.length){\r\n\t\t\tres.push(str.slice(index, brk));\r\n\t\t\tindex = brk;\r\n\t\t}\r\n\t\tif(index < str.length){\r\n\t\t\tres.push(str.slice(index));\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\t// Returns the iterator of grapheme clusters there are in the given string\r\n\tthis.iterateGraphemes = function(str) {\r\n\t\tvar index = 0;\r\n\t\tvar res = {\r\n\t\t\tnext: (function() {\r\n\t\t\t\tvar value;\r\n\t\t\t\tvar brk;\r\n\t\t\t\tif ((brk = this.nextBreak(str, index)) < str.length) {\r\n\t\t\t\t\tvalue = str.slice(index, brk);\r\n\t\t\t\t\tindex = brk;\r\n\t\t\t\t\treturn { value: value, done: false };\r\n\t\t\t\t}\r\n\t\t\t\tif (index < str.length) {\r\n\t\t\t\t\tvalue = str.slice(index);\r\n\t\t\t\t\tindex = str.length;\r\n\t\t\t\t\treturn { value: value, done: false };\r\n\t\t\t\t}\r\n\t\t\t\treturn { value: undefined, done: true };\r\n\t\t\t}).bind(this)\r\n\t\t};\r\n\t\t// ES2015 @@iterator method (iterable) for spread syntax and for...of statement\r\n\t\tif (typeof Symbol !== 'undefined' && Symbol.iterator) {\r\n\t\t\tres[Symbol.iterator] = function() {return res};\r\n\t\t}\r\n\t\treturn res;\r\n\t};\r\n\r\n\t// Returns the number of grapheme clusters there are in the given string\r\n\tthis.countGraphemes = function(str){\r\n\t\tvar count = 0;\r\n\t\tvar index = 0;\r\n\t\tvar brk;\r\n\t\twhile((brk = this.nextBreak(str, index)) < str.length){\r\n\t\t\tindex = brk;\r\n\t\t\tcount++;\r\n\t\t}\r\n\t\tif(index < str.length){\r\n\t\t\tcount++;\r\n\t\t}\r\n\t\treturn count;\r\n\t};\r\n\t\r\n\t//given a Unicode code point, determines this symbol's grapheme break property\r\n\tfunction getGraphemeBreakProperty(code){\r\n\t\t\r\n\t\t//grapheme break property for Unicode 10.0.0, \r\n\t\t//taken from http://www.unicode.org/Public/10.0.0/ucd/auxiliary/GraphemeBreakProperty.txt\r\n\t\t//and adapted to JavaScript rules\r\n\t\t\r\n\t\tif(\t\t\r\n\t\t(0x0600 <= code && code <= 0x0605) || // Cf [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE\r\n\t\t0x06DD == code || // Cf ARABIC END OF AYAH\r\n\t\t0x070F == code || // Cf SYRIAC ABBREVIATION MARK\r\n\t\t0x08E2 == code || // Cf ARABIC DISPUTED END OF AYAH\r\n\t\t0x0D4E == code || // Lo MALAYALAM LETTER DOT REPH\r\n\t\t0x110BD == code || // Cf KAITHI NUMBER SIGN\r\n\t\t(0x111C2 <= code && code <= 0x111C3) || // Lo [2] SHARADA SIGN JIHVAMULIYA..SHARADA SIGN UPADHMANIYA\r\n\t\t0x11A3A == code || // Lo ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA\r\n\t\t(0x11A86 <= code && code <= 0x11A89) || // Lo [4] SOYOMBO CLUSTER-INITIAL LETTER RA..SOYOMBO CLUSTER-INITIAL LETTER SA\r\n\t\t0x11D46 == code // Lo MASARAM GONDI REPHA\r\n\t\t){\r\n\t\t\treturn Prepend;\r\n\t\t}\r\n\t\tif(\r\n\t\t0x000D == code // Cc \r\n\t\t){\r\n\t\t\treturn CR;\r\n\t\t}\r\n\t\t\r\n\t\tif(\r\n\t\t0x000A == code // Cc \r\n\t\t){\r\n\t\t\treturn LF;\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\tif(\r\n\t\t(0x0000 <= code && code <= 0x0009) || // Cc [10] ..\r\n\t\t(0x000B <= code && code <= 0x000C) || // Cc [2] ..\r\n\t\t(0x000E <= code && code <= 0x001F) || // Cc [18] ..\r\n\t\t(0x007F <= code && code <= 0x009F) || // Cc [33] ..\r\n\t\t0x00AD == code || // Cf SOFT HYPHEN\r\n\t\t0x061C == code || // Cf ARABIC LETTER MARK\r\n\t\r\n\t\t0x180E == code || // Cf MONGOLIAN VOWEL SEPARATOR\r\n\t\t0x200B == code || // Cf ZERO WIDTH SPACE\r\n\t\t(0x200E <= code && code <= 0x200F) || // Cf [2] LEFT-TO-RIGHT MARK..RIGHT-TO-LEFT MARK\r\n\t\t0x2028 == code || // Zl LINE SEPARATOR\r\n\t\t0x2029 == code || // Zp PARAGRAPH SEPARATOR\r\n\t\t(0x202A <= code && code <= 0x202E) || // Cf [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE\r\n\t\t(0x2060 <= code && code <= 0x2064) || // Cf [5] WORD JOINER..INVISIBLE PLUS\r\n\t\t0x2065 == code || // Cn \r\n\t\t(0x2066 <= code && code <= 0x206F) || // Cf [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES\r\n\t\t(0xD800 <= code && code <= 0xDFFF) || // Cs [2048] ..\r\n\t\t0xFEFF == code || // Cf ZERO WIDTH NO-BREAK SPACE\r\n\t\t(0xFFF0 <= code && code <= 0xFFF8) || // Cn [9] ..\r\n\t\t(0xFFF9 <= code && code <= 0xFFFB) || // Cf [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR\r\n\t\t(0x1BCA0 <= code && code <= 0x1BCA3) || // Cf [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP\r\n\t\t(0x1D173 <= code && code <= 0x1D17A) || // Cf [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE\r\n\t\t0xE0000 == code || // Cn \r\n\t\t0xE0001 == code || // Cf LANGUAGE TAG\r\n\t\t(0xE0002 <= code && code <= 0xE001F) || // Cn [30] ..\r\n\t\t(0xE0080 <= code && code <= 0xE00FF) || // Cn [128] ..\r\n\t\t(0xE01F0 <= code && code <= 0xE0FFF) // Cn [3600] ..\r\n\t\t){\r\n\t\t\treturn Control;\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\tif(\r\n\t\t(0x0300 <= code && code <= 0x036F) || // Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X\r\n\t\t(0x0483 <= code && code <= 0x0487) || // Mn [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE\r\n\t\t(0x0488 <= code && code <= 0x0489) || // Me [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN\r\n\t\t(0x0591 <= code && code <= 0x05BD) || // Mn [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG\r\n\t\t0x05BF == code || // Mn HEBREW POINT RAFE\r\n\t\t(0x05C1 <= code && code <= 0x05C2) || // Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT\r\n\t\t(0x05C4 <= code && code <= 0x05C5) || // Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT\r\n\t\t0x05C7 == code || // Mn HEBREW POINT QAMATS QATAN\r\n\t\t(0x0610 <= code && code <= 0x061A) || // Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA\r\n\t\t(0x064B <= code && code <= 0x065F) || // Mn [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW\r\n\t\t0x0670 == code || // Mn ARABIC LETTER SUPERSCRIPT ALEF\r\n\t\t(0x06D6 <= code && code <= 0x06DC) || // Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN\r\n\t\t(0x06DF <= code && code <= 0x06E4) || // Mn [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA\r\n\t\t(0x06E7 <= code && code <= 0x06E8) || // Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON\r\n\t\t(0x06EA <= code && code <= 0x06ED) || // Mn [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM\r\n\t\t0x0711 == code || // Mn SYRIAC LETTER SUPERSCRIPT ALAPH\r\n\t\t(0x0730 <= code && code <= 0x074A) || // Mn [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH\r\n\t\t(0x07A6 <= code && code <= 0x07B0) || // Mn [11] THAANA ABAFILI..THAANA SUKUN\r\n\t\t(0x07EB <= code && code <= 0x07F3) || // Mn [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE\r\n\t\t(0x0816 <= code && code <= 0x0819) || // Mn [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH\r\n\t\t(0x081B <= code && code <= 0x0823) || // Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A\r\n\t\t(0x0825 <= code && code <= 0x0827) || // Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U\r\n\t\t(0x0829 <= code && code <= 0x082D) || // Mn [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA\r\n\t\t(0x0859 <= code && code <= 0x085B) || // Mn [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK\r\n\t\t(0x08D4 <= code && code <= 0x08E1) || // Mn [14] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH SIGN SAFHA\r\n\t\t(0x08E3 <= code && code <= 0x0902) || // Mn [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA\r\n\t\t0x093A == code || // Mn DEVANAGARI VOWEL SIGN OE\r\n\t\t0x093C == code || // Mn DEVANAGARI SIGN NUKTA\r\n\t\t(0x0941 <= code && code <= 0x0948) || // Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI\r\n\t\t0x094D == code || // Mn DEVANAGARI SIGN VIRAMA\r\n\t\t(0x0951 <= code && code <= 0x0957) || // Mn [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE\r\n\t\t(0x0962 <= code && code <= 0x0963) || // Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL\r\n\t\t0x0981 == code || // Mn BENGALI SIGN CANDRABINDU\r\n\t\t0x09BC == code || // Mn BENGALI SIGN NUKTA\r\n\t\t0x09BE == code || // Mc BENGALI VOWEL SIGN AA\r\n\t\t(0x09C1 <= code && code <= 0x09C4) || // Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR\r\n\t\t0x09CD == code || // Mn BENGALI SIGN VIRAMA\r\n\t\t0x09D7 == code || // Mc BENGALI AU LENGTH MARK\r\n\t\t(0x09E2 <= code && code <= 0x09E3) || // Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL\r\n\t\t(0x0A01 <= code && code <= 0x0A02) || // Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI\r\n\t\t0x0A3C == code || // Mn GURMUKHI SIGN NUKTA\r\n\t\t(0x0A41 <= code && code <= 0x0A42) || // Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU\r\n\t\t(0x0A47 <= code && code <= 0x0A48) || // Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI\r\n\t\t(0x0A4B <= code && code <= 0x0A4D) || // Mn [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA\r\n\t\t0x0A51 == code || // Mn GURMUKHI SIGN UDAAT\r\n\t\t(0x0A70 <= code && code <= 0x0A71) || // Mn [2] GURMUKHI TIPPI..GURMUKHI ADDAK\r\n\t\t0x0A75 == code || // Mn GURMUKHI SIGN YAKASH\r\n\t\t(0x0A81 <= code && code <= 0x0A82) || // Mn [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA\r\n\t\t0x0ABC == code || // Mn GUJARATI SIGN NUKTA\r\n\t\t(0x0AC1 <= code && code <= 0x0AC5) || // Mn [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E\r\n\t\t(0x0AC7 <= code && code <= 0x0AC8) || // Mn [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI\r\n\t\t0x0ACD == code || // Mn GUJARATI SIGN VIRAMA\r\n\t\t(0x0AE2 <= code && code <= 0x0AE3) || // Mn [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL\r\n\t\t(0x0AFA <= code && code <= 0x0AFF) || // Mn [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE\r\n\t\t0x0B01 == code || // Mn ORIYA SIGN CANDRABINDU\r\n\t\t0x0B3C == code || // Mn ORIYA SIGN NUKTA\r\n\t\t0x0B3E == code || // Mc ORIYA VOWEL SIGN AA\r\n\t\t0x0B3F == code || // Mn ORIYA VOWEL SIGN I\r\n\t\t(0x0B41 <= code && code <= 0x0B44) || // Mn [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR\r\n\t\t0x0B4D == code || // Mn ORIYA SIGN VIRAMA\r\n\t\t0x0B56 == code || // Mn ORIYA AI LENGTH MARK\r\n\t\t0x0B57 == code || // Mc ORIYA AU LENGTH MARK\r\n\t\t(0x0B62 <= code && code <= 0x0B63) || // Mn [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL\r\n\t\t0x0B82 == code || // Mn TAMIL SIGN ANUSVARA\r\n\t\t0x0BBE == code || // Mc TAMIL VOWEL SIGN AA\r\n\t\t0x0BC0 == code || // Mn TAMIL VOWEL SIGN II\r\n\t\t0x0BCD == code || // Mn TAMIL SIGN VIRAMA\r\n\t\t0x0BD7 == code || // Mc TAMIL AU LENGTH MARK\r\n\t\t0x0C00 == code || // Mn TELUGU SIGN COMBINING CANDRABINDU ABOVE\r\n\t\t(0x0C3E <= code && code <= 0x0C40) || // Mn [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II\r\n\t\t(0x0C46 <= code && code <= 0x0C48) || // Mn [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI\r\n\t\t(0x0C4A <= code && code <= 0x0C4D) || // Mn [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA\r\n\t\t(0x0C55 <= code && code <= 0x0C56) || // Mn [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK\r\n\t\t(0x0C62 <= code && code <= 0x0C63) || // Mn [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL\r\n\t\t0x0C81 == code || // Mn KANNADA SIGN CANDRABINDU\r\n\t\t0x0CBC == code || // Mn KANNADA SIGN NUKTA\r\n\t\t0x0CBF == code || // Mn KANNADA VOWEL SIGN I\r\n\t\t0x0CC2 == code || // Mc KANNADA VOWEL SIGN UU\r\n\t\t0x0CC6 == code || // Mn KANNADA VOWEL SIGN E\r\n\t\t(0x0CCC <= code && code <= 0x0CCD) || // Mn [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA\r\n\t\t(0x0CD5 <= code && code <= 0x0CD6) || // Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK\r\n\t\t(0x0CE2 <= code && code <= 0x0CE3) || // Mn [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL\r\n\t\t(0x0D00 <= code && code <= 0x0D01) || // Mn [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU\r\n\t\t(0x0D3B <= code && code <= 0x0D3C) || // Mn [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA\r\n\t\t0x0D3E == code || // Mc MALAYALAM VOWEL SIGN AA\r\n\t\t(0x0D41 <= code && code <= 0x0D44) || // Mn [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR\r\n\t\t0x0D4D == code || // Mn MALAYALAM SIGN VIRAMA\r\n\t\t0x0D57 == code || // Mc MALAYALAM AU LENGTH MARK\r\n\t\t(0x0D62 <= code && code <= 0x0D63) || // Mn [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL\r\n\t\t0x0DCA == code || // Mn SINHALA SIGN AL-LAKUNA\r\n\t\t0x0DCF == code || // Mc SINHALA VOWEL SIGN AELA-PILLA\r\n\t\t(0x0DD2 <= code && code <= 0x0DD4) || // Mn [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA\r\n\t\t0x0DD6 == code || // Mn SINHALA VOWEL SIGN DIGA PAA-PILLA\r\n\t\t0x0DDF == code || // Mc SINHALA VOWEL SIGN GAYANUKITTA\r\n\t\t0x0E31 == code || // Mn THAI CHARACTER MAI HAN-AKAT\r\n\t\t(0x0E34 <= code && code <= 0x0E3A) || // Mn [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU\r\n\t\t(0x0E47 <= code && code <= 0x0E4E) || // Mn [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN\r\n\t\t0x0EB1 == code || // Mn LAO VOWEL SIGN MAI KAN\r\n\t\t(0x0EB4 <= code && code <= 0x0EB9) || // Mn [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU\r\n\t\t(0x0EBB <= code && code <= 0x0EBC) || // Mn [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO\r\n\t\t(0x0EC8 <= code && code <= 0x0ECD) || // Mn [6] LAO TONE MAI EK..LAO NIGGAHITA\r\n\t\t(0x0F18 <= code && code <= 0x0F19) || // Mn [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS\r\n\t\t0x0F35 == code || // Mn TIBETAN MARK NGAS BZUNG NYI ZLA\r\n\t\t0x0F37 == code || // Mn TIBETAN MARK NGAS BZUNG SGOR RTAGS\r\n\t\t0x0F39 == code || // Mn TIBETAN MARK TSA -PHRU\r\n\t\t(0x0F71 <= code && code <= 0x0F7E) || // Mn [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO\r\n\t\t(0x0F80 <= code && code <= 0x0F84) || // Mn [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA\r\n\t\t(0x0F86 <= code && code <= 0x0F87) || // Mn [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS\r\n\t\t(0x0F8D <= code && code <= 0x0F97) || // Mn [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA\r\n\t\t(0x0F99 <= code && code <= 0x0FBC) || // Mn [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA\r\n\t\t0x0FC6 == code || // Mn TIBETAN SYMBOL PADMA GDAN\r\n\t\t(0x102D <= code && code <= 0x1030) || // Mn [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU\r\n\t\t(0x1032 <= code && code <= 0x1037) || // Mn [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW\r\n\t\t(0x1039 <= code && code <= 0x103A) || // Mn [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT\r\n\t\t(0x103D <= code && code <= 0x103E) || // Mn [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA\r\n\t\t(0x1058 <= code && code <= 0x1059) || // Mn [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL\r\n\t\t(0x105E <= code && code <= 0x1060) || // Mn [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA\r\n\t\t(0x1071 <= code && code <= 0x1074) || // Mn [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE\r\n\t\t0x1082 == code || // Mn MYANMAR CONSONANT SIGN SHAN MEDIAL WA\r\n\t\t(0x1085 <= code && code <= 0x1086) || // Mn [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y\r\n\t\t0x108D == code || // Mn MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE\r\n\t\t0x109D == code || // Mn MYANMAR VOWEL SIGN AITON AI\r\n\t\t(0x135D <= code && code <= 0x135F) || // Mn [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK\r\n\t\t(0x1712 <= code && code <= 0x1714) || // Mn [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA\r\n\t\t(0x1732 <= code && code <= 0x1734) || // Mn [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD\r\n\t\t(0x1752 <= code && code <= 0x1753) || // Mn [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U\r\n\t\t(0x1772 <= code && code <= 0x1773) || // Mn [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U\r\n\t\t(0x17B4 <= code && code <= 0x17B5) || // Mn [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA\r\n\t\t(0x17B7 <= code && code <= 0x17BD) || // Mn [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA\r\n\t\t0x17C6 == code || // Mn KHMER SIGN NIKAHIT\r\n\t\t(0x17C9 <= code && code <= 0x17D3) || // Mn [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT\r\n\t\t0x17DD == code || // Mn KHMER SIGN ATTHACAN\r\n\t\t(0x180B <= code && code <= 0x180D) || // Mn [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE\r\n\t\t(0x1885 <= code && code <= 0x1886) || // Mn [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA\r\n\t\t0x18A9 == code || // Mn MONGOLIAN LETTER ALI GALI DAGALGA\r\n\t\t(0x1920 <= code && code <= 0x1922) || // Mn [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U\r\n\t\t(0x1927 <= code && code <= 0x1928) || // Mn [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O\r\n\t\t0x1932 == code || // Mn LIMBU SMALL LETTER ANUSVARA\r\n\t\t(0x1939 <= code && code <= 0x193B) || // Mn [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I\r\n\t\t(0x1A17 <= code && code <= 0x1A18) || // Mn [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U\r\n\t\t0x1A1B == code || // Mn BUGINESE VOWEL SIGN AE\r\n\t\t0x1A56 == code || // Mn TAI THAM CONSONANT SIGN MEDIAL LA\r\n\t\t(0x1A58 <= code && code <= 0x1A5E) || // Mn [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA\r\n\t\t0x1A60 == code || // Mn TAI THAM SIGN SAKOT\r\n\t\t0x1A62 == code || // Mn TAI THAM VOWEL SIGN MAI SAT\r\n\t\t(0x1A65 <= code && code <= 0x1A6C) || // Mn [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW\r\n\t\t(0x1A73 <= code && code <= 0x1A7C) || // Mn [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN\r\n\t\t0x1A7F == code || // Mn TAI THAM COMBINING CRYPTOGRAMMIC DOT\r\n\t\t(0x1AB0 <= code && code <= 0x1ABD) || // Mn [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW\r\n\t\t0x1ABE == code || // Me COMBINING PARENTHESES OVERLAY\r\n\t\t(0x1B00 <= code && code <= 0x1B03) || // Mn [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG\r\n\t\t0x1B34 == code || // Mn BALINESE SIGN REREKAN\r\n\t\t(0x1B36 <= code && code <= 0x1B3A) || // Mn [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA\r\n\t\t0x1B3C == code || // Mn BALINESE VOWEL SIGN LA LENGA\r\n\t\t0x1B42 == code || // Mn BALINESE VOWEL SIGN PEPET\r\n\t\t(0x1B6B <= code && code <= 0x1B73) || // Mn [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG\r\n\t\t(0x1B80 <= code && code <= 0x1B81) || // Mn [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR\r\n\t\t(0x1BA2 <= code && code <= 0x1BA5) || // Mn [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU\r\n\t\t(0x1BA8 <= code && code <= 0x1BA9) || // Mn [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG\r\n\t\t(0x1BAB <= code && code <= 0x1BAD) || // Mn [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA\r\n\t\t0x1BE6 == code || // Mn BATAK SIGN TOMPI\r\n\t\t(0x1BE8 <= code && code <= 0x1BE9) || // Mn [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE\r\n\t\t0x1BED == code || // Mn BATAK VOWEL SIGN KARO O\r\n\t\t(0x1BEF <= code && code <= 0x1BF1) || // Mn [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H\r\n\t\t(0x1C2C <= code && code <= 0x1C33) || // Mn [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T\r\n\t\t(0x1C36 <= code && code <= 0x1C37) || // Mn [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA\r\n\t\t(0x1CD0 <= code && code <= 0x1CD2) || // Mn [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA\r\n\t\t(0x1CD4 <= code && code <= 0x1CE0) || // Mn [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA\r\n\t\t(0x1CE2 <= code && code <= 0x1CE8) || // Mn [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL\r\n\t\t0x1CED == code || // Mn VEDIC SIGN TIRYAK\r\n\t\t0x1CF4 == code || // Mn VEDIC TONE CANDRA ABOVE\r\n\t\t(0x1CF8 <= code && code <= 0x1CF9) || // Mn [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE\r\n\t\t(0x1DC0 <= code && code <= 0x1DF9) || // Mn [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW\r\n\t\t(0x1DFB <= code && code <= 0x1DFF) || // Mn [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW\r\n\t\t0x200C == code || // Cf ZERO WIDTH NON-JOINER\r\n\t\t(0x20D0 <= code && code <= 0x20DC) || // Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE\r\n\t\t(0x20DD <= code && code <= 0x20E0) || // Me [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH\r\n\t\t0x20E1 == code || // Mn COMBINING LEFT RIGHT ARROW ABOVE\r\n\t\t(0x20E2 <= code && code <= 0x20E4) || // Me [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE\r\n\t\t(0x20E5 <= code && code <= 0x20F0) || // Mn [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE\r\n\t\t(0x2CEF <= code && code <= 0x2CF1) || // Mn [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS\r\n\t\t0x2D7F == code || // Mn TIFINAGH CONSONANT JOINER\r\n\t\t(0x2DE0 <= code && code <= 0x2DFF) || // Mn [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS\r\n\t\t(0x302A <= code && code <= 0x302D) || // Mn [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK\r\n\t\t(0x302E <= code && code <= 0x302F) || // Mc [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK\r\n\t\t(0x3099 <= code && code <= 0x309A) || // Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK\r\n\t\t0xA66F == code || // Mn COMBINING CYRILLIC VZMET\r\n\t\t(0xA670 <= code && code <= 0xA672) || // Me [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN\r\n\t\t(0xA674 <= code && code <= 0xA67D) || // Mn [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK\r\n\t\t(0xA69E <= code && code <= 0xA69F) || // Mn [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E\r\n\t\t(0xA6F0 <= code && code <= 0xA6F1) || // Mn [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS\r\n\t\t0xA802 == code || // Mn SYLOTI NAGRI SIGN DVISVARA\r\n\t\t0xA806 == code || // Mn SYLOTI NAGRI SIGN HASANTA\r\n\t\t0xA80B == code || // Mn SYLOTI NAGRI SIGN ANUSVARA\r\n\t\t(0xA825 <= code && code <= 0xA826) || // Mn [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E\r\n\t\t(0xA8C4 <= code && code <= 0xA8C5) || // Mn [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU\r\n\t\t(0xA8E0 <= code && code <= 0xA8F1) || // Mn [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA\r\n\t\t(0xA926 <= code && code <= 0xA92D) || // Mn [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU\r\n\t\t(0xA947 <= code && code <= 0xA951) || // Mn [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R\r\n\t\t(0xA980 <= code && code <= 0xA982) || // Mn [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR\r\n\t\t0xA9B3 == code || // Mn JAVANESE SIGN CECAK TELU\r\n\t\t(0xA9B6 <= code && code <= 0xA9B9) || // Mn [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT\r\n\t\t0xA9BC == code || // Mn JAVANESE VOWEL SIGN PEPET\r\n\t\t0xA9E5 == code || // Mn MYANMAR SIGN SHAN SAW\r\n\t\t(0xAA29 <= code && code <= 0xAA2E) || // Mn [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE\r\n\t\t(0xAA31 <= code && code <= 0xAA32) || // Mn [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE\r\n\t\t(0xAA35 <= code && code <= 0xAA36) || // Mn [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA\r\n\t\t0xAA43 == code || // Mn CHAM CONSONANT SIGN FINAL NG\r\n\t\t0xAA4C == code || // Mn CHAM CONSONANT SIGN FINAL M\r\n\t\t0xAA7C == code || // Mn MYANMAR SIGN TAI LAING TONE-2\r\n\t\t0xAAB0 == code || // Mn TAI VIET MAI KANG\r\n\t\t(0xAAB2 <= code && code <= 0xAAB4) || // Mn [3] TAI VIET VOWEL I..TAI VIET VOWEL U\r\n\t\t(0xAAB7 <= code && code <= 0xAAB8) || // Mn [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA\r\n\t\t(0xAABE <= code && code <= 0xAABF) || // Mn [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK\r\n\t\t0xAAC1 == code || // Mn TAI VIET TONE MAI THO\r\n\t\t(0xAAEC <= code && code <= 0xAAED) || // Mn [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI\r\n\t\t0xAAF6 == code || // Mn MEETEI MAYEK VIRAMA\r\n\t\t0xABE5 == code || // Mn MEETEI MAYEK VOWEL SIGN ANAP\r\n\t\t0xABE8 == code || // Mn MEETEI MAYEK VOWEL SIGN UNAP\r\n\t\t0xABED == code || // Mn MEETEI MAYEK APUN IYEK\r\n\t\t0xFB1E == code || // Mn HEBREW POINT JUDEO-SPANISH VARIKA\r\n\t\t(0xFE00 <= code && code <= 0xFE0F) || // Mn [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16\r\n\t\t(0xFE20 <= code && code <= 0xFE2F) || // Mn [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF\r\n\t\t(0xFF9E <= code && code <= 0xFF9F) || // Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK\r\n\t\t0x101FD == code || // Mn PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE\r\n\t\t0x102E0 == code || // Mn COPTIC EPACT THOUSANDS MARK\r\n\t\t(0x10376 <= code && code <= 0x1037A) || // Mn [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII\r\n\t\t(0x10A01 <= code && code <= 0x10A03) || // Mn [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R\r\n\t\t(0x10A05 <= code && code <= 0x10A06) || // Mn [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O\r\n\t\t(0x10A0C <= code && code <= 0x10A0F) || // Mn [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA\r\n\t\t(0x10A38 <= code && code <= 0x10A3A) || // Mn [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW\r\n\t\t0x10A3F == code || // Mn KHAROSHTHI VIRAMA\r\n\t\t(0x10AE5 <= code && code <= 0x10AE6) || // Mn [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW\r\n\t\t0x11001 == code || // Mn BRAHMI SIGN ANUSVARA\r\n\t\t(0x11038 <= code && code <= 0x11046) || // Mn [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA\r\n\t\t(0x1107F <= code && code <= 0x11081) || // Mn [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA\r\n\t\t(0x110B3 <= code && code <= 0x110B6) || // Mn [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI\r\n\t\t(0x110B9 <= code && code <= 0x110BA) || // Mn [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA\r\n\t\t(0x11100 <= code && code <= 0x11102) || // Mn [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA\r\n\t\t(0x11127 <= code && code <= 0x1112B) || // Mn [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU\r\n\t\t(0x1112D <= code && code <= 0x11134) || // Mn [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA\r\n\t\t0x11173 == code || // Mn MAHAJANI SIGN NUKTA\r\n\t\t(0x11180 <= code && code <= 0x11181) || // Mn [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA\r\n\t\t(0x111B6 <= code && code <= 0x111BE) || // Mn [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O\r\n\t\t(0x111CA <= code && code <= 0x111CC) || // Mn [3] SHARADA SIGN NUKTA..SHARADA EXTRA SHORT VOWEL MARK\r\n\t\t(0x1122F <= code && code <= 0x11231) || // Mn [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI\r\n\t\t0x11234 == code || // Mn KHOJKI SIGN ANUSVARA\r\n\t\t(0x11236 <= code && code <= 0x11237) || // Mn [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA\r\n\t\t0x1123E == code || // Mn KHOJKI SIGN SUKUN\r\n\t\t0x112DF == code || // Mn KHUDAWADI SIGN ANUSVARA\r\n\t\t(0x112E3 <= code && code <= 0x112EA) || // Mn [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA\r\n\t\t(0x11300 <= code && code <= 0x11301) || // Mn [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU\r\n\t\t0x1133C == code || // Mn GRANTHA SIGN NUKTA\r\n\t\t0x1133E == code || // Mc GRANTHA VOWEL SIGN AA\r\n\t\t0x11340 == code || // Mn GRANTHA VOWEL SIGN II\r\n\t\t0x11357 == code || // Mc GRANTHA AU LENGTH MARK\r\n\t\t(0x11366 <= code && code <= 0x1136C) || // Mn [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX\r\n\t\t(0x11370 <= code && code <= 0x11374) || // Mn [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA\r\n\t\t(0x11438 <= code && code <= 0x1143F) || // Mn [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI\r\n\t\t(0x11442 <= code && code <= 0x11444) || // Mn [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA\r\n\t\t0x11446 == code || // Mn NEWA SIGN NUKTA\r\n\t\t0x114B0 == code || // Mc TIRHUTA VOWEL SIGN AA\r\n\t\t(0x114B3 <= code && code <= 0x114B8) || // Mn [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL\r\n\t\t0x114BA == code || // Mn TIRHUTA VOWEL SIGN SHORT E\r\n\t\t0x114BD == code || // Mc TIRHUTA VOWEL SIGN SHORT O\r\n\t\t(0x114BF <= code && code <= 0x114C0) || // Mn [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA\r\n\t\t(0x114C2 <= code && code <= 0x114C3) || // Mn [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA\r\n\t\t0x115AF == code || // Mc SIDDHAM VOWEL SIGN AA\r\n\t\t(0x115B2 <= code && code <= 0x115B5) || // Mn [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR\r\n\t\t(0x115BC <= code && code <= 0x115BD) || // Mn [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA\r\n\t\t(0x115BF <= code && code <= 0x115C0) || // Mn [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA\r\n\t\t(0x115DC <= code && code <= 0x115DD) || // Mn [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU\r\n\t\t(0x11633 <= code && code <= 0x1163A) || // Mn [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI\r\n\t\t0x1163D == code || // Mn MODI SIGN ANUSVARA\r\n\t\t(0x1163F <= code && code <= 0x11640) || // Mn [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA\r\n\t\t0x116AB == code || // Mn TAKRI SIGN ANUSVARA\r\n\t\t0x116AD == code || // Mn TAKRI VOWEL SIGN AA\r\n\t\t(0x116B0 <= code && code <= 0x116B5) || // Mn [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU\r\n\t\t0x116B7 == code || // Mn TAKRI SIGN NUKTA\r\n\t\t(0x1171D <= code && code <= 0x1171F) || // Mn [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA\r\n\t\t(0x11722 <= code && code <= 0x11725) || // Mn [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU\r\n\t\t(0x11727 <= code && code <= 0x1172B) || // Mn [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER\r\n\t\t(0x11A01 <= code && code <= 0x11A06) || // Mn [6] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL SIGN O\r\n\t\t(0x11A09 <= code && code <= 0x11A0A) || // Mn [2] ZANABAZAR SQUARE VOWEL SIGN REVERSED I..ZANABAZAR SQUARE VOWEL LENGTH MARK\r\n\t\t(0x11A33 <= code && code <= 0x11A38) || // Mn [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA\r\n\t\t(0x11A3B <= code && code <= 0x11A3E) || // Mn [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA\r\n\t\t0x11A47 == code || // Mn ZANABAZAR SQUARE SUBJOINER\r\n\t\t(0x11A51 <= code && code <= 0x11A56) || // Mn [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE\r\n\t\t(0x11A59 <= code && code <= 0x11A5B) || // Mn [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK\r\n\t\t(0x11A8A <= code && code <= 0x11A96) || // Mn [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA\r\n\t\t(0x11A98 <= code && code <= 0x11A99) || // Mn [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER\r\n\t\t(0x11C30 <= code && code <= 0x11C36) || // Mn [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L\r\n\t\t(0x11C38 <= code && code <= 0x11C3D) || // Mn [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA\r\n\t\t0x11C3F == code || // Mn BHAIKSUKI SIGN VIRAMA\r\n\t\t(0x11C92 <= code && code <= 0x11CA7) || // Mn [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA\r\n\t\t(0x11CAA <= code && code <= 0x11CB0) || // Mn [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA\r\n\t\t(0x11CB2 <= code && code <= 0x11CB3) || // Mn [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E\r\n\t\t(0x11CB5 <= code && code <= 0x11CB6) || // Mn [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU\r\n\t\t(0x11D31 <= code && code <= 0x11D36) || // Mn [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R\r\n\t\t0x11D3A == code || // Mn MASARAM GONDI VOWEL SIGN E\r\n\t\t(0x11D3C <= code && code <= 0x11D3D) || // Mn [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O\r\n\t\t(0x11D3F <= code && code <= 0x11D45) || // Mn [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA\r\n\t\t0x11D47 == code || // Mn MASARAM GONDI RA-KARA\r\n\t\t(0x16AF0 <= code && code <= 0x16AF4) || // Mn [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE\r\n\t\t(0x16B30 <= code && code <= 0x16B36) || // Mn [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM\r\n\t\t(0x16F8F <= code && code <= 0x16F92) || // Mn [4] MIAO TONE RIGHT..MIAO TONE BELOW\r\n\t\t(0x1BC9D <= code && code <= 0x1BC9E) || // Mn [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK\r\n\t\t0x1D165 == code || // Mc MUSICAL SYMBOL COMBINING STEM\r\n\t\t(0x1D167 <= code && code <= 0x1D169) || // Mn [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3\r\n\t\t(0x1D16E <= code && code <= 0x1D172) || // Mc [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5\r\n\t\t(0x1D17B <= code && code <= 0x1D182) || // Mn [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE\r\n\t\t(0x1D185 <= code && code <= 0x1D18B) || // Mn [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE\r\n\t\t(0x1D1AA <= code && code <= 0x1D1AD) || // Mn [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO\r\n\t\t(0x1D242 <= code && code <= 0x1D244) || // Mn [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME\r\n\t\t(0x1DA00 <= code && code <= 0x1DA36) || // Mn [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN\r\n\t\t(0x1DA3B <= code && code <= 0x1DA6C) || // Mn [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT\r\n\t\t0x1DA75 == code || // Mn SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS\r\n\t\t0x1DA84 == code || // Mn SIGNWRITING LOCATION HEAD NECK\r\n\t\t(0x1DA9B <= code && code <= 0x1DA9F) || // Mn [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6\r\n\t\t(0x1DAA1 <= code && code <= 0x1DAAF) || // Mn [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16\r\n\t\t(0x1E000 <= code && code <= 0x1E006) || // Mn [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE\r\n\t\t(0x1E008 <= code && code <= 0x1E018) || // Mn [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU\r\n\t\t(0x1E01B <= code && code <= 0x1E021) || // Mn [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI\r\n\t\t(0x1E023 <= code && code <= 0x1E024) || // Mn [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS\r\n\t\t(0x1E026 <= code && code <= 0x1E02A) || // Mn [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA\r\n\t\t(0x1E8D0 <= code && code <= 0x1E8D6) || // Mn [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS\r\n\t\t(0x1E944 <= code && code <= 0x1E94A) || // Mn [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA\r\n\t\t(0xE0020 <= code && code <= 0xE007F) || // Cf [96] TAG SPACE..CANCEL TAG\r\n\t\t(0xE0100 <= code && code <= 0xE01EF) // Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256\r\n\t\t){\r\n\t\t\treturn Extend;\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\tif(\r\n\t\t(0x1F1E6 <= code && code <= 0x1F1FF) // So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z\r\n\t\t){\r\n\t\t\treturn Regional_Indicator;\r\n\t\t}\r\n\t\t\r\n\t\tif(\r\n\t\t0x0903 == code || // Mc DEVANAGARI SIGN VISARGA\r\n\t\t0x093B == code || // Mc DEVANAGARI VOWEL SIGN OOE\r\n\t\t(0x093E <= code && code <= 0x0940) || // Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II\r\n\t\t(0x0949 <= code && code <= 0x094C) || // Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU\r\n\t\t(0x094E <= code && code <= 0x094F) || // Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW\r\n\t\t(0x0982 <= code && code <= 0x0983) || // Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA\r\n\t\t(0x09BF <= code && code <= 0x09C0) || // Mc [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II\r\n\t\t(0x09C7 <= code && code <= 0x09C8) || // Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI\r\n\t\t(0x09CB <= code && code <= 0x09CC) || // Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU\r\n\t\t0x0A03 == code || // Mc GURMUKHI SIGN VISARGA\r\n\t\t(0x0A3E <= code && code <= 0x0A40) || // Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II\r\n\t\t0x0A83 == code || // Mc GUJARATI SIGN VISARGA\r\n\t\t(0x0ABE <= code && code <= 0x0AC0) || // Mc [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II\r\n\t\t0x0AC9 == code || // Mc GUJARATI VOWEL SIGN CANDRA O\r\n\t\t(0x0ACB <= code && code <= 0x0ACC) || // Mc [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU\r\n\t\t(0x0B02 <= code && code <= 0x0B03) || // Mc [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA\r\n\t\t0x0B40 == code || // Mc ORIYA VOWEL SIGN II\r\n\t\t(0x0B47 <= code && code <= 0x0B48) || // Mc [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI\r\n\t\t(0x0B4B <= code && code <= 0x0B4C) || // Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU\r\n\t\t0x0BBF == code || // Mc TAMIL VOWEL SIGN I\r\n\t\t(0x0BC1 <= code && code <= 0x0BC2) || // Mc [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU\r\n\t\t(0x0BC6 <= code && code <= 0x0BC8) || // Mc [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI\r\n\t\t(0x0BCA <= code && code <= 0x0BCC) || // Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU\r\n\t\t(0x0C01 <= code && code <= 0x0C03) || // Mc [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA\r\n\t\t(0x0C41 <= code && code <= 0x0C44) || // Mc [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR\r\n\t\t(0x0C82 <= code && code <= 0x0C83) || // Mc [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA\r\n\t\t0x0CBE == code || // Mc KANNADA VOWEL SIGN AA\r\n\t\t(0x0CC0 <= code && code <= 0x0CC1) || // Mc [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U\r\n\t\t(0x0CC3 <= code && code <= 0x0CC4) || // Mc [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR\r\n\t\t(0x0CC7 <= code && code <= 0x0CC8) || // Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI\r\n\t\t(0x0CCA <= code && code <= 0x0CCB) || // Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO\r\n\t\t(0x0D02 <= code && code <= 0x0D03) || // Mc [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA\r\n\t\t(0x0D3F <= code && code <= 0x0D40) || // Mc [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II\r\n\t\t(0x0D46 <= code && code <= 0x0D48) || // Mc [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI\r\n\t\t(0x0D4A <= code && code <= 0x0D4C) || // Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU\r\n\t\t(0x0D82 <= code && code <= 0x0D83) || // Mc [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA\r\n\t\t(0x0DD0 <= code && code <= 0x0DD1) || // Mc [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA\r\n\t\t(0x0DD8 <= code && code <= 0x0DDE) || // Mc [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA\r\n\t\t(0x0DF2 <= code && code <= 0x0DF3) || // Mc [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA\r\n\t\t0x0E33 == code || // Lo THAI CHARACTER SARA AM\r\n\t\t0x0EB3 == code || // Lo LAO VOWEL SIGN AM\r\n\t\t(0x0F3E <= code && code <= 0x0F3F) || // Mc [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES\r\n\t\t0x0F7F == code || // Mc TIBETAN SIGN RNAM BCAD\r\n\t\t0x1031 == code || // Mc MYANMAR VOWEL SIGN E\r\n\t\t(0x103B <= code && code <= 0x103C) || // Mc [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA\r\n\t\t(0x1056 <= code && code <= 0x1057) || // Mc [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR\r\n\t\t0x1084 == code || // Mc MYANMAR VOWEL SIGN SHAN E\r\n\t\t0x17B6 == code || // Mc KHMER VOWEL SIGN AA\r\n\t\t(0x17BE <= code && code <= 0x17C5) || // Mc [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU\r\n\t\t(0x17C7 <= code && code <= 0x17C8) || // Mc [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU\r\n\t\t(0x1923 <= code && code <= 0x1926) || // Mc [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU\r\n\t\t(0x1929 <= code && code <= 0x192B) || // Mc [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA\r\n\t\t(0x1930 <= code && code <= 0x1931) || // Mc [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA\r\n\t\t(0x1933 <= code && code <= 0x1938) || // Mc [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA\r\n\t\t(0x1A19 <= code && code <= 0x1A1A) || // Mc [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O\r\n\t\t0x1A55 == code || // Mc TAI THAM CONSONANT SIGN MEDIAL RA\r\n\t\t0x1A57 == code || // Mc TAI THAM CONSONANT SIGN LA TANG LAI\r\n\t\t(0x1A6D <= code && code <= 0x1A72) || // Mc [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI\r\n\t\t0x1B04 == code || // Mc BALINESE SIGN BISAH\r\n\t\t0x1B35 == code || // Mc BALINESE VOWEL SIGN TEDUNG\r\n\t\t0x1B3B == code || // Mc BALINESE VOWEL SIGN RA REPA TEDUNG\r\n\t\t(0x1B3D <= code && code <= 0x1B41) || // Mc [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG\r\n\t\t(0x1B43 <= code && code <= 0x1B44) || // Mc [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG\r\n\t\t0x1B82 == code || // Mc SUNDANESE SIGN PANGWISAD\r\n\t\t0x1BA1 == code || // Mc SUNDANESE CONSONANT SIGN PAMINGKAL\r\n\t\t(0x1BA6 <= code && code <= 0x1BA7) || // Mc [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG\r\n\t\t0x1BAA == code || // Mc SUNDANESE SIGN PAMAAEH\r\n\t\t0x1BE7 == code || // Mc BATAK VOWEL SIGN E\r\n\t\t(0x1BEA <= code && code <= 0x1BEC) || // Mc [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O\r\n\t\t0x1BEE == code || // Mc BATAK VOWEL SIGN U\r\n\t\t(0x1BF2 <= code && code <= 0x1BF3) || // Mc [2] BATAK PANGOLAT..BATAK PANONGONAN\r\n\t\t(0x1C24 <= code && code <= 0x1C2B) || // Mc [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU\r\n\t\t(0x1C34 <= code && code <= 0x1C35) || // Mc [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG\r\n\t\t0x1CE1 == code || // Mc VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA\r\n\t\t(0x1CF2 <= code && code <= 0x1CF3) || // Mc [2] VEDIC SIGN ARDHAVISARGA..VEDIC SIGN ROTATED ARDHAVISARGA\r\n\t\t0x1CF7 == code || // Mc VEDIC SIGN ATIKRAMA\r\n\t\t(0xA823 <= code && code <= 0xA824) || // Mc [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I\r\n\t\t0xA827 == code || // Mc SYLOTI NAGRI VOWEL SIGN OO\r\n\t\t(0xA880 <= code && code <= 0xA881) || // Mc [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA\r\n\t\t(0xA8B4 <= code && code <= 0xA8C3) || // Mc [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU\r\n\t\t(0xA952 <= code && code <= 0xA953) || // Mc [2] REJANG CONSONANT SIGN H..REJANG VIRAMA\r\n\t\t0xA983 == code || // Mc JAVANESE SIGN WIGNYAN\r\n\t\t(0xA9B4 <= code && code <= 0xA9B5) || // Mc [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG\r\n\t\t(0xA9BA <= code && code <= 0xA9BB) || // Mc [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE\r\n\t\t(0xA9BD <= code && code <= 0xA9C0) || // Mc [4] JAVANESE CONSONANT SIGN KERET..JAVANESE PANGKON\r\n\t\t(0xAA2F <= code && code <= 0xAA30) || // Mc [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI\r\n\t\t(0xAA33 <= code && code <= 0xAA34) || // Mc [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA\r\n\t\t0xAA4D == code || // Mc CHAM CONSONANT SIGN FINAL H\r\n\t\t0xAAEB == code || // Mc MEETEI MAYEK VOWEL SIGN II\r\n\t\t(0xAAEE <= code && code <= 0xAAEF) || // Mc [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU\r\n\t\t0xAAF5 == code || // Mc MEETEI MAYEK VOWEL SIGN VISARGA\r\n\t\t(0xABE3 <= code && code <= 0xABE4) || // Mc [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP\r\n\t\t(0xABE6 <= code && code <= 0xABE7) || // Mc [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP\r\n\t\t(0xABE9 <= code && code <= 0xABEA) || // Mc [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG\r\n\t\t0xABEC == code || // Mc MEETEI MAYEK LUM IYEK\r\n\t\t0x11000 == code || // Mc BRAHMI SIGN CANDRABINDU\r\n\t\t0x11002 == code || // Mc BRAHMI SIGN VISARGA\r\n\t\t0x11082 == code || // Mc KAITHI SIGN VISARGA\r\n\t\t(0x110B0 <= code && code <= 0x110B2) || // Mc [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II\r\n\t\t(0x110B7 <= code && code <= 0x110B8) || // Mc [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU\r\n\t\t0x1112C == code || // Mc CHAKMA VOWEL SIGN E\r\n\t\t0x11182 == code || // Mc SHARADA SIGN VISARGA\r\n\t\t(0x111B3 <= code && code <= 0x111B5) || // Mc [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II\r\n\t\t(0x111BF <= code && code <= 0x111C0) || // Mc [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA\r\n\t\t(0x1122C <= code && code <= 0x1122E) || // Mc [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II\r\n\t\t(0x11232 <= code && code <= 0x11233) || // Mc [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU\r\n\t\t0x11235 == code || // Mc KHOJKI SIGN VIRAMA\r\n\t\t(0x112E0 <= code && code <= 0x112E2) || // Mc [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II\r\n\t\t(0x11302 <= code && code <= 0x11303) || // Mc [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA\r\n\t\t0x1133F == code || // Mc GRANTHA VOWEL SIGN I\r\n\t\t(0x11341 <= code && code <= 0x11344) || // Mc [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR\r\n\t\t(0x11347 <= code && code <= 0x11348) || // Mc [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI\r\n\t\t(0x1134B <= code && code <= 0x1134D) || // Mc [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA\r\n\t\t(0x11362 <= code && code <= 0x11363) || // Mc [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL\r\n\t\t(0x11435 <= code && code <= 0x11437) || // Mc [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II\r\n\t\t(0x11440 <= code && code <= 0x11441) || // Mc [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU\r\n\t\t0x11445 == code || // Mc NEWA SIGN VISARGA\r\n\t\t(0x114B1 <= code && code <= 0x114B2) || // Mc [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II\r\n\t\t0x114B9 == code || // Mc TIRHUTA VOWEL SIGN E\r\n\t\t(0x114BB <= code && code <= 0x114BC) || // Mc [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O\r\n\t\t0x114BE == code || // Mc TIRHUTA VOWEL SIGN AU\r\n\t\t0x114C1 == code || // Mc TIRHUTA SIGN VISARGA\r\n\t\t(0x115B0 <= code && code <= 0x115B1) || // Mc [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II\r\n\t\t(0x115B8 <= code && code <= 0x115BB) || // Mc [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU\r\n\t\t0x115BE == code || // Mc SIDDHAM SIGN VISARGA\r\n\t\t(0x11630 <= code && code <= 0x11632) || // Mc [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II\r\n\t\t(0x1163B <= code && code <= 0x1163C) || // Mc [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU\r\n\t\t0x1163E == code || // Mc MODI SIGN VISARGA\r\n\t\t0x116AC == code || // Mc TAKRI SIGN VISARGA\r\n\t\t(0x116AE <= code && code <= 0x116AF) || // Mc [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II\r\n\t\t0x116B6 == code || // Mc TAKRI SIGN VIRAMA\r\n\t\t(0x11720 <= code && code <= 0x11721) || // Mc [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA\r\n\t\t0x11726 == code || // Mc AHOM VOWEL SIGN E\r\n\t\t(0x11A07 <= code && code <= 0x11A08) || // Mc [2] ZANABAZAR SQUARE VOWEL SIGN AI..ZANABAZAR SQUARE VOWEL SIGN AU\r\n\t\t0x11A39 == code || // Mc ZANABAZAR SQUARE SIGN VISARGA\r\n\t\t(0x11A57 <= code && code <= 0x11A58) || // Mc [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU\r\n\t\t0x11A97 == code || // Mc SOYOMBO SIGN VISARGA\r\n\t\t0x11C2F == code || // Mc BHAIKSUKI VOWEL SIGN AA\r\n\t\t0x11C3E == code || // Mc BHAIKSUKI SIGN VISARGA\r\n\t\t0x11CA9 == code || // Mc MARCHEN SUBJOINED LETTER YA\r\n\t\t0x11CB1 == code || // Mc MARCHEN VOWEL SIGN I\r\n\t\t0x11CB4 == code || // Mc MARCHEN VOWEL SIGN O\r\n\t\t(0x16F51 <= code && code <= 0x16F7E) || // Mc [46] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN NG\r\n\t\t0x1D166 == code || // Mc MUSICAL SYMBOL COMBINING SPRECHGESANG STEM\r\n\t\t0x1D16D == code // Mc MUSICAL SYMBOL COMBINING AUGMENTATION DOT\r\n\t\t){\r\n\t\t\treturn SpacingMark;\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\tif(\r\n\t\t(0x1100 <= code && code <= 0x115F) || // Lo [96] HANGUL CHOSEONG KIYEOK..HANGUL CHOSEONG FILLER\r\n\t\t(0xA960 <= code && code <= 0xA97C) // Lo [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH\r\n\t\t){\r\n\t\t\treturn L;\r\n\t\t}\r\n\t\t\r\n\t\tif(\r\n\t\t(0x1160 <= code && code <= 0x11A7) || // Lo [72] HANGUL JUNGSEONG FILLER..HANGUL JUNGSEONG O-YAE\r\n\t\t(0xD7B0 <= code && code <= 0xD7C6) // Lo [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E\r\n\t\t){\r\n\t\t\treturn V;\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\tif(\r\n\t\t(0x11A8 <= code && code <= 0x11FF) || // Lo [88] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG SSANGNIEUN\r\n\t\t(0xD7CB <= code && code <= 0xD7FB) // Lo [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH\r\n\t\t){\r\n\t\t\treturn T;\r\n\t\t}\r\n\t\t\r\n\t\tif(\r\n\t\t0xAC00 == code || // Lo HANGUL SYLLABLE GA\r\n\t\t0xAC1C == code || // Lo HANGUL SYLLABLE GAE\r\n\t\t0xAC38 == code || // Lo HANGUL SYLLABLE GYA\r\n\t\t0xAC54 == code || // Lo HANGUL SYLLABLE GYAE\r\n\t\t0xAC70 == code || // Lo HANGUL SYLLABLE GEO\r\n\t\t0xAC8C == code || // Lo HANGUL SYLLABLE GE\r\n\t\t0xACA8 == code || // Lo HANGUL SYLLABLE GYEO\r\n\t\t0xACC4 == code || // Lo HANGUL SYLLABLE GYE\r\n\t\t0xACE0 == code || // Lo HANGUL SYLLABLE GO\r\n\t\t0xACFC == code || // Lo HANGUL SYLLABLE GWA\r\n\t\t0xAD18 == code || // Lo HANGUL SYLLABLE GWAE\r\n\t\t0xAD34 == code || // Lo HANGUL SYLLABLE GOE\r\n\t\t0xAD50 == code || // Lo HANGUL SYLLABLE GYO\r\n\t\t0xAD6C == code || // Lo HANGUL SYLLABLE GU\r\n\t\t0xAD88 == code || // Lo HANGUL SYLLABLE GWEO\r\n\t\t0xADA4 == code || // Lo HANGUL SYLLABLE GWE\r\n\t\t0xADC0 == code || // Lo HANGUL SYLLABLE GWI\r\n\t\t0xADDC == code || // Lo HANGUL SYLLABLE GYU\r\n\t\t0xADF8 == code || // Lo HANGUL SYLLABLE GEU\r\n\t\t0xAE14 == code || // Lo HANGUL SYLLABLE GYI\r\n\t\t0xAE30 == code || // Lo HANGUL SYLLABLE GI\r\n\t\t0xAE4C == code || // Lo HANGUL SYLLABLE GGA\r\n\t\t0xAE68 == code || // Lo HANGUL SYLLABLE GGAE\r\n\t\t0xAE84 == code || // Lo HANGUL SYLLABLE GGYA\r\n\t\t0xAEA0 == code || // Lo HANGUL SYLLABLE GGYAE\r\n\t\t0xAEBC == code || // Lo HANGUL SYLLABLE GGEO\r\n\t\t0xAED8 == code || // Lo HANGUL SYLLABLE GGE\r\n\t\t0xAEF4 == code || // Lo HANGUL SYLLABLE GGYEO\r\n\t\t0xAF10 == code || // Lo HANGUL SYLLABLE GGYE\r\n\t\t0xAF2C == code || // Lo HANGUL SYLLABLE GGO\r\n\t\t0xAF48 == code || // Lo HANGUL SYLLABLE GGWA\r\n\t\t0xAF64 == code || // Lo HANGUL SYLLABLE GGWAE\r\n\t\t0xAF80 == code || // Lo HANGUL SYLLABLE GGOE\r\n\t\t0xAF9C == code || // Lo HANGUL SYLLABLE GGYO\r\n\t\t0xAFB8 == code || // Lo HANGUL SYLLABLE GGU\r\n\t\t0xAFD4 == code || // Lo HANGUL SYLLABLE GGWEO\r\n\t\t0xAFF0 == code || // Lo HANGUL SYLLABLE GGWE\r\n\t\t0xB00C == code || // Lo HANGUL SYLLABLE GGWI\r\n\t\t0xB028 == code || // Lo HANGUL SYLLABLE GGYU\r\n\t\t0xB044 == code || // Lo HANGUL SYLLABLE GGEU\r\n\t\t0xB060 == code || // Lo HANGUL SYLLABLE GGYI\r\n\t\t0xB07C == code || // Lo HANGUL SYLLABLE GGI\r\n\t\t0xB098 == code || // Lo HANGUL SYLLABLE NA\r\n\t\t0xB0B4 == code || // Lo HANGUL SYLLABLE NAE\r\n\t\t0xB0D0 == code || // Lo HANGUL SYLLABLE NYA\r\n\t\t0xB0EC == code || // Lo HANGUL SYLLABLE NYAE\r\n\t\t0xB108 == code || // Lo HANGUL SYLLABLE NEO\r\n\t\t0xB124 == code || // Lo HANGUL SYLLABLE NE\r\n\t\t0xB140 == code || // Lo HANGUL SYLLABLE NYEO\r\n\t\t0xB15C == code || // Lo HANGUL SYLLABLE NYE\r\n\t\t0xB178 == code || // Lo HANGUL SYLLABLE NO\r\n\t\t0xB194 == code || // Lo HANGUL SYLLABLE NWA\r\n\t\t0xB1B0 == code || // Lo HANGUL SYLLABLE NWAE\r\n\t\t0xB1CC == code || // Lo HANGUL SYLLABLE NOE\r\n\t\t0xB1E8 == code || // Lo HANGUL SYLLABLE NYO\r\n\t\t0xB204 == code || // Lo HANGUL SYLLABLE NU\r\n\t\t0xB220 == code || // Lo HANGUL SYLLABLE NWEO\r\n\t\t0xB23C == code || // Lo HANGUL SYLLABLE NWE\r\n\t\t0xB258 == code || // Lo HANGUL SYLLABLE NWI\r\n\t\t0xB274 == code || // Lo HANGUL SYLLABLE NYU\r\n\t\t0xB290 == code || // Lo HANGUL SYLLABLE NEU\r\n\t\t0xB2AC == code || // Lo HANGUL SYLLABLE NYI\r\n\t\t0xB2C8 == code || // Lo HANGUL SYLLABLE NI\r\n\t\t0xB2E4 == code || // Lo HANGUL SYLLABLE DA\r\n\t\t0xB300 == code || // Lo HANGUL SYLLABLE DAE\r\n\t\t0xB31C == code || // Lo HANGUL SYLLABLE DYA\r\n\t\t0xB338 == code || // Lo HANGUL SYLLABLE DYAE\r\n\t\t0xB354 == code || // Lo HANGUL SYLLABLE DEO\r\n\t\t0xB370 == code || // Lo HANGUL SYLLABLE DE\r\n\t\t0xB38C == code || // Lo HANGUL SYLLABLE DYEO\r\n\t\t0xB3A8 == code || // Lo HANGUL SYLLABLE DYE\r\n\t\t0xB3C4 == code || // Lo HANGUL SYLLABLE DO\r\n\t\t0xB3E0 == code || // Lo HANGUL SYLLABLE DWA\r\n\t\t0xB3FC == code || // Lo HANGUL SYLLABLE DWAE\r\n\t\t0xB418 == code || // Lo HANGUL SYLLABLE DOE\r\n\t\t0xB434 == code || // Lo HANGUL SYLLABLE DYO\r\n\t\t0xB450 == code || // Lo HANGUL SYLLABLE DU\r\n\t\t0xB46C == code || // Lo HANGUL SYLLABLE DWEO\r\n\t\t0xB488 == code || // Lo HANGUL SYLLABLE DWE\r\n\t\t0xB4A4 == code || // Lo HANGUL SYLLABLE DWI\r\n\t\t0xB4C0 == code || // Lo HANGUL SYLLABLE DYU\r\n\t\t0xB4DC == code || // Lo HANGUL SYLLABLE DEU\r\n\t\t0xB4F8 == code || // Lo HANGUL SYLLABLE DYI\r\n\t\t0xB514 == code || // Lo HANGUL SYLLABLE DI\r\n\t\t0xB530 == code || // Lo HANGUL SYLLABLE DDA\r\n\t\t0xB54C == code || // Lo HANGUL SYLLABLE DDAE\r\n\t\t0xB568 == code || // Lo HANGUL SYLLABLE DDYA\r\n\t\t0xB584 == code || // Lo HANGUL SYLLABLE DDYAE\r\n\t\t0xB5A0 == code || // Lo HANGUL SYLLABLE DDEO\r\n\t\t0xB5BC == code || // Lo HANGUL SYLLABLE DDE\r\n\t\t0xB5D8 == code || // Lo HANGUL SYLLABLE DDYEO\r\n\t\t0xB5F4 == code || // Lo HANGUL SYLLABLE DDYE\r\n\t\t0xB610 == code || // Lo HANGUL SYLLABLE DDO\r\n\t\t0xB62C == code || // Lo HANGUL SYLLABLE DDWA\r\n\t\t0xB648 == code || // Lo HANGUL SYLLABLE DDWAE\r\n\t\t0xB664 == code || // Lo HANGUL SYLLABLE DDOE\r\n\t\t0xB680 == code || // Lo HANGUL SYLLABLE DDYO\r\n\t\t0xB69C == code || // Lo HANGUL SYLLABLE DDU\r\n\t\t0xB6B8 == code || // Lo HANGUL SYLLABLE DDWEO\r\n\t\t0xB6D4 == code || // Lo HANGUL SYLLABLE DDWE\r\n\t\t0xB6F0 == code || // Lo HANGUL SYLLABLE DDWI\r\n\t\t0xB70C == code || // Lo HANGUL SYLLABLE DDYU\r\n\t\t0xB728 == code || // Lo HANGUL SYLLABLE DDEU\r\n\t\t0xB744 == code || // Lo HANGUL SYLLABLE DDYI\r\n\t\t0xB760 == code || // Lo HANGUL SYLLABLE DDI\r\n\t\t0xB77C == code || // Lo HANGUL SYLLABLE RA\r\n\t\t0xB798 == code || // Lo HANGUL SYLLABLE RAE\r\n\t\t0xB7B4 == code || // Lo HANGUL SYLLABLE RYA\r\n\t\t0xB7D0 == code || // Lo HANGUL SYLLABLE RYAE\r\n\t\t0xB7EC == code || // Lo HANGUL SYLLABLE REO\r\n\t\t0xB808 == code || // Lo HANGUL SYLLABLE RE\r\n\t\t0xB824 == code || // Lo HANGUL SYLLABLE RYEO\r\n\t\t0xB840 == code || // Lo HANGUL SYLLABLE RYE\r\n\t\t0xB85C == code || // Lo HANGUL SYLLABLE RO\r\n\t\t0xB878 == code || // Lo HANGUL SYLLABLE RWA\r\n\t\t0xB894 == code || // Lo HANGUL SYLLABLE RWAE\r\n\t\t0xB8B0 == code || // Lo HANGUL SYLLABLE ROE\r\n\t\t0xB8CC == code || // Lo HANGUL SYLLABLE RYO\r\n\t\t0xB8E8 == code || // Lo HANGUL SYLLABLE RU\r\n\t\t0xB904 == code || // Lo HANGUL SYLLABLE RWEO\r\n\t\t0xB920 == code || // Lo HANGUL SYLLABLE RWE\r\n\t\t0xB93C == code || // Lo HANGUL SYLLABLE RWI\r\n\t\t0xB958 == code || // Lo HANGUL SYLLABLE RYU\r\n\t\t0xB974 == code || // Lo HANGUL SYLLABLE REU\r\n\t\t0xB990 == code || // Lo HANGUL SYLLABLE RYI\r\n\t\t0xB9AC == code || // Lo HANGUL SYLLABLE RI\r\n\t\t0xB9C8 == code || // Lo HANGUL SYLLABLE MA\r\n\t\t0xB9E4 == code || // Lo HANGUL SYLLABLE MAE\r\n\t\t0xBA00 == code || // Lo HANGUL SYLLABLE MYA\r\n\t\t0xBA1C == code || // Lo HANGUL SYLLABLE MYAE\r\n\t\t0xBA38 == code || // Lo HANGUL SYLLABLE MEO\r\n\t\t0xBA54 == code || // Lo HANGUL SYLLABLE ME\r\n\t\t0xBA70 == code || // Lo HANGUL SYLLABLE MYEO\r\n\t\t0xBA8C == code || // Lo HANGUL SYLLABLE MYE\r\n\t\t0xBAA8 == code || // Lo HANGUL SYLLABLE MO\r\n\t\t0xBAC4 == code || // Lo HANGUL SYLLABLE MWA\r\n\t\t0xBAE0 == code || // Lo HANGUL SYLLABLE MWAE\r\n\t\t0xBAFC == code || // Lo HANGUL SYLLABLE MOE\r\n\t\t0xBB18 == code || // Lo HANGUL SYLLABLE MYO\r\n\t\t0xBB34 == code || // Lo HANGUL SYLLABLE MU\r\n\t\t0xBB50 == code || // Lo HANGUL SYLLABLE MWEO\r\n\t\t0xBB6C == code || // Lo HANGUL SYLLABLE MWE\r\n\t\t0xBB88 == code || // Lo HANGUL SYLLABLE MWI\r\n\t\t0xBBA4 == code || // Lo HANGUL SYLLABLE MYU\r\n\t\t0xBBC0 == code || // Lo HANGUL SYLLABLE MEU\r\n\t\t0xBBDC == code || // Lo HANGUL SYLLABLE MYI\r\n\t\t0xBBF8 == code || // Lo HANGUL SYLLABLE MI\r\n\t\t0xBC14 == code || // Lo HANGUL SYLLABLE BA\r\n\t\t0xBC30 == code || // Lo HANGUL SYLLABLE BAE\r\n\t\t0xBC4C == code || // Lo HANGUL SYLLABLE BYA\r\n\t\t0xBC68 == code || // Lo HANGUL SYLLABLE BYAE\r\n\t\t0xBC84 == code || // Lo HANGUL SYLLABLE BEO\r\n\t\t0xBCA0 == code || // Lo HANGUL SYLLABLE BE\r\n\t\t0xBCBC == code || // Lo HANGUL SYLLABLE BYEO\r\n\t\t0xBCD8 == code || // Lo HANGUL SYLLABLE BYE\r\n\t\t0xBCF4 == code || // Lo HANGUL SYLLABLE BO\r\n\t\t0xBD10 == code || // Lo HANGUL SYLLABLE BWA\r\n\t\t0xBD2C == code || // Lo HANGUL SYLLABLE BWAE\r\n\t\t0xBD48 == code || // Lo HANGUL SYLLABLE BOE\r\n\t\t0xBD64 == code || // Lo HANGUL SYLLABLE BYO\r\n\t\t0xBD80 == code || // Lo HANGUL SYLLABLE BU\r\n\t\t0xBD9C == code || // Lo HANGUL SYLLABLE BWEO\r\n\t\t0xBDB8 == code || // Lo HANGUL SYLLABLE BWE\r\n\t\t0xBDD4 == code || // Lo HANGUL SYLLABLE BWI\r\n\t\t0xBDF0 == code || // Lo HANGUL SYLLABLE BYU\r\n\t\t0xBE0C == code || // Lo HANGUL SYLLABLE BEU\r\n\t\t0xBE28 == code || // Lo HANGUL SYLLABLE BYI\r\n\t\t0xBE44 == code || // Lo HANGUL SYLLABLE BI\r\n\t\t0xBE60 == code || // Lo HANGUL SYLLABLE BBA\r\n\t\t0xBE7C == code || // Lo HANGUL SYLLABLE BBAE\r\n\t\t0xBE98 == code || // Lo HANGUL SYLLABLE BBYA\r\n\t\t0xBEB4 == code || // Lo HANGUL SYLLABLE BBYAE\r\n\t\t0xBED0 == code || // Lo HANGUL SYLLABLE BBEO\r\n\t\t0xBEEC == code || // Lo HANGUL SYLLABLE BBE\r\n\t\t0xBF08 == code || // Lo HANGUL SYLLABLE BBYEO\r\n\t\t0xBF24 == code || // Lo HANGUL SYLLABLE BBYE\r\n\t\t0xBF40 == code || // Lo HANGUL SYLLABLE BBO\r\n\t\t0xBF5C == code || // Lo HANGUL SYLLABLE BBWA\r\n\t\t0xBF78 == code || // Lo HANGUL SYLLABLE BBWAE\r\n\t\t0xBF94 == code || // Lo HANGUL SYLLABLE BBOE\r\n\t\t0xBFB0 == code || // Lo HANGUL SYLLABLE BBYO\r\n\t\t0xBFCC == code || // Lo HANGUL SYLLABLE BBU\r\n\t\t0xBFE8 == code || // Lo HANGUL SYLLABLE BBWEO\r\n\t\t0xC004 == code || // Lo HANGUL SYLLABLE BBWE\r\n\t\t0xC020 == code || // Lo HANGUL SYLLABLE BBWI\r\n\t\t0xC03C == code || // Lo HANGUL SYLLABLE BBYU\r\n\t\t0xC058 == code || // Lo HANGUL SYLLABLE BBEU\r\n\t\t0xC074 == code || // Lo HANGUL SYLLABLE BBYI\r\n\t\t0xC090 == code || // Lo HANGUL SYLLABLE BBI\r\n\t\t0xC0AC == code || // Lo HANGUL SYLLABLE SA\r\n\t\t0xC0C8 == code || // Lo HANGUL SYLLABLE SAE\r\n\t\t0xC0E4 == code || // Lo HANGUL SYLLABLE SYA\r\n\t\t0xC100 == code || // Lo HANGUL SYLLABLE SYAE\r\n\t\t0xC11C == code || // Lo HANGUL SYLLABLE SEO\r\n\t\t0xC138 == code || // Lo HANGUL SYLLABLE SE\r\n\t\t0xC154 == code || // Lo HANGUL SYLLABLE SYEO\r\n\t\t0xC170 == code || // Lo HANGUL SYLLABLE SYE\r\n\t\t0xC18C == code || // Lo HANGUL SYLLABLE SO\r\n\t\t0xC1A8 == code || // Lo HANGUL SYLLABLE SWA\r\n\t\t0xC1C4 == code || // Lo HANGUL SYLLABLE SWAE\r\n\t\t0xC1E0 == code || // Lo HANGUL SYLLABLE SOE\r\n\t\t0xC1FC == code || // Lo HANGUL SYLLABLE SYO\r\n\t\t0xC218 == code || // Lo HANGUL SYLLABLE SU\r\n\t\t0xC234 == code || // Lo HANGUL SYLLABLE SWEO\r\n\t\t0xC250 == code || // Lo HANGUL SYLLABLE SWE\r\n\t\t0xC26C == code || // Lo HANGUL SYLLABLE SWI\r\n\t\t0xC288 == code || // Lo HANGUL SYLLABLE SYU\r\n\t\t0xC2A4 == code || // Lo HANGUL SYLLABLE SEU\r\n\t\t0xC2C0 == code || // Lo HANGUL SYLLABLE SYI\r\n\t\t0xC2DC == code || // Lo HANGUL SYLLABLE SI\r\n\t\t0xC2F8 == code || // Lo HANGUL SYLLABLE SSA\r\n\t\t0xC314 == code || // Lo HANGUL SYLLABLE SSAE\r\n\t\t0xC330 == code || // Lo HANGUL SYLLABLE SSYA\r\n\t\t0xC34C == code || // Lo HANGUL SYLLABLE SSYAE\r\n\t\t0xC368 == code || // Lo HANGUL SYLLABLE SSEO\r\n\t\t0xC384 == code || // Lo HANGUL SYLLABLE SSE\r\n\t\t0xC3A0 == code || // Lo HANGUL SYLLABLE SSYEO\r\n\t\t0xC3BC == code || // Lo HANGUL SYLLABLE SSYE\r\n\t\t0xC3D8 == code || // Lo HANGUL SYLLABLE SSO\r\n\t\t0xC3F4 == code || // Lo HANGUL SYLLABLE SSWA\r\n\t\t0xC410 == code || // Lo HANGUL SYLLABLE SSWAE\r\n\t\t0xC42C == code || // Lo HANGUL SYLLABLE SSOE\r\n\t\t0xC448 == code || // Lo HANGUL SYLLABLE SSYO\r\n\t\t0xC464 == code || // Lo HANGUL SYLLABLE SSU\r\n\t\t0xC480 == code || // Lo HANGUL SYLLABLE SSWEO\r\n\t\t0xC49C == code || // Lo HANGUL SYLLABLE SSWE\r\n\t\t0xC4B8 == code || // Lo HANGUL SYLLABLE SSWI\r\n\t\t0xC4D4 == code || // Lo HANGUL SYLLABLE SSYU\r\n\t\t0xC4F0 == code || // Lo HANGUL SYLLABLE SSEU\r\n\t\t0xC50C == code || // Lo HANGUL SYLLABLE SSYI\r\n\t\t0xC528 == code || // Lo HANGUL SYLLABLE SSI\r\n\t\t0xC544 == code || // Lo HANGUL SYLLABLE A\r\n\t\t0xC560 == code || // Lo HANGUL SYLLABLE AE\r\n\t\t0xC57C == code || // Lo HANGUL SYLLABLE YA\r\n\t\t0xC598 == code || // Lo HANGUL SYLLABLE YAE\r\n\t\t0xC5B4 == code || // Lo HANGUL SYLLABLE EO\r\n\t\t0xC5D0 == code || // Lo HANGUL SYLLABLE E\r\n\t\t0xC5EC == code || // Lo HANGUL SYLLABLE YEO\r\n\t\t0xC608 == code || // Lo HANGUL SYLLABLE YE\r\n\t\t0xC624 == code || // Lo HANGUL SYLLABLE O\r\n\t\t0xC640 == code || // Lo HANGUL SYLLABLE WA\r\n\t\t0xC65C == code || // Lo HANGUL SYLLABLE WAE\r\n\t\t0xC678 == code || // Lo HANGUL SYLLABLE OE\r\n\t\t0xC694 == code || // Lo HANGUL SYLLABLE YO\r\n\t\t0xC6B0 == code || // Lo HANGUL SYLLABLE U\r\n\t\t0xC6CC == code || // Lo HANGUL SYLLABLE WEO\r\n\t\t0xC6E8 == code || // Lo HANGUL SYLLABLE WE\r\n\t\t0xC704 == code || // Lo HANGUL SYLLABLE WI\r\n\t\t0xC720 == code || // Lo HANGUL SYLLABLE YU\r\n\t\t0xC73C == code || // Lo HANGUL SYLLABLE EU\r\n\t\t0xC758 == code || // Lo HANGUL SYLLABLE YI\r\n\t\t0xC774 == code || // Lo HANGUL SYLLABLE I\r\n\t\t0xC790 == code || // Lo HANGUL SYLLABLE JA\r\n\t\t0xC7AC == code || // Lo HANGUL SYLLABLE JAE\r\n\t\t0xC7C8 == code || // Lo HANGUL SYLLABLE JYA\r\n\t\t0xC7E4 == code || // Lo HANGUL SYLLABLE JYAE\r\n\t\t0xC800 == code || // Lo HANGUL SYLLABLE JEO\r\n\t\t0xC81C == code || // Lo HANGUL SYLLABLE JE\r\n\t\t0xC838 == code || // Lo HANGUL SYLLABLE JYEO\r\n\t\t0xC854 == code || // Lo HANGUL SYLLABLE JYE\r\n\t\t0xC870 == code || // Lo HANGUL SYLLABLE JO\r\n\t\t0xC88C == code || // Lo HANGUL SYLLABLE JWA\r\n\t\t0xC8A8 == code || // Lo HANGUL SYLLABLE JWAE\r\n\t\t0xC8C4 == code || // Lo HANGUL SYLLABLE JOE\r\n\t\t0xC8E0 == code || // Lo HANGUL SYLLABLE JYO\r\n\t\t0xC8FC == code || // Lo HANGUL SYLLABLE JU\r\n\t\t0xC918 == code || // Lo HANGUL SYLLABLE JWEO\r\n\t\t0xC934 == code || // Lo HANGUL SYLLABLE JWE\r\n\t\t0xC950 == code || // Lo HANGUL SYLLABLE JWI\r\n\t\t0xC96C == code || // Lo HANGUL SYLLABLE JYU\r\n\t\t0xC988 == code || // Lo HANGUL SYLLABLE JEU\r\n\t\t0xC9A4 == code || // Lo HANGUL SYLLABLE JYI\r\n\t\t0xC9C0 == code || // Lo HANGUL SYLLABLE JI\r\n\t\t0xC9DC == code || // Lo HANGUL SYLLABLE JJA\r\n\t\t0xC9F8 == code || // Lo HANGUL SYLLABLE JJAE\r\n\t\t0xCA14 == code || // Lo HANGUL SYLLABLE JJYA\r\n\t\t0xCA30 == code || // Lo HANGUL SYLLABLE JJYAE\r\n\t\t0xCA4C == code || // Lo HANGUL SYLLABLE JJEO\r\n\t\t0xCA68 == code || // Lo HANGUL SYLLABLE JJE\r\n\t\t0xCA84 == code || // Lo HANGUL SYLLABLE JJYEO\r\n\t\t0xCAA0 == code || // Lo HANGUL SYLLABLE JJYE\r\n\t\t0xCABC == code || // Lo HANGUL SYLLABLE JJO\r\n\t\t0xCAD8 == code || // Lo HANGUL SYLLABLE JJWA\r\n\t\t0xCAF4 == code || // Lo HANGUL SYLLABLE JJWAE\r\n\t\t0xCB10 == code || // Lo HANGUL SYLLABLE JJOE\r\n\t\t0xCB2C == code || // Lo HANGUL SYLLABLE JJYO\r\n\t\t0xCB48 == code || // Lo HANGUL SYLLABLE JJU\r\n\t\t0xCB64 == code || // Lo HANGUL SYLLABLE JJWEO\r\n\t\t0xCB80 == code || // Lo HANGUL SYLLABLE JJWE\r\n\t\t0xCB9C == code || // Lo HANGUL SYLLABLE JJWI\r\n\t\t0xCBB8 == code || // Lo HANGUL SYLLABLE JJYU\r\n\t\t0xCBD4 == code || // Lo HANGUL SYLLABLE JJEU\r\n\t\t0xCBF0 == code || // Lo HANGUL SYLLABLE JJYI\r\n\t\t0xCC0C == code || // Lo HANGUL SYLLABLE JJI\r\n\t\t0xCC28 == code || // Lo HANGUL SYLLABLE CA\r\n\t\t0xCC44 == code || // Lo HANGUL SYLLABLE CAE\r\n\t\t0xCC60 == code || // Lo HANGUL SYLLABLE CYA\r\n\t\t0xCC7C == code || // Lo HANGUL SYLLABLE CYAE\r\n\t\t0xCC98 == code || // Lo HANGUL SYLLABLE CEO\r\n\t\t0xCCB4 == code || // Lo HANGUL SYLLABLE CE\r\n\t\t0xCCD0 == code || // Lo HANGUL SYLLABLE CYEO\r\n\t\t0xCCEC == code || // Lo HANGUL SYLLABLE CYE\r\n\t\t0xCD08 == code || // Lo HANGUL SYLLABLE CO\r\n\t\t0xCD24 == code || // Lo HANGUL SYLLABLE CWA\r\n\t\t0xCD40 == code || // Lo HANGUL SYLLABLE CWAE\r\n\t\t0xCD5C == code || // Lo HANGUL SYLLABLE COE\r\n\t\t0xCD78 == code || // Lo HANGUL SYLLABLE CYO\r\n\t\t0xCD94 == code || // Lo HANGUL SYLLABLE CU\r\n\t\t0xCDB0 == code || // Lo HANGUL SYLLABLE CWEO\r\n\t\t0xCDCC == code || // Lo HANGUL SYLLABLE CWE\r\n\t\t0xCDE8 == code || // Lo HANGUL SYLLABLE CWI\r\n\t\t0xCE04 == code || // Lo HANGUL SYLLABLE CYU\r\n\t\t0xCE20 == code || // Lo HANGUL SYLLABLE CEU\r\n\t\t0xCE3C == code || // Lo HANGUL SYLLABLE CYI\r\n\t\t0xCE58 == code || // Lo HANGUL SYLLABLE CI\r\n\t\t0xCE74 == code || // Lo HANGUL SYLLABLE KA\r\n\t\t0xCE90 == code || // Lo HANGUL SYLLABLE KAE\r\n\t\t0xCEAC == code || // Lo HANGUL SYLLABLE KYA\r\n\t\t0xCEC8 == code || // Lo HANGUL SYLLABLE KYAE\r\n\t\t0xCEE4 == code || // Lo HANGUL SYLLABLE KEO\r\n\t\t0xCF00 == code || // Lo HANGUL SYLLABLE KE\r\n\t\t0xCF1C == code || // Lo HANGUL SYLLABLE KYEO\r\n\t\t0xCF38 == code || // Lo HANGUL SYLLABLE KYE\r\n\t\t0xCF54 == code || // Lo HANGUL SYLLABLE KO\r\n\t\t0xCF70 == code || // Lo HANGUL SYLLABLE KWA\r\n\t\t0xCF8C == code || // Lo HANGUL SYLLABLE KWAE\r\n\t\t0xCFA8 == code || // Lo HANGUL SYLLABLE KOE\r\n\t\t0xCFC4 == code || // Lo HANGUL SYLLABLE KYO\r\n\t\t0xCFE0 == code || // Lo HANGUL SYLLABLE KU\r\n\t\t0xCFFC == code || // Lo HANGUL SYLLABLE KWEO\r\n\t\t0xD018 == code || // Lo HANGUL SYLLABLE KWE\r\n\t\t0xD034 == code || // Lo HANGUL SYLLABLE KWI\r\n\t\t0xD050 == code || // Lo HANGUL SYLLABLE KYU\r\n\t\t0xD06C == code || // Lo HANGUL SYLLABLE KEU\r\n\t\t0xD088 == code || // Lo HANGUL SYLLABLE KYI\r\n\t\t0xD0A4 == code || // Lo HANGUL SYLLABLE KI\r\n\t\t0xD0C0 == code || // Lo HANGUL SYLLABLE TA\r\n\t\t0xD0DC == code || // Lo HANGUL SYLLABLE TAE\r\n\t\t0xD0F8 == code || // Lo HANGUL SYLLABLE TYA\r\n\t\t0xD114 == code || // Lo HANGUL SYLLABLE TYAE\r\n\t\t0xD130 == code || // Lo HANGUL SYLLABLE TEO\r\n\t\t0xD14C == code || // Lo HANGUL SYLLABLE TE\r\n\t\t0xD168 == code || // Lo HANGUL SYLLABLE TYEO\r\n\t\t0xD184 == code || // Lo HANGUL SYLLABLE TYE\r\n\t\t0xD1A0 == code || // Lo HANGUL SYLLABLE TO\r\n\t\t0xD1BC == code || // Lo HANGUL SYLLABLE TWA\r\n\t\t0xD1D8 == code || // Lo HANGUL SYLLABLE TWAE\r\n\t\t0xD1F4 == code || // Lo HANGUL SYLLABLE TOE\r\n\t\t0xD210 == code || // Lo HANGUL SYLLABLE TYO\r\n\t\t0xD22C == code || // Lo HANGUL SYLLABLE TU\r\n\t\t0xD248 == code || // Lo HANGUL SYLLABLE TWEO\r\n\t\t0xD264 == code || // Lo HANGUL SYLLABLE TWE\r\n\t\t0xD280 == code || // Lo HANGUL SYLLABLE TWI\r\n\t\t0xD29C == code || // Lo HANGUL SYLLABLE TYU\r\n\t\t0xD2B8 == code || // Lo HANGUL SYLLABLE TEU\r\n\t\t0xD2D4 == code || // Lo HANGUL SYLLABLE TYI\r\n\t\t0xD2F0 == code || // Lo HANGUL SYLLABLE TI\r\n\t\t0xD30C == code || // Lo HANGUL SYLLABLE PA\r\n\t\t0xD328 == code || // Lo HANGUL SYLLABLE PAE\r\n\t\t0xD344 == code || // Lo HANGUL SYLLABLE PYA\r\n\t\t0xD360 == code || // Lo HANGUL SYLLABLE PYAE\r\n\t\t0xD37C == code || // Lo HANGUL SYLLABLE PEO\r\n\t\t0xD398 == code || // Lo HANGUL SYLLABLE PE\r\n\t\t0xD3B4 == code || // Lo HANGUL SYLLABLE PYEO\r\n\t\t0xD3D0 == code || // Lo HANGUL SYLLABLE PYE\r\n\t\t0xD3EC == code || // Lo HANGUL SYLLABLE PO\r\n\t\t0xD408 == code || // Lo HANGUL SYLLABLE PWA\r\n\t\t0xD424 == code || // Lo HANGUL SYLLABLE PWAE\r\n\t\t0xD440 == code || // Lo HANGUL SYLLABLE POE\r\n\t\t0xD45C == code || // Lo HANGUL SYLLABLE PYO\r\n\t\t0xD478 == code || // Lo HANGUL SYLLABLE PU\r\n\t\t0xD494 == code || // Lo HANGUL SYLLABLE PWEO\r\n\t\t0xD4B0 == code || // Lo HANGUL SYLLABLE PWE\r\n\t\t0xD4CC == code || // Lo HANGUL SYLLABLE PWI\r\n\t\t0xD4E8 == code || // Lo HANGUL SYLLABLE PYU\r\n\t\t0xD504 == code || // Lo HANGUL SYLLABLE PEU\r\n\t\t0xD520 == code || // Lo HANGUL SYLLABLE PYI\r\n\t\t0xD53C == code || // Lo HANGUL SYLLABLE PI\r\n\t\t0xD558 == code || // Lo HANGUL SYLLABLE HA\r\n\t\t0xD574 == code || // Lo HANGUL SYLLABLE HAE\r\n\t\t0xD590 == code || // Lo HANGUL SYLLABLE HYA\r\n\t\t0xD5AC == code || // Lo HANGUL SYLLABLE HYAE\r\n\t\t0xD5C8 == code || // Lo HANGUL SYLLABLE HEO\r\n\t\t0xD5E4 == code || // Lo HANGUL SYLLABLE HE\r\n\t\t0xD600 == code || // Lo HANGUL SYLLABLE HYEO\r\n\t\t0xD61C == code || // Lo HANGUL SYLLABLE HYE\r\n\t\t0xD638 == code || // Lo HANGUL SYLLABLE HO\r\n\t\t0xD654 == code || // Lo HANGUL SYLLABLE HWA\r\n\t\t0xD670 == code || // Lo HANGUL SYLLABLE HWAE\r\n\t\t0xD68C == code || // Lo HANGUL SYLLABLE HOE\r\n\t\t0xD6A8 == code || // Lo HANGUL SYLLABLE HYO\r\n\t\t0xD6C4 == code || // Lo HANGUL SYLLABLE HU\r\n\t\t0xD6E0 == code || // Lo HANGUL SYLLABLE HWEO\r\n\t\t0xD6FC == code || // Lo HANGUL SYLLABLE HWE\r\n\t\t0xD718 == code || // Lo HANGUL SYLLABLE HWI\r\n\t\t0xD734 == code || // Lo HANGUL SYLLABLE HYU\r\n\t\t0xD750 == code || // Lo HANGUL SYLLABLE HEU\r\n\t\t0xD76C == code || // Lo HANGUL SYLLABLE HYI\r\n\t\t0xD788 == code // Lo HANGUL SYLLABLE HI\r\n\t\t){\r\n\t\t\treturn LV;\r\n\t\t}\r\n\t\t\r\n\t\tif(\r\n\t\t(0xAC01 <= code && code <= 0xAC1B) || // Lo [27] HANGUL SYLLABLE GAG..HANGUL SYLLABLE GAH\r\n\t\t(0xAC1D <= code && code <= 0xAC37) || // Lo [27] HANGUL SYLLABLE GAEG..HANGUL SYLLABLE GAEH\r\n\t\t(0xAC39 <= code && code <= 0xAC53) || // Lo [27] HANGUL SYLLABLE GYAG..HANGUL SYLLABLE GYAH\r\n\t\t(0xAC55 <= code && code <= 0xAC6F) || // Lo [27] HANGUL SYLLABLE GYAEG..HANGUL SYLLABLE GYAEH\r\n\t\t(0xAC71 <= code && code <= 0xAC8B) || // Lo [27] HANGUL SYLLABLE GEOG..HANGUL SYLLABLE GEOH\r\n\t\t(0xAC8D <= code && code <= 0xACA7) || // Lo [27] HANGUL SYLLABLE GEG..HANGUL SYLLABLE GEH\r\n\t\t(0xACA9 <= code && code <= 0xACC3) || // Lo [27] HANGUL SYLLABLE GYEOG..HANGUL SYLLABLE GYEOH\r\n\t\t(0xACC5 <= code && code <= 0xACDF) || // Lo [27] HANGUL SYLLABLE GYEG..HANGUL SYLLABLE GYEH\r\n\t\t(0xACE1 <= code && code <= 0xACFB) || // Lo [27] HANGUL SYLLABLE GOG..HANGUL SYLLABLE GOH\r\n\t\t(0xACFD <= code && code <= 0xAD17) || // Lo [27] HANGUL SYLLABLE GWAG..HANGUL SYLLABLE GWAH\r\n\t\t(0xAD19 <= code && code <= 0xAD33) || // Lo [27] HANGUL SYLLABLE GWAEG..HANGUL SYLLABLE GWAEH\r\n\t\t(0xAD35 <= code && code <= 0xAD4F) || // Lo [27] HANGUL SYLLABLE GOEG..HANGUL SYLLABLE GOEH\r\n\t\t(0xAD51 <= code && code <= 0xAD6B) || // Lo [27] HANGUL SYLLABLE GYOG..HANGUL SYLLABLE GYOH\r\n\t\t(0xAD6D <= code && code <= 0xAD87) || // Lo [27] HANGUL SYLLABLE GUG..HANGUL SYLLABLE GUH\r\n\t\t(0xAD89 <= code && code <= 0xADA3) || // Lo [27] HANGUL SYLLABLE GWEOG..HANGUL SYLLABLE GWEOH\r\n\t\t(0xADA5 <= code && code <= 0xADBF) || // Lo [27] HANGUL SYLLABLE GWEG..HANGUL SYLLABLE GWEH\r\n\t\t(0xADC1 <= code && code <= 0xADDB) || // Lo [27] HANGUL SYLLABLE GWIG..HANGUL SYLLABLE GWIH\r\n\t\t(0xADDD <= code && code <= 0xADF7) || // Lo [27] HANGUL SYLLABLE GYUG..HANGUL SYLLABLE GYUH\r\n\t\t(0xADF9 <= code && code <= 0xAE13) || // Lo [27] HANGUL SYLLABLE GEUG..HANGUL SYLLABLE GEUH\r\n\t\t(0xAE15 <= code && code <= 0xAE2F) || // Lo [27] HANGUL SYLLABLE GYIG..HANGUL SYLLABLE GYIH\r\n\t\t(0xAE31 <= code && code <= 0xAE4B) || // Lo [27] HANGUL SYLLABLE GIG..HANGUL SYLLABLE GIH\r\n\t\t(0xAE4D <= code && code <= 0xAE67) || // Lo [27] HANGUL SYLLABLE GGAG..HANGUL SYLLABLE GGAH\r\n\t\t(0xAE69 <= code && code <= 0xAE83) || // Lo [27] HANGUL SYLLABLE GGAEG..HANGUL SYLLABLE GGAEH\r\n\t\t(0xAE85 <= code && code <= 0xAE9F) || // Lo [27] HANGUL SYLLABLE GGYAG..HANGUL SYLLABLE GGYAH\r\n\t\t(0xAEA1 <= code && code <= 0xAEBB) || // Lo [27] HANGUL SYLLABLE GGYAEG..HANGUL SYLLABLE GGYAEH\r\n\t\t(0xAEBD <= code && code <= 0xAED7) || // Lo [27] HANGUL SYLLABLE GGEOG..HANGUL SYLLABLE GGEOH\r\n\t\t(0xAED9 <= code && code <= 0xAEF3) || // Lo [27] HANGUL SYLLABLE GGEG..HANGUL SYLLABLE GGEH\r\n\t\t(0xAEF5 <= code && code <= 0xAF0F) || // Lo [27] HANGUL SYLLABLE GGYEOG..HANGUL SYLLABLE GGYEOH\r\n\t\t(0xAF11 <= code && code <= 0xAF2B) || // Lo [27] HANGUL SYLLABLE GGYEG..HANGUL SYLLABLE GGYEH\r\n\t\t(0xAF2D <= code && code <= 0xAF47) || // Lo [27] HANGUL SYLLABLE GGOG..HANGUL SYLLABLE GGOH\r\n\t\t(0xAF49 <= code && code <= 0xAF63) || // Lo [27] HANGUL SYLLABLE GGWAG..HANGUL SYLLABLE GGWAH\r\n\t\t(0xAF65 <= code && code <= 0xAF7F) || // Lo [27] HANGUL SYLLABLE GGWAEG..HANGUL SYLLABLE GGWAEH\r\n\t\t(0xAF81 <= code && code <= 0xAF9B) || // Lo [27] HANGUL SYLLABLE GGOEG..HANGUL SYLLABLE GGOEH\r\n\t\t(0xAF9D <= code && code <= 0xAFB7) || // Lo [27] HANGUL SYLLABLE GGYOG..HANGUL SYLLABLE GGYOH\r\n\t\t(0xAFB9 <= code && code <= 0xAFD3) || // Lo [27] HANGUL SYLLABLE GGUG..HANGUL SYLLABLE GGUH\r\n\t\t(0xAFD5 <= code && code <= 0xAFEF) || // Lo [27] HANGUL SYLLABLE GGWEOG..HANGUL SYLLABLE GGWEOH\r\n\t\t(0xAFF1 <= code && code <= 0xB00B) || // Lo [27] HANGUL SYLLABLE GGWEG..HANGUL SYLLABLE GGWEH\r\n\t\t(0xB00D <= code && code <= 0xB027) || // Lo [27] HANGUL SYLLABLE GGWIG..HANGUL SYLLABLE GGWIH\r\n\t\t(0xB029 <= code && code <= 0xB043) || // Lo [27] HANGUL SYLLABLE GGYUG..HANGUL SYLLABLE GGYUH\r\n\t\t(0xB045 <= code && code <= 0xB05F) || // Lo [27] HANGUL SYLLABLE GGEUG..HANGUL SYLLABLE GGEUH\r\n\t\t(0xB061 <= code && code <= 0xB07B) || // Lo [27] HANGUL SYLLABLE GGYIG..HANGUL SYLLABLE GGYIH\r\n\t\t(0xB07D <= code && code <= 0xB097) || // Lo [27] HANGUL SYLLABLE GGIG..HANGUL SYLLABLE GGIH\r\n\t\t(0xB099 <= code && code <= 0xB0B3) || // Lo [27] HANGUL SYLLABLE NAG..HANGUL SYLLABLE NAH\r\n\t\t(0xB0B5 <= code && code <= 0xB0CF) || // Lo [27] HANGUL SYLLABLE NAEG..HANGUL SYLLABLE NAEH\r\n\t\t(0xB0D1 <= code && code <= 0xB0EB) || // Lo [27] HANGUL SYLLABLE NYAG..HANGUL SYLLABLE NYAH\r\n\t\t(0xB0ED <= code && code <= 0xB107) || // Lo [27] HANGUL SYLLABLE NYAEG..HANGUL SYLLABLE NYAEH\r\n\t\t(0xB109 <= code && code <= 0xB123) || // Lo [27] HANGUL SYLLABLE NEOG..HANGUL SYLLABLE NEOH\r\n\t\t(0xB125 <= code && code <= 0xB13F) || // Lo [27] HANGUL SYLLABLE NEG..HANGUL SYLLABLE NEH\r\n\t\t(0xB141 <= code && code <= 0xB15B) || // Lo [27] HANGUL SYLLABLE NYEOG..HANGUL SYLLABLE NYEOH\r\n\t\t(0xB15D <= code && code <= 0xB177) || // Lo [27] HANGUL SYLLABLE NYEG..HANGUL SYLLABLE NYEH\r\n\t\t(0xB179 <= code && code <= 0xB193) || // Lo [27] HANGUL SYLLABLE NOG..HANGUL SYLLABLE NOH\r\n\t\t(0xB195 <= code && code <= 0xB1AF) || // Lo [27] HANGUL SYLLABLE NWAG..HANGUL SYLLABLE NWAH\r\n\t\t(0xB1B1 <= code && code <= 0xB1CB) || // Lo [27] HANGUL SYLLABLE NWAEG..HANGUL SYLLABLE NWAEH\r\n\t\t(0xB1CD <= code && code <= 0xB1E7) || // Lo [27] HANGUL SYLLABLE NOEG..HANGUL SYLLABLE NOEH\r\n\t\t(0xB1E9 <= code && code <= 0xB203) || // Lo [27] HANGUL SYLLABLE NYOG..HANGUL SYLLABLE NYOH\r\n\t\t(0xB205 <= code && code <= 0xB21F) || // Lo [27] HANGUL SYLLABLE NUG..HANGUL SYLLABLE NUH\r\n\t\t(0xB221 <= code && code <= 0xB23B) || // Lo [27] HANGUL SYLLABLE NWEOG..HANGUL SYLLABLE NWEOH\r\n\t\t(0xB23D <= code && code <= 0xB257) || // Lo [27] HANGUL SYLLABLE NWEG..HANGUL SYLLABLE NWEH\r\n\t\t(0xB259 <= code && code <= 0xB273) || // Lo [27] HANGUL SYLLABLE NWIG..HANGUL SYLLABLE NWIH\r\n\t\t(0xB275 <= code && code <= 0xB28F) || // Lo [27] HANGUL SYLLABLE NYUG..HANGUL SYLLABLE NYUH\r\n\t\t(0xB291 <= code && code <= 0xB2AB) || // Lo [27] HANGUL SYLLABLE NEUG..HANGUL SYLLABLE NEUH\r\n\t\t(0xB2AD <= code && code <= 0xB2C7) || // Lo [27] HANGUL SYLLABLE NYIG..HANGUL SYLLABLE NYIH\r\n\t\t(0xB2C9 <= code && code <= 0xB2E3) || // Lo [27] HANGUL SYLLABLE NIG..HANGUL SYLLABLE NIH\r\n\t\t(0xB2E5 <= code && code <= 0xB2FF) || // Lo [27] HANGUL SYLLABLE DAG..HANGUL SYLLABLE DAH\r\n\t\t(0xB301 <= code && code <= 0xB31B) || // Lo [27] HANGUL SYLLABLE DAEG..HANGUL SYLLABLE DAEH\r\n\t\t(0xB31D <= code && code <= 0xB337) || // Lo [27] HANGUL SYLLABLE DYAG..HANGUL SYLLABLE DYAH\r\n\t\t(0xB339 <= code && code <= 0xB353) || // Lo [27] HANGUL SYLLABLE DYAEG..HANGUL SYLLABLE DYAEH\r\n\t\t(0xB355 <= code && code <= 0xB36F) || // Lo [27] HANGUL SYLLABLE DEOG..HANGUL SYLLABLE DEOH\r\n\t\t(0xB371 <= code && code <= 0xB38B) || // Lo [27] HANGUL SYLLABLE DEG..HANGUL SYLLABLE DEH\r\n\t\t(0xB38D <= code && code <= 0xB3A7) || // Lo [27] HANGUL SYLLABLE DYEOG..HANGUL SYLLABLE DYEOH\r\n\t\t(0xB3A9 <= code && code <= 0xB3C3) || // Lo [27] HANGUL SYLLABLE DYEG..HANGUL SYLLABLE DYEH\r\n\t\t(0xB3C5 <= code && code <= 0xB3DF) || // Lo [27] HANGUL SYLLABLE DOG..HANGUL SYLLABLE DOH\r\n\t\t(0xB3E1 <= code && code <= 0xB3FB) || // Lo [27] HANGUL SYLLABLE DWAG..HANGUL SYLLABLE DWAH\r\n\t\t(0xB3FD <= code && code <= 0xB417) || // Lo [27] HANGUL SYLLABLE DWAEG..HANGUL SYLLABLE DWAEH\r\n\t\t(0xB419 <= code && code <= 0xB433) || // Lo [27] HANGUL SYLLABLE DOEG..HANGUL SYLLABLE DOEH\r\n\t\t(0xB435 <= code && code <= 0xB44F) || // Lo [27] HANGUL SYLLABLE DYOG..HANGUL SYLLABLE DYOH\r\n\t\t(0xB451 <= code && code <= 0xB46B) || // Lo [27] HANGUL SYLLABLE DUG..HANGUL SYLLABLE DUH\r\n\t\t(0xB46D <= code && code <= 0xB487) || // Lo [27] HANGUL SYLLABLE DWEOG..HANGUL SYLLABLE DWEOH\r\n\t\t(0xB489 <= code && code <= 0xB4A3) || // Lo [27] HANGUL SYLLABLE DWEG..HANGUL SYLLABLE DWEH\r\n\t\t(0xB4A5 <= code && code <= 0xB4BF) || // Lo [27] HANGUL SYLLABLE DWIG..HANGUL SYLLABLE DWIH\r\n\t\t(0xB4C1 <= code && code <= 0xB4DB) || // Lo [27] HANGUL SYLLABLE DYUG..HANGUL SYLLABLE DYUH\r\n\t\t(0xB4DD <= code && code <= 0xB4F7) || // Lo [27] HANGUL SYLLABLE DEUG..HANGUL SYLLABLE DEUH\r\n\t\t(0xB4F9 <= code && code <= 0xB513) || // Lo [27] HANGUL SYLLABLE DYIG..HANGUL SYLLABLE DYIH\r\n\t\t(0xB515 <= code && code <= 0xB52F) || // Lo [27] HANGUL SYLLABLE DIG..HANGUL SYLLABLE DIH\r\n\t\t(0xB531 <= code && code <= 0xB54B) || // Lo [27] HANGUL SYLLABLE DDAG..HANGUL SYLLABLE DDAH\r\n\t\t(0xB54D <= code && code <= 0xB567) || // Lo [27] HANGUL SYLLABLE DDAEG..HANGUL SYLLABLE DDAEH\r\n\t\t(0xB569 <= code && code <= 0xB583) || // Lo [27] HANGUL SYLLABLE DDYAG..HANGUL SYLLABLE DDYAH\r\n\t\t(0xB585 <= code && code <= 0xB59F) || // Lo [27] HANGUL SYLLABLE DDYAEG..HANGUL SYLLABLE DDYAEH\r\n\t\t(0xB5A1 <= code && code <= 0xB5BB) || // Lo [27] HANGUL SYLLABLE DDEOG..HANGUL SYLLABLE DDEOH\r\n\t\t(0xB5BD <= code && code <= 0xB5D7) || // Lo [27] HANGUL SYLLABLE DDEG..HANGUL SYLLABLE DDEH\r\n\t\t(0xB5D9 <= code && code <= 0xB5F3) || // Lo [27] HANGUL SYLLABLE DDYEOG..HANGUL SYLLABLE DDYEOH\r\n\t\t(0xB5F5 <= code && code <= 0xB60F) || // Lo [27] HANGUL SYLLABLE DDYEG..HANGUL SYLLABLE DDYEH\r\n\t\t(0xB611 <= code && code <= 0xB62B) || // Lo [27] HANGUL SYLLABLE DDOG..HANGUL SYLLABLE DDOH\r\n\t\t(0xB62D <= code && code <= 0xB647) || // Lo [27] HANGUL SYLLABLE DDWAG..HANGUL SYLLABLE DDWAH\r\n\t\t(0xB649 <= code && code <= 0xB663) || // Lo [27] HANGUL SYLLABLE DDWAEG..HANGUL SYLLABLE DDWAEH\r\n\t\t(0xB665 <= code && code <= 0xB67F) || // Lo [27] HANGUL SYLLABLE DDOEG..HANGUL SYLLABLE DDOEH\r\n\t\t(0xB681 <= code && code <= 0xB69B) || // Lo [27] HANGUL SYLLABLE DDYOG..HANGUL SYLLABLE DDYOH\r\n\t\t(0xB69D <= code && code <= 0xB6B7) || // Lo [27] HANGUL SYLLABLE DDUG..HANGUL SYLLABLE DDUH\r\n\t\t(0xB6B9 <= code && code <= 0xB6D3) || // Lo [27] HANGUL SYLLABLE DDWEOG..HANGUL SYLLABLE DDWEOH\r\n\t\t(0xB6D5 <= code && code <= 0xB6EF) || // Lo [27] HANGUL SYLLABLE DDWEG..HANGUL SYLLABLE DDWEH\r\n\t\t(0xB6F1 <= code && code <= 0xB70B) || // Lo [27] HANGUL SYLLABLE DDWIG..HANGUL SYLLABLE DDWIH\r\n\t\t(0xB70D <= code && code <= 0xB727) || // Lo [27] HANGUL SYLLABLE DDYUG..HANGUL SYLLABLE DDYUH\r\n\t\t(0xB729 <= code && code <= 0xB743) || // Lo [27] HANGUL SYLLABLE DDEUG..HANGUL SYLLABLE DDEUH\r\n\t\t(0xB745 <= code && code <= 0xB75F) || // Lo [27] HANGUL SYLLABLE DDYIG..HANGUL SYLLABLE DDYIH\r\n\t\t(0xB761 <= code && code <= 0xB77B) || // Lo [27] HANGUL SYLLABLE DDIG..HANGUL SYLLABLE DDIH\r\n\t\t(0xB77D <= code && code <= 0xB797) || // Lo [27] HANGUL SYLLABLE RAG..HANGUL SYLLABLE RAH\r\n\t\t(0xB799 <= code && code <= 0xB7B3) || // Lo [27] HANGUL SYLLABLE RAEG..HANGUL SYLLABLE RAEH\r\n\t\t(0xB7B5 <= code && code <= 0xB7CF) || // Lo [27] HANGUL SYLLABLE RYAG..HANGUL SYLLABLE RYAH\r\n\t\t(0xB7D1 <= code && code <= 0xB7EB) || // Lo [27] HANGUL SYLLABLE RYAEG..HANGUL SYLLABLE RYAEH\r\n\t\t(0xB7ED <= code && code <= 0xB807) || // Lo [27] HANGUL SYLLABLE REOG..HANGUL SYLLABLE REOH\r\n\t\t(0xB809 <= code && code <= 0xB823) || // Lo [27] HANGUL SYLLABLE REG..HANGUL SYLLABLE REH\r\n\t\t(0xB825 <= code && code <= 0xB83F) || // Lo [27] HANGUL SYLLABLE RYEOG..HANGUL SYLLABLE RYEOH\r\n\t\t(0xB841 <= code && code <= 0xB85B) || // Lo [27] HANGUL SYLLABLE RYEG..HANGUL SYLLABLE RYEH\r\n\t\t(0xB85D <= code && code <= 0xB877) || // Lo [27] HANGUL SYLLABLE ROG..HANGUL SYLLABLE ROH\r\n\t\t(0xB879 <= code && code <= 0xB893) || // Lo [27] HANGUL SYLLABLE RWAG..HANGUL SYLLABLE RWAH\r\n\t\t(0xB895 <= code && code <= 0xB8AF) || // Lo [27] HANGUL SYLLABLE RWAEG..HANGUL SYLLABLE RWAEH\r\n\t\t(0xB8B1 <= code && code <= 0xB8CB) || // Lo [27] HANGUL SYLLABLE ROEG..HANGUL SYLLABLE ROEH\r\n\t\t(0xB8CD <= code && code <= 0xB8E7) || // Lo [27] HANGUL SYLLABLE RYOG..HANGUL SYLLABLE RYOH\r\n\t\t(0xB8E9 <= code && code <= 0xB903) || // Lo [27] HANGUL SYLLABLE RUG..HANGUL SYLLABLE RUH\r\n\t\t(0xB905 <= code && code <= 0xB91F) || // Lo [27] HANGUL SYLLABLE RWEOG..HANGUL SYLLABLE RWEOH\r\n\t\t(0xB921 <= code && code <= 0xB93B) || // Lo [27] HANGUL SYLLABLE RWEG..HANGUL SYLLABLE RWEH\r\n\t\t(0xB93D <= code && code <= 0xB957) || // Lo [27] HANGUL SYLLABLE RWIG..HANGUL SYLLABLE RWIH\r\n\t\t(0xB959 <= code && code <= 0xB973) || // Lo [27] HANGUL SYLLABLE RYUG..HANGUL SYLLABLE RYUH\r\n\t\t(0xB975 <= code && code <= 0xB98F) || // Lo [27] HANGUL SYLLABLE REUG..HANGUL SYLLABLE REUH\r\n\t\t(0xB991 <= code && code <= 0xB9AB) || // Lo [27] HANGUL SYLLABLE RYIG..HANGUL SYLLABLE RYIH\r\n\t\t(0xB9AD <= code && code <= 0xB9C7) || // Lo [27] HANGUL SYLLABLE RIG..HANGUL SYLLABLE RIH\r\n\t\t(0xB9C9 <= code && code <= 0xB9E3) || // Lo [27] HANGUL SYLLABLE MAG..HANGUL SYLLABLE MAH\r\n\t\t(0xB9E5 <= code && code <= 0xB9FF) || // Lo [27] HANGUL SYLLABLE MAEG..HANGUL SYLLABLE MAEH\r\n\t\t(0xBA01 <= code && code <= 0xBA1B) || // Lo [27] HANGUL SYLLABLE MYAG..HANGUL SYLLABLE MYAH\r\n\t\t(0xBA1D <= code && code <= 0xBA37) || // Lo [27] HANGUL SYLLABLE MYAEG..HANGUL SYLLABLE MYAEH\r\n\t\t(0xBA39 <= code && code <= 0xBA53) || // Lo [27] HANGUL SYLLABLE MEOG..HANGUL SYLLABLE MEOH\r\n\t\t(0xBA55 <= code && code <= 0xBA6F) || // Lo [27] HANGUL SYLLABLE MEG..HANGUL SYLLABLE MEH\r\n\t\t(0xBA71 <= code && code <= 0xBA8B) || // Lo [27] HANGUL SYLLABLE MYEOG..HANGUL SYLLABLE MYEOH\r\n\t\t(0xBA8D <= code && code <= 0xBAA7) || // Lo [27] HANGUL SYLLABLE MYEG..HANGUL SYLLABLE MYEH\r\n\t\t(0xBAA9 <= code && code <= 0xBAC3) || // Lo [27] HANGUL SYLLABLE MOG..HANGUL SYLLABLE MOH\r\n\t\t(0xBAC5 <= code && code <= 0xBADF) || // Lo [27] HANGUL SYLLABLE MWAG..HANGUL SYLLABLE MWAH\r\n\t\t(0xBAE1 <= code && code <= 0xBAFB) || // Lo [27] HANGUL SYLLABLE MWAEG..HANGUL SYLLABLE MWAEH\r\n\t\t(0xBAFD <= code && code <= 0xBB17) || // Lo [27] HANGUL SYLLABLE MOEG..HANGUL SYLLABLE MOEH\r\n\t\t(0xBB19 <= code && code <= 0xBB33) || // Lo [27] HANGUL SYLLABLE MYOG..HANGUL SYLLABLE MYOH\r\n\t\t(0xBB35 <= code && code <= 0xBB4F) || // Lo [27] HANGUL SYLLABLE MUG..HANGUL SYLLABLE MUH\r\n\t\t(0xBB51 <= code && code <= 0xBB6B) || // Lo [27] HANGUL SYLLABLE MWEOG..HANGUL SYLLABLE MWEOH\r\n\t\t(0xBB6D <= code && code <= 0xBB87) || // Lo [27] HANGUL SYLLABLE MWEG..HANGUL SYLLABLE MWEH\r\n\t\t(0xBB89 <= code && code <= 0xBBA3) || // Lo [27] HANGUL SYLLABLE MWIG..HANGUL SYLLABLE MWIH\r\n\t\t(0xBBA5 <= code && code <= 0xBBBF) || // Lo [27] HANGUL SYLLABLE MYUG..HANGUL SYLLABLE MYUH\r\n\t\t(0xBBC1 <= code && code <= 0xBBDB) || // Lo [27] HANGUL SYLLABLE MEUG..HANGUL SYLLABLE MEUH\r\n\t\t(0xBBDD <= code && code <= 0xBBF7) || // Lo [27] HANGUL SYLLABLE MYIG..HANGUL SYLLABLE MYIH\r\n\t\t(0xBBF9 <= code && code <= 0xBC13) || // Lo [27] HANGUL SYLLABLE MIG..HANGUL SYLLABLE MIH\r\n\t\t(0xBC15 <= code && code <= 0xBC2F) || // Lo [27] HANGUL SYLLABLE BAG..HANGUL SYLLABLE BAH\r\n\t\t(0xBC31 <= code && code <= 0xBC4B) || // Lo [27] HANGUL SYLLABLE BAEG..HANGUL SYLLABLE BAEH\r\n\t\t(0xBC4D <= code && code <= 0xBC67) || // Lo [27] HANGUL SYLLABLE BYAG..HANGUL SYLLABLE BYAH\r\n\t\t(0xBC69 <= code && code <= 0xBC83) || // Lo [27] HANGUL SYLLABLE BYAEG..HANGUL SYLLABLE BYAEH\r\n\t\t(0xBC85 <= code && code <= 0xBC9F) || // Lo [27] HANGUL SYLLABLE BEOG..HANGUL SYLLABLE BEOH\r\n\t\t(0xBCA1 <= code && code <= 0xBCBB) || // Lo [27] HANGUL SYLLABLE BEG..HANGUL SYLLABLE BEH\r\n\t\t(0xBCBD <= code && code <= 0xBCD7) || // Lo [27] HANGUL SYLLABLE BYEOG..HANGUL SYLLABLE BYEOH\r\n\t\t(0xBCD9 <= code && code <= 0xBCF3) || // Lo [27] HANGUL SYLLABLE BYEG..HANGUL SYLLABLE BYEH\r\n\t\t(0xBCF5 <= code && code <= 0xBD0F) || // Lo [27] HANGUL SYLLABLE BOG..HANGUL SYLLABLE BOH\r\n\t\t(0xBD11 <= code && code <= 0xBD2B) || // Lo [27] HANGUL SYLLABLE BWAG..HANGUL SYLLABLE BWAH\r\n\t\t(0xBD2D <= code && code <= 0xBD47) || // Lo [27] HANGUL SYLLABLE BWAEG..HANGUL SYLLABLE BWAEH\r\n\t\t(0xBD49 <= code && code <= 0xBD63) || // Lo [27] HANGUL SYLLABLE BOEG..HANGUL SYLLABLE BOEH\r\n\t\t(0xBD65 <= code && code <= 0xBD7F) || // Lo [27] HANGUL SYLLABLE BYOG..HANGUL SYLLABLE BYOH\r\n\t\t(0xBD81 <= code && code <= 0xBD9B) || // Lo [27] HANGUL SYLLABLE BUG..HANGUL SYLLABLE BUH\r\n\t\t(0xBD9D <= code && code <= 0xBDB7) || // Lo [27] HANGUL SYLLABLE BWEOG..HANGUL SYLLABLE BWEOH\r\n\t\t(0xBDB9 <= code && code <= 0xBDD3) || // Lo [27] HANGUL SYLLABLE BWEG..HANGUL SYLLABLE BWEH\r\n\t\t(0xBDD5 <= code && code <= 0xBDEF) || // Lo [27] HANGUL SYLLABLE BWIG..HANGUL SYLLABLE BWIH\r\n\t\t(0xBDF1 <= code && code <= 0xBE0B) || // Lo [27] HANGUL SYLLABLE BYUG..HANGUL SYLLABLE BYUH\r\n\t\t(0xBE0D <= code && code <= 0xBE27) || // Lo [27] HANGUL SYLLABLE BEUG..HANGUL SYLLABLE BEUH\r\n\t\t(0xBE29 <= code && code <= 0xBE43) || // Lo [27] HANGUL SYLLABLE BYIG..HANGUL SYLLABLE BYIH\r\n\t\t(0xBE45 <= code && code <= 0xBE5F) || // Lo [27] HANGUL SYLLABLE BIG..HANGUL SYLLABLE BIH\r\n\t\t(0xBE61 <= code && code <= 0xBE7B) || // Lo [27] HANGUL SYLLABLE BBAG..HANGUL SYLLABLE BBAH\r\n\t\t(0xBE7D <= code && code <= 0xBE97) || // Lo [27] HANGUL SYLLABLE BBAEG..HANGUL SYLLABLE BBAEH\r\n\t\t(0xBE99 <= code && code <= 0xBEB3) || // Lo [27] HANGUL SYLLABLE BBYAG..HANGUL SYLLABLE BBYAH\r\n\t\t(0xBEB5 <= code && code <= 0xBECF) || // Lo [27] HANGUL SYLLABLE BBYAEG..HANGUL SYLLABLE BBYAEH\r\n\t\t(0xBED1 <= code && code <= 0xBEEB) || // Lo [27] HANGUL SYLLABLE BBEOG..HANGUL SYLLABLE BBEOH\r\n\t\t(0xBEED <= code && code <= 0xBF07) || // Lo [27] HANGUL SYLLABLE BBEG..HANGUL SYLLABLE BBEH\r\n\t\t(0xBF09 <= code && code <= 0xBF23) || // Lo [27] HANGUL SYLLABLE BBYEOG..HANGUL SYLLABLE BBYEOH\r\n\t\t(0xBF25 <= code && code <= 0xBF3F) || // Lo [27] HANGUL SYLLABLE BBYEG..HANGUL SYLLABLE BBYEH\r\n\t\t(0xBF41 <= code && code <= 0xBF5B) || // Lo [27] HANGUL SYLLABLE BBOG..HANGUL SYLLABLE BBOH\r\n\t\t(0xBF5D <= code && code <= 0xBF77) || // Lo [27] HANGUL SYLLABLE BBWAG..HANGUL SYLLABLE BBWAH\r\n\t\t(0xBF79 <= code && code <= 0xBF93) || // Lo [27] HANGUL SYLLABLE BBWAEG..HANGUL SYLLABLE BBWAEH\r\n\t\t(0xBF95 <= code && code <= 0xBFAF) || // Lo [27] HANGUL SYLLABLE BBOEG..HANGUL SYLLABLE BBOEH\r\n\t\t(0xBFB1 <= code && code <= 0xBFCB) || // Lo [27] HANGUL SYLLABLE BBYOG..HANGUL SYLLABLE BBYOH\r\n\t\t(0xBFCD <= code && code <= 0xBFE7) || // Lo [27] HANGUL SYLLABLE BBUG..HANGUL SYLLABLE BBUH\r\n\t\t(0xBFE9 <= code && code <= 0xC003) || // Lo [27] HANGUL SYLLABLE BBWEOG..HANGUL SYLLABLE BBWEOH\r\n\t\t(0xC005 <= code && code <= 0xC01F) || // Lo [27] HANGUL SYLLABLE BBWEG..HANGUL SYLLABLE BBWEH\r\n\t\t(0xC021 <= code && code <= 0xC03B) || // Lo [27] HANGUL SYLLABLE BBWIG..HANGUL SYLLABLE BBWIH\r\n\t\t(0xC03D <= code && code <= 0xC057) || // Lo [27] HANGUL SYLLABLE BBYUG..HANGUL SYLLABLE BBYUH\r\n\t\t(0xC059 <= code && code <= 0xC073) || // Lo [27] HANGUL SYLLABLE BBEUG..HANGUL SYLLABLE BBEUH\r\n\t\t(0xC075 <= code && code <= 0xC08F) || // Lo [27] HANGUL SYLLABLE BBYIG..HANGUL SYLLABLE BBYIH\r\n\t\t(0xC091 <= code && code <= 0xC0AB) || // Lo [27] HANGUL SYLLABLE BBIG..HANGUL SYLLABLE BBIH\r\n\t\t(0xC0AD <= code && code <= 0xC0C7) || // Lo [27] HANGUL SYLLABLE SAG..HANGUL SYLLABLE SAH\r\n\t\t(0xC0C9 <= code && code <= 0xC0E3) || // Lo [27] HANGUL SYLLABLE SAEG..HANGUL SYLLABLE SAEH\r\n\t\t(0xC0E5 <= code && code <= 0xC0FF) || // Lo [27] HANGUL SYLLABLE SYAG..HANGUL SYLLABLE SYAH\r\n\t\t(0xC101 <= code && code <= 0xC11B) || // Lo [27] HANGUL SYLLABLE SYAEG..HANGUL SYLLABLE SYAEH\r\n\t\t(0xC11D <= code && code <= 0xC137) || // Lo [27] HANGUL SYLLABLE SEOG..HANGUL SYLLABLE SEOH\r\n\t\t(0xC139 <= code && code <= 0xC153) || // Lo [27] HANGUL SYLLABLE SEG..HANGUL SYLLABLE SEH\r\n\t\t(0xC155 <= code && code <= 0xC16F) || // Lo [27] HANGUL SYLLABLE SYEOG..HANGUL SYLLABLE SYEOH\r\n\t\t(0xC171 <= code && code <= 0xC18B) || // Lo [27] HANGUL SYLLABLE SYEG..HANGUL SYLLABLE SYEH\r\n\t\t(0xC18D <= code && code <= 0xC1A7) || // Lo [27] HANGUL SYLLABLE SOG..HANGUL SYLLABLE SOH\r\n\t\t(0xC1A9 <= code && code <= 0xC1C3) || // Lo [27] HANGUL SYLLABLE SWAG..HANGUL SYLLABLE SWAH\r\n\t\t(0xC1C5 <= code && code <= 0xC1DF) || // Lo [27] HANGUL SYLLABLE SWAEG..HANGUL SYLLABLE SWAEH\r\n\t\t(0xC1E1 <= code && code <= 0xC1FB) || // Lo [27] HANGUL SYLLABLE SOEG..HANGUL SYLLABLE SOEH\r\n\t\t(0xC1FD <= code && code <= 0xC217) || // Lo [27] HANGUL SYLLABLE SYOG..HANGUL SYLLABLE SYOH\r\n\t\t(0xC219 <= code && code <= 0xC233) || // Lo [27] HANGUL SYLLABLE SUG..HANGUL SYLLABLE SUH\r\n\t\t(0xC235 <= code && code <= 0xC24F) || // Lo [27] HANGUL SYLLABLE SWEOG..HANGUL SYLLABLE SWEOH\r\n\t\t(0xC251 <= code && code <= 0xC26B) || // Lo [27] HANGUL SYLLABLE SWEG..HANGUL SYLLABLE SWEH\r\n\t\t(0xC26D <= code && code <= 0xC287) || // Lo [27] HANGUL SYLLABLE SWIG..HANGUL SYLLABLE SWIH\r\n\t\t(0xC289 <= code && code <= 0xC2A3) || // Lo [27] HANGUL SYLLABLE SYUG..HANGUL SYLLABLE SYUH\r\n\t\t(0xC2A5 <= code && code <= 0xC2BF) || // Lo [27] HANGUL SYLLABLE SEUG..HANGUL SYLLABLE SEUH\r\n\t\t(0xC2C1 <= code && code <= 0xC2DB) || // Lo [27] HANGUL SYLLABLE SYIG..HANGUL SYLLABLE SYIH\r\n\t\t(0xC2DD <= code && code <= 0xC2F7) || // Lo [27] HANGUL SYLLABLE SIG..HANGUL SYLLABLE SIH\r\n\t\t(0xC2F9 <= code && code <= 0xC313) || // Lo [27] HANGUL SYLLABLE SSAG..HANGUL SYLLABLE SSAH\r\n\t\t(0xC315 <= code && code <= 0xC32F) || // Lo [27] HANGUL SYLLABLE SSAEG..HANGUL SYLLABLE SSAEH\r\n\t\t(0xC331 <= code && code <= 0xC34B) || // Lo [27] HANGUL SYLLABLE SSYAG..HANGUL SYLLABLE SSYAH\r\n\t\t(0xC34D <= code && code <= 0xC367) || // Lo [27] HANGUL SYLLABLE SSYAEG..HANGUL SYLLABLE SSYAEH\r\n\t\t(0xC369 <= code && code <= 0xC383) || // Lo [27] HANGUL SYLLABLE SSEOG..HANGUL SYLLABLE SSEOH\r\n\t\t(0xC385 <= code && code <= 0xC39F) || // Lo [27] HANGUL SYLLABLE SSEG..HANGUL SYLLABLE SSEH\r\n\t\t(0xC3A1 <= code && code <= 0xC3BB) || // Lo [27] HANGUL SYLLABLE SSYEOG..HANGUL SYLLABLE SSYEOH\r\n\t\t(0xC3BD <= code && code <= 0xC3D7) || // Lo [27] HANGUL SYLLABLE SSYEG..HANGUL SYLLABLE SSYEH\r\n\t\t(0xC3D9 <= code && code <= 0xC3F3) || // Lo [27] HANGUL SYLLABLE SSOG..HANGUL SYLLABLE SSOH\r\n\t\t(0xC3F5 <= code && code <= 0xC40F) || // Lo [27] HANGUL SYLLABLE SSWAG..HANGUL SYLLABLE SSWAH\r\n\t\t(0xC411 <= code && code <= 0xC42B) || // Lo [27] HANGUL SYLLABLE SSWAEG..HANGUL SYLLABLE SSWAEH\r\n\t\t(0xC42D <= code && code <= 0xC447) || // Lo [27] HANGUL SYLLABLE SSOEG..HANGUL SYLLABLE SSOEH\r\n\t\t(0xC449 <= code && code <= 0xC463) || // Lo [27] HANGUL SYLLABLE SSYOG..HANGUL SYLLABLE SSYOH\r\n\t\t(0xC465 <= code && code <= 0xC47F) || // Lo [27] HANGUL SYLLABLE SSUG..HANGUL SYLLABLE SSUH\r\n\t\t(0xC481 <= code && code <= 0xC49B) || // Lo [27] HANGUL SYLLABLE SSWEOG..HANGUL SYLLABLE SSWEOH\r\n\t\t(0xC49D <= code && code <= 0xC4B7) || // Lo [27] HANGUL SYLLABLE SSWEG..HANGUL SYLLABLE SSWEH\r\n\t\t(0xC4B9 <= code && code <= 0xC4D3) || // Lo [27] HANGUL SYLLABLE SSWIG..HANGUL SYLLABLE SSWIH\r\n\t\t(0xC4D5 <= code && code <= 0xC4EF) || // Lo [27] HANGUL SYLLABLE SSYUG..HANGUL SYLLABLE SSYUH\r\n\t\t(0xC4F1 <= code && code <= 0xC50B) || // Lo [27] HANGUL SYLLABLE SSEUG..HANGUL SYLLABLE SSEUH\r\n\t\t(0xC50D <= code && code <= 0xC527) || // Lo [27] HANGUL SYLLABLE SSYIG..HANGUL SYLLABLE SSYIH\r\n\t\t(0xC529 <= code && code <= 0xC543) || // Lo [27] HANGUL SYLLABLE SSIG..HANGUL SYLLABLE SSIH\r\n\t\t(0xC545 <= code && code <= 0xC55F) || // Lo [27] HANGUL SYLLABLE AG..HANGUL SYLLABLE AH\r\n\t\t(0xC561 <= code && code <= 0xC57B) || // Lo [27] HANGUL SYLLABLE AEG..HANGUL SYLLABLE AEH\r\n\t\t(0xC57D <= code && code <= 0xC597) || // Lo [27] HANGUL SYLLABLE YAG..HANGUL SYLLABLE YAH\r\n\t\t(0xC599 <= code && code <= 0xC5B3) || // Lo [27] HANGUL SYLLABLE YAEG..HANGUL SYLLABLE YAEH\r\n\t\t(0xC5B5 <= code && code <= 0xC5CF) || // Lo [27] HANGUL SYLLABLE EOG..HANGUL SYLLABLE EOH\r\n\t\t(0xC5D1 <= code && code <= 0xC5EB) || // Lo [27] HANGUL SYLLABLE EG..HANGUL SYLLABLE EH\r\n\t\t(0xC5ED <= code && code <= 0xC607) || // Lo [27] HANGUL SYLLABLE YEOG..HANGUL SYLLABLE YEOH\r\n\t\t(0xC609 <= code && code <= 0xC623) || // Lo [27] HANGUL SYLLABLE YEG..HANGUL SYLLABLE YEH\r\n\t\t(0xC625 <= code && code <= 0xC63F) || // Lo [27] HANGUL SYLLABLE OG..HANGUL SYLLABLE OH\r\n\t\t(0xC641 <= code && code <= 0xC65B) || // Lo [27] HANGUL SYLLABLE WAG..HANGUL SYLLABLE WAH\r\n\t\t(0xC65D <= code && code <= 0xC677) || // Lo [27] HANGUL SYLLABLE WAEG..HANGUL SYLLABLE WAEH\r\n\t\t(0xC679 <= code && code <= 0xC693) || // Lo [27] HANGUL SYLLABLE OEG..HANGUL SYLLABLE OEH\r\n\t\t(0xC695 <= code && code <= 0xC6AF) || // Lo [27] HANGUL SYLLABLE YOG..HANGUL SYLLABLE YOH\r\n\t\t(0xC6B1 <= code && code <= 0xC6CB) || // Lo [27] HANGUL SYLLABLE UG..HANGUL SYLLABLE UH\r\n\t\t(0xC6CD <= code && code <= 0xC6E7) || // Lo [27] HANGUL SYLLABLE WEOG..HANGUL SYLLABLE WEOH\r\n\t\t(0xC6E9 <= code && code <= 0xC703) || // Lo [27] HANGUL SYLLABLE WEG..HANGUL SYLLABLE WEH\r\n\t\t(0xC705 <= code && code <= 0xC71F) || // Lo [27] HANGUL SYLLABLE WIG..HANGUL SYLLABLE WIH\r\n\t\t(0xC721 <= code && code <= 0xC73B) || // Lo [27] HANGUL SYLLABLE YUG..HANGUL SYLLABLE YUH\r\n\t\t(0xC73D <= code && code <= 0xC757) || // Lo [27] HANGUL SYLLABLE EUG..HANGUL SYLLABLE EUH\r\n\t\t(0xC759 <= code && code <= 0xC773) || // Lo [27] HANGUL SYLLABLE YIG..HANGUL SYLLABLE YIH\r\n\t\t(0xC775 <= code && code <= 0xC78F) || // Lo [27] HANGUL SYLLABLE IG..HANGUL SYLLABLE IH\r\n\t\t(0xC791 <= code && code <= 0xC7AB) || // Lo [27] HANGUL SYLLABLE JAG..HANGUL SYLLABLE JAH\r\n\t\t(0xC7AD <= code && code <= 0xC7C7) || // Lo [27] HANGUL SYLLABLE JAEG..HANGUL SYLLABLE JAEH\r\n\t\t(0xC7C9 <= code && code <= 0xC7E3) || // Lo [27] HANGUL SYLLABLE JYAG..HANGUL SYLLABLE JYAH\r\n\t\t(0xC7E5 <= code && code <= 0xC7FF) || // Lo [27] HANGUL SYLLABLE JYAEG..HANGUL SYLLABLE JYAEH\r\n\t\t(0xC801 <= code && code <= 0xC81B) || // Lo [27] HANGUL SYLLABLE JEOG..HANGUL SYLLABLE JEOH\r\n\t\t(0xC81D <= code && code <= 0xC837) || // Lo [27] HANGUL SYLLABLE JEG..HANGUL SYLLABLE JEH\r\n\t\t(0xC839 <= code && code <= 0xC853) || // Lo [27] HANGUL SYLLABLE JYEOG..HANGUL SYLLABLE JYEOH\r\n\t\t(0xC855 <= code && code <= 0xC86F) || // Lo [27] HANGUL SYLLABLE JYEG..HANGUL SYLLABLE JYEH\r\n\t\t(0xC871 <= code && code <= 0xC88B) || // Lo [27] HANGUL SYLLABLE JOG..HANGUL SYLLABLE JOH\r\n\t\t(0xC88D <= code && code <= 0xC8A7) || // Lo [27] HANGUL SYLLABLE JWAG..HANGUL SYLLABLE JWAH\r\n\t\t(0xC8A9 <= code && code <= 0xC8C3) || // Lo [27] HANGUL SYLLABLE JWAEG..HANGUL SYLLABLE JWAEH\r\n\t\t(0xC8C5 <= code && code <= 0xC8DF) || // Lo [27] HANGUL SYLLABLE JOEG..HANGUL SYLLABLE JOEH\r\n\t\t(0xC8E1 <= code && code <= 0xC8FB) || // Lo [27] HANGUL SYLLABLE JYOG..HANGUL SYLLABLE JYOH\r\n\t\t(0xC8FD <= code && code <= 0xC917) || // Lo [27] HANGUL SYLLABLE JUG..HANGUL SYLLABLE JUH\r\n\t\t(0xC919 <= code && code <= 0xC933) || // Lo [27] HANGUL SYLLABLE JWEOG..HANGUL SYLLABLE JWEOH\r\n\t\t(0xC935 <= code && code <= 0xC94F) || // Lo [27] HANGUL SYLLABLE JWEG..HANGUL SYLLABLE JWEH\r\n\t\t(0xC951 <= code && code <= 0xC96B) || // Lo [27] HANGUL SYLLABLE JWIG..HANGUL SYLLABLE JWIH\r\n\t\t(0xC96D <= code && code <= 0xC987) || // Lo [27] HANGUL SYLLABLE JYUG..HANGUL SYLLABLE JYUH\r\n\t\t(0xC989 <= code && code <= 0xC9A3) || // Lo [27] HANGUL SYLLABLE JEUG..HANGUL SYLLABLE JEUH\r\n\t\t(0xC9A5 <= code && code <= 0xC9BF) || // Lo [27] HANGUL SYLLABLE JYIG..HANGUL SYLLABLE JYIH\r\n\t\t(0xC9C1 <= code && code <= 0xC9DB) || // Lo [27] HANGUL SYLLABLE JIG..HANGUL SYLLABLE JIH\r\n\t\t(0xC9DD <= code && code <= 0xC9F7) || // Lo [27] HANGUL SYLLABLE JJAG..HANGUL SYLLABLE JJAH\r\n\t\t(0xC9F9 <= code && code <= 0xCA13) || // Lo [27] HANGUL SYLLABLE JJAEG..HANGUL SYLLABLE JJAEH\r\n\t\t(0xCA15 <= code && code <= 0xCA2F) || // Lo [27] HANGUL SYLLABLE JJYAG..HANGUL SYLLABLE JJYAH\r\n\t\t(0xCA31 <= code && code <= 0xCA4B) || // Lo [27] HANGUL SYLLABLE JJYAEG..HANGUL SYLLABLE JJYAEH\r\n\t\t(0xCA4D <= code && code <= 0xCA67) || // Lo [27] HANGUL SYLLABLE JJEOG..HANGUL SYLLABLE JJEOH\r\n\t\t(0xCA69 <= code && code <= 0xCA83) || // Lo [27] HANGUL SYLLABLE JJEG..HANGUL SYLLABLE JJEH\r\n\t\t(0xCA85 <= code && code <= 0xCA9F) || // Lo [27] HANGUL SYLLABLE JJYEOG..HANGUL SYLLABLE JJYEOH\r\n\t\t(0xCAA1 <= code && code <= 0xCABB) || // Lo [27] HANGUL SYLLABLE JJYEG..HANGUL SYLLABLE JJYEH\r\n\t\t(0xCABD <= code && code <= 0xCAD7) || // Lo [27] HANGUL SYLLABLE JJOG..HANGUL SYLLABLE JJOH\r\n\t\t(0xCAD9 <= code && code <= 0xCAF3) || // Lo [27] HANGUL SYLLABLE JJWAG..HANGUL SYLLABLE JJWAH\r\n\t\t(0xCAF5 <= code && code <= 0xCB0F) || // Lo [27] HANGUL SYLLABLE JJWAEG..HANGUL SYLLABLE JJWAEH\r\n\t\t(0xCB11 <= code && code <= 0xCB2B) || // Lo [27] HANGUL SYLLABLE JJOEG..HANGUL SYLLABLE JJOEH\r\n\t\t(0xCB2D <= code && code <= 0xCB47) || // Lo [27] HANGUL SYLLABLE JJYOG..HANGUL SYLLABLE JJYOH\r\n\t\t(0xCB49 <= code && code <= 0xCB63) || // Lo [27] HANGUL SYLLABLE JJUG..HANGUL SYLLABLE JJUH\r\n\t\t(0xCB65 <= code && code <= 0xCB7F) || // Lo [27] HANGUL SYLLABLE JJWEOG..HANGUL SYLLABLE JJWEOH\r\n\t\t(0xCB81 <= code && code <= 0xCB9B) || // Lo [27] HANGUL SYLLABLE JJWEG..HANGUL SYLLABLE JJWEH\r\n\t\t(0xCB9D <= code && code <= 0xCBB7) || // Lo [27] HANGUL SYLLABLE JJWIG..HANGUL SYLLABLE JJWIH\r\n\t\t(0xCBB9 <= code && code <= 0xCBD3) || // Lo [27] HANGUL SYLLABLE JJYUG..HANGUL SYLLABLE JJYUH\r\n\t\t(0xCBD5 <= code && code <= 0xCBEF) || // Lo [27] HANGUL SYLLABLE JJEUG..HANGUL SYLLABLE JJEUH\r\n\t\t(0xCBF1 <= code && code <= 0xCC0B) || // Lo [27] HANGUL SYLLABLE JJYIG..HANGUL SYLLABLE JJYIH\r\n\t\t(0xCC0D <= code && code <= 0xCC27) || // Lo [27] HANGUL SYLLABLE JJIG..HANGUL SYLLABLE JJIH\r\n\t\t(0xCC29 <= code && code <= 0xCC43) || // Lo [27] HANGUL SYLLABLE CAG..HANGUL SYLLABLE CAH\r\n\t\t(0xCC45 <= code && code <= 0xCC5F) || // Lo [27] HANGUL SYLLABLE CAEG..HANGUL SYLLABLE CAEH\r\n\t\t(0xCC61 <= code && code <= 0xCC7B) || // Lo [27] HANGUL SYLLABLE CYAG..HANGUL SYLLABLE CYAH\r\n\t\t(0xCC7D <= code && code <= 0xCC97) || // Lo [27] HANGUL SYLLABLE CYAEG..HANGUL SYLLABLE CYAEH\r\n\t\t(0xCC99 <= code && code <= 0xCCB3) || // Lo [27] HANGUL SYLLABLE CEOG..HANGUL SYLLABLE CEOH\r\n\t\t(0xCCB5 <= code && code <= 0xCCCF) || // Lo [27] HANGUL SYLLABLE CEG..HANGUL SYLLABLE CEH\r\n\t\t(0xCCD1 <= code && code <= 0xCCEB) || // Lo [27] HANGUL SYLLABLE CYEOG..HANGUL SYLLABLE CYEOH\r\n\t\t(0xCCED <= code && code <= 0xCD07) || // Lo [27] HANGUL SYLLABLE CYEG..HANGUL SYLLABLE CYEH\r\n\t\t(0xCD09 <= code && code <= 0xCD23) || // Lo [27] HANGUL SYLLABLE COG..HANGUL SYLLABLE COH\r\n\t\t(0xCD25 <= code && code <= 0xCD3F) || // Lo [27] HANGUL SYLLABLE CWAG..HANGUL SYLLABLE CWAH\r\n\t\t(0xCD41 <= code && code <= 0xCD5B) || // Lo [27] HANGUL SYLLABLE CWAEG..HANGUL SYLLABLE CWAEH\r\n\t\t(0xCD5D <= code && code <= 0xCD77) || // Lo [27] HANGUL SYLLABLE COEG..HANGUL SYLLABLE COEH\r\n\t\t(0xCD79 <= code && code <= 0xCD93) || // Lo [27] HANGUL SYLLABLE CYOG..HANGUL SYLLABLE CYOH\r\n\t\t(0xCD95 <= code && code <= 0xCDAF) || // Lo [27] HANGUL SYLLABLE CUG..HANGUL SYLLABLE CUH\r\n\t\t(0xCDB1 <= code && code <= 0xCDCB) || // Lo [27] HANGUL SYLLABLE CWEOG..HANGUL SYLLABLE CWEOH\r\n\t\t(0xCDCD <= code && code <= 0xCDE7) || // Lo [27] HANGUL SYLLABLE CWEG..HANGUL SYLLABLE CWEH\r\n\t\t(0xCDE9 <= code && code <= 0xCE03) || // Lo [27] HANGUL SYLLABLE CWIG..HANGUL SYLLABLE CWIH\r\n\t\t(0xCE05 <= code && code <= 0xCE1F) || // Lo [27] HANGUL SYLLABLE CYUG..HANGUL SYLLABLE CYUH\r\n\t\t(0xCE21 <= code && code <= 0xCE3B) || // Lo [27] HANGUL SYLLABLE CEUG..HANGUL SYLLABLE CEUH\r\n\t\t(0xCE3D <= code && code <= 0xCE57) || // Lo [27] HANGUL SYLLABLE CYIG..HANGUL SYLLABLE CYIH\r\n\t\t(0xCE59 <= code && code <= 0xCE73) || // Lo [27] HANGUL SYLLABLE CIG..HANGUL SYLLABLE CIH\r\n\t\t(0xCE75 <= code && code <= 0xCE8F) || // Lo [27] HANGUL SYLLABLE KAG..HANGUL SYLLABLE KAH\r\n\t\t(0xCE91 <= code && code <= 0xCEAB) || // Lo [27] HANGUL SYLLABLE KAEG..HANGUL SYLLABLE KAEH\r\n\t\t(0xCEAD <= code && code <= 0xCEC7) || // Lo [27] HANGUL SYLLABLE KYAG..HANGUL SYLLABLE KYAH\r\n\t\t(0xCEC9 <= code && code <= 0xCEE3) || // Lo [27] HANGUL SYLLABLE KYAEG..HANGUL SYLLABLE KYAEH\r\n\t\t(0xCEE5 <= code && code <= 0xCEFF) || // Lo [27] HANGUL SYLLABLE KEOG..HANGUL SYLLABLE KEOH\r\n\t\t(0xCF01 <= code && code <= 0xCF1B) || // Lo [27] HANGUL SYLLABLE KEG..HANGUL SYLLABLE KEH\r\n\t\t(0xCF1D <= code && code <= 0xCF37) || // Lo [27] HANGUL SYLLABLE KYEOG..HANGUL SYLLABLE KYEOH\r\n\t\t(0xCF39 <= code && code <= 0xCF53) || // Lo [27] HANGUL SYLLABLE KYEG..HANGUL SYLLABLE KYEH\r\n\t\t(0xCF55 <= code && code <= 0xCF6F) || // Lo [27] HANGUL SYLLABLE KOG..HANGUL SYLLABLE KOH\r\n\t\t(0xCF71 <= code && code <= 0xCF8B) || // Lo [27] HANGUL SYLLABLE KWAG..HANGUL SYLLABLE KWAH\r\n\t\t(0xCF8D <= code && code <= 0xCFA7) || // Lo [27] HANGUL SYLLABLE KWAEG..HANGUL SYLLABLE KWAEH\r\n\t\t(0xCFA9 <= code && code <= 0xCFC3) || // Lo [27] HANGUL SYLLABLE KOEG..HANGUL SYLLABLE KOEH\r\n\t\t(0xCFC5 <= code && code <= 0xCFDF) || // Lo [27] HANGUL SYLLABLE KYOG..HANGUL SYLLABLE KYOH\r\n\t\t(0xCFE1 <= code && code <= 0xCFFB) || // Lo [27] HANGUL SYLLABLE KUG..HANGUL SYLLABLE KUH\r\n\t\t(0xCFFD <= code && code <= 0xD017) || // Lo [27] HANGUL SYLLABLE KWEOG..HANGUL SYLLABLE KWEOH\r\n\t\t(0xD019 <= code && code <= 0xD033) || // Lo [27] HANGUL SYLLABLE KWEG..HANGUL SYLLABLE KWEH\r\n\t\t(0xD035 <= code && code <= 0xD04F) || // Lo [27] HANGUL SYLLABLE KWIG..HANGUL SYLLABLE KWIH\r\n\t\t(0xD051 <= code && code <= 0xD06B) || // Lo [27] HANGUL SYLLABLE KYUG..HANGUL SYLLABLE KYUH\r\n\t\t(0xD06D <= code && code <= 0xD087) || // Lo [27] HANGUL SYLLABLE KEUG..HANGUL SYLLABLE KEUH\r\n\t\t(0xD089 <= code && code <= 0xD0A3) || // Lo [27] HANGUL SYLLABLE KYIG..HANGUL SYLLABLE KYIH\r\n\t\t(0xD0A5 <= code && code <= 0xD0BF) || // Lo [27] HANGUL SYLLABLE KIG..HANGUL SYLLABLE KIH\r\n\t\t(0xD0C1 <= code && code <= 0xD0DB) || // Lo [27] HANGUL SYLLABLE TAG..HANGUL SYLLABLE TAH\r\n\t\t(0xD0DD <= code && code <= 0xD0F7) || // Lo [27] HANGUL SYLLABLE TAEG..HANGUL SYLLABLE TAEH\r\n\t\t(0xD0F9 <= code && code <= 0xD113) || // Lo [27] HANGUL SYLLABLE TYAG..HANGUL SYLLABLE TYAH\r\n\t\t(0xD115 <= code && code <= 0xD12F) || // Lo [27] HANGUL SYLLABLE TYAEG..HANGUL SYLLABLE TYAEH\r\n\t\t(0xD131 <= code && code <= 0xD14B) || // Lo [27] HANGUL SYLLABLE TEOG..HANGUL SYLLABLE TEOH\r\n\t\t(0xD14D <= code && code <= 0xD167) || // Lo [27] HANGUL SYLLABLE TEG..HANGUL SYLLABLE TEH\r\n\t\t(0xD169 <= code && code <= 0xD183) || // Lo [27] HANGUL SYLLABLE TYEOG..HANGUL SYLLABLE TYEOH\r\n\t\t(0xD185 <= code && code <= 0xD19F) || // Lo [27] HANGUL SYLLABLE TYEG..HANGUL SYLLABLE TYEH\r\n\t\t(0xD1A1 <= code && code <= 0xD1BB) || // Lo [27] HANGUL SYLLABLE TOG..HANGUL SYLLABLE TOH\r\n\t\t(0xD1BD <= code && code <= 0xD1D7) || // Lo [27] HANGUL SYLLABLE TWAG..HANGUL SYLLABLE TWAH\r\n\t\t(0xD1D9 <= code && code <= 0xD1F3) || // Lo [27] HANGUL SYLLABLE TWAEG..HANGUL SYLLABLE TWAEH\r\n\t\t(0xD1F5 <= code && code <= 0xD20F) || // Lo [27] HANGUL SYLLABLE TOEG..HANGUL SYLLABLE TOEH\r\n\t\t(0xD211 <= code && code <= 0xD22B) || // Lo [27] HANGUL SYLLABLE TYOG..HANGUL SYLLABLE TYOH\r\n\t\t(0xD22D <= code && code <= 0xD247) || // Lo [27] HANGUL SYLLABLE TUG..HANGUL SYLLABLE TUH\r\n\t\t(0xD249 <= code && code <= 0xD263) || // Lo [27] HANGUL SYLLABLE TWEOG..HANGUL SYLLABLE TWEOH\r\n\t\t(0xD265 <= code && code <= 0xD27F) || // Lo [27] HANGUL SYLLABLE TWEG..HANGUL SYLLABLE TWEH\r\n\t\t(0xD281 <= code && code <= 0xD29B) || // Lo [27] HANGUL SYLLABLE TWIG..HANGUL SYLLABLE TWIH\r\n\t\t(0xD29D <= code && code <= 0xD2B7) || // Lo [27] HANGUL SYLLABLE TYUG..HANGUL SYLLABLE TYUH\r\n\t\t(0xD2B9 <= code && code <= 0xD2D3) || // Lo [27] HANGUL SYLLABLE TEUG..HANGUL SYLLABLE TEUH\r\n\t\t(0xD2D5 <= code && code <= 0xD2EF) || // Lo [27] HANGUL SYLLABLE TYIG..HANGUL SYLLABLE TYIH\r\n\t\t(0xD2F1 <= code && code <= 0xD30B) || // Lo [27] HANGUL SYLLABLE TIG..HANGUL SYLLABLE TIH\r\n\t\t(0xD30D <= code && code <= 0xD327) || // Lo [27] HANGUL SYLLABLE PAG..HANGUL SYLLABLE PAH\r\n\t\t(0xD329 <= code && code <= 0xD343) || // Lo [27] HANGUL SYLLABLE PAEG..HANGUL SYLLABLE PAEH\r\n\t\t(0xD345 <= code && code <= 0xD35F) || // Lo [27] HANGUL SYLLABLE PYAG..HANGUL SYLLABLE PYAH\r\n\t\t(0xD361 <= code && code <= 0xD37B) || // Lo [27] HANGUL SYLLABLE PYAEG..HANGUL SYLLABLE PYAEH\r\n\t\t(0xD37D <= code && code <= 0xD397) || // Lo [27] HANGUL SYLLABLE PEOG..HANGUL SYLLABLE PEOH\r\n\t\t(0xD399 <= code && code <= 0xD3B3) || // Lo [27] HANGUL SYLLABLE PEG..HANGUL SYLLABLE PEH\r\n\t\t(0xD3B5 <= code && code <= 0xD3CF) || // Lo [27] HANGUL SYLLABLE PYEOG..HANGUL SYLLABLE PYEOH\r\n\t\t(0xD3D1 <= code && code <= 0xD3EB) || // Lo [27] HANGUL SYLLABLE PYEG..HANGUL SYLLABLE PYEH\r\n\t\t(0xD3ED <= code && code <= 0xD407) || // Lo [27] HANGUL SYLLABLE POG..HANGUL SYLLABLE POH\r\n\t\t(0xD409 <= code && code <= 0xD423) || // Lo [27] HANGUL SYLLABLE PWAG..HANGUL SYLLABLE PWAH\r\n\t\t(0xD425 <= code && code <= 0xD43F) || // Lo [27] HANGUL SYLLABLE PWAEG..HANGUL SYLLABLE PWAEH\r\n\t\t(0xD441 <= code && code <= 0xD45B) || // Lo [27] HANGUL SYLLABLE POEG..HANGUL SYLLABLE POEH\r\n\t\t(0xD45D <= code && code <= 0xD477) || // Lo [27] HANGUL SYLLABLE PYOG..HANGUL SYLLABLE PYOH\r\n\t\t(0xD479 <= code && code <= 0xD493) || // Lo [27] HANGUL SYLLABLE PUG..HANGUL SYLLABLE PUH\r\n\t\t(0xD495 <= code && code <= 0xD4AF) || // Lo [27] HANGUL SYLLABLE PWEOG..HANGUL SYLLABLE PWEOH\r\n\t\t(0xD4B1 <= code && code <= 0xD4CB) || // Lo [27] HANGUL SYLLABLE PWEG..HANGUL SYLLABLE PWEH\r\n\t\t(0xD4CD <= code && code <= 0xD4E7) || // Lo [27] HANGUL SYLLABLE PWIG..HANGUL SYLLABLE PWIH\r\n\t\t(0xD4E9 <= code && code <= 0xD503) || // Lo [27] HANGUL SYLLABLE PYUG..HANGUL SYLLABLE PYUH\r\n\t\t(0xD505 <= code && code <= 0xD51F) || // Lo [27] HANGUL SYLLABLE PEUG..HANGUL SYLLABLE PEUH\r\n\t\t(0xD521 <= code && code <= 0xD53B) || // Lo [27] HANGUL SYLLABLE PYIG..HANGUL SYLLABLE PYIH\r\n\t\t(0xD53D <= code && code <= 0xD557) || // Lo [27] HANGUL SYLLABLE PIG..HANGUL SYLLABLE PIH\r\n\t\t(0xD559 <= code && code <= 0xD573) || // Lo [27] HANGUL SYLLABLE HAG..HANGUL SYLLABLE HAH\r\n\t\t(0xD575 <= code && code <= 0xD58F) || // Lo [27] HANGUL SYLLABLE HAEG..HANGUL SYLLABLE HAEH\r\n\t\t(0xD591 <= code && code <= 0xD5AB) || // Lo [27] HANGUL SYLLABLE HYAG..HANGUL SYLLABLE HYAH\r\n\t\t(0xD5AD <= code && code <= 0xD5C7) || // Lo [27] HANGUL SYLLABLE HYAEG..HANGUL SYLLABLE HYAEH\r\n\t\t(0xD5C9 <= code && code <= 0xD5E3) || // Lo [27] HANGUL SYLLABLE HEOG..HANGUL SYLLABLE HEOH\r\n\t\t(0xD5E5 <= code && code <= 0xD5FF) || // Lo [27] HANGUL SYLLABLE HEG..HANGUL SYLLABLE HEH\r\n\t\t(0xD601 <= code && code <= 0xD61B) || // Lo [27] HANGUL SYLLABLE HYEOG..HANGUL SYLLABLE HYEOH\r\n\t\t(0xD61D <= code && code <= 0xD637) || // Lo [27] HANGUL SYLLABLE HYEG..HANGUL SYLLABLE HYEH\r\n\t\t(0xD639 <= code && code <= 0xD653) || // Lo [27] HANGUL SYLLABLE HOG..HANGUL SYLLABLE HOH\r\n\t\t(0xD655 <= code && code <= 0xD66F) || // Lo [27] HANGUL SYLLABLE HWAG..HANGUL SYLLABLE HWAH\r\n\t\t(0xD671 <= code && code <= 0xD68B) || // Lo [27] HANGUL SYLLABLE HWAEG..HANGUL SYLLABLE HWAEH\r\n\t\t(0xD68D <= code && code <= 0xD6A7) || // Lo [27] HANGUL SYLLABLE HOEG..HANGUL SYLLABLE HOEH\r\n\t\t(0xD6A9 <= code && code <= 0xD6C3) || // Lo [27] HANGUL SYLLABLE HYOG..HANGUL SYLLABLE HYOH\r\n\t\t(0xD6C5 <= code && code <= 0xD6DF) || // Lo [27] HANGUL SYLLABLE HUG..HANGUL SYLLABLE HUH\r\n\t\t(0xD6E1 <= code && code <= 0xD6FB) || // Lo [27] HANGUL SYLLABLE HWEOG..HANGUL SYLLABLE HWEOH\r\n\t\t(0xD6FD <= code && code <= 0xD717) || // Lo [27] HANGUL SYLLABLE HWEG..HANGUL SYLLABLE HWEH\r\n\t\t(0xD719 <= code && code <= 0xD733) || // Lo [27] HANGUL SYLLABLE HWIG..HANGUL SYLLABLE HWIH\r\n\t\t(0xD735 <= code && code <= 0xD74F) || // Lo [27] HANGUL SYLLABLE HYUG..HANGUL SYLLABLE HYUH\r\n\t\t(0xD751 <= code && code <= 0xD76B) || // Lo [27] HANGUL SYLLABLE HEUG..HANGUL SYLLABLE HEUH\r\n\t\t(0xD76D <= code && code <= 0xD787) || // Lo [27] HANGUL SYLLABLE HYIG..HANGUL SYLLABLE HYIH\r\n\t\t(0xD789 <= code && code <= 0xD7A3) // Lo [27] HANGUL SYLLABLE HIG..HANGUL SYLLABLE HIH\r\n\t\t){\r\n\t\t\treturn LVT;\r\n\t\t}\r\n\t\t\r\n\t\tif(\r\n\t\t0x261D == code || // So WHITE UP POINTING INDEX\r\n\t\t0x26F9 == code || // So PERSON WITH BALL\r\n\t\t(0x270A <= code && code <= 0x270D) || // So [4] RAISED FIST..WRITING HAND\r\n\t\t0x1F385 == code || // So FATHER CHRISTMAS\r\n\t\t(0x1F3C2 <= code && code <= 0x1F3C4) || // So [3] SNOWBOARDER..SURFER\r\n\t\t0x1F3C7 == code || // So HORSE RACING\r\n\t\t(0x1F3CA <= code && code <= 0x1F3CC) || // So [3] SWIMMER..GOLFER\r\n\t\t(0x1F442 <= code && code <= 0x1F443) || // So [2] EAR..NOSE\r\n\t\t(0x1F446 <= code && code <= 0x1F450) || // So [11] WHITE UP POINTING BACKHAND INDEX..OPEN HANDS SIGN\r\n\t\t0x1F46E == code || // So POLICE OFFICER\r\n\t\t(0x1F470 <= code && code <= 0x1F478) || // So [9] BRIDE WITH VEIL..PRINCESS\r\n\t\t0x1F47C == code || // So BABY ANGEL\r\n\t\t(0x1F481 <= code && code <= 0x1F483) || // So [3] INFORMATION DESK PERSON..DANCER\r\n\t\t(0x1F485 <= code && code <= 0x1F487) || // So [3] NAIL POLISH..HAIRCUT\r\n\t\t0x1F4AA == code || // So FLEXED BICEPS\r\n\t\t(0x1F574 <= code && code <= 0x1F575) || // So [2] MAN IN BUSINESS SUIT LEVITATING..SLEUTH OR SPY\r\n\t\t0x1F57A == code || // So MAN DANCING\r\n\t\t0x1F590 == code || // So RAISED HAND WITH FINGERS SPLAYED\r\n\t\t(0x1F595 <= code && code <= 0x1F596) || // So [2] REVERSED HAND WITH MIDDLE FINGER EXTENDED..RAISED HAND WITH PART BETWEEN MIDDLE AND RING FINGERS\r\n\t\t(0x1F645 <= code && code <= 0x1F647) || // So [3] FACE WITH NO GOOD GESTURE..PERSON BOWING DEEPLY\r\n\t\t(0x1F64B <= code && code <= 0x1F64F) || // So [5] HAPPY PERSON RAISING ONE HAND..PERSON WITH FOLDED HANDS\r\n\t\t0x1F6A3 == code || // So ROWBOAT\r\n\t\t(0x1F6B4 <= code && code <= 0x1F6B6) || // So [3] BICYCLIST..PEDESTRIAN\r\n\t\t0x1F6C0 == code || // So BATH\r\n\t\t0x1F6CC == code || // So SLEEPING ACCOMMODATION\r\n\t\t(0x1F918 <= code && code <= 0x1F91C) || // So [5] SIGN OF THE HORNS..RIGHT-FACING FIST\r\n\t\t(0x1F91E <= code && code <= 0x1F91F) || // So [2] HAND WITH INDEX AND MIDDLE FINGERS CROSSED..I LOVE YOU HAND SIGN\r\n\t\t0x1F926 == code || // So FACE PALM\r\n\t\t(0x1F930 <= code && code <= 0x1F939) || // So [10] PREGNANT WOMAN..JUGGLING\r\n\t\t(0x1F93D <= code && code <= 0x1F93E) || // So [2] WATER POLO..HANDBALL\r\n\t\t(0x1F9D1 <= code && code <= 0x1F9DD) // So [13] ADULT..ELF\r\n\t\t){\r\n\t\t\treturn E_Base;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t(0x1F3FB <= code && code <= 0x1F3FF) // Sk [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6\r\n\t\t){\r\n\t\t\treturn E_Modifier;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x200D == code // Cf ZERO WIDTH JOINER\r\n\t\t){\r\n\t\t\treturn ZWJ;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t0x2640 == code || // So FEMALE SIGN\r\n\t\t0x2642 == code || // So MALE SIGN\r\n\t\t(0x2695 <= code && code <= 0x2696) || // So [2] STAFF OF AESCULAPIUS..SCALES\r\n\t\t0x2708 == code || // So AIRPLANE\r\n\t\t0x2764 == code || // So HEAVY BLACK HEART\r\n\t\t0x1F308 == code || // So RAINBOW\r\n\t\t0x1F33E == code || // So EAR OF RICE\r\n\t\t0x1F373 == code || // So COOKING\r\n\t\t0x1F393 == code || // So GRADUATION CAP\r\n\t\t0x1F3A4 == code || // So MICROPHONE\r\n\t\t0x1F3A8 == code || // So ARTIST PALETTE\r\n\t\t0x1F3EB == code || // So SCHOOL\r\n\t\t0x1F3ED == code || // So FACTORY\r\n\t\t0x1F48B == code || // So KISS MARK\r\n\t\t(0x1F4BB <= code && code <= 0x1F4BC) || // So [2] PERSONAL COMPUTER..BRIEFCASE\r\n\t\t0x1F527 == code || // So WRENCH\r\n\t\t0x1F52C == code || // So MICROSCOPE\r\n\t\t0x1F5E8 == code || // So LEFT SPEECH BUBBLE\r\n\t\t0x1F680 == code || // So ROCKET\r\n\t\t0x1F692 == code // So FIRE ENGINE\r\n\t\t){\r\n\t\t\treturn Glue_After_Zwj;\r\n\t\t}\r\n\r\n\t\tif(\r\n\t\t(0x1F466 <= code && code <= 0x1F469) // So [4] BOY..WOMAN\r\n\t\t){\r\n\t\t\treturn E_Base_GAZ;\r\n\t\t}\r\n\t\t\r\n\t\t\r\n\t\t//all unlisted characters have a grapheme break property of \"Other\"\r\n\t\treturn Other;\r\n\t}\r\n\treturn this;\r\n}\r\n\r\nif (typeof module != 'undefined' && module.exports) {\r\n module.exports = GraphemeSplitter;\r\n}\r\n","'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n // Some magic numbers that worked out fine while benchmarking with v8 8.0\n if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n return `\"${str}\"`\n }\n return JSON.stringify(str)\n}\n\nfunction sort (array, comparator) {\n // Insertion sort is very efficient for small input sizes, but it has a bad\n // worst case complexity. Thus, use native array sort for bigger values.\n if (array.length > 2e2 || comparator) {\n return array.sort(comparator)\n }\n for (let i = 1; i < array.length; i++) {\n const currentValue = array[i]\n let position = i\n while (position !== 0 && array[position - 1] > currentValue) {\n array[position] = array[position - 1]\n position--\n }\n array[position] = currentValue\n }\n return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(\n Object.getPrototypeOf(\n new Int8Array()\n )\n ),\n Symbol.toStringTag\n ).get\n\nfunction isTypedArrayWithEntries (value) {\n return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n if (array.length < maximumBreadth) {\n maximumBreadth = array.length\n }\n const whitespace = separator === ',' ? '' : ' '\n let res = `\"0\":${whitespace}${array[0]}`\n for (let i = 1; i < maximumBreadth; i++) {\n res += `${separator}\"${i}\":${whitespace}${array[i]}`\n }\n return res\n}\n\nfunction getCircularValueOption (options) {\n if (hasOwnProperty.call(options, 'circularValue')) {\n const circularValue = options.circularValue\n if (typeof circularValue === 'string') {\n return `\"${circularValue}\"`\n }\n if (circularValue == null) {\n return circularValue\n }\n if (circularValue === Error || circularValue === TypeError) {\n return {\n toString () {\n throw new TypeError('Converting circular structure to JSON')\n }\n }\n }\n throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n }\n return '\"[Circular]\"'\n}\n\nfunction getDeterministicOption (options) {\n let value\n if (hasOwnProperty.call(options, 'deterministic')) {\n value = options.deterministic\n if (typeof value !== 'boolean' && typeof value !== 'function') {\n throw new TypeError('The \"deterministic\" argument must be of type boolean or comparator function')\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getBooleanOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'boolean') {\n throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n }\n }\n return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n let value\n if (hasOwnProperty.call(options, key)) {\n value = options[key]\n if (typeof value !== 'number') {\n throw new TypeError(`The \"${key}\" argument must be of type number`)\n }\n if (!Number.isInteger(value)) {\n throw new TypeError(`The \"${key}\" argument must be an integer`)\n }\n if (value < 1) {\n throw new RangeError(`The \"${key}\" argument must be >= 1`)\n }\n }\n return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n if (number === 1) {\n return '1 item'\n }\n return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n const replacerSet = new Set()\n for (const value of replacerArray) {\n if (typeof value === 'string' || typeof value === 'number') {\n replacerSet.add(String(value))\n }\n }\n return replacerSet\n}\n\nfunction getStrictOption (options) {\n if (hasOwnProperty.call(options, 'strict')) {\n const value = options.strict\n if (typeof value !== 'boolean') {\n throw new TypeError('The \"strict\" argument must be of type boolean')\n }\n if (value) {\n return (value) => {\n let message = `Object can not safely be stringified. Received type ${typeof value}`\n if (typeof value !== 'function') message += ` (${value.toString()})`\n throw new Error(message)\n }\n }\n }\n}\n\nfunction configure (options) {\n options = { ...options }\n const fail = getStrictOption(options)\n if (fail) {\n if (options.bigint === undefined) {\n options.bigint = false\n }\n if (!('circularValue' in options)) {\n options.circularValue = Error\n }\n }\n const circularValue = getCircularValueOption(options)\n const bigint = getBooleanOption(options, 'bigint')\n const deterministic = getDeterministicOption(options)\n const comparator = typeof deterministic === 'function' ? deterministic : undefined\n const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n let value = parent[key]\n\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n value = replacer.call(parent, key, value)\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n let join = ','\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let whitespace = ''\n let separator = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (deterministic && !isTypedArrayWithEntries(value)) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n }\n\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n const originalIndentation = indentation\n let res = ''\n let join = ','\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n if (spacer !== '') {\n indentation += spacer\n res += `\\n${indentation}`\n join = `,\\n${indentation}`\n }\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n if (spacer !== '') {\n res += `\\n${originalIndentation}`\n }\n stack.pop()\n return `[${res}]`\n }\n stack.push(value)\n let whitespace = ''\n if (spacer !== '') {\n indentation += spacer\n join = `,\\n${indentation}`\n whitespace = ' '\n }\n let separator = ''\n for (const key of replacer) {\n const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n separator = join\n }\n }\n if (spacer !== '' && separator.length > 1) {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifyIndent (key, value, stack, spacer, indentation) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again.\n if (typeof value !== 'object') {\n return stringifyIndent(key, value, stack, spacer, indentation)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n const originalIndentation = indentation\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n indentation += spacer\n let res = `\\n${indentation}`\n const join = `,\\n${indentation}`\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n res += join\n }\n const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n res += `\\n${originalIndentation}`\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n indentation += spacer\n const join = `,\\n${indentation}`\n let res = ''\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, join, maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = join\n }\n if (deterministic) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}: ${tmp}`\n separator = join\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n separator = join\n }\n if (separator !== '') {\n res = `\\n${indentation}${res}\\n${originalIndentation}`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringifySimple (key, value, stack) {\n switch (typeof value) {\n case 'string':\n return strEscape(value)\n case 'object': {\n if (value === null) {\n return 'null'\n }\n if (typeof value.toJSON === 'function') {\n value = value.toJSON(key)\n // Prevent calling `toJSON` again\n if (typeof value !== 'object') {\n return stringifySimple(key, value, stack)\n }\n if (value === null) {\n return 'null'\n }\n }\n if (stack.indexOf(value) !== -1) {\n return circularValue\n }\n\n let res = ''\n\n const hasLength = value.length !== undefined\n if (hasLength && Array.isArray(value)) {\n if (value.length === 0) {\n return '[]'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Array]\"'\n }\n stack.push(value)\n const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n let i = 0\n for (; i < maximumValuesToStringify - 1; i++) {\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n res += ','\n }\n const tmp = stringifySimple(String(i), value[i], stack)\n res += tmp !== undefined ? tmp : 'null'\n if (value.length - 1 > maximumBreadth) {\n const removedKeys = value.length - maximumBreadth - 1\n res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `[${res}]`\n }\n\n let keys = Object.keys(value)\n const keyLength = keys.length\n if (keyLength === 0) {\n return '{}'\n }\n if (maximumDepth < stack.length + 1) {\n return '\"[Object]\"'\n }\n let separator = ''\n let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n if (hasLength && isTypedArrayWithEntries(value)) {\n res += stringifyTypedArray(value, ',', maximumBreadth)\n keys = keys.slice(value.length)\n maximumPropertiesToStringify -= value.length\n separator = ','\n }\n if (deterministic) {\n keys = sort(keys, comparator)\n }\n stack.push(value)\n for (let i = 0; i < maximumPropertiesToStringify; i++) {\n const key = keys[i]\n const tmp = stringifySimple(key, value[key], stack)\n if (tmp !== undefined) {\n res += `${separator}${strEscape(key)}:${tmp}`\n separator = ','\n }\n }\n if (keyLength > maximumBreadth) {\n const removedKeys = keyLength - maximumBreadth\n res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n }\n stack.pop()\n return `{${res}}`\n }\n case 'number':\n return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n case 'boolean':\n return value === true ? 'true' : 'false'\n case 'undefined':\n return undefined\n case 'bigint':\n if (bigint) {\n return String(value)\n }\n // fallthrough\n default:\n return fail ? fail(value) : undefined\n }\n }\n\n function stringify (value, replacer, space) {\n if (arguments.length > 1) {\n let spacer = ''\n if (typeof space === 'number') {\n spacer = ' '.repeat(Math.min(space, 10))\n } else if (typeof space === 'string') {\n spacer = space.slice(0, 10)\n }\n if (replacer != null) {\n if (typeof replacer === 'function') {\n return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n }\n if (Array.isArray(replacer)) {\n return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n }\n }\n if (spacer.length !== 0) {\n return stringifyIndent('', value, [], spacer, '')\n }\n }\n return stringifySimple('', value, [])\n }\n\n return stringify\n}\n","var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream.Readable;\n Object.assign(module.exports, Stream);\n module.exports.Stream = Stream;\n} else {\n exports = module.exports = require('./lib/_stream_readable.js');\n exports.Stream = Stream || exports;\n exports.Readable = exports;\n exports.Writable = require('./lib/_stream_writable.js');\n exports.Duplex = require('./lib/_stream_duplex.js');\n exports.Transform = require('./lib/_stream_transform.js');\n exports.PassThrough = require('./lib/_stream_passthrough.js');\n exports.finished = require('./lib/internal/streams/end-of-stream.js');\n exports.pipeline = require('./lib/internal/streams/pipeline.js');\n}\n","'use strict';\n\nconst format = require('./format');\n\n/*\n * function cascade(formats)\n * Returns a function that invokes the `._format` function in-order\n * for the specified set of `formats`. In this manner we say that Formats\n * are \"pipe-like\", but not a pure pumpify implementation. Since there is no back\n * pressure we can remove all of the \"readable\" plumbing in Node streams.\n */\nfunction cascade(formats) {\n if (!formats.every(isValidFormat)) {\n return;\n }\n\n return info => {\n let obj = info;\n for (let i = 0; i < formats.length; i++) {\n obj = formats[i].transform(obj, formats[i].options);\n if (!obj) {\n return false;\n }\n }\n\n return obj;\n };\n}\n\n/*\n * function isValidFormat(format)\n * If the format does not define a `transform` function throw an error\n * with more detailed usage.\n */\nfunction isValidFormat(fmt) {\n if (typeof fmt.transform !== 'function') {\n throw new Error([\n 'No transform function found on format. Did you create a format instance?',\n 'const myFormat = format(formatFn);',\n 'const instance = myFormat();'\n ].join('\\n'));\n }\n\n return true;\n}\n\n/*\n * function combine (info)\n * Returns a new instance of the combine Format which combines the specified\n * formats into a new format. This is similar to a pipe-chain in transform streams.\n * We choose to combine the prototypes this way because there is no back pressure in\n * an in-memory transform chain.\n */\nmodule.exports = (...formats) => {\n const combinedFormat = format(cascade(formats));\n const instance = combinedFormat();\n instance.Format = combinedFormat.Format;\n return instance;\n};\n\n//\n// Export the cascade method for use in cli and other\n// combined formats that should not be assumed to be\n// singletons.\n//\nmodule.exports.cascade = cascade;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = once;\nfunction once(fn) {\n function wrapper(...args) {\n if (fn === null) return;\n var callFn = fn;\n fn = null;\n callFn.apply(this, args);\n }\n Object.assign(wrapper, fn);\n return wrapper;\n}\nmodule.exports = exports.default;","/**\n * exception-handler.js: Object for handling uncaughtException events.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst asyncForEach = require('async/forEach');\nconst debug = require('@dabh/diagnostics')('winston:rejection');\nconst once = require('one-time');\nconst stackTrace = require('stack-trace');\nconst RejectionStream = require('./rejection-stream');\n\n/**\n * Object for handling unhandledRejection events.\n * @type {RejectionHandler}\n */\nmodule.exports = class RejectionHandler {\n /**\n * TODO: add contructor description\n * @param {!Logger} logger - TODO: add param description\n */\n constructor(logger) {\n if (!logger) {\n throw new Error('Logger is required to handle rejections');\n }\n\n this.logger = logger;\n this.handlers = new Map();\n }\n\n /**\n * Handles `unhandledRejection` events for the current process by adding any\n * handlers passed in.\n * @returns {undefined}\n */\n handle(...args) {\n args.forEach(arg => {\n if (Array.isArray(arg)) {\n return arg.forEach(handler => this._addHandler(handler));\n }\n\n this._addHandler(arg);\n });\n\n if (!this.catcher) {\n this.catcher = this._unhandledRejection.bind(this);\n process.on('unhandledRejection', this.catcher);\n }\n }\n\n /**\n * Removes any handlers to `unhandledRejection` events for the current\n * process. This does not modify the state of the `this.handlers` set.\n * @returns {undefined}\n */\n unhandle() {\n if (this.catcher) {\n process.removeListener('unhandledRejection', this.catcher);\n this.catcher = false;\n\n Array.from(this.handlers.values()).forEach(wrapper =>\n this.logger.unpipe(wrapper)\n );\n }\n }\n\n /**\n * TODO: add method description\n * @param {Error} err - Error to get information about.\n * @returns {mixed} - TODO: add return description.\n */\n getAllInfo(err) {\n let message = null;\n if (err) {\n message = typeof err === 'string' ? err : err.message;\n }\n\n return {\n error: err,\n // TODO (indexzero): how do we configure this?\n level: 'error',\n message: [\n `unhandledRejection: ${message || '(no error message)'}`,\n err && err.stack || ' No stack trace'\n ].join('\\n'),\n stack: err && err.stack,\n rejection: true,\n date: new Date().toString(),\n process: this.getProcessInfo(),\n os: this.getOsInfo(),\n trace: this.getTrace(err)\n };\n }\n\n /**\n * Gets all relevant process information for the currently running process.\n * @returns {mixed} - TODO: add return description.\n */\n getProcessInfo() {\n return {\n pid: process.pid,\n uid: process.getuid ? process.getuid() : null,\n gid: process.getgid ? process.getgid() : null,\n cwd: process.cwd(),\n execPath: process.execPath,\n version: process.version,\n argv: process.argv,\n memoryUsage: process.memoryUsage()\n };\n }\n\n /**\n * Gets all relevant OS information for the currently running process.\n * @returns {mixed} - TODO: add return description.\n */\n getOsInfo() {\n return {\n loadavg: os.loadavg(),\n uptime: os.uptime()\n };\n }\n\n /**\n * Gets a stack trace for the specified error.\n * @param {mixed} err - TODO: add param description.\n * @returns {mixed} - TODO: add return description.\n */\n getTrace(err) {\n const trace = err ? stackTrace.parse(err) : stackTrace.get();\n return trace.map(site => {\n return {\n column: site.getColumnNumber(),\n file: site.getFileName(),\n function: site.getFunctionName(),\n line: site.getLineNumber(),\n method: site.getMethodName(),\n native: site.isNative()\n };\n });\n }\n\n /**\n * Helper method to add a transport as an exception handler.\n * @param {Transport} handler - The transport to add as an exception handler.\n * @returns {void}\n */\n _addHandler(handler) {\n if (!this.handlers.has(handler)) {\n handler.handleRejections = true;\n const wrapper = new RejectionStream(handler);\n this.handlers.set(handler, wrapper);\n this.logger.pipe(wrapper);\n }\n }\n\n /**\n * Logs all relevant information around the `err` and exits the current\n * process.\n * @param {Error} err - Error to handle\n * @returns {mixed} - TODO: add return description.\n * @private\n */\n _unhandledRejection(err) {\n const info = this.getAllInfo(err);\n const handlers = this._getRejectionHandlers();\n // Calculate if we should exit on this error\n let doExit =\n typeof this.logger.exitOnError === 'function'\n ? this.logger.exitOnError(err)\n : this.logger.exitOnError;\n let timeout;\n\n if (!handlers.length && doExit) {\n // eslint-disable-next-line no-console\n console.warn('winston: exitOnError cannot be true with no rejection handlers.');\n // eslint-disable-next-line no-console\n console.warn('winston: not exiting process.');\n doExit = false;\n }\n\n function gracefulExit() {\n debug('doExit', doExit);\n debug('process._exiting', process._exiting);\n\n if (doExit && !process._exiting) {\n // Remark: Currently ignoring any rejections from transports when\n // catching unhandled rejections.\n if (timeout) {\n clearTimeout(timeout);\n }\n // eslint-disable-next-line no-process-exit\n process.exit(1);\n }\n }\n\n if (!handlers || handlers.length === 0) {\n return process.nextTick(gracefulExit);\n }\n\n // Log to all transports attempting to listen for when they are completed.\n asyncForEach(\n handlers,\n (handler, next) => {\n const done = once(next);\n const transport = handler.transport || handler;\n\n // Debug wrapping so that we can inspect what's going on under the covers.\n function onDone(event) {\n return () => {\n debug(event);\n done();\n };\n }\n\n transport._ending = true;\n transport.once('finish', onDone('finished'));\n transport.once('error', onDone('error'));\n },\n () => doExit && gracefulExit()\n );\n\n this.logger.log(info);\n\n // If exitOnError is true, then only allow the logging of exceptions to\n // take up to `3000ms`.\n if (doExit) {\n timeout = setTimeout(gracefulExit, 3000);\n }\n }\n\n /**\n * Returns the list of transports and exceptionHandlers for this instance.\n * @returns {Array} - List of transports and exceptionHandlers for this\n * instance.\n * @private\n */\n _getRejectionHandlers() {\n // Remark (indexzero): since `logger.transports` returns all of the pipes\n // from the _readableState of the stream we actually get the join of the\n // explicit handlers and the implicit transports with\n // `handleRejections: true`\n return this.logger.transports.filter(wrap => {\n const transport = wrap.transport || wrap;\n return transport.handleRejections;\n });\n }\n};\n","/**\n * common.js: Internal helper and utility functions for winston.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { format } = require('util');\n\n/**\n * Set of simple deprecation notices and a way to expose them for a set of\n * properties.\n * @type {Object}\n * @private\n */\nexports.warn = {\n deprecated(prop) {\n return () => {\n throw new Error(format('{ %s } was removed in winston@3.0.0.', prop));\n };\n },\n useFormat(prop) {\n return () => {\n throw new Error([\n format('{ %s } was removed in winston@3.0.0.', prop),\n 'Use a custom winston.format = winston.format(function) instead.'\n ].join('\\n'));\n };\n },\n forFunctions(obj, type, props) {\n props.forEach(prop => {\n obj[prop] = exports.warn[type](prop);\n });\n },\n forProperties(obj, type, props) {\n props.forEach(prop => {\n const notice = exports.warn[type](prop);\n Object.defineProperty(obj, prop, {\n get: notice,\n set: notice\n });\n });\n }\n};\n","module.exports = require(\"stream\");","/**\n * cli.js: Config that conform to commonly used CLI logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the CLI configuration.\n * @type {Object}\n */\nexports.levels = {\n error: 0,\n warn: 1,\n help: 2,\n data: 3,\n info: 4,\n debug: 5,\n prompt: 6,\n verbose: 7,\n input: 8,\n silly: 9\n};\n\n/**\n * Default colors for the CLI configuration.\n * @type {Object}\n */\nexports.colors = {\n error: 'red',\n warn: 'yellow',\n help: 'cyan',\n data: 'grey',\n info: 'green',\n debug: 'blue',\n prompt: 'grey',\n verbose: 'cyan',\n input: 'grey',\n silly: 'magenta'\n};\n","\"use strict\";\n/**\n * Some code borrowed from https://github.com/tarruda/node-msgpack5rpc\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transport = exports.exportsForTesting = void 0;\nconst node_events_1 = require(\"node:events\");\nconst node_util_1 = require(\"node:util\");\nconst msgpack_1 = require(\"@msgpack/msgpack\");\nconst types_1 = require(\"../api/types\");\n// jest sets NODE_ENV=test.\nif (process.env.NODE_ENV === 'test') {\n exports.exportsForTesting = {\n onTransportFail: new node_events_1.EventEmitter(),\n };\n}\nclass Response {\n constructor(encoder, requestId) {\n this.encoder = encoder;\n this.requestId = requestId;\n }\n send(resp, isError) {\n if (this.sent) {\n throw new Error(`Response to id ${this.requestId} already sent`);\n }\n const encoded = (0, msgpack_1.encode)([\n 1,\n this.requestId,\n isError ? resp : null,\n !isError ? resp : null,\n ]);\n this.encoder.write(Buffer.from(encoded.buffer, encoded.byteOffset, encoded.byteLength));\n this.sent = true;\n }\n}\nclass Transport extends node_events_1.EventEmitter {\n constructor() {\n super(...arguments);\n this.pending = new Map();\n this.nextRequestId = 1;\n this.extensionCodec = this.initializeExtensionCodec();\n }\n initializeExtensionCodec() {\n const codec = new msgpack_1.ExtensionCodec();\n types_1.Metadata.forEach(({ constructor }, id) => {\n codec.register({\n type: id,\n encode: (input) => {\n if (input instanceof constructor) {\n return (0, msgpack_1.encode)(input.data);\n }\n return null;\n },\n decode: data => new constructor({\n transport: this,\n client: this.client,\n data: (0, msgpack_1.decode)(data),\n }),\n });\n });\n return codec;\n }\n encodeToBuffer(value) {\n const encoded = (0, msgpack_1.encode)(value, { extensionCodec: this.extensionCodec });\n return Buffer.from(encoded.buffer, encoded.byteOffset, encoded.byteLength);\n }\n attach(writer, reader, client) {\n this.writer = writer;\n this.reader = reader;\n this.client = client;\n this.reader.on('end', () => {\n this.emit('detach');\n });\n const asyncDecodeGenerator = (0, msgpack_1.decodeMultiStream)(this.reader, {\n extensionCodec: this.extensionCodec,\n });\n // naively iterate async generator created via decodeMultiStream.\n // when runtime / polyfill allows replace to `for await (const val of asyncDecodeGenerator)`\n // syntax instead.\n const resolveGeneratorRecursively = (iter) => {\n iter.next().then(resolved => {\n if (!resolved.done) {\n if (!Array.isArray(resolved.value)) {\n let valstr = '?';\n try {\n valstr = (0, node_util_1.inspect)(resolved.value, {\n sorted: true,\n maxArrayLength: 10,\n maxStringLength: 500,\n compact: true,\n breakLength: 500,\n });\n }\n catch (error) {\n // Do nothing.\n }\n const errMsg = `invalid msgpack-RPC message: expected array, got: ${valstr}`;\n const onFail = exports.exportsForTesting === null || exports.exportsForTesting === void 0 ? void 0 : exports.exportsForTesting.onTransportFail;\n if (onFail) {\n // HACK: for testing only.\n // TODO(justinmk): let the tests explicitly drive the messages.\n onFail.emit('fail', errMsg);\n return;\n }\n throw new TypeError(errMsg);\n }\n this.parseMessage(resolved.value);\n resolveGeneratorRecursively(iter);\n return;\n }\n Promise.resolve();\n });\n };\n resolveGeneratorRecursively(asyncDecodeGenerator);\n }\n request(method, args, cb) {\n this.nextRequestId = this.nextRequestId + 1;\n this.writer.write(this.encodeToBuffer([0, this.nextRequestId, method, args]));\n this.pending.set(this.nextRequestId, cb);\n }\n notify(method, args) {\n this.writer.write(this.encodeToBuffer([2, method, args]));\n }\n parseMessage(msg) {\n const msgType = msg[0];\n if (msgType === 0) {\n // request\n // - msg[1]: id\n // - msg[2]: method name\n // - msg[3]: arguments\n this.emit('request', msg[2].toString(), msg[3], new Response(this.writer, msg[1]));\n }\n else if (msgType === 1) {\n // response to a previous request:\n // - msg[1]: the id\n // - msg[2]: error(if any)\n // - msg[3]: result(if not errored)\n const id = msg[1];\n const handler = this.pending.get(id);\n if (!handler) {\n throw new Error(`no pending handler for id ${id}`);\n }\n this.pending.delete(id);\n handler(msg[2], msg[3]);\n }\n else if (msgType === 2) {\n // notification/event\n // - msg[1]: event name\n // - msg[2]: arguments\n this.emit('notification', msg[1].toString(), msg[2]);\n }\n else {\n this.writer.write(this.encodeToBuffer([1, 0, 'Invalid message type', null]));\n }\n }\n}\nexports.Transport = Transport;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.autocmd = autocmd;\nconst properties_1 = require(\"./properties\");\n// Example\n// @autocmd('BufEnter', { pattern: '*.js', eval: 'expand(\"\")', sync: true })\nfunction autocmd(name, options) {\n return function (cls, methodName) {\n // const {\n // sync,\n // ...opts,\n // } = options;\n const sync = options && !!options.sync;\n const isMethod = typeof methodName === 'string';\n const f = isMethod ? cls[methodName] : cls;\n const opts = {\n pattern: '',\n };\n // @ts-expect-error changing `option: keyof …` to `option: string` causes other errors.\n ['pattern', 'eval'].forEach((option) => {\n if (options && typeof options[option] !== 'undefined') {\n opts[option] = options[option];\n }\n });\n const nameWithPattern = `${name}${(options === null || options === void 0 ? void 0 : options.pattern) ? `:${options.pattern}` : ''}`;\n Object.defineProperty(f, properties_1.NVIM_METHOD_NAME, {\n value: `autocmd:${nameWithPattern}`,\n });\n Object.defineProperty(f, properties_1.NVIM_SYNC, { value: !!sync });\n Object.defineProperty(f, properties_1.NVIM_SPEC, {\n value: {\n type: 'autocmd',\n name,\n sync: !!sync,\n opts,\n },\n });\n if (isMethod) {\n // eslint-disable-next-line no-param-reassign\n cls[methodName] = f;\n }\n return cls;\n };\n}\n","'use strict';\n\nvar toString = Object.prototype.toString;\n\n/**\n * Extract names from functions.\n *\n * @param {Function} fn The function who's name we need to extract.\n * @returns {String} The name of the function.\n * @public\n */\nmodule.exports = function name(fn) {\n if ('string' === typeof fn.displayName && fn.constructor.name) {\n return fn.displayName;\n } else if ('string' === typeof fn.name && fn.name) {\n return fn.name;\n }\n\n //\n // Check to see if the constructor has a name.\n //\n if (\n 'object' === typeof fn\n && fn.constructor\n && 'string' === typeof fn.constructor.name\n ) return fn.constructor.name;\n\n //\n // toString the given function and attempt to parse it out of it, or determine\n // the class.\n //\n var named = fn.toString()\n , type = toString.call(fn).slice(8, -1);\n\n if ('Function' === type) {\n named = named.substring(named.indexOf('(') + 1, named.indexOf(')'));\n } else {\n named = type;\n }\n\n return named || 'anonymous';\n};\n","export function findLastEvent(name: string, batch: [string, ...unknown[]][]): [string, ...unknown[]] | undefined {\n return batch.findLast(([event]) => event === name);\n}\n\n/**\n * Manual promise that can be resolved/rejected from outside. Used in document and cursor managers to indicate pending update.\n */\nexport class ManualPromise {\n public promise: Promise;\n public resolve: () => void = () => {\n // noop\n };\n public reject: () => void = () => {\n // noop\n };\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n this.promise.catch((_err) => {\n // noop\n });\n }\n}\n\n/**\n * Wait for a given number of milliseconds\n * @param ms Number of milliseconds\n */\nexport async function wait(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { Uri, workspace } from \"vscode\";\n\n/**\n * Check if a file exists. This is a wrapper around `workspace.fs.stat`\n */\nexport async function fileExists(uri: Uri): Promise {\n try {\n await workspace.fs.stat(uri);\n } catch {\n return false;\n }\n return true;\n}\n","import { spawnSync } from \"child_process\";\n\nimport { calcPatch } from \"fast-myers-diff\";\nimport {\n Disposable,\n EndOfLine,\n Position,\n Progress as VSCodeProgress,\n Range,\n Selection,\n TextDocument,\n TextDocumentContentChangeEvent,\n TextEditor,\n commands,\n ProgressOptions as VSCodeProgressOptions,\n window,\n} from \"vscode\";\n\nimport { config } from \"../config\";\n\nimport { convertByteNumToCharNum, convertCharNumToByteNum } from \"./text\";\nimport { ManualPromise } from \"./async\";\n\n/**\n * Stores last changes information for dot repeat\n */\nexport interface DotRepeatChange {\n /**\n * Num of deleted characters, 0 when only added\n */\n rangeLength: number;\n /**\n * Range offset\n */\n rangeOffset: number;\n /**\n * Change text\n */\n text: string;\n /**\n * Text eol\n */\n eol: string;\n}\n\ninterface DocumentChange {\n range: Range;\n text: string;\n rangeLength: number;\n}\n\n// given an array of cumulative line lengths, find the line number given a character position after a known start line.\n// return the line as well as the number of characters until the start of the line.\nfunction findLine(lineLengths: number[], pos: number, startLine: number): [number, number] {\n let low = startLine,\n high = lineLengths.length - 1;\n while (low < high) {\n const mid = low + Math.floor((high - low) / 2); // can adjust pivot point based on probability of diffs being close together\n if (lineLengths[mid] <= pos) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n const char = low > 0 ? lineLengths[low - 1] : 0;\n return [low, char];\n}\n\n// fast-myers-diff accepts a raw 1D string, and outputs a list of operations to apply to the buffer.\n// However, we must compute the line and character positions of the operations ourselves.\n// Assuming the operations are sequential, we can use a binary search to find the line number given a character position,\n// with the search space being the cumulative line lengths, bounded on the left by the last line.\n// Then, given a character position, we can start counting from the cursor to find the line number, and the remainder is the character position on the line.\nexport function* calcDiffWithPosition(oldText: string, newText: string): Generator {\n const patch = calcPatch(oldText, newText);\n // generate prefix sum of line lengths (accumulate the length)\n const lines = oldText.split(\"\\n\");\n const lineLengths = new Array(lines.length);\n let cumulativeLength = 0;\n for (let i = 0; i < lines.length; i++) {\n cumulativeLength += lines[i].length + 1; // +1 for the newline character\n lineLengths[i] = cumulativeLength;\n }\n let lastLine = 0;\n for (const [start, end, text] of patch) {\n const [lineStart, charToLineStart] = findLine(lineLengths, start, lastLine);\n const [lineEnd, charToLineEnd] = findLine(lineLengths, end, lineStart);\n const charStart = start - charToLineStart;\n const charEnd = end - charToLineEnd;\n const range = new Range(new Position(lineStart, charStart), new Position(lineEnd, charEnd));\n lastLine = lineEnd;\n yield {\n range,\n text,\n rangeLength: end - start,\n };\n }\n}\n\nexport function disposeAll(disposables: Disposable[]): void {\n while (disposables.length) {\n try {\n disposables.pop()?.dispose();\n } catch (e) {\n console.warn(e);\n }\n }\n}\n\nexport function getDocumentLineArray(doc: TextDocument): string[] {\n const eol = doc.eol === EndOfLine.CRLF ? \"\\r\\n\" : \"\\n\";\n return doc.getText().split(eol);\n}\n\nexport function convertVimPositionToEditorPosition(editor: TextEditor, vimPos: Position): Position {\n const line = editor.document.lineAt(vimPos.line).text;\n const character = convertByteNumToCharNum(line, vimPos.character);\n return new Position(vimPos.line, character);\n}\nexport function convertEditorPositionToVimPosition(editor: TextEditor, editorPos: Position): Position {\n const line = editor.document.lineAt(editorPos.line).text;\n const byte = convertCharNumToByteNum(line, editorPos.character);\n return new Position(editorPos.line, byte);\n}\n\nexport function isCursorChange(change: TextDocumentContentChangeEvent, cursor: Position, eol: string): boolean {\n if (change.range.contains(cursor)) {\n return true;\n }\n if (change.range.isSingleLine && change.text) {\n const lines = change.text.split(eol);\n const lineLength = lines.length;\n const newEndLineRange = change.range.start.line + lineLength - 1;\n const newEndLastLineCharRange = change.range.end.character + lines.slice(-1)[0].length;\n if (newEndLineRange >= cursor.line && newEndLastLineCharRange >= cursor.character) {\n return true;\n }\n }\n return false;\n}\n\nexport function normalizeDotRepeatChange(change: TextDocumentContentChangeEvent, eol: string): DotRepeatChange {\n return {\n rangeLength: change.rangeLength,\n rangeOffset: change.rangeOffset,\n text: change.text,\n eol,\n };\n}\n\nexport function accumulateDotRepeatChange(\n change: TextDocumentContentChangeEvent,\n lastChange: DotRepeatChange,\n): DotRepeatChange {\n const newLastChange: DotRepeatChange = {\n ...lastChange,\n };\n\n const removedLength =\n change.rangeOffset <= lastChange.rangeOffset\n ? change.rangeOffset - lastChange.rangeOffset + change.rangeLength\n : change.rangeLength;\n\n const sliceBeforeStart = 0;\n const sliceBeforeEnd =\n change.rangeOffset <= lastChange.rangeOffset\n ? // ? sliceBeforeStart + removedLength\n 0\n : change.rangeOffset - lastChange.rangeOffset;\n\n const sliceAfterStart = change.rangeOffset - lastChange.rangeOffset + removedLength;\n\n // adjust text\n newLastChange.text =\n lastChange.text.slice(sliceBeforeStart, sliceBeforeEnd) + change.text + lastChange.text.slice(sliceAfterStart);\n\n // adjust offset & range length\n // we need to account the case only when text was deleted before the original change\n if (change.rangeOffset < lastChange.rangeOffset) {\n newLastChange.rangeOffset = change.rangeOffset;\n newLastChange.rangeLength += change.rangeLength;\n }\n return newLastChange;\n}\n\nexport function isChangeSubsequentToChange(\n change: TextDocumentContentChangeEvent,\n lastChange: DotRepeatChange,\n): boolean {\n const lastChangeTextLength = lastChange.text.length;\n const lastChangeOffsetStart = lastChange.rangeOffset;\n const lastChangeOffsetEnd = lastChange.rangeOffset + lastChangeTextLength;\n\n if (change.rangeOffset >= lastChangeOffsetStart && change.rangeOffset <= lastChangeOffsetEnd) {\n return true;\n }\n\n if (\n change.rangeOffset < lastChangeOffsetStart &&\n change.rangeOffset + change.rangeLength >= lastChangeOffsetStart\n ) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Convert ranges to selections\n * @param ranges An array of ranges, where the start is the anchor and the end is the active position.\n * @param document The document used to validate the range.\n * @returns The converted selections.\n */\nexport function rangesToSelections(\n ranges: {\n start: { line: number; character: number };\n end: { line: number; character: number };\n }[],\n document?: TextDocument,\n): Selection[] {\n return ranges.map((r) => {\n const start = new Position(r.start.line, r.start.character);\n const end = new Position(r.end.line, r.end.character);\n if (!document) return new Selection(start, end);\n const reversed = start.isAfter(end);\n const range = document.validateRange(new Range(start, end));\n return range.start.isBefore(range.end) && reversed\n ? new Selection(range.end, range.start)\n : new Selection(range.start, range.end);\n });\n}\n\n/**\n * Translate from a Windows path to a WSL path\n * @param path Windows path\n * @returns WSL path\n */\nexport const wslpath = (path: string) => {\n const distroArgs = config.wslDistribution.length ? [\"-d\", config.wslDistribution] : [];\n const result = spawnSync(\"C:\\\\Windows\\\\system32\\\\wsl.exe\", [...distroArgs, \"wslpath\", path], {\n encoding: \"utf-8\",\n });\n if (result.error) {\n throw new Error(`Failed to run wslpath: ${result.error.message}`);\n }\n return result.stdout.trim();\n};\n\n// Credit: https://github.com/VSCodeVim/Vim/blob/5dc9fbf9e7c31a523a348066e61605ed6caf62da/src/util/vscodeContext.ts\ntype VSCodeContextValue = boolean | string | string[];\n/**\n * Wrapper around VS Code's `setContext`.\n * The API call takes several milliseconds to seconds to complete,\n * so let's cache the values and only call the API when necessary.\n */\nexport abstract class VSCodeContext {\n private static readonly cache: Map = new Map();\n\n public static async set(key: string, value?: VSCodeContextValue): Promise {\n const prev = this.get(key);\n if (prev !== value) {\n if (value === undefined) {\n this.cache.delete(key);\n } else {\n this.cache.set(key, value);\n }\n await commands.executeCommand(\"setContext\", key, value);\n }\n }\n\n public static get(key: string): VSCodeContextValue | undefined {\n return this.cache.get(key);\n }\n\n public static reset() {\n for (const key of this.cache.keys()) {\n commands.executeCommand(\"setContext\", key, undefined);\n }\n this.cache.clear();\n }\n}\n\n/**\n * Represents a progress indicator in VSCode.\n */\nexport class Progress implements Disposable {\n private disposed = false;\n private startTimer?: NodeJS.Timeout;\n private promise?: ManualPromise;\n private progress?: VSCodeProgress<{ message?: string }>;\n private message?: string;\n\n /**\n * Checks if the progress indicator is currently active.\n */\n public get isProgressing(): boolean {\n return !!this.progress;\n }\n\n /**\n * Reports a progress message to the indicator.\n * @param message The message to report.\n */\n public report(message: string) {\n this.message = message;\n try {\n this.progress?.report({ message });\n } catch {\n // ignore\n }\n }\n\n /**\n * Starts the progress indicator.\n * @param options The options for the progress indicator.\n * @param timeout The timeout in milliseconds before starting the indicator.\n */\n public start(options: VSCodeProgressOptions, timeout: number = 0) {\n if (this.disposed) return; // Keep silent\n\n this.done();\n this.startTimer = setTimeout(() => {\n this.promise = new ManualPromise();\n window.withProgress(options, async (progress) => {\n this.progress = progress;\n if (this.message) {\n progress.report({ message: this.message });\n }\n await this.promise?.promise;\n });\n }, timeout);\n }\n\n /**\n * Completes the progress indicator.\n */\n public done() {\n this.progress = undefined;\n this.promise?.resolve();\n this.promise = undefined;\n clearTimeout(this.startTimer);\n this.startTimer = undefined;\n this.message = undefined;\n }\n\n public dispose() {\n this.done();\n this.disposed = true;\n }\n}\n","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = require('../../../errors').codes,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = require('./end-of-stream');\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '