diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index e56b4d46c55..4479fcd4875 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "XamlStyler.Console": { - "version": "3.2206.4", + "version": "3.2311.2", "commands": [ "xstyler" ] diff --git a/.github/ISSUE_TEMPLATE/Bug_Report.yml b/.github/ISSUE_TEMPLATE/Bug_Report.yml index 517f2bdc7ea..2a647a35d51 100644 --- a/.github/ISSUE_TEMPLATE/Bug_Report.yml +++ b/.github/ISSUE_TEMPLATE/Bug_Report.yml @@ -1,6 +1,7 @@ name: "Bug report 🐛" description: Report errors or unexpected behavior labels: [Issue-Bug, Needs-Triage] +type: Bug body: - type: markdown attributes: @@ -12,7 +13,7 @@ body: - type: input attributes: label: Windows Terminal version - placeholder: "1.7.3651.0" + placeholder: "1.21.2701.0" description: | You can copy the version number from the About dialog. Open the About dialog by opening the menu with the "V" button (to the right of the "+" button that opens a new tab) and choosing About from the end of the list. validations: @@ -21,7 +22,7 @@ body: - type: input attributes: label: Windows build number - placeholder: "10.0.19042.0" + placeholder: "10.0.22621.0" description: | Please run `ver` or `[Environment]::OSVersion`. validations: @@ -32,9 +33,9 @@ body: label: Other Software description: If you're reporting a bug about our interaction with other software, what software? What versions? placeholder: | - vim 8.2 (inside WSL) - OpenSSH_for_Windows_8.1p1 - My Cool Application v0.3 (include a code snippet if it would help!) + vim 9.1 (inside WSL) + OpenSSH_for_Windows_9.5p1 + My Cool Application v0.4 (include a code snippet if it would help!) validations: required: false diff --git a/.github/ISSUE_TEMPLATE/Documentation_Issue.md b/.github/ISSUE_TEMPLATE/Documentation_Issue.md deleted file mode 100644 index 808bf813131..00000000000 --- a/.github/ISSUE_TEMPLATE/Documentation_Issue.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -name: "Documentation Issue 📚" -about: Report issues in our documentation -title: '' -labels: Issue-Docs -assignees: '' - ---- - - diff --git a/.github/ISSUE_TEMPLATE/Feature_Request.md b/.github/ISSUE_TEMPLATE/Feature_Request.md deleted file mode 100644 index e7a9dca66ae..00000000000 --- a/.github/ISSUE_TEMPLATE/Feature_Request.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -name: "Feature Request/Idea 🚀" -about: Suggest a new feature or improvement (this does not mean you have to implement - it) -title: '' -labels: Issue-Feature -assignees: '' - ---- - - - -# Description of the new feature/enhancement - - - -# Proposed technical implementation details (optional) - - diff --git a/.github/ISSUE_TEMPLATE/Feature_Request.yml b/.github/ISSUE_TEMPLATE/Feature_Request.yml new file mode 100644 index 00000000000..1ec2fd32b87 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Feature_Request.yml @@ -0,0 +1,20 @@ +name: "Feature Request/Idea 🚀" +description: Suggest a new feature or improvement (this does not mean you have to implement it) +labels: [Issue-Feature] +type: Feature +body: +- type: textarea + attributes: + label: Description of the new feature + description: A clear and concise description of what the problem is that the new feature would solve. + placeholder: | + ... and guess what? I have four Terminals. And I have a hover car, and a hover house. And my computer's a runner, and it shows. + validations: + required: true + +- type: textarea + attributes: + label: Proposed technical implementation details + description: This field is optional. If you have any ideas, let us know! + validations: + required: false diff --git a/.github/actions/spelling/advice.md b/.github/actions/spelling/advice.md index d82df49ee22..536c601aec2 100644 --- a/.github/actions/spelling/advice.md +++ b/.github/actions/spelling/advice.md @@ -6,8 +6,6 @@ By default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later. -:warning: The command is written for posix shells. If it doesn't work for you, you can manually _add_ (one word per line) / _remove_ items to `expect.txt` and the `excludes.txt` files. - If the listed items are: * ... **misspelled**, then please *correct* them instead of using the command. @@ -36,7 +34,9 @@ https://www.regexplanet.com/advanced/perl/) yours before committing to verify it * well-formed pattern. - If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it, + If you can write a [pattern]( +https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns +) that would match it, try adding it to the `patterns.txt` file. Patterns are Perl 5 Regular Expressions - you can [test]( diff --git a/.github/actions/spelling/allow/allow.txt b/.github/actions/spelling/allow/allow.txt index bccfe086aeb..630edfebce7 100644 --- a/.github/actions/spelling/allow/allow.txt +++ b/.github/actions/spelling/allow/allow.txt @@ -1,72 +1,46 @@ aci -admins allcolors -Apc -apc -backpressure breadcrumb breadcrumbs -bsd -calt ccmp ccon -changelog clickable -clig +cmark CMMI +colorbrewer +commandlines +consvc copyable -Counterintuitively -CtrlDToClose -cybersecurity dalet -Dcs dcs deselection dialytika diffing dje -downside downsides dze dzhe -DTo -EDDB -EDDC Emacspeak -Enum'd Fitt -formattings FTCS -ftp -fvar +flac gantt -gcc -geeksforgeeks +gfm ghe -github gje godbolt -hostname -hostnames -https -hyperlink +hstrings hyperlinking hyperlinks -iconify -img -inlined -It'd +Kbds kje libfuzzer -libuv liga lje Llast -llvm Lmid locl lol -lorem Lorigin maxed megathread @@ -75,53 +49,49 @@ mkmk mnt mru nje -noreply +notwrapped +NTMTo ogonek -ok'd overlined -pipeline +perlw postmodern Powerline -powerline ptys +pwn +pwshw +QOL qof qps +quickfix rclt reimplementation +Remappings reserialization -reserialize reserializes +Retargets rlig +rubyw runtimes servicebus shcha +similaritytolerance slnt -Sos -ssh -sustainability stakeholders +subpage +sustainability sxn -timeline -timelines -timestamped TLDR -tokenizes tonos toolset -truthiness tshe -ubuntu +UEFI uiatextrange -UIs und -unregister -versioned vsdevcmd -walkthrough -walkthroughs -We'd westus -wildcards +workarounds +WSLs +wtconfig XBox YBox yeru diff --git a/.github/actions/spelling/allow/apis.txt b/.github/actions/spelling/allow/apis.txt index fb5bfd2fe24..f7671d04f45 100644 --- a/.github/actions/spelling/allow/apis.txt +++ b/.github/actions/spelling/allow/apis.txt @@ -1,9 +1,12 @@ +aalt +abvm ACCEPTFILES ACCESSDENIED acl aclapi alignas alignof +allocconsolewithoptions APPLYTOSUBMENUS appxrecipe bitfield @@ -21,7 +24,9 @@ COLORPROPERTY colspan COMDLG commandlinetoargv +commoncontrols comparand +COPYFROMRESOURCE cstdint CXICON CYICON @@ -33,18 +38,22 @@ delayimp DERR dlldata DNE +dnom DONTADDTORECENT DWMSBT DWMWA DWORDLONG +EMPH endfor ENDSESSION enumset environstrings +EXACTSIZEONLY EXPCMDFLAGS EXPCMDSTATE filetime FILTERSPEC +fina FORCEFILESYSTEM FORCEMINIMIZE frac @@ -54,9 +63,11 @@ GETDESKWALLPAPER GETHIGHCONTRAST GETMOUSEHOVERTIME GETTEXTLENGTH +HARDBREAKS Hashtable HIGHCONTRASTON HIGHCONTRASTW +HIGHQUALITYSCALE hinternet HINTERNET hotkeys @@ -74,6 +85,7 @@ IBox IClass IComparable IComparer +ICONINFO IConnection ICustom IDialog @@ -83,13 +95,13 @@ IExplorer IFACEMETHOD IFile IGraphics +IImage IInheritable IMap -IMonarch +imm IObject iosfwd IPackage -IPeasant isa ISetup isspace @@ -103,6 +115,7 @@ IUri IVirtual KEYSELECT LCID +LINEBREAK llabs llu localtime @@ -113,6 +126,7 @@ LSHIFT LTGRAY MAINWINDOW MAXIMIZEBOX +medi memchr memicmp MENUCOMMAND @@ -135,6 +149,7 @@ NIF NIN NOAGGREGATION NOASYNC +NOBREAKS NOCHANGEDIR NOPROGRESS NOREDIRECTIONBITMAP @@ -143,6 +158,8 @@ NOTIFYBYPOS NOTIFYICON NOTIFYICONDATA ntprivapi +NTSYSCALLAPI +numr oaidl ocidl ODR @@ -156,9 +173,11 @@ OUTLINETEXTMETRICW overridable PACL PAGESCROLL +PALLOC PATINVERT PEXPLICIT PICKFOLDERS +PINPUT pmr ptstr QUERYENDSESSION @@ -167,9 +186,11 @@ REGCLS RETURNCMD rfind RLO +rnrn ROOTOWNER roundf RSHIFT +rvrn SACL schandle SEH @@ -185,6 +206,7 @@ SINGLEUSE SIZENS smoothstep snprintf +SOFTBREAK spsc sregex SRWLOC diff --git a/.github/actions/spelling/allow/microsoft.txt b/.github/actions/spelling/allow/microsoft.txt index 1ed1c6da897..940b0fc29d2 100644 --- a/.github/actions/spelling/allow/microsoft.txt +++ b/.github/actions/spelling/allow/microsoft.txt @@ -1,6 +1,8 @@ ACLs ADMINS advapi +akv +AKV altform altforms appendwttlogging @@ -14,12 +16,14 @@ autoexec backplating bitmaps BOMs +checkcflags COMPUTERNAME CPLs cpptools cppvsdbg CPRs cryptbase +cscript DACL DACLs defaultlib @@ -31,6 +35,7 @@ DWINRT enablewttlogging HOMESHARE Intelli +issecret IVisual libucrt libucrtd @@ -45,6 +50,7 @@ MSAA msixbundle MSVC MSVCP +mtu muxc netcore Onefuzz @@ -72,6 +78,7 @@ sid Skype SRW sxs +symbolrequestprod Sysinternals sysnative systemroot @@ -88,10 +95,13 @@ Virtualization visualstudio vscode VSTHRD +WINBASEAPI winsdkver wlk +wscript wslpath wtl wtt wttlog Xamarin +xfgcheck diff --git a/.github/actions/spelling/allow/names.txt b/.github/actions/spelling/allow/names.txt index 0409931d020..11a1f95486b 100644 --- a/.github/actions/spelling/allow/names.txt +++ b/.github/actions/spelling/allow/names.txt @@ -6,6 +6,7 @@ bhoj Bhojwani Bluloco carlos +craigloewen dhowett Diviness dsafa diff --git a/.github/actions/spelling/candidate.patterns b/.github/actions/spelling/candidate.patterns index 400f103ea28..5d93035f915 100644 --- a/.github/actions/spelling/candidate.patterns +++ b/.github/actions/spelling/candidate.patterns @@ -1,25 +1,42 @@ # marker to ignore all code on line ^.*/\* #no-spell-check-line \*/.*$ -# marker for ignoring a comment to the end of the line -// #no-spell-check.*$ +# marker to ignore all code on line +^.*\bno-spell-check(?:-line|)(?:\s.*|)$ + +# https://cspell.org/configuration/document-settings/ +# cspell inline +^.*\b[Cc][Ss][Pp][Ee][Ll]{2}:\s*[Dd][Ii][Ss][Aa][Bb][Ll][Ee]-[Ll][Ii][Nn][Ee]\b # patch hunk comments -^\@\@ -\d+(?:,\d+|) \+\d+(?:,\d+|) \@\@ .* +^@@ -\d+(?:,\d+|) \+\d+(?:,\d+|) @@ .* # git index header -index [0-9a-z]{7,40}\.\.[0-9a-z]{7,40} +index (?:[0-9a-z]{7,40},|)[0-9a-z]{7,40}\.\.[0-9a-z]{7,40} + +# file permissions +['"`\s][-bcdLlpsw](?:[-r][-w][-Ssx]){2}[-r][-w][-SsTtx]\+?['"`\s] + +# css url wrappings +\burl\([^)]+\) # cid urls (['"])cid:.*?\g{-1} # data url in parens -\(data:[^)]*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\) +#\(data:(?:[^) ][^)]*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})[^)]*\) + # data url in quotes -([`'"])data:.*?(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1} +([`'"])data:(?:[^ `'"].*?|)(?:[A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,}).*\g{-1} # data url -data:[-a-zA-Z=;:/0-9+]*,\S* +\bdata:[-a-zA-Z=;:/0-9+]*,\S* + +# https/http/file urls +(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/*%?=~_|!:,.;]+[-A-Za-z0-9+&@#/*%=~_|] + +# https/http/file urls +(?:\b(?:https?|ftp|file)://)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|] # mailto urls -mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,} +mailto:[-a-zA-Z=;:/?%&0-9+@._]{3,} # magnet urls magnet:[?=:\w]+ @@ -35,6 +52,9 @@ magnet:[?=:\w]+ # asciinema \basciinema\.org/a/[0-9a-zA-Z]+ +# asciinema v2 +^\[\d+\.\d+, "[io]", ".*"\]$ + # apple \bdeveloper\.apple\.com/[-\w?=/]+ # Apple music @@ -89,7 +109,7 @@ vpc-\w+ # Google Drive \bdrive\.google\.com/(?:file/d/|open)[-0-9a-zA-Z_?=]* # Google Groups -\bgroups\.google\.com/(?:(?:forum/#!|d/)(?:msg|topics?|searchin)|a)/[^/\s"]+/[-a-zA-Z0-9$]+(?:/[-a-zA-Z0-9]+)* +\bgroups\.google\.com(?:/[a-z]+/(?:#!|)[^/\s"]+)* # Google Maps \bmaps\.google\.com/maps\?[\w&;=]* # Google themes @@ -117,6 +137,8 @@ themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+. (?:\[`?[0-9a-f]+`?\]\(https:/|)/(?:www\.|)github\.com(?:/[^/\s"]+){2,}(?:/[^/\s")]+)(?:[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|) # GitHub SHAs \bgithub\.com(?:/[^/\s"]+){2}[@#][0-9a-f]+\b +# GitHub SHA refs +\[([0-9a-f]+)\]\(https://(?:www\.|)github.com/[-\w]+/[-\w]+/commit/\g{-1}[0-9a-f]* # GitHub wiki \bgithub\.com/(?:[^/]+/){2}wiki/(?:(?:[^/]+/|)_history|[^/]+(?:/_compare|)/[0-9a-f.]{40,})\b # githubusercontent @@ -128,12 +150,15 @@ themes\.googleusercontent\.com/static/fonts/[^/\s"]+/v\d+/[^.]+. # git.io \bgit\.io/[0-9a-zA-Z]+ # GitHub JSON -"node_id": "[-a-zA-Z=;:/0-9+]*" +"node_id": "[-a-zA-Z=;:/0-9+_]*" # Contributor -\[[^\]]+\]\(https://github\.com/[^/\s"]+\) +\[[^\]]+\]\(https://github\.com/[^/\s"]+/?\) # GHSA GHSA(?:-[0-9a-z]{4}){3} +# GitHub actions +\buses:\s+[-\w.]+/[-\w./]+@[-\w.]+ + # GitLab commit \bgitlab\.[^/\s"]*/\S+/\S+/commit/[0-9a-f]{7,16}#[0-9a-f]{40}\b # GitLab merge requests @@ -143,8 +168,8 @@ GHSA(?:-[0-9a-z]{4}){3} # GitLab commits \bgitlab\.[^/\s"]*/(?:[^/\s"]+/){2}commits?/[0-9a-f]+\b -# binanace -accounts.binance.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]* +# binance +accounts\.binance\.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]* # bitbucket diff \bapi\.bitbucket\.org/\d+\.\d+/repositories/(?:[^/\s"]+/){2}diff(?:stat|)(?:/[^/\s"]+){2}:[0-9a-f]+ @@ -192,7 +217,7 @@ accounts.binance.com/[a-z/]*oauth/authorize\?[-0-9a-zA-Z&%]* # medium link \blink\.medium\.com/[a-zA-Z0-9]+ # medium -\bmedium\.com/\@?[^/\s"]+/[-\w]+ +\bmedium\.com/@?[^/\s"]+/[-\w]+ # microsoft \b(?:https?://|)(?:(?:download\.visualstudio|docs|msdn2?|research)\.microsoft|blogs\.msdn)\.com/[-_a-zA-Z0-9()=./%]* @@ -257,7 +282,7 @@ slack://[a-zA-Z0-9?&=]+ [0-9a-f]{32}\@o\d+\.ingest\.sentry\.io\b # Twitter markdown -\[\@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\) +\[@[^[/\]:]*?\]\(https://twitter.com/[^/\s"')]*(?:/status/\d+(?:\?[-_0-9a-zA-Z&=]*|)|)\) # Twitter hashtag \btwitter\.com/hashtag/[\w?_=&]* # Twitter status @@ -280,9 +305,9 @@ slack://[a-zA-Z0-9?&=]+ \bdropbox\.com/sh?/[^/\s"]+/[-0-9A-Za-z_.%?=&;]+ # ipfs protocol -ipfs://[0-9a-z]* +ipfs://[0-9a-zA-Z]{3,} # ipfs url -/ipfs/[0-9a-z]* +/ipfs/[0-9a-zA-Z]{3,} # w3 \bw3\.org/[-0-9a-zA-Z/#.]+ @@ -312,7 +337,7 @@ ipfs://[0-9a-z]* [^"\s]+/gitweb/\S+;h=[0-9a-f]+ # HyperKitty lists -/archives/list/[^@/]+\@[^/\s"]*/message/[^/\s"]*/ +/archives/list/[^@/]+@[^/\s"]*/message/[^/\s"]*/ # lists /thread\.html/[^"\s]+ @@ -330,7 +355,7 @@ ipfs://[0-9a-z]* \bopen\.spotify\.com/embed/playlist/\w+ # Mastodon -\bmastodon\.[-a-z.]*/(?:media/|\@)[?&=0-9a-zA-Z_]* +\bmastodon\.[-a-z.]*/(?:media/|@)[?&=0-9a-zA-Z_]* # scastie \bscastie\.scala-lang\.org/[^/]+/\w+ @@ -359,22 +384,33 @@ ipfs://[0-9a-z]* # tinyurl \btinyurl\.com/\w+ +# codepen +\bcodepen\.io/[\w/]+ + +# registry.npmjs.org +\bregistry\.npmjs\.org/(?:@[^/"']+/|)[^/"']+/-/[-\w@.]+ + # getopts \bgetopts\s+(?:"[^"]+"|'[^']+') # ANSI color codes -(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m +(?:\\(?:u00|x)1[Bb]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+|)m # URL escaped characters -\%[0-9A-F][A-F] +%[0-9A-F][A-F](?=[A-Za-z]) +# lower URL escaped characters +%[0-9a-f][a-f](?=[a-z]{2,}) # IPv6 -\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b +#\b(?:[0-9a-fA-F]{0,4}:){3,7}[0-9a-fA-F]{0,4}\b + # c99 hex digits (not the full format, just one I've seen) 0x[0-9a-fA-F](?:\.[0-9a-fA-F]*|)[pP] +# Punycode +\bxn--[-0-9a-z]+ # sha -sha\d+:[0-9]*[a-f]{3,}[0-9a-f]* +sha\d+:[0-9a-f]*?[a-f]{3,}[0-9a-f]* # sha-... -- uses a fancy capture -(['"]|")[0-9a-f]{40,}\g{-1} +(\\?['"]|")[0-9a-f]{40,}\g{-1} # hex runs \b[0-9a-fA-F]{16,}\b # hex in url queries @@ -389,18 +425,24 @@ sha\d+:[0-9]*[a-f]{3,}[0-9a-f]* # Well known gpg keys .well-known/openpgpkey/[\w./]+ +# pki +-----BEGIN.*-----END + +# pki (base64) +LS0tLS1CRUdJT.* + # uuid: \b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b # hex digits including css/html color classes: -(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|u\d+)\b +(?:[\\0][xX]|\\u|[uU]\+|#x?|%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b # integrity -integrity="sha\d+-[-a-zA-Z=;:/0-9+]{40,}" +integrity=(['"])(?:\s*sha\d+-[-a-zA-Z=;:/0-9+]{40,})+\g{-1} # https://www.gnu.org/software/groff/manual/groff.html # man troff content \\f[BCIPR] -# ' -\\\(aq +# '/" +\\\([ad]q # .desktop mime types ^MimeTypes?=.*$ @@ -409,46 +451,119 @@ integrity="sha\d+-[-a-zA-Z=;:/0-9+]{40,}" # Localized .desktop content Name\[[^\]]+\]=.* -# IServiceProvider -\bI(?=(?:[A-Z][a-z]{2,})+\b) +# IServiceProvider / isAThing +(?:\b|_)(?:(?:ns|)I|isA)(?=(?:[A-Z][a-z]{2,})+(?:[A-Z\d]|\b)) # crypt -"\$2[ayb]\$.{56}" +(['"])\$2[ayb]\$.{56}\g{-1} + +# apache/old crypt +#(['"]|)\$+(?:apr|)1\$+.{8}\$+.{22}\g{-1} + +# sha1 hash +\{SHA\}[-a-zA-Z=;:/0-9+]{3,} + +# machine learning (?) +\b(?i)ml(?=[a-z]{2,}) + +# python +\b(?i)py(?!gments|gmy|lon|ramid|ro|th)(?=[a-z]{2,}) # scrypt / argon \$(?:scrypt|argon\d+[di]*)\$\S+ -# Input to GitHub JSON -content: "[-a-zA-Z=;:/0-9+]*=" +# go.sum +\bh1:\S+ + +# scala imports +^import (?:[\w.]|\{\w*?(?:,\s*(?:\w*|\*))+\})+ + +# scala modules +("[^"]+"\s*%%?\s*){2,3}"[^"]+" + +# container images +image: [-\w./:@]+ + +# Docker images +^\s*FROM\s+\S+:\S+(?:\s+AS\s+\S+|) -# Python stringprefix / binaryprefix +# `docker images` REPOSITORY TAG IMAGE ID CREATED SIZE +\s*\S+/\S+\s+\S+\s+[0-9a-f]{8,}\s+\d+\s+(?:hour|day|week)s ago\s+[\d.]+[KMGT]B + +# Intel intrinsics +_mm_(?!dd)\w+ + +# Input to GitHub JSON +content: (['"])[-a-zA-Z=;:/0-9+]*=\g{-1} + +# This does not cover multiline strings, if your repository has them, +# you'll want to remove the `(?=.*?")` suffix. +# The `(?=.*?")` suffix should limit the false positives rate +# printf +#%(?:(?:(?:hh?|ll?|[jzt])?[diuoxn]|l?[cs]|L?[fega]|p)(?=[a-z]{2,})|(?:X|L?[FEGA])(?=[a-zA-Z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%)\b)(?=.*?['"]) +# Alternative printf +# %s +%(?:s(?=[a-z]{2,}))(?!%)(?=[_a-zA-Z]+(?!%[^s])\b)(?=.*?['"]) + +# Python string prefix / binary prefix # Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings -(?|m([|!/@#,;']).*?\g{-1}) + +# perl qr regex +(?|\(.*?\)|([|!/@#,;']).*?\g{-1}) + +# perl run +perl(?:\s+-[a-zA-Z]\w*)+ + +# C network byte conversions +(?:\d|\bh)to(?!ken)(?=[a-z])|to(?=[adhiklpun]\() # Go regular expressions regexp?\.MustCompile\(`[^`]*`\) +# regex choice +\(\?:[^)]+\|[^)]+\) + +# proto +^\s*(\w+)\s\g{-1} = + # sed regular expressions sed 's/(?:[^/]*?[a-zA-Z]{3,}[^/]*?/){2} +# node packages +(["'])@[^/'" ]+/[^/'" ]+\g{-1} + # go install go install(?:\s+[a-z]+\.[-@\w/.]+)+ +# pom.xml +<(?:group|artifact)Id>.*?< + +# jetbrains schema https://youtrack.jetbrains.com/issue/RSRP-489571 +urn:shemas-jetbrains-com + +# Debian changelog severity +[-\w]+ \(.*\) (?:\w+|baseline|unstable|experimental); urgency=(?:low|medium|high|emergency|critical)\b + # kubernetes pod status lists # https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase \w+(?:-\w+)+\s+\d+/\d+\s+(?:Running|Pending|Succeeded|Failed|Unknown)\s+ @@ -456,66 +571,178 @@ go install(?:\s+[a-z]+\.[-@\w/.]+)+ # kubectl - pods in CrashLoopBackOff \w+-[0-9a-f]+-\w+\s+\d+/\d+\s+CrashLoopBackOff\s+ +# kubernetes applications +\.apps/[-\w]+ + # kubernetes object suffix -[0-9a-f]{10}-\w{5}\s +# kubernetes crd patterns +^\s*pattern: .*$ + # posthog secrets -posthog\.init\((['"])phc_[^"',]+\g{-1}, +([`'"])phc_[^"',]+\g{-1} # xcode # xcodeproject scenes -(?:Controller|ID|id)="\w{3}-\w{2}-\w{3}" +(?:Controller|destination|ID|id)="\w{3}-\w{2}-\w{3}" # xcode api botches customObjectInstantitationMethod +# msvc api botches +PrependWithABINamepsace + +# configure flags +.* \| --\w{2,}.*?(?=\w+\s\w+) + # font awesome classes \.fa-[-a-z0-9]+ +# bearer auth +(['"])[Bb]ear[e][r] .*?\g{-1} + +# bearer auth +\b[Bb]ear[e][r]:? [-a-zA-Z=;:/0-9+.]+ + +# basic auth +(['"])[Bb]asic [-a-zA-Z=;:/0-9+]{3,}\g{-1} + +# base64 encoded content +#([`'"])[-a-zA-Z=;:/0-9+]{3,}=\g{-1} +# base64 encoded content in xml/sgml +>[-a-zA-Z=;:/0-9+]{3,}== 0.0.22) +\\\w{2,}\{ + +# American Mathematical Society (AMS) / Doxygen +TeX/AMS + +# File extensions +\*\.[+\w]+, + +# eslint +"varsIgnorePattern": ".+" + +# nolint +nolint:\w+ + +# Windows short paths +[/\\][^/\\]{5,6}~\d{1,2}(?=[/\\]) + +# cygwin paths +/cygdrive/[a-zA-Z]/(?:Program Files(?: \(.*?\)| ?)(?:/[-+.~\\/()\w ]+)*|[-+.~\\/()\w])+ + +# in check-spelling@v0.0.22+, printf markers aren't automatically consumed +# printf markers +#(?v# (?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_])) -# Compiler flags (Scala) -(?:^|[\t ,>"'`=(])-J-[DPWXY](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}) -# Compiler flags -#(?:^|[\t ,"'`=(])-[DPWXYLlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}) + +# Compiler flags (Unix, Java/Scala) +# Use if you have things like `-Pdocker` and want to treat them as `docker` +#(?:^|[\t ,>"'`=(])-(?:(?:J-|)[DPWXY]|[Llf])(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}) + +# Compiler flags (Windows / PowerShell) +# This is a subset of the more general compiler flags pattern. +# It avoids matching `-Path` to prevent it from being treated as `ath` +#(?:^|[\t ,"'`=(])-(?:[DPL](?=[A-Z]{2,})|[WXYlf](?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,})) # Compiler flags (linker) ,-B + +# libraries +#(?:\b|_)lib(?:re(?=office)|)(?!era[lt]|ero|erty|rar(?:i(?:an|es)|y))(?=[a-z]) + +# WWNN/WWPN (NAA identifiers) +\b(?:0x)?10[0-9a-f]{14}\b|\b(?:0x|3)?[25][0-9a-f]{15}\b|\b(?:0x|3)?6[0-9a-f]{31}\b + +# iSCSI iqn (approximate regex) +\biqn\.[0-9]{4}-[0-9]{2}(?:[\.-][a-z][a-z0-9]*)*\b + # curl arguments -\b(?:\\n|)curl(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)* +\b(?:\\n|)curl(?:\.exe|)(?:\s+-[a-zA-Z]{1,2}\b)*(?:\s+-[a-zA-Z]{3,})(?:\s+-[a-zA-Z]+)* # set arguments -\bset(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)* +\b(?:bash|sh|set)(?:\s+-[abefimouxE]{1,2})*\s+-[abefimouxE]{3,}(?:\s+-[abefimouxE]+)* # tar arguments \b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+ # tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long... \btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b # macOS temp folders /var/folders/\w\w/[+\w]+/(?:T|-Caches-)/ +# github runner temp folders +/home/runner/work/_temp/[-_/a-z0-9]+ diff --git a/.github/actions/spelling/excludes.txt b/.github/actions/spelling/excludes.txt index 441d1f295ca..896211b8f17 100644 --- a/.github/actions/spelling/excludes.txt +++ b/.github/actions/spelling/excludes.txt @@ -1,23 +1,31 @@ # See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes -(?:(?i)\.png$) (?:^|/)(?i)COPYRIGHT (?:^|/)(?i)LICEN[CS]E +(?:^|/)(?i)third[-_]?party/ (?:^|/)3rdparty/ (?:^|/)dirs$ -(?:^|/)go\.mod$ +(?:^|/)generated/ (?:^|/)go\.sum$ (?:^|/)package(?:-lock|)\.json$ +(?:^|/)Pipfile$ +(?:^|/)pyproject.toml +(?:^|/)requirements(?:-dev|-doc|-test|)\.txt$ (?:^|/)sources(?:|\.dep)$ (?:^|/)vendor/ +(?:^|/|\b)requirements(?:-dev|-doc|-test|)\.txt$ +ignore$ +Resources/(?!en) +[^/]\.vsdx$ \.a$ \.ai$ +\.all-contributorsrc$ \.avi$ \.bmp$ \.bz2$ -\.cer$ +\.cert?$|\.crt$ \.class$ +\.coveragerc$ \.crl$ -\.crt$ \.csr$ \.dll$ \.docx?$ @@ -27,75 +35,71 @@ \.eps$ \.exe$ \.gif$ +\.git-blame-ignore-revs$ \.gitattributes$ +\.gitkeep$ \.graffle$ \.gz$ \.icns$ \.ico$ +\.ipynb$ \.jar$ \.jks$ -\.jpeg$ -\.jpg$ +\.jpe?g$ \.key$ \.lib$ \.lock$ \.map$ \.min\.. +\.mo$ \.mod$ -\.mp3$ -\.mp4$ +\.mp[34]$ \.o$ \.ocf$ \.otf$ +\.p12$ +\.parquet$ \.pbxproj$ \.pdf$ \.pem$ +\.pfx$ \.png$ \.psd$ \.pyc$ +\.pylintrc$ +\.qm$ \.runsettings$ \.s$ \.sig$ \.so$ -\.svg$ -\.svgz$ \.svgz?$ +\.sys$ \.tar$ \.tgz$ \.tiff?$ \.ttf$ +\.vcxproj\.filters$ \.vsdx$ \.wav$ \.webm$ \.webp$ \.woff -\.woff2?$ \.xcf$ -\.xls \.xlsx?$ \.xpm$ -\.yml$ +\.xz$ \.zip$ -^\.github/actions/spelling/ -^\.github/fabricbot.json$ -^\.gitignore$ -^\Q.git-blame-ignore-revs\E$ -^\Q.github/workflows/spelling.yml\E$ -^\Qdoc/reference/windows-terminal-logo.ans\E$ -^\Qsamples/ConPTY/EchoCon/EchoCon/EchoCon.vcxproj.filters\E$ -^\Qsrc/host/exe/Host.EXE.vcxproj.filters\E$ -^\Qsrc/host/ft_host/chafa.txt\E$ -^\Qsrc/tools/closetest/CloseTest.vcxproj.filters\E$ -^\XamlStyler.json$ ^build/config/ +^build/StoreSubmission/ ^consolegit2gitfilters\.json$ ^dep/ -^doc/reference/master-sequence-list.csv$ +^doc/reference/master-sequence-list\.csv$ ^doc/reference/UTF8-torture-test\.txt$ +^doc/reference/windows-terminal-logo\.ans$ +^NOTICE.md ^oss/ -^src/host/ft_uia/run\.bat$ -^src/host/runft\.bat$ -^src/host/runut\.bat$ +^samples/PixelShaders/Screenshots/ +^src/cascadia/TerminalSettingsEditor/SegoeFluentIconList.h$ ^src/interactivity/onecore/BgfxEngine\. ^src/renderer/atlas/ ^src/renderer/wddmcon/WddmConRenderer\. @@ -107,14 +111,25 @@ ^src/terminal/parser/ut_parser/Base64Test.cpp$ ^src/terminal/parser/ut_parser/run\.bat$ ^src/tools/benchcat +^src/tools/ConsoleBench ^src/tools/integrity/packageuwp/ConsoleUWP\.appxSources$ -^src/tools/lnkd/lnkd\.bat$ -^src/tools/pixels/pixels\.bat$ -^src/tools/RenderingTests/main.cpp$ +^src/tools/RenderingTests/main\.cpp$ ^src/tools/texttests/fira\.txt$ -^src/tools/U8U16Test/(?:fr|ru|zh)\.txt$ -^src/types/ColorFix.cpp -^src/types/ut_types/UtilsTests.cpp$ -^tools/ReleaseEngineering/ServicingPipeline.ps1$ -ignore$ -SUMS$ +^src/tools/U8U16Test/(?!en)..\. +^src/types/ColorFix\.cpp$ +^src/types/ut_types/UtilsTests\.cpp$ +^tools/ReleaseEngineering/ServicingPipeline\.ps1$ +^XamlStyler\.json$ +^\.github/actions/spelling/ +^\.vsconfig$ +^\Q.github/workflows/spelling.yml\E$ +^\Qbuild/config/release.gdnbaselines\E$ +^\Qdep/WinAppDriver/EULA.rtf\E$ +^\Qdoc/reference/windows-terminal-logo.ans\E$ +^\Qsrc/host/ft_host/chafa.txt\E$ +^\Qsrc/host/ft_uia/run.bat\E$ +^\Qsrc/host/runft.bat\E$ +^\Qsrc/terminal/parser/ft_fuzzer/run.bat\E$ +^\Qsrc/terminal/parser/ft_fuzzwrapper/run.bat\E$ +^\Qsrc/tools/lnkd/lnkd.bat\E$ +^\Qsrc/tools/pixels/pixels.bat\E$ diff --git a/.github/actions/spelling/expect/alphabet.txt b/.github/actions/spelling/expect/alphabet.txt index 97180b72115..1ff5611c38b 100644 --- a/.github/actions/spelling/expect/alphabet.txt +++ b/.github/actions/spelling/expect/alphabet.txt @@ -1,28 +1,22 @@ -AAAa -AAAAA -AAAAAAAAAAAAA AAAAAABBBBBBCCC AAAAABBBBBBCCC abcd -abcd ABCDEFGHIJ abcdefghijk -ABCDEFGHIJKLMNO -abcdefghijklmnop ABCDEFGHIJKLMNOPQRS ABCDEFGHIJKLMNOPQRST +ABCDEFGHIJKLMNOPQRSTUVWXY ABCG ABE abf BBBBB -BBBBBBBB BBBBBCCC BBBBCCCCC BBGGRR -efg EFG -efgh +efg EFGh +efgh KLMNOQQQQQQQQQQ QQQQQQQQQQABCDEFGHIJ QQQQQQQQQQABCDEFGHIJKLMNOPQRS @@ -30,10 +24,8 @@ QQQQQQQQQQABCDEFGHIJKLMNOPQRSTQQQQQQQQQ QQQQQQQQQQABCDEFGHIJKLMNOPQRSTQQQQQQQQQQ QQQQQQQQQQABCDEFGHIJPQRST QQQQQQQQQQABCDEFGHIJPQRSTQQQQQQQQQQ -qrstuvwxyz qwerty qwertyuiopasdfg -YYYYYYYDDDDDDDDDDD ZAAZZ ZABBZ ZBAZZ diff --git a/.github/actions/spelling/expect/expect.txt b/.github/actions/spelling/expect/expect.txt index f38eddb9d3f..e78cb971395 100644 --- a/.github/actions/spelling/expect/expect.txt +++ b/.github/actions/spelling/expect/expect.txt @@ -1,26 +1,26 @@ +aaaaabbb aabbcc -aarch ABANDONFONT abbcc -ABCDEFGHIJKLMNOPQRSTUVWXY ABCF abgr -abi ABORTIFHUNG +ACCESSTOKEN acidev ACIOSS -ACover +acp actctx ACTCTXW -activatable ADDALIAS ADDREF ADDSTRING ADDTOOL -AFew +adml +admx AFill AFX AHelper +ahicon ahz AImpl AInplace @@ -32,12 +32,13 @@ ALTERNATENAME ALTF ALTNUMPAD ALWAYSTIP -amd +aml ansicpg ANSISYS ANSISYSRC ANSISYSSC answerback +ANSWERBACKMESSAGE antialiasing ANull anycpu @@ -50,33 +51,32 @@ APPBARDATA appcontainer appium appletname -applets applicationmodel APPLMODAL +Applocal appmodel APPWINDOW +APPXMANIFESTVERSION APrep apsect APSTUDIO archeologists -argb +Argb ARRAYSIZE ARROWKEYS asan ASBSET -ASDF -asdfghjkl ASetting ASingle -asmx +ASYNCDONTCARE ASYNCWINDOWPOS atch ATest -ATTRCOLOR aumid Authenticode AUTOBUDDY AUTOCHECKBOX +autocrlf autohide AUTOHSCROLL automagically @@ -85,17 +85,17 @@ AUTORADIOBUTTON autoscrolling Autowrap AVerify -AVX awch -azzle +azurecr +AZZ backgrounded Backgrounder backgrounding backported backstory -barbaz -Batang Bazz +bbb +bbccb BBDM bbwe bcount @@ -107,29 +107,29 @@ benchcat bgfx bgidx Bgk -BGR bgra BHID bigobj +binlog binplace binplaced +binskim bitcoin bitcrazed -bitmask +BITMAPINFO +BITMAPINFOHEADER +bitmasks BITOPERATION BKCOLOR BKGND Bksp Blt +blu BLUESCROLL +bmi BODGY BOLDFONT -BOOLIFY -bools -Bopomofo Borland -BOTTOMLEFT -BOTTOMRIGHT boutput boxheader BPBF @@ -139,18 +139,18 @@ branchconfig brandings Browsable Bspace -bstr BTNFACE bufferout buffersize buflen +buildsystems buildtransitive -burriter BValue bytebuffer cac cacafire CALLCONV +CANDRABINDU capslock CARETBLINKINGENABLED CARRIAGERETURN @@ -160,22 +160,19 @@ cazamor CBash cbiex CBN -CBoolean cbt -cbuffer +Ccc CCCBB +CCCDDD cch CCHAR -cci CCmd ccolor CCom -CComp CConsole -CConversion CCRT cdd -CEdit +cds CELLSIZE cfae cfie @@ -184,69 +181,57 @@ cfte CFuzz cgscrn chafa -changelist -chaof -charinfo +changelists CHARSETINFO -chcbpat chh -chk chshdng CHT -Cic -cielab -Cielab +CLASSSTRING CLE cleartype CLICKACTIVE clickdown +CLIENTID clipbrd CLIPCHILDREN CLIPSIBLINGS closetest cloudconsole -cls +cloudvault CLSCTX clsids -CLUSTERMAP cmatrix cmder CMDEXT cmh CMOUSEBUTTONS -cmt +Cmts cmw -cmyk CNL cnn -cnt -CNTRL Codeflow -codepage +codenav +codepages codepath -codepoints coinit colorizing -COLORMATRIX +COLORONCOLOR COLORREFs colorschemes -colorspaces colorspec colortable colortbl colortest colortool -COLR +COLORVALUE combaseapi comctl -COMDAT commandline commctrl commdlg COMMITID componentization conapi -conareainfo conattrs conbufferout concfg @@ -256,10 +241,8 @@ conddkrefs condrv conechokey conemu -configurability conhost -conime -conimeinfo +CONIME conintegrity conintegrityuwp coninteractivitybase @@ -271,6 +254,7 @@ CONKBD conlibk conmsgl CONNECTINFO +connyection CONOUT conprops conpropsp @@ -284,7 +268,6 @@ consolegit consolehost CONSOLEIME consoleinternal -Consoleroot CONSOLESETFOREGROUND consoletaeftemplates consoleuwp @@ -297,10 +280,11 @@ contentfiles conterm contsf contypes -convarea conwinuserrefs coordnew COPYCOLOR +COPYDATA +COPYDATASTRUCT CORESYSTEM cotaskmem countof @@ -313,16 +297,13 @@ CPPCORECHECK cppcorecheckrules cpprestsdk cppwinrt -CProc cpx CREATESCREENBUFFER CREATESTRUCT CREATESTRUCTW -cred +createvpack crisman -CRLFs crloew -Crt CRTLIBS csbi csbiex @@ -334,17 +315,16 @@ csrutil CSTYLE CSwitch CTerminal -CText ctl ctlseqs CTRLEVENT CTRLFREQUENCY CTRLKEYSHORTCUTS +Ctrls CTRLVOLUME -Ctxt +CUAS CUF cupxy -curlyline CURRENTFONT currentmode CURRENTPAGE @@ -366,6 +346,7 @@ CXVIRTUALSCREEN CXVSCROLL CYFRAME CYFULLSCREEN +cygdrive CYHSCROLL CYMIN CYPADDEDBORDER @@ -379,21 +360,18 @@ DATABLOCK DBatch dbcs DBCSFONT -dbg DBGALL DBGCHARS DBGFONTS DBGOUTPUT dbh dblclk -DBlob +Dcd DColor -DCOLORVALUE dcommon -dcompile -dcompiler DComposition dde +DDDCCC DDESHARE DDevice DEADCHAR @@ -405,7 +383,7 @@ DECALN DECANM DECARM DECAUPSS -DECAWM +decawm DECBI DECBKM DECCARA @@ -413,7 +391,7 @@ DECCIR DECCKM DECCKSR DECCOLM -DECCRA +deccra DECCTR DECDC DECDHL @@ -424,7 +402,13 @@ DECECM DECEKBD DECERA DECFI -DECFRA +DECFNK +decfra +DECGCI +DECGCR +DECGNL +DECGRA +DECGRI DECIC DECID DECINVM @@ -437,27 +421,31 @@ DECNKM DECNRCM DECOM decommit +DECPCCM DECPCTERM DECPS DECRARA -DECRC +decrc DECREQTPARM DECRLM DECRPM DECRQCRA +DECRQDE DECRQM DECRQPSR DECRQSS DECRQTSR +DECRQUPSS DECRSPS decrst DECSACE DECSASD -DECSC +decsc DECSCA DECSCNM DECSCPP DECSCUSR +DECSDM DECSED DECSEL DECSERA @@ -466,17 +454,18 @@ DECSLPP DECSLRM DECSMKR DECSR +DECST DECSTBM DECSTGLT DECSTR DECSWL +DECSWT DECTABSR DECTCEM DECXCPR DEFAPP DEFAULTBACKGROUND DEFAULTFOREGROUND -defaultsettings DEFAULTTONEAREST DEFAULTTONULL DEFAULTTOPRIMARY @@ -489,12 +478,10 @@ DEFPUSHBUTTON defterm DELAYLOAD DELETEONRELEASE -Delt depersist deprioritized deserializers desktopwindowxamlsource -DESTINATIONNAME devicecode Dext DFactory @@ -504,17 +491,16 @@ directio DIRECTX DISABLEDELAYEDEXPANSION DISABLENOSCROLL +DISPATCHNOTIFY DISPLAYATTRIBUTE -DISPLAYATTRIBUTEPROPERTY DISPLAYCHANGE -distro +distros dlg DLGC DLLGETVERSIONPROC dllinit dllmain DLLVERSIONINFO -DLOAD DLOOK DONTCARE doskey @@ -543,6 +529,7 @@ dsound DSSCL DSwap DTest +DTo DTTERM dup'ed dvi @@ -554,7 +541,6 @@ DWORDs dwrite dxgi dxgidwm -dxguid dxinterop dxsm dxttbmp @@ -564,36 +550,33 @@ ECH echokey ecount ECpp -ect Edgium EDITKEYS EDITTEXT EDITUPDATE -edputil Efast efghijklmn EHsc EINS -EJO ELEMENTNOTAVAILABLE -elems -emacs EMPTYBOX enabledelayedexpansion ENDCAP endptr -endregion ENTIREBUFFER entrypoints ENU ENUMLOGFONT ENUMLOGFONTEX -enumranges +EOB EOK -eplace EPres EQU ERASEBKGND +ERRORONEXIT +ESFCIB +esrp +ESV ETW EUDC EVENTID @@ -607,7 +590,6 @@ EXETYPE exeuwp exewin exitwin -expectedinput EXPUNGECOMMANDHISTORY EXSTYLE EXTENDEDEDITKEY @@ -625,8 +607,10 @@ FECF FEEF fesb FFAF +ffd FFDE -FFrom +FFFD +FFFDb fgbg FGCOLOR FGHIJ @@ -642,13 +626,13 @@ FILTERONPASTE FINDCASE FINDDLG FINDDOWN +FINDREGEX FINDSTRINGEXACT FINDUP -FIter -FIXEDCONVERTED +FITZPATRICK FIXEDFILEINFO Flg -flyout +flyouts fmodern fmtarg fmtid @@ -658,27 +642,20 @@ fontdlg FONTENUMDATA FONTENUMPROC FONTFACE -FONTFAMILY FONTHEIGHT fontinfo FONTOK -FONTSIZE FONTSTRING -fonttbl FONTTYPE -FONTWEIGHT FONTWIDTH FONTWINDOW -fooo FORCEOFFFEEDBACK FORCEONFEEDBACK -framebuffer FRAMECHANGED fre frontends fsanitize Fscreen -FSCTL FSINFOCLASS fte Ftm @@ -692,12 +669,12 @@ fuzzwrapper fwdecl fwe fwlink -GAUSSIAN gci gcx gdi gdip gdirenderer +gdnbaselines Geddy geopol GETALIAS @@ -707,7 +684,6 @@ GETALIASEXES GETALIASEXESLENGTH GETAUTOHIDEBAREX GETCARETWIDTH -getch GETCLIENTAREAANIMATION GETCOMMANDHISTORY GETCOMMANDHISTORYLENGTH @@ -723,7 +699,6 @@ GETDISPLAYSIZE GETDLGCODE GETDPISCALEDSIZE GETFONTINFO -GETFONTSIZE GETHARDWARESTATE GETHUNGAPPTIMEOUT GETICON @@ -738,7 +713,6 @@ GETMOUSEVANISH GETNUMBEROFFONTS GETNUMBEROFINPUTEVENTS GETOBJECT -GETPOS GETSELECTIONINFO getset GETTEXTLEN @@ -748,19 +722,19 @@ GETWAITTOKILLTIMEOUT GETWHEELSCROLLCHARACTERS GETWHEELSCROLLCHARS GETWHEELSCROLLLINES -GFEh Gfun gfx GGI +GHgh GHIJK GHIJKL +gitcheckin gitfilters -gitmodules +gitlab gle GLOBALFOCUS GLYPHENTRY GMEM -GNUC Goldmine gonce goutput @@ -768,13 +742,10 @@ GREENSCROLL Grehan Greyscale gridline -groupbox gset gsl -GTP -GTR guc -guidatom +GUIDATOM GValue GWL GWLP @@ -783,6 +754,7 @@ HABCDEF Hackathon HALTCOND HANGEUL +hardlinks hashalg HASSTRINGS hbitmap @@ -797,6 +769,7 @@ hdr HDROP hdrstop HEIGHTSCROLL +hfind hfont hfontresource hglobal @@ -815,6 +788,7 @@ HIWORD HKCU hkey hkl +HKLM hlocal hlsl HMB @@ -823,21 +797,16 @@ hmod hmodule hmon homoglyph -HORZ hostable hostlib HPA hpcon -HPCON hpen -hpj HPR HProvider HREDRAW hresult -hrottled hscroll -hsl hstr hstring HTBOTTOMLEFT @@ -847,7 +816,6 @@ HTCLIENT HTLEFT HTMAXBUTTON HTMINBUTTON -HTMLTo HTRIGHT HTTOP HTTOPLEFT @@ -858,11 +826,8 @@ hwheel hwnd HWNDPARENT iccex -icket ICONERROR -Iconified ICONINFORMATION -IConsole ICONSTOP ICONWARNING IDCANCEL @@ -873,39 +838,35 @@ idllib IDOK IDR idth -idx +IDTo IDXGI -IEnd -IEnum IFACEMETHODIMP ification -IGNOREEND IGNORELANGUAGE -IHosted iid +IInput IIo +ILC +ILCo +ILD ime -Imm IMPEXP inbox inclusivity INCONTEXT INFOEX inheritcursor -inheritdoc -inheritfrom INITCOMMONCONTROLSEX INITDIALOG initguid INITMENU inkscape INLINEPREFIX -inlines inproc Inputkeyinfo -INPUTPROCESSORPROFILE -inputrc +inputpaneinterop Inputreadhandledata +INPUTSCOPE INSERTMODE INTERACTIVITYBASE INTERCEPTCOPYPASTE @@ -914,17 +875,11 @@ Interner intsafe INVALIDARG INVALIDATERECT -ioctl +Ioctl ipch -ipp -IProperty -IPSINK ipsp -IShell -ISwap iterm itermcolors -ITerminal itf Ith IUI @@ -935,35 +890,32 @@ IXP jconcpp JOBOBJECT JOBOBJECTINFOCLASS -jpe +JONGSEONG JPN jsoncpp -Jsons jsprovider jumplist +JUNGSEONG KAttrs kawa Kazu kazum -kcub -kcud -kcuf -kcuu kernelbase kernelbasestaging KEYBDINPUT keychord -keydown +keydowns KEYFIRST KEYLAST Keymapping keyscan keystate -keyup -khome +keyups +Kickstart KILLACTIVE KILLFOCUS kinda +KIYEOK KLF KLMNO KLMNOPQRST @@ -973,6 +925,7 @@ KLMNOPQRSTY KOK KPRIORITY KVM +kyouhaishaheiku langid LANGUAGELIST lasterror @@ -990,9 +943,6 @@ LCONTROL LCTRL lcx LEFTALIGN -libpopcnt -libsancov -libtickit LIMITTEXT LINEDOWN LINESELECTION @@ -1005,7 +955,6 @@ listptrsize lld llx LMENU -lnk lnkd lnkfile LNM @@ -1022,7 +971,6 @@ logissue losslessly loword lparam -LPCCH lpch LPCPLINFO LPCREATESTRUCT @@ -1036,7 +984,6 @@ lpdw lpelfe lpfn LPFNADDPROPSHEETPAGE -lpl LPMEASUREITEMSTRUCT LPMINMAXINFO lpmsg @@ -1063,17 +1010,17 @@ lpwstr LRESULT lsb lsconfig -lss lstatus lstrcmp lstrcmpi LTEXT -LTLTLTLTL +ltsc LUID luma lval LVB LVERTICAL +LVT LWA LWIN lwkmvj @@ -1089,7 +1036,6 @@ MAPBITMAP MAPVIRTUALKEY MAPVK MAXDIMENSTRING -maxing MAXSHORT maxval maxversiontested @@ -1099,7 +1045,6 @@ MBUTTON MBUTTONDBLCLK MBUTTONDOWN MBUTTONUP -Mbxy mdmerge MDs MEASUREITEM @@ -1113,6 +1058,8 @@ MENUITEMINFO MENUSELECT messageext metaproj +Mgrs +microsoftpublicsymbols midl mii MIIM @@ -1123,11 +1070,9 @@ minkernel MINMAXINFO minwin minwindef -Mip MMBB mmcc MMCPL -MMIX mmsystem MNC MNOPQ @@ -1141,12 +1086,13 @@ MONITORINFOF MOUSEACTIVATE MOUSEFIRST MOUSEHWHEEL -MOUSEMOVE MOVESTART msb +msbuildcache msctf msctls msdata +MSDL msft MSGCMDLINEF MSGF @@ -1160,21 +1106,17 @@ MSIL msix msrc MSVCRTD -msys MTSM -munged -munges +Munged murmurhash muxes myapplet +mybranch mydir -MYMAX Mypair Myval NAMELENGTH -nameof namestream -natvis NCCALCSIZE NCCREATE NCLBUTTONDOWN @@ -1187,6 +1129,8 @@ NCRBUTTONUP NCXBUTTONDOWN NCXBUTTONUP NEL +nerf +nerror netcoreapp netstandard NEWCPLINFO @@ -1211,6 +1155,8 @@ NOCONTEXTHELP NOCOPYBITS NODUP noexcepts +NOFONT +NOHIDDENTEXT NOINTEGRALHEIGHT NOINTERFACE NOLINKINFO @@ -1221,12 +1167,10 @@ NOMOVE NONALERT nonbreaking nonclient -NONCONST NONINFRINGEMENT NONPREROTATED nonspace NOOWNERZORDER -Nop NOPAINT noprofile NOREDRAW @@ -1236,6 +1180,7 @@ NORMALDISPLAY NOSCRATCH NOSEARCH noselect +NOSELECTION NOSENDCHANGING NOSIZE NOSNAPSHOT @@ -1248,9 +1193,9 @@ NOTRACK NOTSUPPORTED nouicompat nounihan -NOUPDATE NOYIELD NOZORDER +NPFS nrcs NSTATUS ntapi @@ -1262,38 +1207,35 @@ ntdll ntifs ntlpcapi ntm -nto ntrtl ntstatus -NTSYSCALLAPI nttree nturtl ntuser NTVDM ntverp nugetversions -nullability +NUKTA nullness nullonfailure nullopts numlock -numpad NUMSCROLL +NUnit nupkg NVIDIA +NVT OACR objbase ocolor -odl oemcp OEMFONT OEMFORMAT OEMs offboarded -oklab -Oklab OLEAUT OLECHAR +onebranch onecore ONECOREBASE ONECORESDKTOOLS @@ -1304,7 +1246,6 @@ onecoreuuid ONECOREWINDOWS onehalf oneseq -OOM openbash opencode opencon @@ -1317,22 +1258,21 @@ osc OSDEPENDSROOT OSG OSGENG -osign oss -otepad -ouicompat -OUnter outdir OUTOFCONTEXT Outptr outstr OVERLAPPEDWINDOW OWNDC +owneralias OWNERDRAWFIXED packagename packageuwp +PACKAGEVERSIONNUMBER PACKCOORD PACKVERSION +pacp pagedown pageup PAINTPARAMS @@ -1340,12 +1280,10 @@ PAINTSTRUCT PALPC pankaj parentable -parms -passthrough PATCOPY pathcch PATTERNID -pcat +pbstr pcb pcch PCCHAR @@ -1362,7 +1300,6 @@ PCONSOLEENDTASK PCONSOLESETFOREGROUND PCONSOLEWINDOWOWNER pcoord -pcs pcshell PCSHORT PCSR @@ -1370,9 +1307,10 @@ PCSTR PCWCH PCWCHAR PCWSTR -pda -Pdbs +pdbs pdbstr +pdcs +PDPs pdtobj pdw pdx @@ -1389,23 +1327,25 @@ PFONT PFONTENUMDATA PFS pgd -pgdn +pgomgr PGONu pguid -pgup phhook +phico +phicon phwnd pidl PIDLIST pids pii +piml +pimpl pinvoke pipename pipestr pixelheight PIXELSLIST PJOBOBJECT -pkey platforming playsound ploc @@ -1417,7 +1357,9 @@ PNMLINK pntm POBJECT Podcast +POINTERUPDATE POINTSLIST +policheck POLYTEXTW poppack POPUPATTR @@ -1428,10 +1370,11 @@ POSTCHARBREAKS POSX POSXSCROLL POSYSCROLL +ppbstr PPEB ppf -ppguid ppidl +pprg PPROC ppropvar ppsi @@ -1446,8 +1389,7 @@ prealigned prect prefast preflighting -prefs -prepopulated +prepopulate presorted PREVENTPINNING PREVIEWLABEL @@ -1459,9 +1401,11 @@ prioritization processenv processhost PROCESSINFOCLASS +PRODEXT +Productize PROPERTYID PROPERTYKEY -PROPERTYVAL +propertyval propsheet PROPSHEETHEADER PROPSHEETPAGE @@ -1490,20 +1434,20 @@ psr PSTR psz ptch -ptrs ptsz PTYIn PUCHAR +pvar pwch PWDDMCONSOLECONTEXT +Pwease +pweview pws pwstr pwsz pythonw Qaabbcc -qos QUERYOPEN -QUESTIONMARK quickedit QUZ QWER @@ -1523,9 +1467,7 @@ RBUTTONDBLCLK RBUTTONDOWN RBUTTONUP rcch -RCDATA rcelms -rcl rclsid RCOA RCOCA @@ -1538,12 +1480,9 @@ READCONSOLE READCONSOLEOUTPUT READCONSOLEOUTPUTSTRING READMODE -reallocs -reamapping -rects +rectread redef redefinable -Redir redist REDSCROLL REFCLSID @@ -1557,57 +1496,52 @@ REGSTR RELBINPATH remoting renamer -renderengine rendersize -reparent +reparented reparenting +REPH replatformed Replymessage +reportfileaccesses repositorypath -Requiresx rerasterize rescap -Resequence RESETCONTENT resheader resmimetype +resultmacros resw resx rfa rfid rftp -RGBCOLOR rgbi +RGBQUAD rgbs -rgci rgfae rgfte -rgi rgn rgp rgpwsz rgrc -rgs -rgui +rguid rgw RIGHTALIGN RIGHTBUTTON riid -Rike -RIS +ris roadmap robomac +rodata rosetta -roundtrips RRF +rrr RRRGGGBB rsas rtcore RTEXT -RTFTo RTLREADING Rtn -RTTI ruleset runas RUNDLL @@ -1625,16 +1559,15 @@ RVERTICAL rvpa RWIN rxvt -safearray safemath -sapi +sancov sba SBCS SBCSDBCS sbi sbiex -sbold -scancode +sbom +scancodes scanline schemename SCL @@ -1646,7 +1579,6 @@ screeninfo screenshots scriptload scrollback -scrollbars SCROLLFORWARD SCROLLINFO scrolllock @@ -1655,7 +1587,6 @@ SCROLLSCALE SCROLLSCREENBUFFER scursor sddl -sdeleted SDKDDK securityappcontainer segfault @@ -1664,10 +1595,10 @@ SELECTALL SELECTEDFONT SELECTSTRING Selfhosters +Serbo SERVERDLL SETACTIVE SETBUDDYINT -SETCOLOR setcp SETCURSEL SETCURSOR @@ -1675,7 +1606,6 @@ SETCURSORINFO SETCURSORPOSITION SETDISPLAYMODE SETFOCUS -SETFONT SETFOREGROUND SETHARDWARESTATE SETHOTKEY @@ -1693,6 +1623,7 @@ SETSCREENBUFFERSIZE SETSEL SETTEXTATTRIBUTE SETTINGCHANGE +setvariable Setwindow SETWINDOWINFO SFGAO @@ -1710,7 +1641,6 @@ shellscalingapi SHFILEINFO SHGFI SHIFTJIS -Shl shlguid shlobj shlwapi @@ -1726,7 +1656,7 @@ SHOWWINDOW sidebyside SIF SIGDN -SINGLEFLAG +Signtool SINGLETHREADED siup sixel @@ -1745,22 +1675,22 @@ slpit SManifest SMARTQUOTE SMTO -SND +snapcx +snapcy SOLIDBOX Solutiondir somefile sourced -spammy +SRCAND SRCCODEPAGE SRCCOPY SRCINVERT +SRCPAINT srcsrv SRCSRVTRG srctool srect -srgb -Srgb -srv +SRGS srvinit srvpipe ssa @@ -1773,8 +1703,6 @@ STARTUPINFOW STARTWPARMS STARTWPARMSA STARTWPARMSW -Statusline -stb stdafx STDAPI stdc @@ -1783,32 +1711,26 @@ STDEXT STDMETHODCALLTYPE STDMETHODIMP STGM -stl -Stri Stringable STRINGTABLE -strrev strsafe STUBHEAD STUVWX stylecop SUA subcompartment -subfolders -subkey +subkeys SUBLANG -subresource -subsystemconsole -subsystemwindows swapchain swapchainpanel -swappable SWMR SWP +swrapped SYMED SYNCPAINT syscalls SYSCHAR +SYSCOLOR SYSCOMMAND SYSDEADCHAR SYSKEYDOWN @@ -1820,6 +1742,7 @@ sysparams sysparamsext SYSTEMHAND SYSTEMMENU +SYSTEMTIME tabview TAdd taef @@ -1828,8 +1751,6 @@ targetentrypoint TARGETLIBS TARGETNAME targetver -taskbar -tbar TBase tbc tbi @@ -1838,8 +1759,8 @@ TBM tchar TCHFORMAT TCI -tcommandline tcommands +tdbuild Tdd TDelegated TDP @@ -1856,7 +1777,7 @@ terminfo TEs testcon testd -testenv +testenvs testlab testlist testmd @@ -1865,7 +1786,6 @@ TESTNULL testpass testpasses TEXCOORD -texel TExpected textattribute TEXTATTRIBUTEID @@ -1877,15 +1797,13 @@ TEXTMETRIC TEXTMETRICW textmode texttests -TFCAT -tfoo TFunction -tga THUMBPOSITION THUMBTRACK +tickit TIcon tilunittests -titlebar +titlebars TITLEISLINKNAME TJson TLambda @@ -1902,33 +1820,21 @@ toolbars TOOLINFO TOOLWINDOW TOPDOWNDIB -TOPLEFT -TOPRIGHT TOpt tosign touchpad -Tpp -Tpqrst -tprivapi -tput -tracelog tracelogging -traceloggingprovider traceviewpp trackbar -TRACKCOMPOSITION trackpad transitioning Trd TREX triaged triaging -TRIANGLESTRIP -Tribool TRIMZEROHEADINGS trx -tsattrs -tsf +tsa tsgr tsm TStr @@ -1937,15 +1843,10 @@ TSub TTBITMAP TTFONT TTFONTLIST -tthe -tthis TTM TTo tvpp -Txtev -typechecked -typelib -typeparam +tvtseq TYUI UAC uap @@ -1956,20 +1857,18 @@ ucd uch UChars udk -UDM uer UError -uget uia UIACCESS uiacore uiautomationcore uielem -UIELEMENTENABLEDONLY UINTs -ulcch -umul -umulh +uld +uldash +uldb +ulwave Unadvise unattend UNCPRIORITY @@ -1978,22 +1877,19 @@ unhighlighting unhosted UNICODETEXT UNICRT -uninitialize Unintense -Uniscribe unittesting unittests unk unknwn UNORM unparseable -unregistering +Unregistering untextured -untimes UPDATEDISPLAY UPDOWN UPKEY -UPSS +upss uregex URegular usebackq @@ -2006,7 +1902,6 @@ USEFILLATTRIBUTE USEGLYPHCHARS USEHICON USEPOSITION -userbase USERDATA userdpiapi Userp @@ -2018,23 +1913,18 @@ USESTDHANDLES usp USRDLL utext -UText -UTEXT utr UVWXY UVWXYZ uwa uwp +uwu uxtheme Vanara vararg vclib -vcpkg -vcprintf vcxitems -vec vectorize -vectorized VERCTRL VERTBAR VFT @@ -2042,22 +1932,25 @@ vga vgaoem viewkind viewports +VIRAMA Virt VIRTTERM vkey VKKEYSCAN VMs VPA +vpack +vpackdirectory +VPACKMANIFESTDIRECTORY VPR -VProc -VRaw VREDRAW vsc -vsconfig vscprintf VSCROLL vsdevshell +vse vsinfo +vsinstalldir vso vspath VSTAMP @@ -2065,21 +1958,16 @@ vstest VSTS VSTT vswhere -vtapi vtapp VTE VTID -vtio vtmode vtpipeterm -vtpt -vtrenderer VTRGB VTRGBTo vtseq vtterm vttest -waitable WANSUNG WANTARROWS WANTTAB @@ -2090,10 +1978,10 @@ wch wchars WCIA WCIW +wcs WCSHELPER -wcsicmp -wcsnicmp wcsrev +wcswidth wddm wddmcon WDDMCONSOLECONTEXT @@ -2101,6 +1989,7 @@ wdm webpage websites wekyb +wewoad wex wextest wextestclass @@ -2110,6 +1999,7 @@ WHelper wic WIDTHSCROLL Widthx +Wiggum wil WImpl WINAPI @@ -2125,12 +2015,12 @@ wincontypes WINCORE windbg WINDEF +windir windll WINDOWALPHA windowdpiapi WINDOWEDGE windowext -windowime WINDOWINFO windowio windowmetrics @@ -2147,29 +2037,28 @@ windowsshell windowsterminal windowsx windowtheme -WINDOWTITLE winevent wingdi winget +wingetcreate WINIDE winioctl winmd winmeta winmgr winmm +WINMSAPP winnt Winperf WInplace winres winrt -wintelnet winternl winuser winuserp WINVER wistd wmain -wmemory WMSZ wnd WNDALLOC @@ -2180,20 +2069,22 @@ WNDCLASSW Wndproc WNegative WNull -wnwb +wordi +wordiswrapped workarea -workaround WOutside WOWARM WOWx wparam WPartial wpf +wpfdotnet WPR WPrep WPresent wprp wprpi +wrappe wregex writeback WRITECONSOLE @@ -2204,7 +2095,6 @@ wrkstr wrl wrp WRunoff -WScript wsl WSLENV wstr @@ -2215,12 +2105,10 @@ WTest WTEXT WTo wtof -wtoi WTs WTSOFTFONT wtw wtypes -Wubi WUX WVerify WWith @@ -2239,27 +2127,25 @@ XBUTTONDOWN XBUTTONUP XCast XCENTER -XColors +xchar xcopy XCount xdy XEncoding xes -xff +XFG XFile XFORM -xin -xinchaof -xinxinchaof +XIn XManifest XMath -XMFLOAT +XNamespace xorg +XPan XResource xsi xstyler XSubstantial -xtended XTest XTPOPSGR XTPUSHSGR @@ -2268,23 +2154,22 @@ XTWINOPS xunit xutr XVIRTUALSCREEN -XWalk yact YCast YCENTER YCount -YDPI +yizz YLimit -YOffset +YPan YSubstantial YVIRTUALSCREEN -YWalk Zab zabcd Zabcdefghijklmn Zabcdefghijklmnopqrstuvwxyz ZCmd ZCtrl -zxcvbnm +ZWJs ZYXWVU ZYXWVUTd +zzf diff --git a/.github/actions/spelling/expect/web.txt b/.github/actions/spelling/expect/web.txt index 8f5b59ac730..39e8cc78d55 100644 --- a/.github/actions/spelling/expect/web.txt +++ b/.github/actions/spelling/expect/web.txt @@ -1,4 +1,3 @@ -WCAG winui appshellintegration mdtauk diff --git a/.github/actions/spelling/line_forbidden.patterns b/.github/actions/spelling/line_forbidden.patterns index 31ad2ddcd26..5617a8af5f7 100644 --- a/.github/actions/spelling/line_forbidden.patterns +++ b/.github/actions/spelling/line_forbidden.patterns @@ -1,62 +1,292 @@ -# reject `m_data` as there's a certain OS which has evil defines that break things if it's used elsewhere -# \bm_data\b +# reject `m_data` as VxWorks defined it and that breaks things if it's used elsewhere +# see [fprime](https://github.com/nasa/fprime/commit/d589f0a25c59ea9a800d851ea84c2f5df02fb529) +# and [Qt](https://github.com/qtproject/qt-solutions/blame/fb7bc42bfcc578ff3fa3b9ca21a41e96eb37c1c7/qtscriptclassic/src/qscriptbuffer_p.h#L46) +#\bm_data\b +# Were you debugging using a framework with `fit()`? # If you have a framework that uses `it()` for testing and `fit()` for debugging a specific test, -# you might not want to check in code where you were debugging w/ `fit()`, in which case, you might want -# to use this: +# you might not want to check in code where you skip all the other tests. #\bfit\( -# s.b. GitHub -\bGithub\b +# Should be `HH:MM:SS` +\bHH:SS:MM\b -# s.b. GitLab -\bGitlab\b +# Should be `86400` (seconds in a standard day) +\b84600\b(?:.*\bday\b) -# s.b. JavaScript +# Should probably be `2006-01-02` (yyyy-mm-dd) +# Assuming that the time is being passed to https://go.dev/src/time/format.go +\b2006-02-01\b + +# Should probably be `YYYYMMDD` +\b[Yy]{4}[Dd]{2}[Mm]{2}(?!.*[Yy]{4}[Dd]{2}[Mm]{2}).*$ + +# Should be `a priori` or `and prior` +(?i)(? Don't use `can not` when you mean `cannot`. The only time you're likely to see `can not` written as separate words is when the word `can` happens to precede some other phrase that happens to start with `not`. +# > `Can't` is a contraction of `cannot`, and it's best suited for informal writing. +# > In formal writing and where contractions are frowned upon, use `cannot`. +# > It is possible to write `can not`, but you generally find it only as part of some other construction, such as `not only . . . but also.` +# - if you encounter such a case, add a pattern for that case to patterns.txt. +\b[Cc]an not\b + +# Do not use `(click) here` links +# For more information, see: +# * https://www.w3.org/QA/Tips/noClickHere +# * https://webaim.org/techniques/hypertext/link_text +# * https://granicus.com/blog/why-click-here-links-are-bad/ +# * https://heyoka.medium.com/dont-use-click-here-f32f445d1021 +(?i)(?:>|\[)(?:(?:click |)here|link|(?:read |)more)(?:)[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}(?:[}"]|"'`=(])-(?:D(?=[A-Z])|W(?!ork)|X|f(?=[ms]))(?=[A-Z]{2,}|[A-Z][a-z]|[a-z]{2,}) + +# hit-count: 60 file-count: 35 # version suffix v# (?:(?<=[A-Z]{2})V|(?<=[a-z]{2}|[A-Z]{2})v)\d+(?:\b|(?=[a-zA-Z_])) -# hit-count: 20 file-count: 9 -# hex runs -\b[0-9a-fA-F]{16,}\b +# hit-count: 2 file-count: 2 +# This does not cover multiline strings, if your repository has them, +# you'll want to remove the `(?=.*?")` suffix. +# The `(?=.*?")` suffix should limit the false positives rate +# printf +%(?:s)(?!ize)(?=[a-z]{2,}) -# hit-count: 10 file-count: 7 +# hit-count: 16 file-count: 10 # uuid: \b[0-9a-fA-F]{8}-(?:[0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}\b +# hit-count: 13 file-count: 4 +# Non-English +[a-zA-Z]*[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3}[a-zA-ZÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]*|[a-zA-Z]{3,}[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź]|[ÀÁÂÃÄÅÆČÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæčçèéêëìíîïðñòóôõöøùúûüýÿĀāŁłŃńŅņŒœŚśŠšŜŝŸŽžź][a-zA-Z]{3,} + +# hit-count: 7 file-count: 5 +# hex digits including css/html color classes: +(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9_a-fA-FgGrR]*?[a-fA-FgGrR]{2,}[0-9_a-fA-FgGrR]*(?:[uUlL]{0,3}|[iu]\d+)\b + +# hit-count: 7 file-count: 1 +# regex choice +\(\?:[^)]+\|[^)]+\) + # hit-count: 4 file-count: 4 -# mailto urls -mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,} +# tar arguments +\b(?:\\n|)g?tar(?:\.exe|)(?:(?:\s+--[-a-zA-Z]+|\s+-[a-zA-Z]+|\s[ABGJMOPRSUWZacdfh-pr-xz]+\b)(?:=[^ ]*|))+ # hit-count: 4 file-count: 1 # ANSI color codes -(?:\\(?:u00|x)1b|\x1b)\[\d+(?:;\d+|)m +(?:\\(?:u00|x)1[Bb]|\x1b|\\u\{1[Bb]\})\[\d+(?:;\d+|)m + +# hit-count: 4 file-count: 1 +# Update Lorem based on your content (requires `ge` and `w` from https://github.com/jsoref/spelling; and `review` from https://github.com/check-spelling/check-spelling/wiki/Looking-for-items-locally ) +# grep '^[^#].*lorem' .github/actions/spelling/patterns.txt|perl -pne 's/.*i..\?://;s/\).*//' |tr '|' "\n"|sort -f |xargs -n1 ge|perl -pne 's/^[^:]*://'|sort -u|w|sed -e 's/ .*//'|w|review - +# Warning, while `(?i)` is very neat and fancy, if you have some binary files that aren't proper unicode, you might run into: +## Operation "substitution (s///)" returns its argument for non-Unicode code point 0x1C19AE (the code point will vary). +## You could manually change `(?i)X...` to use `[Xx]...` +## or you could add the files to your `excludes` file (a version after 0.0.19 should identify the file path) +# Lorem +(?:\w|\s|[,.])*\b(?i)(?:amet|consectetur|cursus|dolor|eros|ipsum|lacus|libero|ligula|lorem|magna|neque|nulla|suscipit|tempus)\b(?:\w|\s|[,.])* + +# hit-count: 3 file-count: 3 +# mailto urls +mailto:[-a-zA-Z=;:/?%&0-9+@.]{3,} # hit-count: 2 file-count: 1 -# latex -\\(?:n(?:ew|ormal|osub)|r(?:enew)|t(?:able(?:of|)|he|itle))(?=[a-z]+) +# Python string prefix / binary prefix +# Note that there's a high false positive rate, remove the `?=` and search for the regex to see if the matches seem like reasonable strings +(?= 0.0.22) +\\\w{2,}\{ # hit-count: 1 file-count: 1 -# French -# This corpus only had capital letters, but you probably want lowercase ones as well. -\b[LN]'+[a-z]{2,}\b +# tput arguments -- https://man7.org/linux/man-pages/man5/terminfo.5.html -- technically they can be more than 5 chars long... +\btput\s+(?:(?:-[SV]|-T\s*\w+)\s+)*\w{3,5}\b + +# Questionably acceptable forms of `in to` +# Personally, I prefer `log into`, but people object +# https://www.tprteaching.com/log-into-log-in-to-login/ +\b(?:[Ll]og|[Ss]ign) in to\b + +# to opt in +\bto opt in\b +# Questionably acceptable forms of `in to` +# Personally, I prefer `log into`, but people object +# https://www.tprteaching.com/log-into-log-in-to-login/ +\b(?:(?:[Ll]og(?:g(?=[a-z])|)|[Ss]ign)(?:ed|ing)?) in to\b + +# to opt in +\bto opt in\b # acceptable duplicates # ls directory listings -[-bcdlpsw](?:[-r][-w][-sx]){3}\s+\d+\s+(\S+)\s+\g{-1}\s+\d+\s+ -# C/idl types + English ... -\s(Guid|long|LONG|that) \g{-1}\s - -# javadoc / .net -(?:[\\@](?:groupname|param)|(?:public|private)(?:\s+static|\s+readonly)*)\s+(\w+)\s+\g{-1}\s +[-bcdlpsw](?:[-r][-w][-SsTtx]){3}[\.+*]?\s+\d+\s+\S+\s+\S+\s+[.\d]+(?:[KMGT]|)\s+ +# mount +\bmount\s+-t\s+(\w+)\s+\g{-1}\b +# C/idl types, repeated CSS values, + English ... +\s(auto|buffalo|center|div|Guid|GUID|inherit|long|LONG|none|normal|solid|that|thin|transparent|very)(?: \g{-1})+\s +# C enum and struct +\b(?:enum|struct)\s+(\w+)\s+\g{-1}\b +# go templates +\s(\w+)\s+\g{-1}\s+\`(?:graphql|inject|json|yaml): +# doxygen / javadoc / .net +(?:[\\@](?:brief|defgroup|groupname|link|t?param|return|retval)|(?:public|private|\[Parameter(?:\(.+\)|)\])(?:\s+(?:static|override|readonly|required|virtual))*)(?:\s+\{\w+\}|)\s+(\w+)\s+\g{-1}\s + +# macOS file path +(?:Contents\W+|(?!iOS)/)MacOS\b + +# Python package registry has incorrect spelling for macOS / Mac OS X +"Operating System :: MacOS :: MacOS X" + +# "company" in Germany +\bGmbH\b + +# IntelliJ +\bIntelliJ\b # Commit message -- Signed-off-by and friends ^\s*(?:(?:Based-on-patch|Co-authored|Helped|Mentored|Reported|Reviewed|Signed-off)-by|Thanks-to): (?:[^<]*<[^>]*>|[^<]*)\s*$ diff --git a/.github/actions/spelling/reject.txt b/.github/actions/spelling/reject.txt index 301719de47e..d98038f96f9 100644 --- a/.github/actions/spelling/reject.txt +++ b/.github/actions/spelling/reject.txt @@ -1,12 +1,15 @@ ^attache$ ^attacher$ ^attachers$ +^bellow$ benefitting occurences? ^dependan.* +^diables?$ ^oer$ Sorce ^[Ss]pae.* +^Teh$ ^untill$ ^untilling$ ^wether.* diff --git a/.github/workflows/addToProject.yml b/.github/workflows/addToProject.yml index 3fbb2a7b2cb..c8a5c68326c 100644 --- a/.github/workflows/addToProject.yml +++ b/.github/workflows/addToProject.yml @@ -7,13 +7,13 @@ on: - labeled - unlabeled -permissions: {} +permissions: {} jobs: add-to-project: name: Add issue to project runs-on: ubuntu-latest steps: - - uses: actions/add-to-project@v0.3.0 + - uses: actions/add-to-project@v1.0.2 with: project-url: https://github.com/orgs/microsoft/projects/159 github-token: ${{ secrets.ADD_TO_PROJECT_PAT }} diff --git a/.github/workflows/similarIssues.yml b/.github/workflows/similarIssues.yml deleted file mode 100644 index b0fcc3d306b..00000000000 --- a/.github/workflows/similarIssues.yml +++ /dev/null @@ -1,31 +0,0 @@ -name: GitGudSimilarIssues comments - -on: - issues: - types: [opened] - -jobs: - getsimilarissues: - runs-on: ubuntu-latest - outputs: - message: ${{ steps.getbody.outputs.message }} - steps: - - id: getbody - uses: craigloewen-msft/GitGudSimilarIssues@main - with: - issuetitle: ${{ github.event.issue.title }} - repo: ${{ github.repository }} - similaritytolerance: "0.8" - add-comment: - needs: getsimilarissues - runs-on: ubuntu-latest - permissions: - issues: write - steps: - - name: Add comment - run: gh issue comment "$NUMBER" --repo "$REPO" --body "$BODY" - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NUMBER: ${{ github.event.issue.number }} - REPO: ${{ github.repository }} - BODY: ${{ needs.getsimilarissues.outputs.message }} diff --git a/.github/workflows/spelling2.yml b/.github/workflows/spelling2.yml index 446b24343ed..7675d5d004e 100644 --- a/.github/workflows/spelling2.yml +++ b/.github/workflows/spelling2.yml @@ -5,7 +5,7 @@ name: Spell checking # https://github.com/check-spelling/check-spelling/wiki/Feature%3A-Restricted-Permissions # # `jobs.comment-push` runs when a push is made to a repository and the `jobs.spelling` job needs to make a comment -# (in odd cases, it might actually run just to collapse a commment, but that's fairly rare) +# (in odd cases, it might actually run just to collapse a comment, but that's fairly rare) # it needs `contents: write` in order to add a comment. # # `jobs.comment-pr` runs when a pull_request is made to a repository and the `jobs.spelling` job needs to make a comment @@ -34,72 +34,114 @@ name: Spell checking # # For background, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-Update-with-deploy-key +# SARIF reporting +# +# Access to SARIF reports is generally restricted (by GitHub) to members of the repository. +# +# Requires enabling `security-events: write` +# and configuring the action with `use_sarif: 1` +# +# For information on the feature, see: https://github.com/check-spelling/check-spelling/wiki/Feature:-SARIF-output + +# Minimal workflow structure: +# +# on: +# push: +# ... +# pull_request_target: +# ... +# jobs: +# # you only want the spelling job, all others should be omitted +# spelling: +# # remove `security-events: write` and `use_sarif: 1` +# # remove `experimental_apply_changes_via_bot: 1` +# ... otherwise adjust the `with:` as you wish + on: push: branches: - - "**" + - "**" tags-ignore: - - "**" + - "**" pull_request_target: branches: - - "**" - tags-ignore: - - "**" + - "**" types: - - 'opened' - - 'reopened' - - 'synchronize' + - "opened" + - "reopened" + - "synchronize" issue_comment: types: - - 'created' + - "created" jobs: spelling: - name: Spell checking + name: Check Spelling permissions: contents: read pull-requests: read actions: read + security-events: write outputs: followup: ${{ steps.spelling.outputs.followup }} runs-on: ubuntu-latest - if: "contains(github.event_name, 'pull_request') || github.event_name == 'push'" + if: ${{ contains(github.event_name, 'pull_request') || github.event_name == 'push' }} concurrency: group: spelling-${{ github.event.pull_request.number || github.ref }} # note: If you use only_check_changed_files, you do not want cancel-in-progress cancel-in-progress: true steps: - - name: check-spelling - id: spelling - uses: check-spelling/check-spelling@v0.0.21 - with: - suppress_push_for_open_pull_request: 1 - checkout: true - check_file_names: 1 - spell_check_this: check-spelling/spell-check-this@prerelease - post_comment: 0 - use_magic_file: 1 - extra_dictionary_limit: 10 - extra_dictionaries: - cspell:software-terms/src/software-terms.txt - cspell:python/src/python/python-lib.txt - cspell:node/node.txt - cspell:cpp/src/stdlib-c.txt - cspell:cpp/src/stdlib-cpp.txt - cspell:fullstack/fullstack.txt - cspell:filetypes/filetypes.txt - cspell:html/html.txt - cspell:cpp/src/compiler-msvc.txt - cspell:python/src/common/extra.txt - cspell:powershell/powershell.txt - cspell:aws/aws.txt - cspell:cpp/src/lang-keywords.txt - cspell:npm/npm.txt - cspell:dotnet/dotnet.txt - cspell:python/src/python/python.txt - cspell:css/css.txt - cspell:cpp/src/stdlib-cmath.txt - check_extra_dictionaries: '' + - name: check-spelling + id: spelling + uses: check-spelling/check-spelling@v0.0.24 + with: + suppress_push_for_open_pull_request: ${{ github.actor != 'dependabot[bot]' && 1 }} + checkout: true + check_file_names: 1 + spell_check_this: microsoft/terminal@main + post_comment: 0 + use_magic_file: 1 + report-timing: 1 + warnings: bad-regex,binary-file,deprecated-feature,ignored-expect-variant,large-file,limited-references,no-newline-at-eof,noisy-file,non-alpha-in-dictionary,token-is-substring,unexpected-line-ending,whitespace-in-dictionary,minified-file,unsupported-configuration,no-files-to-check,unclosed-block-ignore-begin,unclosed-block-ignore-end + experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} + use_sarif: ${{ (!github.event.pull_request || (github.event.pull_request.head.repo.full_name == github.repository)) && 1 }} + check_extra_dictionaries: "" + dictionary_source_prefixes: > + { + "cspell": "https://raw.githubusercontent.com/check-spelling/cspell-dicts/v20241114/dictionaries/" + } + extra_dictionaries: | + cspell:software-terms/softwareTerms.txt + cspell:cpp/stdlib-cpp.txt + cspell:cpp/stdlib-c.txt + cspell:lorem-ipsum/dictionary.txt + cspell:php/php.txt + cspell:filetypes/filetypes.txt + cspell:java/java.txt + cspell:node/node.txt + cspell:golang/go.txt + cspell:java/java-terms.txt + cspell:mnemonics/mnemonics.txt + cspell:npm/npm.txt + cspell:fullstack/fullstack.txt + cspell:python/python/python-lib.txt + cspell:dotnet/dotnet.txt + cspell:dart/dart.txt + cspell:aws/aws.txt + cspell:python/common/extra.txt + cspell:css/css.txt + cspell:cpp/stdlib-cmath.txt + cspell:typescript/typescript.txt + cspell:cpp/compiler-msvc.txt + cspell:django/django.txt + cspell:html/html.txt + cspell:cpp/lang-keywords.txt + cspell:cpp/ecosystem.txt + cspell:r/r.txt + cspell:cpp/compiler-clang-attributes.txt + cspell:powershell/powershell.txt + cspell:csharp/csharp.txt + cspell:python/python/python.txt comment-push: name: Report (Push) @@ -107,15 +149,16 @@ jobs: runs-on: ubuntu-latest needs: spelling permissions: + actions: read contents: write if: (success() || failure()) && needs.spelling.outputs.followup && github.event_name == 'push' steps: - - name: comment - uses: check-spelling/check-spelling@v0.0.21 - with: - checkout: true - spell_check_this: check-spelling/spell-check-this@prerelease - task: ${{ needs.spelling.outputs.followup }} + - name: comment + uses: check-spelling/check-spelling@v0.0.24 + with: + checkout: true + spell_check_this: microsoft/terminal@main + task: ${{ needs.spelling.outputs.followup }} comment-pr: name: Report (PR) @@ -123,12 +166,40 @@ jobs: runs-on: ubuntu-latest needs: spelling permissions: + actions: read + contents: read pull-requests: write if: (success() || failure()) && needs.spelling.outputs.followup && contains(github.event_name, 'pull_request') steps: - - name: comment - uses: check-spelling/check-spelling@v0.0.21 - with: - checkout: true - spell_check_this: check-spelling/spell-check-this@prerelease - task: ${{ needs.spelling.outputs.followup }} + - name: comment + uses: check-spelling/check-spelling@v0.0.24 + with: + checkout: true + spell_check_this: microsoft/terminal@main + task: ${{ needs.spelling.outputs.followup }} + experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} + + update: + name: Update PR + permissions: + contents: write + pull-requests: write + actions: read + runs-on: ubuntu-latest + if: ${{ + github.repository_owner != 'microsoft' && + github.event_name == 'issue_comment' && + github.event.issue.pull_request && + contains(github.event.comment.body, '@check-spelling-bot apply') && + contains(github.event.comment.body, 'https://') + }} + concurrency: + group: spelling-update-${{ github.event.issue.number }} + cancel-in-progress: false + steps: + - name: apply spelling updates + uses: check-spelling/check-spelling@v0.0.24 + with: + experimental_apply_changes_via_bot: ${{ github.repository_owner != 'microsoft' && 1 }} + checkout: true + ssh_key: "${{ secrets.CHECK_SPELLING }}" diff --git a/.gitignore b/.gitignore index 3db8546ef4e..9e8281ee5dc 100644 --- a/.gitignore +++ b/.gitignore @@ -283,3 +283,6 @@ MSG*.bin profiles.json *.metaproj *.swp + +# MSBuildCache +/MSBuildCacheLogs/ \ No newline at end of file diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 94c5e259626..00000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "dep/gsl"] - path = dep/gsl - url = https://github.com/microsoft/gsl diff --git a/.vscode/settings.json b/.vscode/settings.json index e7802ba358c..0dd3cf37945 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,28 @@ { "C_Cpp.default.browse.databaseFilename": "${workspaceFolder}\\.vscode\\.BROWSE.VC.DB", + "C_Cpp.default.browse.limitSymbolsToIncludedHeaders": true, "C_Cpp.default.browse.path": [ "${workspaceFolder}" ], + "C_Cpp.default.cppStandard": "c++20", + "C_Cpp.default.cStandard": "c17", + "C_Cpp.default.defines": [ + "_DEBUG", + "_UNICODE", + "BUILD_ONECORE_INTERACTIVITY", + "DBG", + "NT_SUCCESS", + "UNICODE", + "UNIT_TESTING", + "INLINE_TEST_METHOD_MARKUP", + ], + "C_Cpp.default.includePath": [ + "${workspaceFolder}/**", + "${workspaceFolder}/**/Generated Files", + "${workspaceFolder}/**/inc", + "${workspaceFolder}/**/include", + "${workspaceFolder}/**/Include" + ], "C_Cpp.loggingLevel": "None", "files.associations": { "xstring": "cpp", @@ -98,14 +118,13 @@ "coroutine": "cpp", "format": "cpp", "forward_list": "cpp", - "latch": "cpp" + "latch": "cpp", + "gsl_assert": "cpp" }, "files.exclude": { "**/bin/**": true, + "**/Generated Files/**": true, "**/obj/**": true, - "**/Generated Files/**": true + "**/packages/**": true, }, - "search.exclude": { - "**/packages/**": true - } -} +} \ No newline at end of file diff --git a/.vsconfig b/.vsconfig index 505228514fb..4d39a491cc8 100644 --- a/.vsconfig +++ b/.vsconfig @@ -1,35 +1,51 @@ { "version": "1.0", "components": [ + "Microsoft.VisualStudio.Component.Roslyn.Compiler", + "Microsoft.Component.MSBuild", + "Microsoft.VisualStudio.Component.Roslyn.LanguageServices", + "Microsoft.VisualStudio.Component.SQL.LocalDB.Runtime", + "Microsoft.VisualStudio.Component.SQL.CLR", "Microsoft.VisualStudio.Component.CoreEditor", "Microsoft.VisualStudio.Workload.CoreEditor", - "Microsoft.VisualStudio.Workload.Universal", - "Microsoft.VisualStudio.Workload.NativeDesktop", - "Microsoft.VisualStudio.Workload.ManagedDesktop", - "Microsoft.VisualStudio.Component.ManagedDesktop.Prerequisites", + "Microsoft.Net.Component.4.8.SDK", + "Microsoft.Net.Component.4.7.2.TargetingPack", + "Microsoft.VisualStudio.Component.TextTemplating", "Microsoft.VisualStudio.Component.NuGet", - "Microsoft.VisualStudio.Component.Roslyn.Compiler", - "Microsoft.VisualStudio.Component.Roslyn.LanguageServices", - "Microsoft.Net.ComponentGroup.DevelopmentPrerequisites", - "Microsoft.Component.MSBuild", - "Microsoft.VisualStudio.Component.ManagedDesktop.Core", - "Microsoft.Net.Component.4.TargetingPack", - "Microsoft.Net.Component.4.5.TargetingPack", + "Microsoft.NetCore.Component.Runtime.8.0", + "Microsoft.NetCore.Component.SDK", + "Microsoft.VisualStudio.Component.AppInsights.Tools", + "Microsoft.Net.Component.4.8.TargetingPack", "Microsoft.VisualStudio.Component.DiagnosticTools", - "Microsoft.VisualStudio.Component.Debugger.JustInTime", - "Microsoft.VisualStudio.Component.Windows11SDK.22621", - "Microsoft.VisualStudio.ComponentGroup.UWP.Support", + "Microsoft.NetCore.Component.Runtime.6.0", + "Microsoft.VisualStudio.Component.ClassDesigner", + "Microsoft.VisualStudio.Component.GraphDocument", + "Microsoft.VisualStudio.Component.CodeMap", "Microsoft.VisualStudio.Component.VC.CoreIde", + "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", + "Microsoft.VisualStudio.Component.Windows11SDK.22621", + "Microsoft.VisualStudio.ComponentGroup.MSIX.Packaging", + "Microsoft.VisualStudio.ComponentGroup.WindowsAppSDK.Cs", + "Microsoft.ComponentGroup.Blend", + "Microsoft.VisualStudio.ComponentGroup.ArchitectureTools.Native", + "Microsoft.VisualStudio.Component.VC.Redist.14.Latest", "Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core", + "Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.CMake", + "Microsoft.VisualStudio.Component.Vcpkg", + "Microsoft.Component.NetFX.Native", "Microsoft.VisualStudio.Component.Graphics", - "Microsoft.VisualStudio.Component.VC.Redist.14.Latest", - "Microsoft.VisualStudio.Component.VC.Tools.x86.x64", + "Microsoft.VisualStudio.ComponentGroup.UWP.Xamarin", + "Microsoft.VisualStudio.ComponentGroup.UWP.Support", + "Microsoft.VisualStudio.Component.VC.Tools.ARM64EC", + "Microsoft.VisualStudio.Component.UWP.VC.ARM64EC", "Microsoft.VisualStudio.Component.VC.Tools.ARM64", - "Microsoft.VisualStudio.Component.VC.ASAN", - "Microsoft.VisualStudio.Component.VC.v143.x86.x64", - "Microsoft.VisualStudio.Component.VC.v143.ARM64", + "Microsoft.VisualStudio.Component.UWP.VC.ARM64", + "Microsoft.VisualStudio.Component.VC.Tools.ARM", "Microsoft.VisualStudio.ComponentGroup.UWP.VC", - "Microsoft.VisualStudio.ComponentGroup.UWP.VC.v143", - "Microsoft.VisualStudio.Component.UWP.VC.ARM64" - ] + "Microsoft.VisualStudio.Workload.NativeDesktop", + "Microsoft.VisualStudio.ComponentGroup.WindowsAppDevelopment.Prerequisites", + "Microsoft.VisualStudio.ComponentGroup.UWP.NetCoreAndStandard", + "Microsoft.VisualStudio.Workload.Universal" + ], + "extensions": [] } diff --git a/.wt.json b/.wt.json new file mode 100644 index 00000000000..f0091b5e326 --- /dev/null +++ b/.wt.json @@ -0,0 +1,34 @@ +{ + "$version": "1.0.0", + "snippets": + [ + { + "input": "bx\r", + "name": "Build project", + "description": "Build the project in the CWD" + }, + { + "input": "bz\r", + "name": "Build solution, incremental", + "description": "Just build changes to the solution" + }, + { + "input": "bcz\r", + "name": "Clean & build solution", + "icon": "\uE8e6", + "description": "Start over. Go get your coffee. " + }, + { + "input": "nuget push -ApiKey az -source TerminalDependencies %userprofile%\\Downloads", + "name": "Upload package to nuget feed", + "icon": "\uE898", + "description": "Go download a .nupkg, put it in ~/Downloads, and use this to push to our private feed." + }, + { + "input": "runut /name:**\u001b[D", + "name": "Run a test", + "icon": "", + "description": "Enter the name of a test to run" + } + ] +} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 18ebdd96011..76b68a08d4f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -158,7 +158,7 @@ Once you've discussed your proposed feature/fix/etc. with a team member, and you ### Testing -Testing is a key component in the development workflow. Both Windows Terminal and Windows Console use TAEF(the Test Authoring and Execution Framework) as the main framework for testing. +Testing is a key component in the development workflow. Both Windows Terminal and Windows Console use TAEF (the Test Authoring and Execution Framework) as the main framework for testing. If your changes affect existing test cases, or you're working on brand new features and also the accompanying test cases, see [TAEF](./doc/TAEF.md) for more information about how to validate your work locally. diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 00000000000..03de869805a --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,65 @@ + + + + + + + false + + + false + + + Microsoft.MSBuildCache.AzurePipelines + Microsoft.MSBuildCache.Local + + + + + 202310210737 + + + + $(MSBuildCacheAllowFileAccessAfterProjectFinishFilePatterns); + \**\ApplicationInsights.config; + $(LocalAppData)\Microsoft\VSApplicationInsights\**; + $(LocalAppData)\Microsoft\Windows\INetCache\**; + A:\; + E:\; + $(windir)\**; + + + + $(MSBuildCacheIdenticalDuplicateOutputPatterns);bin\** + + + $(MSBuildCacheIdenticalDuplicateOutputPatterns);obj\*\vcpkg\** + + + $(MSBuildThisFileDirectory)\dep\nuget\packages.config + $(MSBuildCacheIgnoredInputPatterns);$(PackagesConfigFile) + + + + $([System.IO.File]::ReadAllText("$(PackagesConfigFile)")) + $([System.Text.RegularExpressions.Regex]::Match($(PackagesConfigContents), 'Microsoft.MSBuildCache.*?version="(.*?)"').Groups[1].Value) + $(MSBuildThisFileDirectory)packages\$(MSBuildCachePackageName).$(MSBuildCachePackageVersion) + $(MSBuildThisFileDirectory)packages\Microsoft.MSBuildCache.SharedCompilation.$(MSBuildCachePackageVersion) + + + + + + + \ No newline at end of file diff --git a/Directory.Build.targets b/Directory.Build.targets new file mode 100644 index 00000000000..df6e6b7ebb1 --- /dev/null +++ b/Directory.Build.targets @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/NOTICE.md b/NOTICE.md index fb48315d254..bd99dd939ca 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -84,71 +84,6 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` -## kimwalisch/libpopcnt - -**Source**: [https://github.com/kimwalisch/libpopcnt](https://github.com/kimwalisch/libpopcnt) - -### License - -``` -BSD 2-Clause License - -Copyright (c) 2016 - 2019, Kim Walisch -Copyright (c) 2016 - 2019, Wojciech Muła - -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -``` - -## dynamic_bitset - -**Source**: [https://github.com/pinam45/dynamic_bitset](https://github.com/pinam45/dynamic_bitset) - -### License - -``` -MIT License - -Copyright (c) 2019 Maxime Pinard - -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. -``` - ## \{fmt\} **Source**: [https://github.com/fmtlib/fmt](https://github.com/fmtlib/fmt) @@ -325,6 +260,202 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` +## ColorBrewer +**Source**: [https://colorbrewer2.org/](https://colorbrewer2.org/) + +### License + +``` +Apache-Style Software License for ColorBrewer software and ColorBrewer Color Schemes + +Copyright (c) 2002 Cynthia Brewer, Mark Harrower, and The Pennsylvania State University. + +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed +under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the License for the +specific language governing permissions and limitations under the License. +``` + +## cmark +**Source**: [https://github.com/commonmark/cmark](https://github.com/commonmark/cmark) + +### License +Copyright (c) 2014, John MacFarlane + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----- + +houdini.h, houdini_href_e.c, houdini_html_e.c, houdini_html_u.c + +derive from https://github.com/vmg/houdini (with some modifications) + +Copyright (C) 2012 Vicent Martí + +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. + +----- + +buffer.h, buffer.c, chunk.h + +are derived from code (C) 2012 Github, Inc. + +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. + +----- + +utf8.c and utf8.c + +are derived from utf8proc +(), +(C) 2009 Public Software Group e. V., Berlin, Germany. + +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. + +----- + +The normalization code in normalize.py was derived from the +markdowntest project, Copyright 2013 Karl Dubost: + +The MIT License (MIT) + +Copyright (c) 2013 Karl Dubost + +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. + +----- + +The CommonMark spec (test/spec.txt) is + +Copyright (C) 2014-15 John MacFarlane + +Released under the Creative Commons CC-BY-SA 4.0 license: +. + +----- + +The test software in test/ is + +Copyright (c) 2014, John MacFarlane + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + # Microsoft Open Source This product also incorporates source code from other Microsoft open source projects, all licensed under the MIT license. diff --git a/NuGet.Config b/NuGet.Config index 272d5f0b400..57c3defd1dc 100644 --- a/NuGet.Config +++ b/NuGet.Config @@ -4,7 +4,7 @@ - + diff --git a/OpenConsole.sln b/OpenConsole.sln index 5c2b55ccd4b..fa94a4f8f01 100644 --- a/OpenConsole.sln +++ b/OpenConsole.sln @@ -131,7 +131,6 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InteractivityWin32", "src\interactivity\win32\lib\win32.LIB.vcxproj", "{06EC74CB-9A12-429C-B551-8532EC964726}" ProjectSection(ProjectDependencies) = postProject {1C959542-BAC2-4E55-9A6D-13251914CBB9} = {1C959542-BAC2-4E55-9A6D-13251914CBB9} - {990F2657-8580-4828-943F-5DD657D11842} = {990F2657-8580-4828-943F-5DD657D11842} {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F} = {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F} EndProjectSection EndProject @@ -140,14 +139,9 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "InteractivityBase", "src\interactivity\base\lib\InteractivityBase.vcxproj", "{06EC74CB-9A12-429C-B551-8562EC964846}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Interactivity.Win32.Tests.Unit", "src\interactivity\win32\ut_interactivity_win32\Interactivity.Win32.UnitTests.vcxproj", "{D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}" - ProjectSection(ProjectDependencies) = postProject - {990F2657-8580-4828-943F-5DD657D11842} = {990F2657-8580-4828-943F-5DD657D11842} - EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CloseTest", "src\tools\closetest\CloseTest.vcxproj", "{C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RendererVt", "src\renderer\vt\lib\vt.vcxproj", "{990F2657-8580-4828-943F-5DD657D11842}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VtPipeTerm", "src\tools\vtpipeterm\VtPipeTerm.vcxproj", "{814DBDDE-894E-4327-A6E1-740504850098}" ProjectSection(ProjectDependencies) = postProject {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B} = {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B} @@ -157,12 +151,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConEchoKey", "src\tools\ech EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Types", "src\types\lib\types.vcxproj", "{18D09A24-8240-42D6-8CB6-236EEE820263}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RendererVt.unittest", "src\renderer\vt\ut_lib\vt.unittest.vcxproj", "{990F2657-8580-4828-943F-5DD657D11843}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BufferOut", "src\buffer\out\lib\bufferout.vcxproj", "{0CF235BD-2DA0-407E-90EE-C467E8BBC714}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RendererDx", "src\renderer\dx\lib\dx.vcxproj", "{48D21369-3D7B-4431-9967-24E81292CF62}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TerminalConnection", "src\cascadia\TerminalConnection\TerminalConnection.vcxproj", "{CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}" ProjectSection(ProjectDependencies) = postProject {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF} = {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF} @@ -173,7 +163,7 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.Control.Lib", "src\cascadia\TerminalControl\TerminalControlLib.vcxproj", "{CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}" ProjectSection(ProjectDependencies) = postProject {1CF55140-EF6A-4736-A403-957E4F7430BB} = {1CF55140-EF6A-4736-A403-957E4F7430BB} - {48D21369-3D7B-4431-9967-24E81292CF62} = {48D21369-3D7B-4431-9967-24E81292CF62} + {2FD12FBB-1DDB-46D8-B818-1023C624CACA} = {2FD12FBB-1DDB-46D8-B818-1023C624CACA} {48D21369-3D7B-4431-9967-24E81292CF63} = {48D21369-3D7B-4431-9967-24E81292CF63} {8222900C-8B6C-452A-91AC-BE95DB04B95F} = {8222900C-8B6C-452A-91AC-BE95DB04B95F} {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F} = {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F} @@ -188,7 +178,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.Control" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowsTerminal", "src\cascadia\WindowsTerminal\WindowsTerminal.vcxproj", "{CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}" ProjectSection(ProjectDependencies) = postProject - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE} = {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE} {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B} = {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B} {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32} = {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32} {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12} = {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12} @@ -273,7 +262,6 @@ EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestHostApp", "src\cascadia\LocalTests_TerminalApp\TestHostApp\TestHostApp.vcxproj", "{A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}" ProjectSection(ProjectDependencies) = postProject {CA5CAD1A-082C-4476-9F33-94B339494076} = {CA5CAD1A-082C-4476-9F33-94B339494076} - {CA5CAD1A-9B68-456A-B13E-C8218070DC42} = {CA5CAD1A-9B68-456A-B13E-C8218070DC42} {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506} = {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506} EndProjectSection EndProject @@ -319,8 +307,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Scripts", "Scripts", "{D3EF build\scripts\Test-WindowsTerminalPackage.ps1 = build\scripts\Test-WindowsTerminalPackage.ps1 EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Dx.Unit.Tests", "src\renderer\dx\ut_dx\Dx.Unit.Tests.vcxproj", "{95B136F9-B238-490C-A7C5-5843C1FECAC4}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winconpty.Tests.Feature", "src\winconpty\ft_pty\winconpty.FeatureTests.vcxproj", "{024052DE-83FB-4653-AEA4-90790D29D5BD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TerminalAzBridge", "src\cascadia\TerminalAzBridge\TerminalAzBridge.vcxproj", "{067F0A06-FCB7-472C-96E9-B03B54E8E18D}" @@ -328,8 +314,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TerminalAzBridge", "src\cas {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B} = {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fmt", "src\dep\fmt\fmt.vcxproj", "{6BAE5851-50D5-4934-8D5E-30361A8A40F3}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WpfTerminalTestNetCore", "src\cascadia\WpfTerminalTestNetCore\WpfTerminalTestNetCore.csproj", "{1588FD7C-241E-4E7D-9113-43735F3E6BAD}" ProjectSection(ProjectDependencies) = postProject {CA5CAD1A-F542-4635-A069-7CAEFB930070} = {CA5CAD1A-F542-4635-A069-7CAEFB930070} @@ -355,7 +339,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.Settings {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907} = {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LocalTests_SettingsModel", "src\cascadia\LocalTests_SettingsModel\SettingsModel.LocalTests.vcxproj", "{CA5CAD1A-9B68-456A-B13E-C8218070DC42}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests_SettingsModel", "src\cascadia\UnitTests_SettingsModel\SettingsModel.UnitTests.vcxproj", "{CA5CAD1A-9B68-456A-B13E-C8218070DC42}" ProjectSection(ProjectDependencies) = postProject {CA5CAD1A-082C-4476-9F33-94B339494076} = {CA5CAD1A-082C-4476-9F33-94B339494076} {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B} = {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B} @@ -363,26 +347,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LocalTests_SettingsModel", {CA5CAD1A-F542-4635-A069-7CAEFB930070} = {CA5CAD1A-F542-4635-A069-7CAEFB930070} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MonarchPeasantSample", "src\tools\MonarchPeasantSample\MonarchPeasantSample.vcxproj", "{21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}" - ProjectSection(ProjectDependencies) = postProject - {18D09A24-8240-42D6-8CB6-236EEE820263} = {18D09A24-8240-42D6-8CB6-236EEE820263} - EndProjectSection -EndProject -Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "MonarchPeasantPackage", "src\tools\MonarchPeasantPackage\MonarchPeasantPackage.wapproj", "{F75E29D0-D288-478B-8D83-2C190F321A3F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.Remoting.Lib", "src\cascadia\Remoting\Microsoft.Terminal.RemotingLib.vcxproj", "{43CE4CE5-0010-4B99-9569-672670D26E26}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.Remoting", "src\cascadia\Remoting\dll\Microsoft.Terminal.Remoting.vcxproj", "{27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}" - ProjectSection(ProjectDependencies) = postProject - {43CE4CE5-0010-4B99-9569-672670D26E26} = {43CE4CE5-0010-4B99-9569-672670D26E26} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTests_Remoting", "src\cascadia\UnitTests_Remoting\Remoting.UnitTests.vcxproj", "{68A10CD3-AA64-465B-AF5F-ED4E9700543C}" - ProjectSection(ProjectDependencies) = postProject - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE} = {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE} - {43CE4CE5-0010-4B99-9569-672670D26E26} = {43CE4CE5-0010-4B99-9569-672670D26E26} - EndProjectSection -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "wpf", "wpf", "{4DAF0299-495E-4CD1-A982-9BAC16A45932}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "OpenConsoleProxy", "src\host\proxy\Host.Proxy.vcxproj", "{71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}" @@ -418,43 +382,41 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TerminalStress", "src\tools EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RenderingTests", "src\tools\RenderingTests\RenderingTests.vcxproj", "{37C995E0-2349-4154-8E77-4A52C0C7F46D}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.UI", "src\cascadia\UIHelpers\UIHelpers.vcxproj", "{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Microsoft.Terminal.UI.Markdown", "src\cascadia\UIMarkdown\UIMarkdown.vcxproj", "{7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "benchcat", "src\tools\benchcat\benchcat.vcxproj", "{2C836962-9543-4CE5-B834-D28E1F124B66}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleMonitor", "src\tools\ConsoleMonitor\ConsoleMonitor.vcxproj", "{328729E9-6723-416E-9C98-951F1473BBE1}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConsoleBench", "src\tools\ConsoleBench\ConsoleBench.vcxproj", "{BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution AuditMode|Any CPU = AuditMode|Any CPU - AuditMode|ARM = AuditMode|ARM AuditMode|ARM64 = AuditMode|ARM64 AuditMode|x64 = AuditMode|x64 AuditMode|x86 = AuditMode|x86 Debug|Any CPU = Debug|Any CPU - Debug|ARM = Debug|ARM Debug|ARM64 = Debug|ARM64 Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 Fuzzing|Any CPU = Fuzzing|Any CPU - Fuzzing|ARM = Fuzzing|ARM Fuzzing|ARM64 = Fuzzing|ARM64 Fuzzing|x64 = Fuzzing|x64 Fuzzing|x86 = Fuzzing|x86 Release|Any CPU = Release|Any CPU - Release|ARM = Release|ARM Release|ARM64 = Release|ARM64 Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.AuditMode|Any CPU.ActiveCfg = Debug|x86 - {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.AuditMode|ARM.ActiveCfg = Debug|x64 - {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.AuditMode|ARM.Build.0 = Debug|x64 - {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.AuditMode|ARM.Deploy.0 = Debug|x64 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.AuditMode|x64.ActiveCfg = Release|x64 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.AuditMode|x86.ActiveCfg = Release|x86 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Debug|Any CPU.ActiveCfg = Debug|x86 - {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Debug|ARM.ActiveCfg = Debug|x86 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Debug|ARM64.Deploy.0 = Debug|ARM64 @@ -465,12 +427,10 @@ Global {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Debug|x86.Build.0 = Debug|x86 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Debug|x86.Deploy.0 = Debug|x86 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Fuzzing|Any CPU.ActiveCfg = Debug|x86 - {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Fuzzing|ARM.ActiveCfg = Debug|x86 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Fuzzing|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Fuzzing|x64.ActiveCfg = Debug|x64 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Fuzzing|x86.ActiveCfg = Debug|x86 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Release|Any CPU.ActiveCfg = Release|x86 - {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Release|ARM.ActiveCfg = Release|x86 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Release|ARM64.Deploy.0 = Release|ARM64 @@ -481,25 +441,22 @@ Global {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Release|x86.Build.0 = Release|x86 {CA5CAD1A-224A-4171-B13A-F16E576FDD12}.Release|x86.Deploy.0 = Release|x86 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.AuditMode|x64.ActiveCfg = Release|x64 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.AuditMode|x86.ActiveCfg = Release|Win32 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Debug|ARM.ActiveCfg = Debug|Win32 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Debug|ARM64.ActiveCfg = Debug|ARM64 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Debug|ARM64.Build.0 = Debug|ARM64 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Debug|x64.ActiveCfg = Debug|x64 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Debug|x64.Build.0 = Debug|x64 + {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Debug|x64.Deploy.0 = Debug|x64 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Debug|x86.ActiveCfg = Debug|Win32 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Debug|x86.Build.0 = Debug|Win32 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Release|Any CPU.ActiveCfg = Release|Win32 - {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Release|ARM.ActiveCfg = Release|Win32 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Release|ARM64.ActiveCfg = Release|ARM64 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Release|ARM64.Build.0 = Release|ARM64 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Release|x64.ActiveCfg = Release|x64 @@ -507,12 +464,10 @@ Global {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Release|x86.ActiveCfg = Release|Win32 {9CBD7DFA-1754-4A9D-93D7-857A9D17CB1B}.Release|x86.Build.0 = Release|Win32 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.AuditMode|x64.ActiveCfg = Release|x64 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.AuditMode|x86.ActiveCfg = Release|Win32 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Debug|ARM.ActiveCfg = Debug|Win32 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Debug|ARM64.Build.0 = Debug|ARM64 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Debug|x64.ActiveCfg = Debug|x64 @@ -520,13 +475,11 @@ Global {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Debug|x86.ActiveCfg = Debug|Win32 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Debug|x86.Build.0 = Debug|Win32 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Fuzzing|x64.Build.0 = Fuzzing|x64 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Release|Any CPU.ActiveCfg = Release|Win32 - {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Release|ARM.ActiveCfg = Release|Win32 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Release|ARM64.ActiveCfg = Release|ARM64 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Release|ARM64.Build.0 = Release|ARM64 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Release|x64.ActiveCfg = Release|x64 @@ -534,12 +487,10 @@ Global {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Release|x86.ActiveCfg = Release|Win32 {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC}.Release|x86.Build.0 = Release|Win32 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.AuditMode|x64.ActiveCfg = Release|x64 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.AuditMode|x86.ActiveCfg = Release|Win32 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Debug|ARM.ActiveCfg = Debug|Win32 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Debug|ARM64.ActiveCfg = Debug|ARM64 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Debug|ARM64.Build.0 = Debug|ARM64 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Debug|x64.ActiveCfg = Debug|x64 @@ -547,13 +498,11 @@ Global {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Debug|x86.ActiveCfg = Debug|Win32 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Debug|x86.Build.0 = Debug|Win32 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Fuzzing|x64.Build.0 = Fuzzing|x64 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Release|Any CPU.ActiveCfg = Release|Win32 - {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Release|ARM.ActiveCfg = Release|Win32 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Release|ARM64.ActiveCfg = Release|ARM64 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Release|ARM64.Build.0 = Release|ARM64 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Release|x64.ActiveCfg = Release|x64 @@ -561,13 +510,11 @@ Global {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Release|x86.ActiveCfg = Release|Win32 {2FD12FBB-1DDB-46D8-B818-1023C624CACA}.Release|x86.Build.0 = Release|Win32 {3AE13314-1939-4DFA-9C14-38CA0834050C}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {3AE13314-1939-4DFA-9C14-38CA0834050C}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {3AE13314-1939-4DFA-9C14-38CA0834050C}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {3AE13314-1939-4DFA-9C14-38CA0834050C}.AuditMode|x64.ActiveCfg = AuditMode|x64 {3AE13314-1939-4DFA-9C14-38CA0834050C}.AuditMode|x64.Build.0 = AuditMode|x64 {3AE13314-1939-4DFA-9C14-38CA0834050C}.AuditMode|x86.ActiveCfg = Release|Win32 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {3AE13314-1939-4DFA-9C14-38CA0834050C}.Debug|ARM.ActiveCfg = Debug|Win32 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Debug|ARM64.ActiveCfg = Debug|ARM64 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Debug|ARM64.Build.0 = Debug|ARM64 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Debug|x64.ActiveCfg = Debug|x64 @@ -575,13 +522,11 @@ Global {3AE13314-1939-4DFA-9C14-38CA0834050C}.Debug|x86.ActiveCfg = Debug|Win32 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Debug|x86.Build.0 = Debug|Win32 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {3AE13314-1939-4DFA-9C14-38CA0834050C}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Fuzzing|x64.Build.0 = Fuzzing|x64 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Release|Any CPU.ActiveCfg = Release|Win32 - {3AE13314-1939-4DFA-9C14-38CA0834050C}.Release|ARM.ActiveCfg = Release|Win32 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Release|ARM64.ActiveCfg = Release|ARM64 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Release|ARM64.Build.0 = Release|ARM64 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Release|x64.ActiveCfg = Release|x64 @@ -589,13 +534,11 @@ Global {3AE13314-1939-4DFA-9C14-38CA0834050C}.Release|x86.ActiveCfg = Release|Win32 {3AE13314-1939-4DFA-9C14-38CA0834050C}.Release|x86.Build.0 = Release|Win32 {DCF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {DCF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {DCF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {DCF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|x64.ActiveCfg = AuditMode|x64 {DCF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|x64.Build.0 = AuditMode|x64 {DCF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|x86.ActiveCfg = Release|Win32 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {DCF55140-EF6A-4736-A403-957E4F7430BB}.Debug|ARM.ActiveCfg = Debug|Win32 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Debug|ARM64.ActiveCfg = Debug|ARM64 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Debug|ARM64.Build.0 = Debug|ARM64 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Debug|x64.ActiveCfg = Debug|x64 @@ -603,13 +546,11 @@ Global {DCF55140-EF6A-4736-A403-957E4F7430BB}.Debug|x86.ActiveCfg = Debug|Win32 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Debug|x86.Build.0 = Debug|Win32 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {DCF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|x64.Build.0 = Fuzzing|x64 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Release|Any CPU.ActiveCfg = Release|Win32 - {DCF55140-EF6A-4736-A403-957E4F7430BB}.Release|ARM.ActiveCfg = Release|Win32 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Release|ARM64.ActiveCfg = Release|ARM64 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Release|ARM64.Build.0 = Release|ARM64 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Release|x64.ActiveCfg = Release|x64 @@ -617,13 +558,11 @@ Global {DCF55140-EF6A-4736-A403-957E4F7430BB}.Release|x86.ActiveCfg = Release|Win32 {DCF55140-EF6A-4736-A403-957E4F7430BB}.Release|x86.Build.0 = Release|Win32 {1CF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {1CF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {1CF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {1CF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|x64.ActiveCfg = AuditMode|x64 {1CF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|x64.Build.0 = AuditMode|x64 {1CF55140-EF6A-4736-A403-957E4F7430BB}.AuditMode|x86.ActiveCfg = Release|Win32 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {1CF55140-EF6A-4736-A403-957E4F7430BB}.Debug|ARM.ActiveCfg = Debug|Win32 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Debug|ARM64.ActiveCfg = Debug|ARM64 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Debug|ARM64.Build.0 = Debug|ARM64 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Debug|x64.ActiveCfg = Debug|x64 @@ -631,13 +570,11 @@ Global {1CF55140-EF6A-4736-A403-957E4F7430BB}.Debug|x86.ActiveCfg = Debug|Win32 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Debug|x86.Build.0 = Debug|Win32 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {1CF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|x64.Build.0 = Fuzzing|x64 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Release|Any CPU.ActiveCfg = Release|Win32 - {1CF55140-EF6A-4736-A403-957E4F7430BB}.Release|ARM.ActiveCfg = Release|Win32 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Release|ARM64.ActiveCfg = Release|ARM64 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Release|ARM64.Build.0 = Release|ARM64 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Release|x64.ActiveCfg = Release|x64 @@ -645,13 +582,11 @@ Global {1CF55140-EF6A-4736-A403-957E4F7430BB}.Release|x86.ActiveCfg = Release|Win32 {1CF55140-EF6A-4736-A403-957E4F7430BB}.Release|x86.Build.0 = Release|Win32 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.AuditMode|x64.ActiveCfg = Release|x64 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.AuditMode|x64.Build.0 = Release|x64 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.AuditMode|x86.ActiveCfg = Release|Win32 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Debug|ARM.ActiveCfg = Debug|Win32 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Debug|ARM64.ActiveCfg = Debug|ARM64 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Debug|ARM64.Build.0 = Debug|ARM64 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Debug|x64.ActiveCfg = Debug|x64 @@ -659,13 +594,11 @@ Global {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Debug|x86.ActiveCfg = Debug|Win32 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Debug|x86.Build.0 = Debug|Win32 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Fuzzing|x64.Build.0 = Fuzzing|x64 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Release|Any CPU.ActiveCfg = Release|Win32 - {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Release|ARM.ActiveCfg = Release|Win32 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Release|ARM64.ActiveCfg = Release|ARM64 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Release|ARM64.Build.0 = Release|ARM64 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Release|x64.ActiveCfg = Release|x64 @@ -673,12 +606,10 @@ Global {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Release|x86.ActiveCfg = Release|Win32 {AF0A096A-8B3A-4949-81EF-7DF8F0FEE91F}.Release|x86.Build.0 = Release|Win32 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {1C959542-BAC2-4E55-9A6D-13251914CBB9}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.AuditMode|x64.ActiveCfg = Release|x64 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.AuditMode|x86.ActiveCfg = Release|Win32 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Debug|ARM.ActiveCfg = Debug|Win32 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Debug|ARM64.ActiveCfg = Debug|ARM64 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Debug|ARM64.Build.0 = Debug|ARM64 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Debug|x64.ActiveCfg = Debug|x64 @@ -686,13 +617,11 @@ Global {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Debug|x86.ActiveCfg = Debug|Win32 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Debug|x86.Build.0 = Debug|Win32 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Fuzzing|x64.Build.0 = Fuzzing|x64 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Release|Any CPU.ActiveCfg = Release|Win32 - {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Release|ARM.ActiveCfg = Release|Win32 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Release|ARM64.ActiveCfg = Release|ARM64 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Release|ARM64.Build.0 = Release|ARM64 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Release|x64.ActiveCfg = Release|x64 @@ -700,12 +629,10 @@ Global {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Release|x86.ActiveCfg = Release|Win32 {1C959542-BAC2-4E55-9A6D-13251914CBB9}.Release|x86.Build.0 = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC954746}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {06EC74CB-9A12-429C-B551-8562EC954746}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {06EC74CB-9A12-429C-B551-8562EC954746}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {06EC74CB-9A12-429C-B551-8562EC954746}.AuditMode|x64.ActiveCfg = Release|x64 {06EC74CB-9A12-429C-B551-8562EC954746}.AuditMode|x86.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC954746}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {06EC74CB-9A12-429C-B551-8562EC954746}.Debug|ARM.ActiveCfg = Debug|Win32 {06EC74CB-9A12-429C-B551-8562EC954746}.Debug|ARM64.ActiveCfg = Debug|ARM64 {06EC74CB-9A12-429C-B551-8562EC954746}.Debug|ARM64.Build.0 = Debug|ARM64 {06EC74CB-9A12-429C-B551-8562EC954746}.Debug|x64.ActiveCfg = Debug|x64 @@ -713,13 +640,11 @@ Global {06EC74CB-9A12-429C-B551-8562EC954746}.Debug|x86.ActiveCfg = Debug|Win32 {06EC74CB-9A12-429C-B551-8562EC954746}.Debug|x86.Build.0 = Debug|Win32 {06EC74CB-9A12-429C-B551-8562EC954746}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {06EC74CB-9A12-429C-B551-8562EC954746}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {06EC74CB-9A12-429C-B551-8562EC954746}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {06EC74CB-9A12-429C-B551-8562EC954746}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {06EC74CB-9A12-429C-B551-8562EC954746}.Fuzzing|x64.Build.0 = Fuzzing|x64 {06EC74CB-9A12-429C-B551-8562EC954746}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {06EC74CB-9A12-429C-B551-8562EC954746}.Release|Any CPU.ActiveCfg = Release|Win32 - {06EC74CB-9A12-429C-B551-8562EC954746}.Release|ARM.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC954746}.Release|ARM64.ActiveCfg = Release|ARM64 {06EC74CB-9A12-429C-B551-8562EC954746}.Release|ARM64.Build.0 = Release|ARM64 {06EC74CB-9A12-429C-B551-8562EC954746}.Release|x64.ActiveCfg = Release|x64 @@ -727,12 +652,10 @@ Global {06EC74CB-9A12-429C-B551-8562EC954746}.Release|x86.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC954746}.Release|x86.Build.0 = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC954747}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {06EC74CB-9A12-429C-B551-8562EC954747}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {06EC74CB-9A12-429C-B551-8562EC954747}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {06EC74CB-9A12-429C-B551-8562EC954747}.AuditMode|x64.ActiveCfg = Release|x64 {06EC74CB-9A12-429C-B551-8562EC954747}.AuditMode|x86.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC954747}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {06EC74CB-9A12-429C-B551-8562EC954747}.Debug|ARM.ActiveCfg = Debug|Win32 {06EC74CB-9A12-429C-B551-8562EC954747}.Debug|ARM64.ActiveCfg = Debug|ARM64 {06EC74CB-9A12-429C-B551-8562EC954747}.Debug|ARM64.Build.0 = Debug|ARM64 {06EC74CB-9A12-429C-B551-8562EC954747}.Debug|x64.ActiveCfg = Debug|x64 @@ -740,12 +663,10 @@ Global {06EC74CB-9A12-429C-B551-8562EC954747}.Debug|x86.ActiveCfg = Debug|Win32 {06EC74CB-9A12-429C-B551-8562EC954747}.Debug|x86.Build.0 = Debug|Win32 {06EC74CB-9A12-429C-B551-8562EC954747}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {06EC74CB-9A12-429C-B551-8562EC954747}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {06EC74CB-9A12-429C-B551-8562EC954747}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {06EC74CB-9A12-429C-B551-8562EC954747}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {06EC74CB-9A12-429C-B551-8562EC954747}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {06EC74CB-9A12-429C-B551-8562EC954747}.Release|Any CPU.ActiveCfg = Release|Win32 - {06EC74CB-9A12-429C-B551-8562EC954747}.Release|ARM.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC954747}.Release|ARM64.ActiveCfg = Release|ARM64 {06EC74CB-9A12-429C-B551-8562EC954747}.Release|ARM64.Build.0 = Release|ARM64 {06EC74CB-9A12-429C-B551-8562EC954747}.Release|x64.ActiveCfg = Release|x64 @@ -753,12 +674,10 @@ Global {06EC74CB-9A12-429C-B551-8562EC954747}.Release|x86.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC954747}.Release|x86.Build.0 = Release|Win32 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {531C23E7-4B76-4C08-8AAD-04164CB628C9}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.AuditMode|x64.ActiveCfg = Release|x64 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.AuditMode|x86.ActiveCfg = Release|Win32 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Debug|ARM.ActiveCfg = Debug|Win32 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Debug|ARM64.ActiveCfg = Debug|ARM64 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Debug|ARM64.Build.0 = Debug|ARM64 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Debug|x64.ActiveCfg = Debug|x64 @@ -766,12 +685,10 @@ Global {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Debug|x86.ActiveCfg = Debug|Win32 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Debug|x86.Build.0 = Debug|Win32 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Release|Any CPU.ActiveCfg = Release|Win32 - {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Release|ARM.ActiveCfg = Release|Win32 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Release|ARM64.ActiveCfg = Release|ARM64 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Release|ARM64.Build.0 = Release|ARM64 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Release|x64.ActiveCfg = Release|x64 @@ -779,12 +696,10 @@ Global {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Release|x86.ActiveCfg = Release|Win32 {531C23E7-4B76-4C08-8AAD-04164CB628C9}.Release|x86.Build.0 = Release|Win32 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {531C23E7-4B76-4C08-8BBD-04164CB628C9}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.AuditMode|x64.ActiveCfg = Release|x64 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.AuditMode|x86.ActiveCfg = Release|Win32 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Debug|ARM.ActiveCfg = Debug|Win32 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Debug|ARM64.ActiveCfg = Debug|ARM64 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Debug|ARM64.Build.0 = Debug|ARM64 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Debug|x64.ActiveCfg = Debug|x64 @@ -792,12 +707,10 @@ Global {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Debug|x86.ActiveCfg = Debug|Win32 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Debug|x86.Build.0 = Debug|Win32 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Release|Any CPU.ActiveCfg = Release|Win32 - {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Release|ARM.ActiveCfg = Release|Win32 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Release|ARM64.ActiveCfg = Release|ARM64 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Release|ARM64.Build.0 = Release|ARM64 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Release|x64.ActiveCfg = Release|x64 @@ -805,36 +718,30 @@ Global {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Release|x86.ActiveCfg = Release|Win32 {531C23E7-4B76-4C08-8BBD-04164CB628C9}.Release|x86.Build.0 = Release|Win32 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.AuditMode|x64.ActiveCfg = Release|x64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.AuditMode|x86.ActiveCfg = Release|Win32 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Debug|ARM.ActiveCfg = Debug|Win32 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Debug|ARM64.ActiveCfg = Debug|ARM64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Debug|ARM64.Build.0 = Debug|ARM64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Debug|x64.ActiveCfg = Debug|x64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Debug|x64.Build.0 = Debug|x64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Debug|x86.ActiveCfg = Debug|Win32 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Release|Any CPU.ActiveCfg = Release|Win32 - {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Release|ARM.ActiveCfg = Release|Win32 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Release|ARM64.ActiveCfg = Release|ARM64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Release|ARM64.Build.0 = Release|ARM64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Release|x64.ActiveCfg = Release|x64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Release|x64.Build.0 = Release|x64 {8CDB8850-7484-4EC7-B45B-181F85B2EE54}.Release|x86.ActiveCfg = Release|Win32 {12144E07-FE63-4D33-9231-748B8D8C3792}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {12144E07-FE63-4D33-9231-748B8D8C3792}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {12144E07-FE63-4D33-9231-748B8D8C3792}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {12144E07-FE63-4D33-9231-748B8D8C3792}.AuditMode|x64.ActiveCfg = Release|x64 {12144E07-FE63-4D33-9231-748B8D8C3792}.AuditMode|x86.ActiveCfg = Release|Win32 {12144E07-FE63-4D33-9231-748B8D8C3792}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {12144E07-FE63-4D33-9231-748B8D8C3792}.Debug|ARM.ActiveCfg = Debug|Win32 {12144E07-FE63-4D33-9231-748B8D8C3792}.Debug|ARM64.ActiveCfg = Debug|ARM64 {12144E07-FE63-4D33-9231-748B8D8C3792}.Debug|ARM64.Build.0 = Debug|ARM64 {12144E07-FE63-4D33-9231-748B8D8C3792}.Debug|x64.ActiveCfg = Debug|x64 @@ -842,12 +749,10 @@ Global {12144E07-FE63-4D33-9231-748B8D8C3792}.Debug|x86.ActiveCfg = Debug|Win32 {12144E07-FE63-4D33-9231-748B8D8C3792}.Debug|x86.Build.0 = Debug|Win32 {12144E07-FE63-4D33-9231-748B8D8C3792}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {12144E07-FE63-4D33-9231-748B8D8C3792}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {12144E07-FE63-4D33-9231-748B8D8C3792}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {12144E07-FE63-4D33-9231-748B8D8C3792}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {12144E07-FE63-4D33-9231-748B8D8C3792}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {12144E07-FE63-4D33-9231-748B8D8C3792}.Release|Any CPU.ActiveCfg = Release|Win32 - {12144E07-FE63-4D33-9231-748B8D8C3792}.Release|ARM.ActiveCfg = Release|Win32 {12144E07-FE63-4D33-9231-748B8D8C3792}.Release|ARM64.ActiveCfg = Release|ARM64 {12144E07-FE63-4D33-9231-748B8D8C3792}.Release|ARM64.Build.0 = Release|ARM64 {12144E07-FE63-4D33-9231-748B8D8C3792}.Release|x64.ActiveCfg = Release|x64 @@ -855,12 +760,10 @@ Global {12144E07-FE63-4D33-9231-748B8D8C3792}.Release|x86.ActiveCfg = Release|Win32 {12144E07-FE63-4D33-9231-748B8D8C3792}.Release|x86.Build.0 = Release|Win32 {6AF01638-84CF-4B65-9870-484DFFCAC772}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {6AF01638-84CF-4B65-9870-484DFFCAC772}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {6AF01638-84CF-4B65-9870-484DFFCAC772}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {6AF01638-84CF-4B65-9870-484DFFCAC772}.AuditMode|x64.ActiveCfg = Release|x64 {6AF01638-84CF-4B65-9870-484DFFCAC772}.AuditMode|x86.ActiveCfg = Release|Win32 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6AF01638-84CF-4B65-9870-484DFFCAC772}.Debug|ARM.ActiveCfg = Debug|Win32 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Debug|ARM64.ActiveCfg = Debug|ARM64 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Debug|ARM64.Build.0 = Debug|ARM64 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Debug|x64.ActiveCfg = Debug|x64 @@ -868,12 +771,10 @@ Global {6AF01638-84CF-4B65-9870-484DFFCAC772}.Debug|x86.ActiveCfg = Debug|Win32 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Debug|x86.Build.0 = Debug|Win32 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {6AF01638-84CF-4B65-9870-484DFFCAC772}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Release|Any CPU.ActiveCfg = Release|Win32 - {6AF01638-84CF-4B65-9870-484DFFCAC772}.Release|ARM.ActiveCfg = Release|Win32 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Release|ARM64.ActiveCfg = Release|ARM64 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Release|ARM64.Build.0 = Release|ARM64 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Release|x64.ActiveCfg = Release|x64 @@ -881,12 +782,10 @@ Global {6AF01638-84CF-4B65-9870-484DFFCAC772}.Release|x86.ActiveCfg = Release|Win32 {6AF01638-84CF-4B65-9870-484DFFCAC772}.Release|x86.Build.0 = Release|Win32 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.AuditMode|x64.ActiveCfg = Release|x64 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.AuditMode|x86.ActiveCfg = Release|Win32 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Debug|ARM.ActiveCfg = Debug|Win32 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Debug|ARM64.ActiveCfg = Debug|ARM64 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Debug|ARM64.Build.0 = Debug|ARM64 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Debug|x64.ActiveCfg = Debug|x64 @@ -894,12 +793,10 @@ Global {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Debug|x86.ActiveCfg = Debug|Win32 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Debug|x86.Build.0 = Debug|Win32 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Release|Any CPU.ActiveCfg = Release|Win32 - {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Release|ARM.ActiveCfg = Release|Win32 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Release|ARM64.ActiveCfg = Release|ARM64 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Release|ARM64.Build.0 = Release|ARM64 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Release|x64.ActiveCfg = Release|x64 @@ -907,12 +804,10 @@ Global {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Release|x86.ActiveCfg = Release|Win32 {96927B31-D6E8-4ABD-B03E-A5088A30BEBE}.Release|x86.Build.0 = Release|Win32 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.AuditMode|x64.ActiveCfg = Release|x64 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.AuditMode|x86.ActiveCfg = Release|Win32 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Debug|ARM.ActiveCfg = Debug|Win32 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Debug|ARM64.ActiveCfg = Debug|ARM64 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Debug|ARM64.Build.0 = Debug|ARM64 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Debug|x64.ActiveCfg = Debug|x64 @@ -920,12 +815,10 @@ Global {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Debug|x86.ActiveCfg = Debug|Win32 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Debug|x86.Build.0 = Debug|Win32 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Release|Any CPU.ActiveCfg = Release|Win32 - {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Release|ARM.ActiveCfg = Release|Win32 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Release|ARM64.ActiveCfg = Release|ARM64 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Release|ARM64.Build.0 = Release|ARM64 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Release|x64.ActiveCfg = Release|x64 @@ -933,12 +826,10 @@ Global {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Release|x86.ActiveCfg = Release|Win32 {F210A4AE-E02A-4BFC-80BB-F50A672FE763}.Release|x86.Build.0 = Release|Win32 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.AuditMode|x64.ActiveCfg = Release|x64 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.AuditMode|x86.ActiveCfg = Release|Win32 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Debug|ARM.ActiveCfg = Debug|Win32 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Debug|ARM64.ActiveCfg = Debug|ARM64 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Debug|ARM64.Build.0 = Debug|ARM64 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Debug|x64.ActiveCfg = Debug|x64 @@ -946,13 +837,11 @@ Global {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Debug|x86.ActiveCfg = Debug|Win32 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Debug|x86.Build.0 = Debug|Win32 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Fuzzing|x64.Build.0 = Fuzzing|x64 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Release|Any CPU.ActiveCfg = Release|Win32 - {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Release|ARM.ActiveCfg = Release|Win32 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Release|ARM64.ActiveCfg = Release|ARM64 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Release|ARM64.Build.0 = Release|ARM64 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Release|x64.ActiveCfg = Release|x64 @@ -960,12 +849,10 @@ Global {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Release|x86.ActiveCfg = Release|Win32 {5D23E8E1-3C64-4CC1-A8F7-6861677F7239}.Release|x86.Build.0 = Release|Win32 {18D09A24-8240-42D6-8CB6-236EEE820262}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {18D09A24-8240-42D6-8CB6-236EEE820262}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {18D09A24-8240-42D6-8CB6-236EEE820262}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820262}.AuditMode|x64.ActiveCfg = Release|x64 {18D09A24-8240-42D6-8CB6-236EEE820262}.AuditMode|x86.ActiveCfg = Release|Win32 {18D09A24-8240-42D6-8CB6-236EEE820262}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {18D09A24-8240-42D6-8CB6-236EEE820262}.Debug|ARM.ActiveCfg = Debug|Win32 {18D09A24-8240-42D6-8CB6-236EEE820262}.Debug|ARM64.ActiveCfg = Debug|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820262}.Debug|ARM64.Build.0 = Debug|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820262}.Debug|x64.ActiveCfg = Debug|x64 @@ -973,13 +860,11 @@ Global {18D09A24-8240-42D6-8CB6-236EEE820262}.Debug|x86.ActiveCfg = Debug|Win32 {18D09A24-8240-42D6-8CB6-236EEE820262}.Debug|x86.Build.0 = Debug|Win32 {18D09A24-8240-42D6-8CB6-236EEE820262}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {18D09A24-8240-42D6-8CB6-236EEE820262}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {18D09A24-8240-42D6-8CB6-236EEE820262}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820262}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {18D09A24-8240-42D6-8CB6-236EEE820262}.Fuzzing|x64.Build.0 = Fuzzing|x64 {18D09A24-8240-42D6-8CB6-236EEE820262}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {18D09A24-8240-42D6-8CB6-236EEE820262}.Release|Any CPU.ActiveCfg = Release|Win32 - {18D09A24-8240-42D6-8CB6-236EEE820262}.Release|ARM.ActiveCfg = Release|Win32 {18D09A24-8240-42D6-8CB6-236EEE820262}.Release|ARM64.ActiveCfg = Release|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820262}.Release|ARM64.Build.0 = Release|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820262}.Release|x64.ActiveCfg = Release|x64 @@ -987,62 +872,50 @@ Global {18D09A24-8240-42D6-8CB6-236EEE820262}.Release|x86.ActiveCfg = Release|Win32 {18D09A24-8240-42D6-8CB6-236EEE820262}.Release|x86.Build.0 = Release|Win32 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.AuditMode|Any CPU.ActiveCfg = Debug|ARM64 - {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.AuditMode|ARM.ActiveCfg = Release|ARM64 - {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.AuditMode|ARM.Build.0 = Release|ARM64 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.AuditMode|ARM64.ActiveCfg = Debug|Win32 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.AuditMode|x64.ActiveCfg = Release|x64 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.AuditMode|x86.ActiveCfg = Release|Win32 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Debug|ARM.ActiveCfg = Debug|Win32 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Debug|ARM64.ActiveCfg = Debug|Win32 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Debug|x64.ActiveCfg = Debug|x64 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Debug|x64.Build.0 = Debug|x64 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Debug|x86.ActiveCfg = Debug|Win32 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Debug|x86.Build.0 = Debug|Win32 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Fuzzing|Any CPU.ActiveCfg = Debug|x64 - {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Fuzzing|ARM.ActiveCfg = Debug|x64 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Fuzzing|ARM64.ActiveCfg = Release|ARM64 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Fuzzing|x64.ActiveCfg = Debug|x64 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Fuzzing|x86.ActiveCfg = Release|Win32 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Release|Any CPU.ActiveCfg = Release|Win32 - {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Release|ARM.ActiveCfg = Release|Win32 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Release|ARM64.ActiveCfg = Release|ARM64 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Release|x64.ActiveCfg = Release|x64 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Release|x64.Build.0 = Release|x64 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Release|x86.ActiveCfg = Release|Win32 {C17E1BF3-9D34-4779-9458-A8EF98CC5662}.Release|x86.Build.0 = Release|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.AuditMode|Any CPU.ActiveCfg = Debug|ARM64 - {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.AuditMode|ARM.ActiveCfg = Release|ARM64 - {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.AuditMode|ARM.Build.0 = Release|ARM64 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.AuditMode|ARM64.ActiveCfg = Debug|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.AuditMode|x64.ActiveCfg = Release|x64 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.AuditMode|x86.ActiveCfg = Release|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Debug|ARM.ActiveCfg = Debug|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Debug|ARM64.ActiveCfg = Debug|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Debug|x64.ActiveCfg = Debug|x64 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Debug|x64.Build.0 = Debug|x64 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Debug|x86.ActiveCfg = Debug|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Debug|x86.Build.0 = Debug|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Fuzzing|Any CPU.ActiveCfg = Debug|Win32 - {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Fuzzing|ARM.ActiveCfg = Debug|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Fuzzing|ARM64.ActiveCfg = Debug|ARM64 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Fuzzing|x64.ActiveCfg = Debug|x64 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Fuzzing|x86.ActiveCfg = Debug|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Release|Any CPU.ActiveCfg = Release|Win32 - {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Release|ARM.ActiveCfg = Release|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Release|ARM64.ActiveCfg = Release|ARM64 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Release|x64.ActiveCfg = Release|x64 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Release|x64.Build.0 = Release|x64 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Release|x86.ActiveCfg = Release|Win32 {099193A0-1E43-4BBC-BA7F-7B351E1342DF}.Release|x86.Build.0 = Release|Win32 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {FC802440-AD6A-4919-8F2C-7701F2B38D79}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.AuditMode|x64.ActiveCfg = Release|x64 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.AuditMode|x86.ActiveCfg = Release|Win32 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Debug|ARM.ActiveCfg = Debug|Win32 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Debug|ARM64.ActiveCfg = Debug|ARM64 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Debug|ARM64.Build.0 = Debug|ARM64 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Debug|x64.ActiveCfg = Debug|x64 @@ -1050,12 +923,10 @@ Global {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Debug|x86.ActiveCfg = Debug|Win32 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Debug|x86.Build.0 = Debug|Win32 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Release|Any CPU.ActiveCfg = Release|Win32 - {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Release|ARM.ActiveCfg = Release|Win32 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Release|ARM64.ActiveCfg = Release|ARM64 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Release|ARM64.Build.0 = Release|ARM64 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Release|x64.ActiveCfg = Release|x64 @@ -1063,12 +934,10 @@ Global {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Release|x86.ActiveCfg = Release|Win32 {FC802440-AD6A-4919-8F2C-7701F2B38D79}.Release|x86.Build.0 = Release|Win32 {919544AC-D39B-463F-8414-3C3C67CF727C}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {919544AC-D39B-463F-8414-3C3C67CF727C}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {919544AC-D39B-463F-8414-3C3C67CF727C}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {919544AC-D39B-463F-8414-3C3C67CF727C}.AuditMode|x64.ActiveCfg = Release|x64 {919544AC-D39B-463F-8414-3C3C67CF727C}.AuditMode|x86.ActiveCfg = Release|Win32 {919544AC-D39B-463F-8414-3C3C67CF727C}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {919544AC-D39B-463F-8414-3C3C67CF727C}.Debug|ARM.ActiveCfg = Debug|Win32 {919544AC-D39B-463F-8414-3C3C67CF727C}.Debug|ARM64.ActiveCfg = Debug|ARM64 {919544AC-D39B-463F-8414-3C3C67CF727C}.Debug|ARM64.Build.0 = Debug|ARM64 {919544AC-D39B-463F-8414-3C3C67CF727C}.Debug|x64.ActiveCfg = Debug|x64 @@ -1076,12 +945,10 @@ Global {919544AC-D39B-463F-8414-3C3C67CF727C}.Debug|x86.ActiveCfg = Debug|Win32 {919544AC-D39B-463F-8414-3C3C67CF727C}.Debug|x86.Build.0 = Debug|Win32 {919544AC-D39B-463F-8414-3C3C67CF727C}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {919544AC-D39B-463F-8414-3C3C67CF727C}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {919544AC-D39B-463F-8414-3C3C67CF727C}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {919544AC-D39B-463F-8414-3C3C67CF727C}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {919544AC-D39B-463F-8414-3C3C67CF727C}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {919544AC-D39B-463F-8414-3C3C67CF727C}.Release|Any CPU.ActiveCfg = Release|Win32 - {919544AC-D39B-463F-8414-3C3C67CF727C}.Release|ARM.ActiveCfg = Release|Win32 {919544AC-D39B-463F-8414-3C3C67CF727C}.Release|ARM64.ActiveCfg = Release|ARM64 {919544AC-D39B-463F-8414-3C3C67CF727C}.Release|ARM64.Build.0 = Release|ARM64 {919544AC-D39B-463F-8414-3C3C67CF727C}.Release|x64.ActiveCfg = Release|x64 @@ -1089,12 +956,10 @@ Global {919544AC-D39B-463F-8414-3C3C67CF727C}.Release|x86.ActiveCfg = Release|Win32 {919544AC-D39B-463F-8414-3C3C67CF727C}.Release|x86.Build.0 = Release|Win32 {ED82003F-FC5D-4E94-8B36-F480018ED064}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {ED82003F-FC5D-4E94-8B36-F480018ED064}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {ED82003F-FC5D-4E94-8B36-F480018ED064}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {ED82003F-FC5D-4E94-8B36-F480018ED064}.AuditMode|x64.ActiveCfg = Release|x64 {ED82003F-FC5D-4E94-8B36-F480018ED064}.AuditMode|x86.ActiveCfg = Release|Win32 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {ED82003F-FC5D-4E94-8B36-F480018ED064}.Debug|ARM.ActiveCfg = Debug|Win32 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Debug|ARM64.ActiveCfg = Debug|ARM64 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Debug|ARM64.Build.0 = Debug|ARM64 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Debug|x64.ActiveCfg = Debug|x64 @@ -1102,12 +967,10 @@ Global {ED82003F-FC5D-4E94-8B36-F480018ED064}.Debug|x86.ActiveCfg = Debug|Win32 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Debug|x86.Build.0 = Debug|Win32 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {ED82003F-FC5D-4E94-8B36-F480018ED064}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Release|Any CPU.ActiveCfg = Release|Win32 - {ED82003F-FC5D-4E94-8B36-F480018ED064}.Release|ARM.ActiveCfg = Release|Win32 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Release|ARM64.ActiveCfg = Release|ARM64 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Release|ARM64.Build.0 = Release|ARM64 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Release|x64.ActiveCfg = Release|x64 @@ -1115,12 +978,10 @@ Global {ED82003F-FC5D-4E94-8B36-F480018ED064}.Release|x86.ActiveCfg = Release|Win32 {ED82003F-FC5D-4E94-8B36-F480018ED064}.Release|x86.Build.0 = Release|Win32 {06EC74CB-9A12-429C-B551-8532EC964726}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {06EC74CB-9A12-429C-B551-8532EC964726}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {06EC74CB-9A12-429C-B551-8532EC964726}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {06EC74CB-9A12-429C-B551-8532EC964726}.AuditMode|x64.ActiveCfg = Release|x64 {06EC74CB-9A12-429C-B551-8532EC964726}.AuditMode|x86.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8532EC964726}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {06EC74CB-9A12-429C-B551-8532EC964726}.Debug|ARM.ActiveCfg = Debug|Win32 {06EC74CB-9A12-429C-B551-8532EC964726}.Debug|ARM64.ActiveCfg = Debug|ARM64 {06EC74CB-9A12-429C-B551-8532EC964726}.Debug|ARM64.Build.0 = Debug|ARM64 {06EC74CB-9A12-429C-B551-8532EC964726}.Debug|x64.ActiveCfg = Debug|x64 @@ -1128,13 +989,11 @@ Global {06EC74CB-9A12-429C-B551-8532EC964726}.Debug|x86.ActiveCfg = Debug|Win32 {06EC74CB-9A12-429C-B551-8532EC964726}.Debug|x86.Build.0 = Debug|Win32 {06EC74CB-9A12-429C-B551-8532EC964726}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {06EC74CB-9A12-429C-B551-8532EC964726}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {06EC74CB-9A12-429C-B551-8532EC964726}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {06EC74CB-9A12-429C-B551-8532EC964726}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {06EC74CB-9A12-429C-B551-8532EC964726}.Fuzzing|x64.Build.0 = Fuzzing|x64 {06EC74CB-9A12-429C-B551-8532EC964726}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {06EC74CB-9A12-429C-B551-8532EC964726}.Release|Any CPU.ActiveCfg = Release|Win32 - {06EC74CB-9A12-429C-B551-8532EC964726}.Release|ARM.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8532EC964726}.Release|ARM64.ActiveCfg = Release|ARM64 {06EC74CB-9A12-429C-B551-8532EC964726}.Release|ARM64.Build.0 = Release|ARM64 {06EC74CB-9A12-429C-B551-8532EC964726}.Release|x64.ActiveCfg = Release|x64 @@ -1142,12 +1001,10 @@ Global {06EC74CB-9A12-429C-B551-8532EC964726}.Release|x86.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8532EC964726}.Release|x86.Build.0 = Release|Win32 {ED82003F-FC5D-4E94-8B47-F480018ED064}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {ED82003F-FC5D-4E94-8B47-F480018ED064}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {ED82003F-FC5D-4E94-8B47-F480018ED064}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {ED82003F-FC5D-4E94-8B47-F480018ED064}.AuditMode|x64.ActiveCfg = Release|x64 {ED82003F-FC5D-4E94-8B47-F480018ED064}.AuditMode|x86.ActiveCfg = Release|Win32 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {ED82003F-FC5D-4E94-8B47-F480018ED064}.Debug|ARM.ActiveCfg = Debug|Win32 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Debug|ARM64.ActiveCfg = Debug|ARM64 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Debug|ARM64.Build.0 = Debug|ARM64 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Debug|x64.ActiveCfg = Debug|x64 @@ -1155,13 +1012,11 @@ Global {ED82003F-FC5D-4E94-8B47-F480018ED064}.Debug|x86.ActiveCfg = Debug|Win32 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Debug|x86.Build.0 = Debug|Win32 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {ED82003F-FC5D-4E94-8B47-F480018ED064}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Fuzzing|x64.Build.0 = Fuzzing|x64 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Release|Any CPU.ActiveCfg = Release|Win32 - {ED82003F-FC5D-4E94-8B47-F480018ED064}.Release|ARM.ActiveCfg = Release|Win32 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Release|ARM64.ActiveCfg = Release|ARM64 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Release|ARM64.Build.0 = Release|ARM64 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Release|x64.ActiveCfg = Release|x64 @@ -1169,12 +1024,10 @@ Global {ED82003F-FC5D-4E94-8B47-F480018ED064}.Release|x86.ActiveCfg = Release|Win32 {ED82003F-FC5D-4E94-8B47-F480018ED064}.Release|x86.Build.0 = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC964846}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {06EC74CB-9A12-429C-B551-8562EC964846}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {06EC74CB-9A12-429C-B551-8562EC964846}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {06EC74CB-9A12-429C-B551-8562EC964846}.AuditMode|x64.ActiveCfg = Release|x64 {06EC74CB-9A12-429C-B551-8562EC964846}.AuditMode|x86.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC964846}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {06EC74CB-9A12-429C-B551-8562EC964846}.Debug|ARM.ActiveCfg = Debug|Win32 {06EC74CB-9A12-429C-B551-8562EC964846}.Debug|ARM64.ActiveCfg = Debug|ARM64 {06EC74CB-9A12-429C-B551-8562EC964846}.Debug|ARM64.Build.0 = Debug|ARM64 {06EC74CB-9A12-429C-B551-8562EC964846}.Debug|x64.ActiveCfg = Debug|x64 @@ -1182,13 +1035,11 @@ Global {06EC74CB-9A12-429C-B551-8562EC964846}.Debug|x86.ActiveCfg = Debug|Win32 {06EC74CB-9A12-429C-B551-8562EC964846}.Debug|x86.Build.0 = Debug|Win32 {06EC74CB-9A12-429C-B551-8562EC964846}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {06EC74CB-9A12-429C-B551-8562EC964846}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {06EC74CB-9A12-429C-B551-8562EC964846}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {06EC74CB-9A12-429C-B551-8562EC964846}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {06EC74CB-9A12-429C-B551-8562EC964846}.Fuzzing|x64.Build.0 = Fuzzing|x64 {06EC74CB-9A12-429C-B551-8562EC964846}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {06EC74CB-9A12-429C-B551-8562EC964846}.Release|Any CPU.ActiveCfg = Release|Win32 - {06EC74CB-9A12-429C-B551-8562EC964846}.Release|ARM.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC964846}.Release|ARM64.ActiveCfg = Release|ARM64 {06EC74CB-9A12-429C-B551-8562EC964846}.Release|ARM64.Build.0 = Release|ARM64 {06EC74CB-9A12-429C-B551-8562EC964846}.Release|x64.ActiveCfg = Release|x64 @@ -1196,12 +1047,10 @@ Global {06EC74CB-9A12-429C-B551-8562EC964846}.Release|x86.ActiveCfg = Release|Win32 {06EC74CB-9A12-429C-B551-8562EC964846}.Release|x86.Build.0 = Release|Win32 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.AuditMode|x64.ActiveCfg = Release|x64 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.AuditMode|x86.ActiveCfg = Release|Win32 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Debug|ARM.ActiveCfg = Debug|Win32 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Debug|ARM64.ActiveCfg = Debug|ARM64 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Debug|ARM64.Build.0 = Debug|ARM64 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Debug|x64.ActiveCfg = Debug|x64 @@ -1209,12 +1058,10 @@ Global {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Debug|x86.ActiveCfg = Debug|Win32 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Debug|x86.Build.0 = Debug|Win32 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Release|Any CPU.ActiveCfg = Release|Win32 - {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Release|ARM.ActiveCfg = Release|Win32 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Release|ARM64.ActiveCfg = Release|ARM64 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Release|ARM64.Build.0 = Release|ARM64 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Release|x64.ActiveCfg = Release|x64 @@ -1222,12 +1069,10 @@ Global {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Release|x86.ActiveCfg = Release|Win32 {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4}.Release|x86.Build.0 = Release|Win32 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.AuditMode|x64.ActiveCfg = Release|x64 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.AuditMode|x86.ActiveCfg = Release|Win32 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Debug|ARM.ActiveCfg = Debug|Win32 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Debug|ARM64.ActiveCfg = Debug|ARM64 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Debug|ARM64.Build.0 = Debug|ARM64 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Debug|x64.ActiveCfg = Debug|x64 @@ -1235,52 +1080,21 @@ Global {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Debug|x86.ActiveCfg = Debug|Win32 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Debug|x86.Build.0 = Debug|Win32 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Release|Any CPU.ActiveCfg = Release|Win32 - {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Release|ARM.ActiveCfg = Release|Win32 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Release|ARM64.ActiveCfg = Release|ARM64 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Release|ARM64.Build.0 = Release|ARM64 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Release|x64.ActiveCfg = Release|x64 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Release|x64.Build.0 = Release|x64 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Release|x86.ActiveCfg = Release|Win32 {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB}.Release|x86.Build.0 = Release|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.AuditMode|ARM64.ActiveCfg = Release|ARM64 - {990F2657-8580-4828-943F-5DD657D11842}.AuditMode|x64.ActiveCfg = Release|x64 - {990F2657-8580-4828-943F-5DD657D11842}.AuditMode|x86.ActiveCfg = Release|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Debug|ARM.ActiveCfg = Debug|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {990F2657-8580-4828-943F-5DD657D11842}.Debug|ARM64.Build.0 = Debug|ARM64 - {990F2657-8580-4828-943F-5DD657D11842}.Debug|x64.ActiveCfg = Debug|x64 - {990F2657-8580-4828-943F-5DD657D11842}.Debug|x64.Build.0 = Debug|x64 - {990F2657-8580-4828-943F-5DD657D11842}.Debug|x86.ActiveCfg = Debug|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Debug|x86.Build.0 = Debug|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {990F2657-8580-4828-943F-5DD657D11842}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {990F2657-8580-4828-943F-5DD657D11842}.Fuzzing|x64.Build.0 = Fuzzing|x64 - {990F2657-8580-4828-943F-5DD657D11842}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Release|Any CPU.ActiveCfg = Release|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Release|ARM.ActiveCfg = Release|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Release|ARM64.ActiveCfg = Release|ARM64 - {990F2657-8580-4828-943F-5DD657D11842}.Release|ARM64.Build.0 = Release|ARM64 - {990F2657-8580-4828-943F-5DD657D11842}.Release|x64.ActiveCfg = Release|x64 - {990F2657-8580-4828-943F-5DD657D11842}.Release|x64.Build.0 = Release|x64 - {990F2657-8580-4828-943F-5DD657D11842}.Release|x86.ActiveCfg = Release|Win32 - {990F2657-8580-4828-943F-5DD657D11842}.Release|x86.Build.0 = Release|Win32 {814DBDDE-894E-4327-A6E1-740504850098}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {814DBDDE-894E-4327-A6E1-740504850098}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {814DBDDE-894E-4327-A6E1-740504850098}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {814DBDDE-894E-4327-A6E1-740504850098}.AuditMode|x64.ActiveCfg = Release|x64 {814DBDDE-894E-4327-A6E1-740504850098}.AuditMode|x86.ActiveCfg = Release|Win32 {814DBDDE-894E-4327-A6E1-740504850098}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {814DBDDE-894E-4327-A6E1-740504850098}.Debug|ARM.ActiveCfg = Debug|Win32 {814DBDDE-894E-4327-A6E1-740504850098}.Debug|ARM64.ActiveCfg = Debug|ARM64 {814DBDDE-894E-4327-A6E1-740504850098}.Debug|ARM64.Build.0 = Debug|ARM64 {814DBDDE-894E-4327-A6E1-740504850098}.Debug|x64.ActiveCfg = Debug|x64 @@ -1288,12 +1102,10 @@ Global {814DBDDE-894E-4327-A6E1-740504850098}.Debug|x86.ActiveCfg = Debug|Win32 {814DBDDE-894E-4327-A6E1-740504850098}.Debug|x86.Build.0 = Debug|Win32 {814DBDDE-894E-4327-A6E1-740504850098}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {814DBDDE-894E-4327-A6E1-740504850098}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {814DBDDE-894E-4327-A6E1-740504850098}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {814DBDDE-894E-4327-A6E1-740504850098}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {814DBDDE-894E-4327-A6E1-740504850098}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {814DBDDE-894E-4327-A6E1-740504850098}.Release|Any CPU.ActiveCfg = Release|Win32 - {814DBDDE-894E-4327-A6E1-740504850098}.Release|ARM.ActiveCfg = Release|Win32 {814DBDDE-894E-4327-A6E1-740504850098}.Release|ARM64.ActiveCfg = Release|ARM64 {814DBDDE-894E-4327-A6E1-740504850098}.Release|ARM64.Build.0 = Release|ARM64 {814DBDDE-894E-4327-A6E1-740504850098}.Release|x64.ActiveCfg = Release|x64 @@ -1301,12 +1113,10 @@ Global {814DBDDE-894E-4327-A6E1-740504850098}.Release|x86.ActiveCfg = Release|Win32 {814DBDDE-894E-4327-A6E1-740504850098}.Release|x86.Build.0 = Release|Win32 {814CBEEE-894E-4327-A6E1-740504850098}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {814CBEEE-894E-4327-A6E1-740504850098}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {814CBEEE-894E-4327-A6E1-740504850098}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {814CBEEE-894E-4327-A6E1-740504850098}.AuditMode|x64.ActiveCfg = Release|x64 {814CBEEE-894E-4327-A6E1-740504850098}.AuditMode|x86.ActiveCfg = Release|Win32 {814CBEEE-894E-4327-A6E1-740504850098}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {814CBEEE-894E-4327-A6E1-740504850098}.Debug|ARM.ActiveCfg = Debug|Win32 {814CBEEE-894E-4327-A6E1-740504850098}.Debug|ARM64.ActiveCfg = Debug|ARM64 {814CBEEE-894E-4327-A6E1-740504850098}.Debug|ARM64.Build.0 = Debug|ARM64 {814CBEEE-894E-4327-A6E1-740504850098}.Debug|x64.ActiveCfg = Debug|x64 @@ -1314,12 +1124,10 @@ Global {814CBEEE-894E-4327-A6E1-740504850098}.Debug|x86.ActiveCfg = Debug|Win32 {814CBEEE-894E-4327-A6E1-740504850098}.Debug|x86.Build.0 = Debug|Win32 {814CBEEE-894E-4327-A6E1-740504850098}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {814CBEEE-894E-4327-A6E1-740504850098}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {814CBEEE-894E-4327-A6E1-740504850098}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {814CBEEE-894E-4327-A6E1-740504850098}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {814CBEEE-894E-4327-A6E1-740504850098}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {814CBEEE-894E-4327-A6E1-740504850098}.Release|Any CPU.ActiveCfg = Release|Win32 - {814CBEEE-894E-4327-A6E1-740504850098}.Release|ARM.ActiveCfg = Release|Win32 {814CBEEE-894E-4327-A6E1-740504850098}.Release|ARM64.ActiveCfg = Release|ARM64 {814CBEEE-894E-4327-A6E1-740504850098}.Release|ARM64.Build.0 = Release|ARM64 {814CBEEE-894E-4327-A6E1-740504850098}.Release|x64.ActiveCfg = Release|x64 @@ -1327,7 +1135,6 @@ Global {814CBEEE-894E-4327-A6E1-740504850098}.Release|x86.ActiveCfg = Release|Win32 {814CBEEE-894E-4327-A6E1-740504850098}.Release|x86.Build.0 = Release|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {18D09A24-8240-42D6-8CB6-236EEE820263}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820263}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820263}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -1335,7 +1142,6 @@ Global {18D09A24-8240-42D6-8CB6-236EEE820263}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.AuditMode|x86.Build.0 = AuditMode|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {18D09A24-8240-42D6-8CB6-236EEE820263}.Debug|ARM.ActiveCfg = Debug|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.Debug|ARM64.ActiveCfg = Debug|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820263}.Debug|ARM64.Build.0 = Debug|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820263}.Debug|x64.ActiveCfg = Debug|x64 @@ -1343,47 +1149,18 @@ Global {18D09A24-8240-42D6-8CB6-236EEE820263}.Debug|x86.ActiveCfg = Debug|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.Debug|x86.Build.0 = Debug|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {18D09A24-8240-42D6-8CB6-236EEE820263}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820263}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {18D09A24-8240-42D6-8CB6-236EEE820263}.Fuzzing|x64.Build.0 = Fuzzing|x64 {18D09A24-8240-42D6-8CB6-236EEE820263}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.Release|Any CPU.ActiveCfg = Release|Win32 - {18D09A24-8240-42D6-8CB6-236EEE820263}.Release|ARM.ActiveCfg = Release|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.Release|ARM64.ActiveCfg = Release|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820263}.Release|ARM64.Build.0 = Release|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820263}.Release|x64.ActiveCfg = Release|x64 {18D09A24-8240-42D6-8CB6-236EEE820263}.Release|x64.Build.0 = Release|x64 {18D09A24-8240-42D6-8CB6-236EEE820263}.Release|x86.ActiveCfg = Release|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.Release|x86.Build.0 = Release|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.AuditMode|ARM64.ActiveCfg = Release|ARM64 - {990F2657-8580-4828-943F-5DD657D11843}.AuditMode|x64.ActiveCfg = Release|x64 - {990F2657-8580-4828-943F-5DD657D11843}.AuditMode|x86.ActiveCfg = Release|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Debug|ARM.ActiveCfg = Debug|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {990F2657-8580-4828-943F-5DD657D11843}.Debug|ARM64.Build.0 = Debug|ARM64 - {990F2657-8580-4828-943F-5DD657D11843}.Debug|x64.ActiveCfg = Debug|x64 - {990F2657-8580-4828-943F-5DD657D11843}.Debug|x64.Build.0 = Debug|x64 - {990F2657-8580-4828-943F-5DD657D11843}.Debug|x86.ActiveCfg = Debug|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Debug|x86.Build.0 = Debug|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {990F2657-8580-4828-943F-5DD657D11843}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {990F2657-8580-4828-943F-5DD657D11843}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Release|Any CPU.ActiveCfg = Release|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Release|ARM.ActiveCfg = Release|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Release|ARM64.ActiveCfg = Release|ARM64 - {990F2657-8580-4828-943F-5DD657D11843}.Release|ARM64.Build.0 = Release|ARM64 - {990F2657-8580-4828-943F-5DD657D11843}.Release|x64.ActiveCfg = Release|x64 - {990F2657-8580-4828-943F-5DD657D11843}.Release|x64.Build.0 = Release|x64 - {990F2657-8580-4828-943F-5DD657D11843}.Release|x86.ActiveCfg = Release|Win32 - {990F2657-8580-4828-943F-5DD657D11843}.Release|x86.Build.0 = Release|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -1391,7 +1168,6 @@ Global {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.AuditMode|x86.Build.0 = AuditMode|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Debug|ARM.ActiveCfg = Debug|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Debug|ARM64.ActiveCfg = Debug|ARM64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Debug|ARM64.Build.0 = Debug|ARM64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Debug|x64.ActiveCfg = Debug|x64 @@ -1399,57 +1175,23 @@ Global {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Debug|x86.ActiveCfg = Debug|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Debug|x86.Build.0 = Debug|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Fuzzing|x64.Build.0 = Fuzzing|x64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Release|Any CPU.ActiveCfg = Release|Win32 - {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Release|ARM.ActiveCfg = Release|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Release|ARM64.ActiveCfg = Release|ARM64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Release|ARM64.Build.0 = Release|ARM64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Release|x64.ActiveCfg = Release|x64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Release|x64.Build.0 = Release|x64 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Release|x86.ActiveCfg = Release|Win32 {0CF235BD-2DA0-407E-90EE-C467E8BBC714}.Release|x86.Build.0 = Release|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 - {48D21369-3D7B-4431-9967-24E81292CF62}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 - {48D21369-3D7B-4431-9967-24E81292CF62}.AuditMode|x64.ActiveCfg = AuditMode|x64 - {48D21369-3D7B-4431-9967-24E81292CF62}.AuditMode|x64.Build.0 = AuditMode|x64 - {48D21369-3D7B-4431-9967-24E81292CF62}.AuditMode|x86.ActiveCfg = AuditMode|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.AuditMode|x86.Build.0 = AuditMode|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Debug|ARM.ActiveCfg = Debug|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Debug|ARM64.Build.0 = Debug|ARM64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Debug|x64.ActiveCfg = Debug|x64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Debug|x64.Build.0 = Debug|x64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Debug|x86.ActiveCfg = Debug|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Debug|x86.Build.0 = Debug|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Fuzzing|x64.Build.0 = Fuzzing|x64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Release|Any CPU.ActiveCfg = Release|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Release|ARM.ActiveCfg = Release|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Release|ARM64.ActiveCfg = Release|ARM64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Release|ARM64.Build.0 = Release|ARM64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Release|x64.ActiveCfg = Release|x64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Release|x64.Build.0 = Release|x64 - {48D21369-3D7B-4431-9967-24E81292CF62}.Release|x86.ActiveCfg = Release|Win32 - {48D21369-3D7B-4431-9967-24E81292CF62}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.AuditMode|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.AuditMode|x64.ActiveCfg = AuditMode|x64 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.AuditMode|x64.Build.0 = AuditMode|x64 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.AuditMode|x86.ActiveCfg = Release|Win32 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|x64.ActiveCfg = Debug|x64 @@ -1457,12 +1199,10 @@ Global {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|x64.ActiveCfg = Release|x64 @@ -1470,13 +1210,11 @@ Global {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {CA5CAD1A-ABCD-429C-B551-8562EC954746}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.AuditMode|x64.ActiveCfg = AuditMode|x64 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.AuditMode|x64.Build.0 = AuditMode|x64 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.AuditMode|x86.ActiveCfg = Release|Win32 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Debug|x64.ActiveCfg = Debug|x64 @@ -1484,12 +1222,10 @@ Global {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Release|x64.ActiveCfg = Release|x64 @@ -1497,12 +1233,10 @@ Global {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-ABCD-429C-B551-8562EC954746}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.AuditMode|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.AuditMode|x64.ActiveCfg = Release|x64 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.AuditMode|x86.ActiveCfg = Release|Win32 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|x64.ActiveCfg = Debug|x64 @@ -1510,12 +1244,10 @@ Global {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|x64.ActiveCfg = Release|x64 @@ -1523,12 +1255,10 @@ Global {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.AuditMode|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-F542-4635-A069-7CAEFB930070}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.AuditMode|x64.ActiveCfg = Release|x64 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.AuditMode|x86.ActiveCfg = Release|Win32 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|x64.ActiveCfg = Debug|x64 @@ -1536,12 +1266,10 @@ Global {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|x64.ActiveCfg = Release|x64 @@ -1549,12 +1277,10 @@ Global {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-F542-4635-A069-7CAEFB930070}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.AuditMode|Any CPU.ActiveCfg = Debug|x64 - {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.AuditMode|x64.ActiveCfg = Release|x64 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.AuditMode|x86.ActiveCfg = Release|Win32 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Debug|x64.ActiveCfg = Debug|x64 @@ -1562,12 +1288,10 @@ Global {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Release|x64.ActiveCfg = Release|x64 @@ -1575,12 +1299,10 @@ Global {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-1754-4A9D-93D7-857A9D17CB1B}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.AuditMode|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.AuditMode|x64.ActiveCfg = Release|x64 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.AuditMode|x86.ActiveCfg = Release|Win32 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Debug|x64.ActiveCfg = Debug|x64 @@ -1588,12 +1310,10 @@ Global {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Release|x64.ActiveCfg = Release|x64 @@ -1601,13 +1321,11 @@ Global {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-44BD-4AC7-AC72-F16E576FDD12}.Release|x86.Build.0 = Release|Win32 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.AuditMode|Any CPU.ActiveCfg = Release|Win32 - {F2ED628A-DB22-446F-A081-4CC845B51A2B}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.AuditMode|x64.ActiveCfg = Release|x64 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.AuditMode|x64.Build.0 = Release|x64 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.AuditMode|x86.ActiveCfg = Release|Win32 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Debug|ARM.ActiveCfg = Debug|Win32 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Debug|ARM64.ActiveCfg = Debug|ARM64 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Debug|ARM64.Build.0 = Debug|ARM64 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Debug|x64.ActiveCfg = Debug|x64 @@ -1615,12 +1333,10 @@ Global {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Debug|x86.ActiveCfg = Debug|Win32 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Debug|x86.Build.0 = Debug|Win32 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Release|Any CPU.ActiveCfg = Release|Win32 - {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Release|ARM.ActiveCfg = Release|Win32 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Release|ARM64.ActiveCfg = Release|ARM64 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Release|ARM64.Build.0 = Release|ARM64 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Release|x64.ActiveCfg = Release|x64 @@ -1628,12 +1344,10 @@ Global {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Release|x86.ActiveCfg = Release|Win32 {F2ED628A-DB22-446F-A081-4CC845B51A2B}.Release|x86.Build.0 = Release|Win32 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.AuditMode|x64.ActiveCfg = AuditMode|x64 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Debug|ARM.ActiveCfg = Debug|Win32 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Debug|ARM64.ActiveCfg = Debug|ARM64 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Debug|ARM64.Build.0 = Debug|ARM64 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Debug|x64.ActiveCfg = Debug|x64 @@ -1641,12 +1355,10 @@ Global {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Debug|x86.ActiveCfg = Debug|Win32 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Debug|x86.Build.0 = Debug|Win32 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Release|Any CPU.ActiveCfg = Release|Win32 - {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Release|ARM.ActiveCfg = Release|Win32 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Release|ARM64.ActiveCfg = Release|ARM64 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Release|ARM64.Build.0 = Release|ARM64 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Release|x64.ActiveCfg = Release|x64 @@ -1654,7 +1366,6 @@ Global {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Release|x86.ActiveCfg = Release|Win32 {2C2BEEF4-9333-4D05-B12A-1905CBF112F9}.Release|x86.Build.0 = Release|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -1662,7 +1373,6 @@ Global {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.AuditMode|x86.Build.0 = AuditMode|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Debug|ARM.ActiveCfg = Debug|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Debug|ARM64.ActiveCfg = Debug|ARM64 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Debug|ARM64.Build.0 = Debug|ARM64 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Debug|x64.ActiveCfg = Debug|x64 @@ -1670,13 +1380,11 @@ Global {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Debug|x86.ActiveCfg = Debug|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Debug|x86.Build.0 = Debug|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Fuzzing|x64.Build.0 = Fuzzing|x64 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Release|Any CPU.ActiveCfg = Release|Win32 - {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Release|ARM.ActiveCfg = Release|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Release|ARM64.ActiveCfg = Release|ARM64 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Release|ARM64.Build.0 = Release|ARM64 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Release|x64.ActiveCfg = Release|x64 @@ -1684,12 +1392,10 @@ Global {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Release|x86.ActiveCfg = Release|Win32 {EF3E32A7-5FF6-42B4-B6E2-96CD7D033F00}.Release|x86.Build.0 = Release|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.AuditMode|x64.ActiveCfg = AuditMode|x64 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Debug|ARM.ActiveCfg = Debug|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Debug|ARM64.ActiveCfg = Debug|ARM64 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Debug|ARM64.Build.0 = Debug|ARM64 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Debug|x64.ActiveCfg = Debug|x64 @@ -1697,12 +1403,10 @@ Global {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Debug|x86.ActiveCfg = Debug|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Debug|x86.Build.0 = Debug|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|Any CPU.ActiveCfg = Release|Win32 - {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|ARM.ActiveCfg = Release|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|ARM64.ActiveCfg = Release|ARM64 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|ARM64.Build.0 = Release|ARM64 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|x64.ActiveCfg = Release|x64 @@ -1710,8 +1414,6 @@ Global {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|x86.ActiveCfg = Release|Win32 {34DE34D3-1CD6-4EE3-8BD9-A26B5B27EC73}.Release|x86.Build.0 = Release|Win32 {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|Any CPU.ActiveCfg = Release|Any CPU - {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|ARM.ActiveCfg = Debug|Any CPU - {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|ARM.Build.0 = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|ARM64.ActiveCfg = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|ARM64.Build.0 = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|x64.ActiveCfg = Debug|Any CPU @@ -1720,8 +1422,6 @@ Global {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.AuditMode|x86.Build.0 = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Debug|ARM.ActiveCfg = Debug|Any CPU - {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Debug|ARM.Build.0 = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Debug|ARM64.ActiveCfg = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Debug|ARM64.Build.0 = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Debug|x64.ActiveCfg = Debug|Any CPU @@ -1729,14 +1429,11 @@ Global {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Debug|x86.ActiveCfg = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Debug|x86.Build.0 = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Fuzzing|Any CPU.ActiveCfg = Debug|Any CPU - {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Fuzzing|ARM.ActiveCfg = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Fuzzing|ARM64.ActiveCfg = Fuzzing|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Fuzzing|x64.ActiveCfg = Debug|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Fuzzing|x86.ActiveCfg = Fuzzing|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Release|Any CPU.ActiveCfg = Release|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Release|Any CPU.Build.0 = Release|Any CPU - {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Release|ARM.ActiveCfg = Release|Any CPU - {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Release|ARM.Build.0 = Release|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Release|ARM64.ActiveCfg = Release|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Release|ARM64.Build.0 = Release|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Release|x64.ActiveCfg = Release|Any CPU @@ -1744,12 +1441,10 @@ Global {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Release|x86.ActiveCfg = Release|Any CPU {376FE273-6B84-4EB5-8B30-8DE9D21B022C}.Release|x86.Build.0 = Release|Any CPU {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.AuditMode|x64.ActiveCfg = AuditMode|x64 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Debug|x64.ActiveCfg = Debug|x64 @@ -1757,12 +1452,10 @@ Global {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|x64.ActiveCfg = Release|x64 @@ -1770,12 +1463,10 @@ Global {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-9333-4D05-B12A-1905CBF112F9}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|x64.ActiveCfg = Release|x64 {CA5CAD1A-9A12-429C-B551-8562EC954746}.AuditMode|x86.ActiveCfg = Release|Win32 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-9A12-429C-B551-8562EC954746}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Debug|x64.ActiveCfg = Debug|x64 @@ -1783,12 +1474,10 @@ Global {CA5CAD1A-9A12-429C-B551-8562EC954746}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-9A12-429C-B551-8562EC954746}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-9A12-429C-B551-8562EC954746}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Release|x64.ActiveCfg = Release|x64 @@ -1796,12 +1485,10 @@ Global {CA5CAD1A-9A12-429C-B551-8562EC954746}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-9A12-429C-B551-8562EC954746}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.AuditMode|x64.ActiveCfg = AuditMode|x64 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Debug|x64.ActiveCfg = Debug|x64 @@ -1809,12 +1496,10 @@ Global {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Release|x64.ActiveCfg = Release|x64 @@ -1822,7 +1507,6 @@ Global {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-B11C-4DDB-A4FE-C3AFAE9B5506}.Release|x86.Build.0 = Release|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {48D21369-3D7B-4431-9967-24E81292CF63}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {48D21369-3D7B-4431-9967-24E81292CF63}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {48D21369-3D7B-4431-9967-24E81292CF63}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -1830,7 +1514,6 @@ Global {48D21369-3D7B-4431-9967-24E81292CF63}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.AuditMode|x86.Build.0 = AuditMode|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {48D21369-3D7B-4431-9967-24E81292CF63}.Debug|ARM.ActiveCfg = Debug|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.Debug|ARM64.ActiveCfg = Debug|ARM64 {48D21369-3D7B-4431-9967-24E81292CF63}.Debug|ARM64.Build.0 = Debug|ARM64 {48D21369-3D7B-4431-9967-24E81292CF63}.Debug|x64.ActiveCfg = Debug|x64 @@ -1838,12 +1521,10 @@ Global {48D21369-3D7B-4431-9967-24E81292CF63}.Debug|x86.ActiveCfg = Debug|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.Debug|x86.Build.0 = Debug|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {48D21369-3D7B-4431-9967-24E81292CF63}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {48D21369-3D7B-4431-9967-24E81292CF63}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {48D21369-3D7B-4431-9967-24E81292CF63}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.Release|Any CPU.ActiveCfg = Release|Win32 - {48D21369-3D7B-4431-9967-24E81292CF63}.Release|ARM.ActiveCfg = Release|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.Release|ARM64.ActiveCfg = Release|ARM64 {48D21369-3D7B-4431-9967-24E81292CF63}.Release|ARM64.Build.0 = Release|ARM64 {48D21369-3D7B-4431-9967-24E81292CF63}.Release|x64.ActiveCfg = Release|x64 @@ -1851,13 +1532,11 @@ Global {48D21369-3D7B-4431-9967-24E81292CF63}.Release|x86.ActiveCfg = Release|Win32 {48D21369-3D7B-4431-9967-24E81292CF63}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.AuditMode|Any CPU.ActiveCfg = Release|x64 - {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.AuditMode|x64.ActiveCfg = AuditMode|x64 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.AuditMode|x64.Build.0 = AuditMode|x64 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.AuditMode|x86.ActiveCfg = Release|Win32 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|x64.ActiveCfg = Debug|x64 @@ -1865,12 +1544,10 @@ Global {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|x64.ActiveCfg = Release|x64 @@ -1878,7 +1555,6 @@ Global {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-039A-4929-BA2A-8BEB2E4106FE}.Release|x86.Build.0 = Release|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -1886,7 +1562,6 @@ Global {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.AuditMode|x86.Build.0 = AuditMode|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Debug|ARM.ActiveCfg = Debug|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Debug|ARM64.ActiveCfg = Debug|ARM64 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Debug|ARM64.Build.0 = Debug|ARM64 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Debug|x64.ActiveCfg = Debug|x64 @@ -1894,12 +1569,10 @@ Global {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Debug|x86.ActiveCfg = Debug|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Debug|x86.Build.0 = Debug|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Release|Any CPU.ActiveCfg = Release|Win32 - {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Release|ARM.ActiveCfg = Release|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Release|ARM64.ActiveCfg = Release|ARM64 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Release|ARM64.Build.0 = Release|ARM64 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Release|x64.ActiveCfg = Release|x64 @@ -1907,14 +1580,12 @@ Global {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Release|x86.ActiveCfg = Release|Win32 {58A03BB2-DF5A-4B66-91A0-7EF3BA01269A}.Release|x86.Build.0 = Release|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {A22EC5F6-7851-4B88-AC52-47249D437A52}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {A22EC5F6-7851-4B88-AC52-47249D437A52}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {A22EC5F6-7851-4B88-AC52-47249D437A52}.AuditMode|x64.ActiveCfg = Release|x64 {A22EC5F6-7851-4B88-AC52-47249D437A52}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.AuditMode|x86.Build.0 = AuditMode|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A22EC5F6-7851-4B88-AC52-47249D437A52}.Debug|ARM.ActiveCfg = Debug|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Debug|ARM64.ActiveCfg = Debug|ARM64 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Debug|ARM64.Build.0 = Debug|ARM64 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Debug|x64.ActiveCfg = Debug|x64 @@ -1922,12 +1593,10 @@ Global {A22EC5F6-7851-4B88-AC52-47249D437A52}.Debug|x86.ActiveCfg = Debug|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Debug|x86.Build.0 = Debug|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {A22EC5F6-7851-4B88-AC52-47249D437A52}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Release|Any CPU.ActiveCfg = Release|Win32 - {A22EC5F6-7851-4B88-AC52-47249D437A52}.Release|ARM.ActiveCfg = Release|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Release|ARM64.ActiveCfg = Release|ARM64 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Release|ARM64.Build.0 = Release|ARM64 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Release|x64.ActiveCfg = Release|x64 @@ -1935,12 +1604,10 @@ Global {A22EC5F6-7851-4B88-AC52-47249D437A52}.Release|x86.ActiveCfg = Release|Win32 {A22EC5F6-7851-4B88-AC52-47249D437A52}.Release|x86.Build.0 = Release|Win32 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.AuditMode|Any CPU.ActiveCfg = AuditMode|x64 - {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.AuditMode|x64.ActiveCfg = AuditMode|x64 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Debug|ARM.ActiveCfg = Debug|Win32 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Debug|ARM64.ActiveCfg = Debug|ARM64 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Debug|ARM64.Build.0 = Debug|ARM64 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Debug|ARM64.Deploy.0 = Debug|ARM64 @@ -1951,12 +1618,10 @@ Global {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Debug|x86.Build.0 = Debug|Win32 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Debug|x86.Deploy.0 = Debug|Win32 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Release|Any CPU.ActiveCfg = Release|Win32 - {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Release|ARM.ActiveCfg = Release|Win32 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Release|ARM64.ActiveCfg = Release|ARM64 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Release|ARM64.Build.0 = Release|ARM64 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Release|ARM64.Deploy.0 = Release|ARM64 @@ -1967,14 +1632,12 @@ Global {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Release|x86.Build.0 = Release|Win32 {A021EDFF-45C8-4DC2-BEF7-36E1B3B8CFE8}.Release|x86.Deploy.0 = Release|Win32 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {767268EE-174A-46FE-96F0-EEE698A1BBC9}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.AuditMode|x64.ActiveCfg = Release|x64 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.AuditMode|x86.Build.0 = AuditMode|Win32 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Debug|ARM.ActiveCfg = Debug|Win32 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Debug|ARM64.ActiveCfg = Debug|ARM64 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Debug|ARM64.Build.0 = Debug|ARM64 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Debug|x64.ActiveCfg = Debug|x64 @@ -1982,12 +1645,10 @@ Global {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Debug|x86.ActiveCfg = Debug|Win32 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Debug|x86.Build.0 = Debug|Win32 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Release|Any CPU.ActiveCfg = Release|Win32 - {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Release|ARM.ActiveCfg = Release|Win32 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Release|ARM64.ActiveCfg = Release|ARM64 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Release|ARM64.Build.0 = Release|ARM64 {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Release|x64.ActiveCfg = Release|x64 @@ -1996,7 +1657,6 @@ Global {767268EE-174A-46FE-96F0-EEE698A1BBC9}.Release|x86.Build.0 = Release|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.AuditMode|Any CPU.ActiveCfg = Release|x64 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.AuditMode|Any CPU.Build.0 = Release|x64 - {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.AuditMode|ARM64.ActiveCfg = Release|x64 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.AuditMode|ARM64.Build.0 = Release|x64 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.AuditMode|x64.ActiveCfg = Release|x64 @@ -2004,61 +1664,28 @@ Global {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.AuditMode|x86.ActiveCfg = Release|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.AuditMode|x86.Build.0 = Release|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Debug|ARM.ActiveCfg = Debug|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Debug|ARM64.ActiveCfg = Debug|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Debug|x64.ActiveCfg = Debug|x64 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Debug|x64.Build.0 = Debug|x64 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Debug|x86.ActiveCfg = Debug|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Debug|x86.Build.0 = Debug|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Release|Any CPU.ActiveCfg = Release|Win32 - {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Release|ARM.ActiveCfg = Release|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Release|ARM64.ActiveCfg = Release|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Release|x64.ActiveCfg = Release|x64 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Release|x64.Build.0 = Release|x64 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Release|x86.ActiveCfg = Release|Win32 {A602A555-BAAC-46E1-A91D-3DAB0475C5A1}.Release|x86.Build.0 = Release|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.AuditMode|x64.ActiveCfg = Release|x64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.AuditMode|x86.ActiveCfg = AuditMode|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.AuditMode|x86.Build.0 = AuditMode|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Debug|ARM.ActiveCfg = Debug|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Debug|ARM64.Build.0 = Debug|ARM64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Debug|x64.ActiveCfg = Debug|x64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Debug|x64.Build.0 = Debug|x64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Debug|x86.ActiveCfg = Debug|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Debug|x86.Build.0 = Debug|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Release|Any CPU.ActiveCfg = Release|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Release|ARM.ActiveCfg = Release|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Release|ARM64.ActiveCfg = Release|ARM64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Release|ARM64.Build.0 = Release|ARM64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Release|x64.ActiveCfg = Release|x64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Release|x64.Build.0 = Release|x64 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Release|x86.ActiveCfg = Release|Win32 - {95B136F9-B238-490C-A7C5-5843C1FECAC4}.Release|x86.Build.0 = Release|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {024052DE-83FB-4653-AEA4-90790D29D5BD}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {024052DE-83FB-4653-AEA4-90790D29D5BD}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {024052DE-83FB-4653-AEA4-90790D29D5BD}.AuditMode|x64.ActiveCfg = Release|x64 {024052DE-83FB-4653-AEA4-90790D29D5BD}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.AuditMode|x86.Build.0 = AuditMode|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {024052DE-83FB-4653-AEA4-90790D29D5BD}.Debug|ARM.ActiveCfg = Debug|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Debug|ARM64.ActiveCfg = Debug|ARM64 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Debug|ARM64.Build.0 = Debug|ARM64 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Debug|x64.ActiveCfg = Debug|x64 @@ -2066,12 +1693,10 @@ Global {024052DE-83FB-4653-AEA4-90790D29D5BD}.Debug|x86.ActiveCfg = Debug|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Debug|x86.Build.0 = Debug|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {024052DE-83FB-4653-AEA4-90790D29D5BD}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Release|Any CPU.ActiveCfg = Release|Win32 - {024052DE-83FB-4653-AEA4-90790D29D5BD}.Release|ARM.ActiveCfg = Release|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Release|ARM64.ActiveCfg = Release|ARM64 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Release|ARM64.Build.0 = Release|ARM64 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Release|x64.ActiveCfg = Release|x64 @@ -2079,14 +1704,12 @@ Global {024052DE-83FB-4653-AEA4-90790D29D5BD}.Release|x86.ActiveCfg = Release|Win32 {024052DE-83FB-4653-AEA4-90790D29D5BD}.Release|x86.Build.0 = Release|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.AuditMode|x64.ActiveCfg = Release|x64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.AuditMode|x86.Build.0 = AuditMode|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Debug|ARM.ActiveCfg = Debug|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Debug|ARM64.ActiveCfg = Debug|ARM64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Debug|ARM64.Build.0 = Debug|ARM64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Debug|x64.ActiveCfg = Debug|x64 @@ -2094,57 +1717,21 @@ Global {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Debug|x86.ActiveCfg = Debug|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Debug|x86.Build.0 = Debug|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Release|Any CPU.ActiveCfg = Release|Win32 - {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Release|ARM.ActiveCfg = Release|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Release|ARM64.ActiveCfg = Release|ARM64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Release|ARM64.Build.0 = Release|ARM64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Release|x64.ActiveCfg = Release|x64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Release|x64.Build.0 = Release|x64 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Release|x86.ActiveCfg = Release|Win32 {067F0A06-FCB7-472C-96E9-B03B54E8E18D}.Release|x86.Build.0 = Release|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|x64.ActiveCfg = AuditMode|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|x64.Build.0 = AuditMode|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|x86.ActiveCfg = AuditMode|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|x86.Build.0 = AuditMode|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|ARM.ActiveCfg = Debug|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|ARM64.Build.0 = Debug|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|x64.ActiveCfg = Debug|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|x64.Build.0 = Debug|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|x86.ActiveCfg = Debug|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|x86.Build.0 = Debug|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|x64.Build.0 = Fuzzing|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|Any CPU.ActiveCfg = Release|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|ARM.ActiveCfg = Release|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|ARM64.ActiveCfg = Release|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|ARM64.Build.0 = Release|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|x64.ActiveCfg = Release|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|x64.Build.0 = Release|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|x86.ActiveCfg = Release|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|x86.Build.0 = Release|Win32 {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.AuditMode|Any CPU.ActiveCfg = Debug|Any CPU - {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.AuditMode|ARM.ActiveCfg = Release|Any CPU - {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.AuditMode|ARM.Build.0 = Release|Any CPU {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.AuditMode|ARM64.ActiveCfg = Debug|Any CPU {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.AuditMode|x64.ActiveCfg = Debug|Any CPU {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.AuditMode|x86.ActiveCfg = Debug|Any CPU {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Debug|ARM.ActiveCfg = Debug|Any CPU - {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Debug|ARM.Build.0 = Debug|Any CPU {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Debug|ARM64.ActiveCfg = Debug|ARM64 {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Debug|ARM64.Build.0 = Debug|ARM64 {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Debug|x64.ActiveCfg = Debug|x64 @@ -2152,13 +1739,10 @@ Global {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Debug|x86.ActiveCfg = Debug|x86 {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Debug|x86.Build.0 = Debug|x86 {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Fuzzing|Any CPU.ActiveCfg = Debug|Any CPU - {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Fuzzing|ARM.ActiveCfg = Debug|Any CPU {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Fuzzing|ARM64.ActiveCfg = Fuzzing|Any CPU {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Fuzzing|x64.ActiveCfg = Debug|x64 {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Fuzzing|x86.ActiveCfg = Fuzzing|x86 {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Release|ARM.ActiveCfg = Release|Any CPU - {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Release|ARM.Build.0 = Release|Any CPU {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Release|ARM64.ActiveCfg = Release|ARM64 {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Release|ARM64.Build.0 = Release|ARM64 {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Release|x64.ActiveCfg = Release|x64 @@ -2166,7 +1750,6 @@ Global {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Release|x86.ActiveCfg = Release|x86 {1588FD7C-241E-4E7D-9113-43735F3E6BAD}.Release|x86.Build.0 = Release|x86 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -2174,7 +1757,6 @@ Global {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|x86.Build.0 = AuditMode|Win32 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|ARM.ActiveCfg = Debug|Win32 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|ARM64.ActiveCfg = Debug|ARM64 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|ARM64.Build.0 = Debug|ARM64 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|x64.ActiveCfg = Debug|x64 @@ -2182,12 +1764,10 @@ Global {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|x86.ActiveCfg = Debug|Win32 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|x86.Build.0 = Debug|Win32 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|Any CPU.ActiveCfg = Release|Win32 - {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|ARM.ActiveCfg = Release|Win32 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|ARM64.ActiveCfg = Release|ARM64 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|ARM64.Build.0 = Release|ARM64 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|x64.ActiveCfg = Release|x64 @@ -2195,7 +1775,6 @@ Global {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|x86.ActiveCfg = Release|Win32 {506FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|x86.Build.0 = Release|Win32 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -2203,7 +1782,6 @@ Global {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.AuditMode|x86.Build.0 = AuditMode|Win32 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|ARM.ActiveCfg = Debug|Win32 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|ARM64.ActiveCfg = Debug|ARM64 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|ARM64.Build.0 = Debug|ARM64 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|x64.ActiveCfg = Debug|x64 @@ -2211,12 +1789,10 @@ Global {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|x86.ActiveCfg = Debug|Win32 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Debug|x86.Build.0 = Debug|Win32 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|Any CPU.ActiveCfg = Release|Win32 - {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|ARM.ActiveCfg = Release|Win32 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|ARM64.ActiveCfg = Release|ARM64 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|ARM64.Build.0 = Release|ARM64 {416FD703-BAA7-4F6E-9361-64F550EC8FCA}.Release|x64.ActiveCfg = Release|x64 @@ -2226,7 +1802,6 @@ Global {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.AuditMode|Any CPU.ActiveCfg = Release|x64 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.AuditMode|Any CPU.Build.0 = Release|x64 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.AuditMode|Any CPU.Deploy.0 = Release|x64 - {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.AuditMode|ARM64.ActiveCfg = Release|x64 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.AuditMode|ARM64.Build.0 = Release|x64 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.AuditMode|ARM64.Deploy.0 = Release|x64 @@ -2236,7 +1811,6 @@ Global {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.AuditMode|x86.Build.0 = Release|Win32 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.AuditMode|x86.Deploy.0 = Release|Win32 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Debug|x64.ActiveCfg = Debug|x64 @@ -2246,12 +1820,10 @@ Global {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Debug|x86.Deploy.0 = Debug|Win32 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Release|x64.ActiveCfg = Release|x64 @@ -2261,14 +1833,12 @@ Global {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-0B5E-45C3-96A8-BB496BFE4E32}.Release|x86.Deploy.0 = Release|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.AuditMode|x64.ActiveCfg = Release|x64 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.AuditMode|x86.Build.0 = AuditMode|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Debug|x64.ActiveCfg = Debug|x64 @@ -2276,12 +1846,10 @@ Global {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Release|x64.ActiveCfg = Release|x64 @@ -2289,14 +1857,12 @@ Global {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {CA5CAD1A-082C-4476-9F33-94B339494076}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {CA5CAD1A-082C-4476-9F33-94B339494076}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {CA5CAD1A-082C-4476-9F33-94B339494076}.AuditMode|x64.ActiveCfg = Release|x64 {CA5CAD1A-082C-4476-9F33-94B339494076}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.AuditMode|x86.Build.0 = AuditMode|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-082C-4476-9F33-94B339494076}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-082C-4476-9F33-94B339494076}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-082C-4476-9F33-94B339494076}.Debug|x64.ActiveCfg = Debug|x64 @@ -2304,12 +1870,10 @@ Global {CA5CAD1A-082C-4476-9F33-94B339494076}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-082C-4476-9F33-94B339494076}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-082C-4476-9F33-94B339494076}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-082C-4476-9F33-94B339494076}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-082C-4476-9F33-94B339494076}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-082C-4476-9F33-94B339494076}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-082C-4476-9F33-94B339494076}.Release|x64.ActiveCfg = Release|x64 @@ -2317,14 +1881,12 @@ Global {CA5CAD1A-082C-4476-9F33-94B339494076}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-082C-4476-9F33-94B339494076}.Release|x86.Build.0 = Release|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.AuditMode|x64.ActiveCfg = AuditMode|x64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.AuditMode|x86.Build.0 = AuditMode|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Debug|ARM.ActiveCfg = Debug|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Debug|ARM64.ActiveCfg = Debug|ARM64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Debug|ARM64.Build.0 = Debug|ARM64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Debug|x64.ActiveCfg = Debug|x64 @@ -2332,175 +1894,17 @@ Global {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Debug|x86.ActiveCfg = Debug|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Debug|x86.Build.0 = Debug|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|Any CPU.ActiveCfg = Release|Win32 - {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|ARM.ActiveCfg = Release|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|ARM64.ActiveCfg = Release|ARM64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|ARM64.Build.0 = Release|ARM64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|x64.ActiveCfg = Release|x64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|x64.Build.0 = Release|x64 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|x86.ActiveCfg = Release|Win32 {CA5CAD1A-9B68-456A-B13E-C8218070DC42}.Release|x86.Build.0 = Release|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.AuditMode|Any CPU.ActiveCfg = Debug|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.AuditMode|ARM64.ActiveCfg = Release|ARM64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.AuditMode|x64.ActiveCfg = Release|x64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.AuditMode|x86.ActiveCfg = Release|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Debug|ARM.ActiveCfg = Debug|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Debug|ARM64.Build.0 = Debug|ARM64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Debug|x64.ActiveCfg = Debug|x64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Debug|x64.Build.0 = Debug|x64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Debug|x86.ActiveCfg = Debug|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Debug|x86.Build.0 = Debug|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Release|Any CPU.ActiveCfg = Release|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Release|ARM.ActiveCfg = Release|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Release|ARM64.ActiveCfg = Release|ARM64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Release|ARM64.Build.0 = Release|ARM64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Release|x64.ActiveCfg = Release|x64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Release|x64.Build.0 = Release|x64 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Release|x86.ActiveCfg = Release|Win32 - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D}.Release|x86.Build.0 = Release|Win32 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|Any CPU.ActiveCfg = Release|Any CPU - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|ARM.ActiveCfg = Debug|ARM - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|ARM.Build.0 = Debug|ARM - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|ARM.Deploy.0 = Debug|ARM - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|ARM64.ActiveCfg = Debug|ARM64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|ARM64.Build.0 = Debug|ARM64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|ARM64.Deploy.0 = Debug|ARM64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|x64.ActiveCfg = Debug|x64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|x64.Build.0 = Debug|x64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|x64.Deploy.0 = Debug|x64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|x86.ActiveCfg = Debug|x86 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|x86.Build.0 = Debug|x86 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.AuditMode|x86.Deploy.0 = Debug|x86 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|ARM.ActiveCfg = Debug|ARM - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|ARM.Build.0 = Debug|ARM - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|ARM.Deploy.0 = Debug|ARM - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|ARM64.Build.0 = Debug|ARM64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|ARM64.Deploy.0 = Debug|ARM64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|x64.ActiveCfg = Debug|x64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|x64.Build.0 = Debug|x64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|x64.Deploy.0 = Debug|x64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|x86.ActiveCfg = Debug|x86 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|x86.Build.0 = Debug|x86 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Debug|x86.Deploy.0 = Debug|x86 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Fuzzing|Any CPU.ActiveCfg = Release|Any CPU - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Fuzzing|ARM.ActiveCfg = Fuzzing|ARM - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Fuzzing|x64.ActiveCfg = Release|x64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Fuzzing|x86.ActiveCfg = Release|x86 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|ARM.ActiveCfg = Release|ARM - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|ARM.Build.0 = Release|ARM - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|ARM.Deploy.0 = Release|ARM - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|ARM64.ActiveCfg = Release|ARM64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|ARM64.Build.0 = Release|ARM64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|ARM64.Deploy.0 = Release|ARM64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|x64.ActiveCfg = Release|x64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|x64.Build.0 = Release|x64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|x64.Deploy.0 = Release|x64 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|x86.ActiveCfg = Release|x86 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|x86.Build.0 = Release|x86 - {F75E29D0-D288-478B-8D83-2C190F321A3F}.Release|x86.Deploy.0 = Release|x86 - {43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|x64.ActiveCfg = Release|x64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|x64.Build.0 = Release|x64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|x86.ActiveCfg = AuditMode|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.AuditMode|x86.Build.0 = AuditMode|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|ARM.ActiveCfg = Debug|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|ARM64.Build.0 = Debug|ARM64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|x64.ActiveCfg = Debug|x64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|x64.Build.0 = Debug|x64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|x86.ActiveCfg = Debug|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Debug|x86.Build.0 = Debug|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Release|Any CPU.ActiveCfg = Release|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Release|ARM.ActiveCfg = Release|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Release|ARM64.ActiveCfg = Release|ARM64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Release|ARM64.Build.0 = Release|ARM64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Release|x64.ActiveCfg = Release|x64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Release|x64.Build.0 = Release|x64 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Release|x86.ActiveCfg = Release|Win32 - {43CE4CE5-0010-4B99-9569-672670D26E26}.Release|x86.Build.0 = Release|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|x64.ActiveCfg = Release|x64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|x86.ActiveCfg = AuditMode|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.AuditMode|x86.Build.0 = AuditMode|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|ARM.ActiveCfg = Debug|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|ARM64.Build.0 = Debug|ARM64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|x64.ActiveCfg = Debug|x64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|x64.Build.0 = Debug|x64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|x86.ActiveCfg = Debug|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Debug|x86.Build.0 = Debug|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|Any CPU.ActiveCfg = Release|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|ARM.ActiveCfg = Release|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|ARM64.ActiveCfg = Release|ARM64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|ARM64.Build.0 = Release|ARM64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|x64.ActiveCfg = Release|x64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|x64.Build.0 = Release|x64 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|x86.ActiveCfg = Release|Win32 - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE}.Release|x86.Build.0 = Release|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|x64.ActiveCfg = AuditMode|x64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|x86.ActiveCfg = AuditMode|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.AuditMode|x86.Build.0 = AuditMode|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|ARM.ActiveCfg = Debug|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|ARM64.Build.0 = Debug|ARM64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|x64.ActiveCfg = Debug|x64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|x64.Build.0 = Debug|x64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|x86.ActiveCfg = Debug|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Debug|x86.Build.0 = Debug|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|Any CPU.ActiveCfg = Release|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|ARM.ActiveCfg = Release|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|ARM64.ActiveCfg = Release|ARM64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|ARM64.Build.0 = Release|ARM64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|x64.ActiveCfg = Release|x64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|x64.Build.0 = Release|x64 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|x86.ActiveCfg = Release|Win32 - {68A10CD3-AA64-465B-AF5F-ED4E9700543C}.Release|x86.Build.0 = Release|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -2508,7 +1912,6 @@ Global {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.AuditMode|x86.Build.0 = AuditMode|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Debug|ARM.ActiveCfg = Debug|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Debug|ARM64.ActiveCfg = Debug|ARM64 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Debug|ARM64.Build.0 = Debug|ARM64 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Debug|x64.ActiveCfg = Debug|x64 @@ -2516,13 +1919,11 @@ Global {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Debug|x86.ActiveCfg = Debug|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Debug|x86.Build.0 = Debug|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Fuzzing|x64.Build.0 = Fuzzing|x64 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Release|Any CPU.ActiveCfg = Release|Win32 - {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Release|ARM.ActiveCfg = Release|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Release|ARM64.ActiveCfg = Release|ARM64 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Release|ARM64.Build.0 = Release|ARM64 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Release|x64.ActiveCfg = Release|x64 @@ -2530,35 +1931,29 @@ Global {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Release|x86.ActiveCfg = Release|Win32 {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF}.Release|x86.Build.0 = Release|Win32 {05D9052F-D78F-478F-968A-2DE38A6DB996}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {05D9052F-D78F-478F-968A-2DE38A6DB996}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {05D9052F-D78F-478F-968A-2DE38A6DB996}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {05D9052F-D78F-478F-968A-2DE38A6DB996}.AuditMode|x64.ActiveCfg = AuditMode|x64 {05D9052F-D78F-478F-968A-2DE38A6DB996}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {05D9052F-D78F-478F-968A-2DE38A6DB996}.Debug|ARM.ActiveCfg = Debug|Win32 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Debug|ARM64.ActiveCfg = Debug|ARM64 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Debug|x64.ActiveCfg = Debug|x64 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Debug|x86.ActiveCfg = Debug|Win32 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {05D9052F-D78F-478F-968A-2DE38A6DB996}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Fuzzing|x64.Build.0 = Fuzzing|x64 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Release|Any CPU.ActiveCfg = Release|Win32 - {05D9052F-D78F-478F-968A-2DE38A6DB996}.Release|ARM.ActiveCfg = Release|Win32 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Release|ARM64.ActiveCfg = Release|ARM64 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Release|x64.ActiveCfg = Release|x64 {05D9052F-D78F-478F-968A-2DE38A6DB996}.Release|x86.ActiveCfg = Release|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.AuditMode|x64.ActiveCfg = Release|x64 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.AuditMode|x86.Build.0 = AuditMode|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Debug|ARM.ActiveCfg = Debug|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Debug|ARM64.ActiveCfg = Debug|ARM64 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Debug|ARM64.Build.0 = Debug|ARM64 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Debug|x64.ActiveCfg = Debug|x64 @@ -2566,12 +1961,10 @@ Global {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Debug|x86.ActiveCfg = Debug|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Debug|x86.Build.0 = Debug|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Release|Any CPU.ActiveCfg = Release|Win32 - {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Release|ARM.ActiveCfg = Release|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Release|ARM64.ActiveCfg = Release|ARM64 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Release|ARM64.Build.0 = Release|ARM64 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Release|x64.ActiveCfg = Release|x64 @@ -2579,12 +1972,10 @@ Global {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Release|x86.ActiveCfg = Release|Win32 {C323DAEE-B307-4C7B-ACE5-7293CBEFCB5B}.Release|x86.Build.0 = Release|Win32 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.AuditMode|Any CPU.ActiveCfg = Debug|Win32 - {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.AuditMode|ARM.ActiveCfg = Debug|Win32 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.AuditMode|ARM64.ActiveCfg = Debug|ARM64 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.AuditMode|x64.ActiveCfg = Debug|x64 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.AuditMode|x86.ActiveCfg = Debug|Win32 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Debug|ARM.ActiveCfg = Debug|Win32 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Debug|ARM64.ActiveCfg = Debug|ARM64 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Debug|ARM64.Build.0 = Debug|ARM64 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Debug|x64.ActiveCfg = Debug|x64 @@ -2592,12 +1983,10 @@ Global {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Debug|x86.ActiveCfg = Debug|Win32 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Debug|x86.Build.0 = Debug|Win32 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Fuzzing|Any CPU.ActiveCfg = Debug|Win32 - {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Fuzzing|ARM.ActiveCfg = Debug|Win32 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Fuzzing|ARM64.ActiveCfg = Debug|ARM64 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Fuzzing|x64.ActiveCfg = Debug|x64 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Fuzzing|x86.ActiveCfg = Debug|Win32 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Release|Any CPU.ActiveCfg = Release|Win32 - {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Release|ARM.ActiveCfg = Release|Win32 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Release|ARM64.ActiveCfg = Release|ARM64 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Release|ARM64.Build.0 = Release|ARM64 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Release|x64.ActiveCfg = Release|x64 @@ -2605,7 +1994,6 @@ Global {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Release|x86.ActiveCfg = Release|Win32 {F19DACD5-0C6E-40DC-B6E4-767A3200542C}.Release|x86.Build.0 = Release|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {8222900C-8B6C-452A-91AC-BE95DB04B95F}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -2613,7 +2001,6 @@ Global {8222900C-8B6C-452A-91AC-BE95DB04B95F}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.AuditMode|x86.Build.0 = AuditMode|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Debug|ARM.ActiveCfg = Debug|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Debug|ARM64.ActiveCfg = Debug|ARM64 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Debug|ARM64.Build.0 = Debug|ARM64 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Debug|x64.ActiveCfg = Debug|x64 @@ -2621,7 +2008,6 @@ Global {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Debug|x86.ActiveCfg = Debug|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Debug|x86.Build.0 = Debug|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Fuzzing|ARM64.Build.0 = Fuzzing|ARM64 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 @@ -2629,7 +2015,6 @@ Global {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Fuzzing|x86.Build.0 = Fuzzing|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Release|Any CPU.ActiveCfg = Release|Win32 - {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Release|ARM.ActiveCfg = Release|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Release|ARM64.ActiveCfg = Release|ARM64 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Release|ARM64.Build.0 = Release|ARM64 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Release|x64.ActiveCfg = Release|x64 @@ -2637,13 +2022,11 @@ Global {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Release|x86.ActiveCfg = Release|Win32 {8222900C-8B6C-452A-91AC-BE95DB04B95F}.Release|x86.Build.0 = Release|Win32 {06EC74CB-9A12-428C-B551-8537EC964726}.AuditMode|Any CPU.ActiveCfg = AuditMode|x64 - {06EC74CB-9A12-428C-B551-8537EC964726}.AuditMode|ARM.ActiveCfg = AuditMode|x64 {06EC74CB-9A12-428C-B551-8537EC964726}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {06EC74CB-9A12-428C-B551-8537EC964726}.AuditMode|x64.ActiveCfg = AuditMode|x64 {06EC74CB-9A12-428C-B551-8537EC964726}.AuditMode|x64.Build.0 = AuditMode|x64 {06EC74CB-9A12-428C-B551-8537EC964726}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {06EC74CB-9A12-428C-B551-8537EC964726}.Debug|Any CPU.ActiveCfg = Debug|x64 - {06EC74CB-9A12-428C-B551-8537EC964726}.Debug|ARM.ActiveCfg = Debug|x64 {06EC74CB-9A12-428C-B551-8537EC964726}.Debug|ARM64.ActiveCfg = Debug|ARM64 {06EC74CB-9A12-428C-B551-8537EC964726}.Debug|ARM64.Build.0 = Debug|ARM64 {06EC74CB-9A12-428C-B551-8537EC964726}.Debug|x64.ActiveCfg = Debug|x64 @@ -2651,12 +2034,10 @@ Global {06EC74CB-9A12-428C-B551-8537EC964726}.Debug|x86.ActiveCfg = Debug|Win32 {06EC74CB-9A12-428C-B551-8537EC964726}.Debug|x86.Build.0 = Debug|Win32 {06EC74CB-9A12-428C-B551-8537EC964726}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|x64 - {06EC74CB-9A12-428C-B551-8537EC964726}.Fuzzing|ARM.ActiveCfg = Fuzzing|x64 {06EC74CB-9A12-428C-B551-8537EC964726}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {06EC74CB-9A12-428C-B551-8537EC964726}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {06EC74CB-9A12-428C-B551-8537EC964726}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {06EC74CB-9A12-428C-B551-8537EC964726}.Release|Any CPU.ActiveCfg = Release|x64 - {06EC74CB-9A12-428C-B551-8537EC964726}.Release|ARM.ActiveCfg = Release|x64 {06EC74CB-9A12-428C-B551-8537EC964726}.Release|ARM64.ActiveCfg = Release|ARM64 {06EC74CB-9A12-428C-B551-8537EC964726}.Release|ARM64.Build.0 = Release|ARM64 {06EC74CB-9A12-428C-B551-8537EC964726}.Release|x64.ActiveCfg = Release|x64 @@ -2664,12 +2045,10 @@ Global {06EC74CB-9A12-428C-B551-8537EC964726}.Release|x86.ActiveCfg = Release|Win32 {06EC74CB-9A12-428C-B551-8537EC964726}.Release|x86.Build.0 = Release|Win32 {75C6F576-18E9-4566-978A-F0A301CAC090}.AuditMode|Any CPU.ActiveCfg = AuditMode|x64 - {75C6F576-18E9-4566-978A-F0A301CAC090}.AuditMode|ARM.ActiveCfg = AuditMode|x64 {75C6F576-18E9-4566-978A-F0A301CAC090}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {75C6F576-18E9-4566-978A-F0A301CAC090}.AuditMode|x64.ActiveCfg = AuditMode|x64 {75C6F576-18E9-4566-978A-F0A301CAC090}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {75C6F576-18E9-4566-978A-F0A301CAC090}.Debug|Any CPU.ActiveCfg = Debug|x64 - {75C6F576-18E9-4566-978A-F0A301CAC090}.Debug|ARM.ActiveCfg = Debug|x64 {75C6F576-18E9-4566-978A-F0A301CAC090}.Debug|ARM64.ActiveCfg = Debug|ARM64 {75C6F576-18E9-4566-978A-F0A301CAC090}.Debug|ARM64.Build.0 = Debug|ARM64 {75C6F576-18E9-4566-978A-F0A301CAC090}.Debug|x64.ActiveCfg = Debug|x64 @@ -2677,13 +2056,11 @@ Global {75C6F576-18E9-4566-978A-F0A301CAC090}.Debug|x86.ActiveCfg = Debug|Win32 {75C6F576-18E9-4566-978A-F0A301CAC090}.Debug|x86.Build.0 = Debug|Win32 {75C6F576-18E9-4566-978A-F0A301CAC090}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|x64 - {75C6F576-18E9-4566-978A-F0A301CAC090}.Fuzzing|ARM.ActiveCfg = Fuzzing|x64 {75C6F576-18E9-4566-978A-F0A301CAC090}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {75C6F576-18E9-4566-978A-F0A301CAC090}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {75C6F576-18E9-4566-978A-F0A301CAC090}.Fuzzing|x64.Build.0 = Fuzzing|x64 {75C6F576-18E9-4566-978A-F0A301CAC090}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {75C6F576-18E9-4566-978A-F0A301CAC090}.Release|Any CPU.ActiveCfg = Release|x64 - {75C6F576-18E9-4566-978A-F0A301CAC090}.Release|ARM.ActiveCfg = Release|x64 {75C6F576-18E9-4566-978A-F0A301CAC090}.Release|ARM64.ActiveCfg = Release|ARM64 {75C6F576-18E9-4566-978A-F0A301CAC090}.Release|ARM64.Build.0 = Release|ARM64 {75C6F576-18E9-4566-978A-F0A301CAC090}.Release|x64.ActiveCfg = Release|x64 @@ -2691,7 +2068,6 @@ Global {75C6F576-18E9-4566-978A-F0A301CAC090}.Release|x86.ActiveCfg = Release|Win32 {75C6F576-18E9-4566-978A-F0A301CAC090}.Release|x86.Build.0 = Release|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {3C67784E-1453-49C2-9660-483E2CC7F7AD}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -2699,7 +2075,6 @@ Global {3C67784E-1453-49C2-9660-483E2CC7F7AD}.AuditMode|x86.ActiveCfg = AuditMode|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.AuditMode|x86.Build.0 = AuditMode|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Debug|ARM.ActiveCfg = Debug|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Debug|ARM64.ActiveCfg = Debug|ARM64 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Debug|ARM64.Build.0 = Debug|ARM64 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Debug|x64.ActiveCfg = Debug|x64 @@ -2707,7 +2082,6 @@ Global {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Debug|x86.ActiveCfg = Debug|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Debug|x86.Build.0 = Debug|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Fuzzing|ARM64.Build.0 = Fuzzing|ARM64 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 @@ -2715,7 +2089,6 @@ Global {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Fuzzing|x86.Build.0 = Fuzzing|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Release|Any CPU.ActiveCfg = Release|Win32 - {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Release|ARM.ActiveCfg = Release|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Release|ARM64.ActiveCfg = Release|ARM64 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Release|ARM64.Build.0 = Release|ARM64 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Release|x64.ActiveCfg = Release|x64 @@ -2723,89 +2096,142 @@ Global {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Release|x86.ActiveCfg = Release|Win32 {3C67784E-1453-49C2-9660-483E2CC7F7AD}.Release|x86.Build.0 = Release|Win32 {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.AuditMode|Any CPU.ActiveCfg = Debug|Any CPU - {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.AuditMode|ARM.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.AuditMode|ARM64.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.AuditMode|x64.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.AuditMode|x86.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Debug|ARM.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Debug|ARM64.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Debug|x64.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Debug|x64.Build.0 = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Debug|x86.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Fuzzing|Any CPU.ActiveCfg = Debug|Any CPU - {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Fuzzing|ARM.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Fuzzing|ARM64.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Fuzzing|x64.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Fuzzing|x86.ActiveCfg = Debug|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Release|Any CPU.ActiveCfg = Release|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Release|Any CPU.Build.0 = Release|Any CPU - {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Release|ARM.ActiveCfg = Release|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Release|ARM64.ActiveCfg = Release|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Release|x64.ActiveCfg = Release|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Release|x64.Build.0 = Release|Any CPU {613CCB57-5FA9-48EF-80D0-6B1E319E20C4}.Release|x86.ActiveCfg = Release|Any CPU {37C995E0-2349-4154-8E77-4A52C0C7F46D}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {37C995E0-2349-4154-8E77-4A52C0C7F46D}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.AuditMode|x64.ActiveCfg = Release|x64 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.AuditMode|x86.ActiveCfg = Release|Win32 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|ARM.ActiveCfg = Debug|Win32 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|ARM64.ActiveCfg = Debug|ARM64 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|x64.ActiveCfg = Debug|x64 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Debug|x86.ActiveCfg = Debug|Win32 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|Any CPU.ActiveCfg = Release|Win32 - {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|ARM.ActiveCfg = Release|Win32 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|ARM64.ActiveCfg = Release|ARM64 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|x64.ActiveCfg = Release|x64 {37C995E0-2349-4154-8E77-4A52C0C7F46D}.Release|x86.ActiveCfg = Release|Win32 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.AuditMode|Any CPU.ActiveCfg = AuditMode|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.AuditMode|x64.ActiveCfg = AuditMode|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.AuditMode|x64.Build.0 = AuditMode|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.AuditMode|x86.ActiveCfg = AuditMode|Win32 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|Any CPU.ActiveCfg = Debug|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|ARM64.Build.0 = Debug|ARM64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x64.ActiveCfg = Debug|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x64.Build.0 = Debug|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x86.ActiveCfg = Debug|Win32 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x86.Build.0 = Debug|Win32 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|Any CPU.ActiveCfg = Release|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|ARM64.ActiveCfg = Release|ARM64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|ARM64.Build.0 = Release|ARM64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x64.ActiveCfg = Release|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x64.Build.0 = Release|x64 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x86.ActiveCfg = Release|Win32 + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x86.Build.0 = Release|Win32 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.AuditMode|Any CPU.ActiveCfg = AuditMode|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.AuditMode|Any CPU.Build.0 = AuditMode|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.AuditMode|x64.ActiveCfg = AuditMode|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.AuditMode|x64.Build.0 = AuditMode|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.AuditMode|x86.ActiveCfg = AuditMode|Win32 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.AuditMode|x86.Build.0 = AuditMode|Win32 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Debug|Any CPU.ActiveCfg = Debug|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Debug|ARM64.Build.0 = Debug|ARM64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Debug|x64.ActiveCfg = Debug|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Debug|x64.Build.0 = Debug|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Debug|x86.ActiveCfg = Debug|Win32 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Debug|x86.Build.0 = Debug|Win32 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Release|Any CPU.ActiveCfg = Release|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Release|ARM64.ActiveCfg = Release|ARM64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Release|ARM64.Build.0 = Release|ARM64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Release|x64.ActiveCfg = Release|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Release|x64.Build.0 = Release|x64 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Release|x86.ActiveCfg = Release|Win32 + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F}.Release|x86.Build.0 = Release|Win32 {2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|x64.ActiveCfg = Release|x64 {2C836962-9543-4CE5-B834-D28E1F124B66}.AuditMode|x86.ActiveCfg = Release|Win32 {2C836962-9543-4CE5-B834-D28E1F124B66}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {2C836962-9543-4CE5-B834-D28E1F124B66}.Debug|ARM.ActiveCfg = Debug|Win32 {2C836962-9543-4CE5-B834-D28E1F124B66}.Debug|ARM64.ActiveCfg = Debug|ARM64 {2C836962-9543-4CE5-B834-D28E1F124B66}.Debug|x64.ActiveCfg = Debug|x64 {2C836962-9543-4CE5-B834-D28E1F124B66}.Debug|x86.ActiveCfg = Debug|Win32 {2C836962-9543-4CE5-B834-D28E1F124B66}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {2C836962-9543-4CE5-B834-D28E1F124B66}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {2C836962-9543-4CE5-B834-D28E1F124B66}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {2C836962-9543-4CE5-B834-D28E1F124B66}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {2C836962-9543-4CE5-B834-D28E1F124B66}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {2C836962-9543-4CE5-B834-D28E1F124B66}.Release|Any CPU.ActiveCfg = Release|Win32 - {2C836962-9543-4CE5-B834-D28E1F124B66}.Release|ARM.ActiveCfg = Release|Win32 {2C836962-9543-4CE5-B834-D28E1F124B66}.Release|ARM64.ActiveCfg = Release|ARM64 {2C836962-9543-4CE5-B834-D28E1F124B66}.Release|x64.ActiveCfg = Release|x64 {2C836962-9543-4CE5-B834-D28E1F124B66}.Release|x86.ActiveCfg = Release|Win32 {328729E9-6723-416E-9C98-951F1473BBE1}.AuditMode|Any CPU.ActiveCfg = AuditMode|Win32 - {328729E9-6723-416E-9C98-951F1473BBE1}.AuditMode|ARM.ActiveCfg = AuditMode|Win32 {328729E9-6723-416E-9C98-951F1473BBE1}.AuditMode|ARM64.ActiveCfg = Release|ARM64 {328729E9-6723-416E-9C98-951F1473BBE1}.AuditMode|x64.ActiveCfg = Release|x64 {328729E9-6723-416E-9C98-951F1473BBE1}.AuditMode|x86.ActiveCfg = Release|Win32 {328729E9-6723-416E-9C98-951F1473BBE1}.Debug|Any CPU.ActiveCfg = Debug|Win32 - {328729E9-6723-416E-9C98-951F1473BBE1}.Debug|ARM.ActiveCfg = Debug|Win32 {328729E9-6723-416E-9C98-951F1473BBE1}.Debug|ARM64.ActiveCfg = Debug|ARM64 {328729E9-6723-416E-9C98-951F1473BBE1}.Debug|x64.ActiveCfg = Debug|x64 {328729E9-6723-416E-9C98-951F1473BBE1}.Debug|x86.ActiveCfg = Debug|Win32 {328729E9-6723-416E-9C98-951F1473BBE1}.Fuzzing|Any CPU.ActiveCfg = Fuzzing|Win32 - {328729E9-6723-416E-9C98-951F1473BBE1}.Fuzzing|ARM.ActiveCfg = Fuzzing|Win32 {328729E9-6723-416E-9C98-951F1473BBE1}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 {328729E9-6723-416E-9C98-951F1473BBE1}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 {328729E9-6723-416E-9C98-951F1473BBE1}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 {328729E9-6723-416E-9C98-951F1473BBE1}.Release|Any CPU.ActiveCfg = Release|Win32 - {328729E9-6723-416E-9C98-951F1473BBE1}.Release|ARM.ActiveCfg = Release|Win32 {328729E9-6723-416E-9C98-951F1473BBE1}.Release|ARM64.ActiveCfg = Release|ARM64 {328729E9-6723-416E-9C98-951F1473BBE1}.Release|x64.ActiveCfg = Release|x64 {328729E9-6723-416E-9C98-951F1473BBE1}.Release|x86.ActiveCfg = Release|Win32 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.AuditMode|Any CPU.ActiveCfg = Debug|Win32 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.AuditMode|ARM64.ActiveCfg = Debug|ARM64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.AuditMode|x64.ActiveCfg = Debug|x64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.AuditMode|x86.ActiveCfg = Debug|Win32 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Debug|Any CPU.ActiveCfg = Debug|Win32 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Debug|ARM64.Build.0 = Debug|ARM64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Debug|x64.ActiveCfg = Debug|x64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Debug|x64.Build.0 = Debug|x64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Debug|x86.ActiveCfg = Debug|Win32 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Fuzzing|Any CPU.ActiveCfg = Debug|Win32 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Fuzzing|ARM64.ActiveCfg = Debug|ARM64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Fuzzing|x64.ActiveCfg = Debug|x64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Fuzzing|x86.ActiveCfg = Debug|Win32 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Release|Any CPU.ActiveCfg = Release|Win32 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Release|ARM64.ActiveCfg = Release|ARM64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Release|ARM64.Build.0 = Release|ARM64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Release|x64.ActiveCfg = Release|x64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Release|x64.Build.0 = Release|x64 + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48}.Release|x86.ActiveCfg = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -2816,7 +2242,7 @@ Global {345FD5A4-B32B-4F29-BD1C-B033BD2C35CC} = {E8F24881-5E37-4362-B191-A3BA0ED7F4EB} {4C8E6BB0-4713-4ADB-BD04-81628ECEAF20} = {81C352DB-1818-45B7-A284-18E259F1CC87} {D57841D1-8294-4F2B-BB8B-D2A35738DECD} = {81C352DB-1818-45B7-A284-18E259F1CC87} - {2FD12FBB-1DDB-46D8-B818-1023C624CACA} = {E8F24881-5E37-4362-B191-A3BA0ED7F4EB} + {2FD12FBB-1DDB-46D8-B818-1023C624CACA} = {89CDCC5C-9F53-4054-97A4-639D99F169CD} {3AE13314-1939-4DFA-9C14-38CA0834050C} = {F1995847-4AE5-479A-BBAF-382E51A63532} {DCF55140-EF6A-4736-A403-957E4F7430BB} = {F1995847-4AE5-479A-BBAF-382E51A63532} {1CF55140-EF6A-4736-A403-957E4F7430BB} = {F1995847-4AE5-479A-BBAF-382E51A63532} @@ -2843,13 +2269,10 @@ Global {06EC74CB-9A12-429C-B551-8562EC964846} = {E8F24881-5E37-4362-B191-A3BA0ED7F4EB} {D3B92829-26CB-411A-BDA2-7F5DA3D25DD4} = {E8F24881-5E37-4362-B191-A3BA0ED7F4EB} {C7A6A5D9-60BE-4AEB-A5F6-AFE352F86CBB} = {A10C4720-DCA4-4640-9749-67F4314F527C} - {990F2657-8580-4828-943F-5DD657D11842} = {05500DEF-2294-41E3-AF9A-24E580B82836} {814DBDDE-894E-4327-A6E1-740504850098} = {A10C4720-DCA4-4640-9749-67F4314F527C} {814CBEEE-894E-4327-A6E1-740504850098} = {A10C4720-DCA4-4640-9749-67F4314F527C} {18D09A24-8240-42D6-8CB6-236EEE820263} = {89CDCC5C-9F53-4054-97A4-639D99F169CD} - {990F2657-8580-4828-943F-5DD657D11843} = {05500DEF-2294-41E3-AF9A-24E580B82836} {0CF235BD-2DA0-407E-90EE-C467E8BBC714} = {1E4A062E-293B-4817-B20D-BF16B979E350} - {48D21369-3D7B-4431-9967-24E81292CF62} = {05500DEF-2294-41E3-AF9A-24E580B82836} {CA5CAD1A-C46D-4588-B1C0-40F31AE9100B} = {59840756-302F-44DF-AA47-441A9D673202} {CA5CAD1A-ABCD-429C-B551-8562EC954746} = {9921CA0A-320C-4460-8623-3A3196E7F4CB} {CA5CAD1A-44BD-4AC7-AC72-6CA5B3AB89ED} = {9921CA0A-320C-4460-8623-3A3196E7F4CB} @@ -2879,10 +2302,8 @@ Global {53DD5520-E64C-4C06-B472-7CE62CA539C9} = {04170EEF-983A-4195-BFEF-2321E5E38A1E} {6B5A44ED-918D-4747-BFB1-2472A1FCA173} = {04170EEF-983A-4195-BFEF-2321E5E38A1E} {D3EF7B96-CD5E-47C9-B9A9-136259563033} = {04170EEF-983A-4195-BFEF-2321E5E38A1E} - {95B136F9-B238-490C-A7C5-5843C1FECAC4} = {05500DEF-2294-41E3-AF9A-24E580B82836} {024052DE-83FB-4653-AEA4-90790D29D5BD} = {E8F24881-5E37-4362-B191-A3BA0ED7F4EB} {067F0A06-FCB7-472C-96E9-B03B54E8E18D} = {61901E80-E97D-4D61-A9BB-E8F2FDA8B40C} - {6BAE5851-50D5-4934-8D5E-30361A8A40F3} = {81C352DB-1818-45B7-A284-18E259F1CC87} {1588FD7C-241E-4E7D-9113-43735F3E6BAD} = {4DAF0299-495E-4CD1-A982-9BAC16A45932} {506FD703-BAA7-4F6E-9361-64F550EC8FCA} = {61901E80-E97D-4D61-A9BB-E8F2FDA8B40C} {416FD703-BAA7-4F6E-9361-64F550EC8FCA} = {61901E80-E97D-4D61-A9BB-E8F2FDA8B40C} @@ -2890,11 +2311,6 @@ Global {CA5CAD1A-D7EC-4107-B7C6-79CB77AE2907} = {77875138-BB08-49F9-8BB1-409C2150E0E1} {CA5CAD1A-082C-4476-9F33-94B339494076} = {77875138-BB08-49F9-8BB1-409C2150E0E1} {CA5CAD1A-9B68-456A-B13E-C8218070DC42} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E} - {21B7EA5E-1EF8-49B6-AC07-11714AF0E37D} = {A10C4720-DCA4-4640-9749-67F4314F527C} - {F75E29D0-D288-478B-8D83-2C190F321A3F} = {A10C4720-DCA4-4640-9749-67F4314F527C} - {43CE4CE5-0010-4B99-9569-672670D26E26} = {2D17E75D-2DDC-42C4-AD70-704D95A937AE} - {27B5AAEB-A548-44CF-9777-F8BAA32AF7AE} = {2D17E75D-2DDC-42C4-AD70-704D95A937AE} - {68A10CD3-AA64-465B-AF5F-ED4E9700543C} = {BDB237B6-1D1D-400F-84CC-40A58FA59C8E} {4DAF0299-495E-4CD1-A982-9BAC16A45932} = {59840756-302F-44DF-AA47-441A9D673202} {71CC9D78-BA29-4D93-946F-BEF5D9A3A6EF} = {E8F24881-5E37-4362-B191-A3BA0ED7F4EB} {2D17E75D-2DDC-42C4-AD70-704D95A937AE} = {59840756-302F-44DF-AA47-441A9D673202} @@ -2911,8 +2327,11 @@ Global {3C67784E-1453-49C2-9660-483E2CC7F7AD} = {40BD8415-DD93-4200-8D82-498DDDC08CC8} {613CCB57-5FA9-48EF-80D0-6B1E319E20C4} = {A10C4720-DCA4-4640-9749-67F4314F527C} {37C995E0-2349-4154-8E77-4A52C0C7F46D} = {A10C4720-DCA4-4640-9749-67F4314F527C} + {6515F03F-E56D-4DB4-B23D-AC4FB80DB36F} = {61901E80-E97D-4D61-A9BB-E8F2FDA8B40C} + {7615F03F-E56D-4DB4-B23D-BD4FB80DB36F} = {61901E80-E97D-4D61-A9BB-E8F2FDA8B40C} {2C836962-9543-4CE5-B834-D28E1F124B66} = {A10C4720-DCA4-4640-9749-67F4314F527C} {328729E9-6723-416E-9C98-951F1473BBE1} = {A10C4720-DCA4-4640-9749-67F4314F527C} + {BE92101C-04F8-48DA-99F0-E1F4F1D2DC48} = {A10C4720-DCA4-4640-9749-67F4314F527C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {3140B1B7-C8EE-43D1-A772-D82A7061A271} diff --git a/README.md b/README.md index f06a7053a18..71b0daad262 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,45 @@ ![terminal-logos](https://github.com/microsoft/terminal/assets/91625426/333ddc76-8ab2-4eb4-a8c0-4d7b953b1179) +[![Terminal Build Status](https://dev.azure.com/shine-oss/terminal/_apis/build/status%2FTerminal%20CI?branchName=main)](https://dev.azure.com/shine-oss/terminal/_build/latest?definitionId=1&branchName=main) + # Welcome to the Windows Terminal, Console and Command-Line repo +
+ Table of Contents + +- [Installing and running Windows Terminal](#installing-and-running-windows-terminal) + - [Microsoft Store \[Recommended\]](#microsoft-store-recommended) + - [Other install methods](#other-install-methods) + - [Via GitHub](#via-github) + - [Via Windows Package Manager CLI (aka winget)](#via-windows-package-manager-cli-aka-winget) + - [Via Chocolatey (unofficial)](#via-chocolatey-unofficial) + - [Via Scoop (unofficial)](#via-scoop-unofficial) +- [Installing Windows Terminal Canary](#installing-windows-terminal-canary) +- [Windows Terminal Roadmap](#windows-terminal-roadmap) +- [Terminal \& Console Overview](#terminal--console-overview) + - [Windows Terminal](#windows-terminal) + - [The Windows Console Host](#the-windows-console-host) + - [Shared Components](#shared-components) + - [Creating the new Windows Terminal](#creating-the-new-windows-terminal) +- [Resources](#resources) +- [FAQ](#faq) + - [I built and ran the new Terminal, but it looks just like the old console](#i-built-and-ran-the-new-terminal-but-it-looks-just-like-the-old-console) +- [Documentation](#documentation) +- [Contributing](#contributing) +- [Communicating with the Team](#communicating-with-the-team) +- [Developer Guidance](#developer-guidance) +- [Prerequisites](#prerequisites) +- [Building the Code](#building-the-code) + - [Building in PowerShell](#building-in-powershell) + - [Building in Cmd](#building-in-cmd) +- [Running \& Debugging](#running--debugging) + - [Coding Guidance](#coding-guidance) +- [Code of Conduct](#code-of-conduct) + +
+ +
+ This repository contains the source code for: * [Windows Terminal](https://aka.ms/terminal) @@ -21,7 +59,7 @@ Related repositories include: ## Installing and running Windows Terminal -> **Note**\ +> [!NOTE] > Windows Terminal requires Windows 10 2004 (build 19041) or later ### Microsoft Store [Recommended] @@ -53,7 +91,7 @@ fails for any reason, you can try the following command at a PowerShell prompt: Add-AppxPackage Microsoft.WindowsTerminal_.msixbundle ``` -> **Note**\ +> [!NOTE] > If you install Terminal manually: > > * You may need to install the [VC++ v14 Desktop Framework Package](https://docs.microsoft.com/troubleshoot/cpp/c-runtime-packages-desktop-bridge#how-to-install-and-update-desktop-framework-packages). @@ -72,7 +110,7 @@ package: winget install --id Microsoft.WindowsTerminal -e ``` -> **Note**\ +> [!NOTE] > Dependency support is available in WinGet version [1.6.2631 or later](https://github.com/microsoft/winget-cli/releases). To install the Terminal stable release 1.18 or later, please make sure you have the updated version of the WinGet client. #### Via Chocolatey (unofficial) @@ -145,15 +183,6 @@ _Learn more about the [types of Windows Terminal distributions](https://learn.mi The plan for the Windows Terminal [is described here](/doc/roadmap-2023.md) and will be updated as the project proceeds. -## Project Build Status - -Project|Build Status ----|--- -Terminal|[![Terminal Build Status](https://dev.azure.com/ms/terminal/_apis/build/status/terminal%20CI?branchName=main)](https://dev.azure.com/ms/terminal/_build?definitionId=136) -ColorTool|![Colortool Build Status](https://microsoft.visualstudio.com/_apis/public/build/definitions/c93e867a-8815-43c1-92c4-e7dd5404f1e1/17023/badge) - ---- - ## Terminal & Console Overview Please take a few minutes to review the overview below before diving into the @@ -262,7 +291,7 @@ Cause: You're launching the incorrect solution in Visual Studio. Solution: Make sure you're building & deploying the `CascadiaPackage` project in Visual Studio. -> **Note**\ +> [!NOTE] > `OpenConsole.exe` is just a locally-built `conhost.exe`, the classic > Windows Console that hosts Windows' command-line infrastructure. OpenConsole > is used by Windows Terminal to connect to and communicate with command-line @@ -333,15 +362,6 @@ If you would like to ask a question that you feel doesn't warrant an issue ## Building the Code -This repository uses [git -submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules) for some of its -dependencies. To make sure submodules are restored or updated, be sure to run -the following prior to building: - -```shell -git submodule update --init --recursive -``` - OpenConsole.sln may be built from within Visual Studio or from the command-line using a set of convenience scripts & tools in the **/tools** directory: diff --git a/Scratch.sln b/Scratch.sln index d14a85a64fc..0015f5d832e 100644 --- a/Scratch.sln +++ b/Scratch.sln @@ -29,8 +29,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Common Props", "Common Prop src\wap-common.build.pre.props = src\wap-common.build.pre.props EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fmt", "src\dep\fmt\fmt.vcxproj", "{6BAE5851-50D5-4934-8D5E-30361A8A40F3}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Types", "src\types\lib\types.vcxproj", "{18D09A24-8240-42D6-8CB6-236EEE820263}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "dependencies", "dependencies", "{75AC9360-76FD-4ABC-AFEC-EF342BD2B3E9}" @@ -159,30 +157,6 @@ Global {B4427499-9FDE-4208-B456-5BC580637633}.Release|x64.Build.0 = Release|x64 {B4427499-9FDE-4208-B456-5BC580637633}.Release|x86.ActiveCfg = Release|Win32 {B4427499-9FDE-4208-B456-5BC580637633}.Release|x86.Build.0 = Release|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|x64.ActiveCfg = AuditMode|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|x64.Build.0 = AuditMode|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|x86.ActiveCfg = AuditMode|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.AuditMode|x86.Build.0 = AuditMode|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|ARM64.Build.0 = Debug|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|x64.ActiveCfg = Debug|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|x64.Build.0 = Debug|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|x86.ActiveCfg = Debug|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Debug|x86.Build.0 = Debug|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|ARM64.ActiveCfg = Fuzzing|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|ARM64.Build.0 = Fuzzing|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|x64.ActiveCfg = Fuzzing|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|x64.Build.0 = Fuzzing|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|x86.ActiveCfg = Fuzzing|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Fuzzing|x86.Build.0 = Fuzzing|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|ARM64.ActiveCfg = Release|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|ARM64.Build.0 = Release|ARM64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|x64.ActiveCfg = Release|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|x64.Build.0 = Release|x64 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|x86.ActiveCfg = Release|Win32 - {6BAE5851-50D5-4934-8D5E-30361A8A40F3}.Release|x86.Build.0 = Release|Win32 {18D09A24-8240-42D6-8CB6-236EEE820263}.AuditMode|ARM64.ActiveCfg = AuditMode|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820263}.AuditMode|ARM64.Build.0 = AuditMode|ARM64 {18D09A24-8240-42D6-8CB6-236EEE820263}.AuditMode|x64.ActiveCfg = AuditMode|x64 @@ -212,7 +186,6 @@ Global HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution - {6BAE5851-50D5-4934-8D5E-30361A8A40F3} = {75AC9360-76FD-4ABC-AFEC-EF342BD2B3E9} {18D09A24-8240-42D6-8CB6-236EEE820263} = {75AC9360-76FD-4ABC-AFEC-EF342BD2B3E9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution diff --git a/build/StoreSubmission/.gitignore b/build/StoreSubmission/.gitignore new file mode 100644 index 00000000000..baeddd65d00 --- /dev/null +++ b/build/StoreSubmission/.gitignore @@ -0,0 +1,2 @@ +Media +SubmissionPackages diff --git a/build/StoreSubmission/Preview/PDPs/de-DE/PDP.xml b/build/StoreSubmission/Preview/PDPs/de-DE/PDP.xml new file mode 100644 index 00000000000..f71e42e202b --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/de-DE/PDP.xml @@ -0,0 +1,185 @@ + + + + + + + + + + + + + Terminal + + Konsole + + + + + + + + + + + + + + + + + + Dies ist die Vorschauversion des Windows-Terminals, die die neuesten Funktionen enthält, sobald sie entwickelt werden. Das Windows-Terminal ist eine moderne, schnelle, effiziente, leistungsstarke und produktive Terminalanwendung für Benutzer von Befehlszeilentools und Shells wie Eingabeaufforderung, PowerShell und WSL. Die wichtigsten Features umfassen mehrere Registerkarten, Bereiche, Unicode- und UTF-8-Zeichenunterstützung, GPU-beschleunigtes Textrenderingmodul sowie benutzerdefinierte Designs, Formatvorlagen und Konfigurationen. + +Dies ist ein Open Source-Projekt, und wir freuen uns über die Teilnahme der Community. Um teilzunehmen, besuchen Sie bitte die Website https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Version __VERSION_NUMBER__ + +– Wir haben umgeschrieben, wie Konsolenanwendungen im Terminal gehostet werden! Melden Sie alle auftretenden Fehler. +- Terminal unterstützt jetzt Sixels! +- Sie können jetzt ein angedocktes Fenster öffnen, das Ausschnitte von Befehlen enthält, die Sie gespeichert haben, um sie später zu verwenden. +- Für Benutzer der Eingabeaufforderung der neuesten Version von Windows 11 wird möglicherweise ein „Kurzer Tipp“-Symbol angezeigt, das installierbare Software von WinGet + vorschlägt +- Ausgewählter Text wird jetzt viel sichtbarer (und anpassbarer!) +- Eine Reihe von Zuverlässigkeitsfehlern, Komfortproblemen und Ärgernissen wurden behoben. + +Weitere Informationen finden Sie auf unserer GitHub-Releaseseite. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Das neue Windows-Terminal + + + + + + + + + + + + Mehrere Registerkarten + + Vollständige Unicode-Unterstützung + + GPU-beschleunigtes Textrendering + + Vollständige Anpassbarkeit + + Geteilte Bereiche + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tastatur + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/PDPs/en-US/PDP.xml b/build/StoreSubmission/Preview/PDPs/en-US/PDP.xml new file mode 100644 index 00000000000..3e4fa3dbd88 --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/en-US/PDP.xml @@ -0,0 +1,181 @@ + + + + + + + + + + + + + Terminal + + Console + + + + + + + + + + + + + + + + + + This is the preview build of the Windows Terminal, which contains the latest features as they are developed. The Windows Terminal is a modern, fast, efficient, powerful, and productive terminal application for users of command-line tools and shells like Command Prompt, PowerShell, and WSL. Its main features include multiple tabs, panes, Unicode and UTF-8 character support, a GPU accelerated text rendering engine, and custom themes, styles, and configurations. + +This is an open source project and we welcome community participation. To participate please visit https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Version __VERSION_NUMBER__ + +- We've added dozens of settings to the UI that once only existed in the JSON file, including a new page for customizing the layout of your New Tab menu! +- We have rearchitected window management to improve reliability; please file any bugs you encounter with the wt.exe alias +- Profiles now show an icon if they've been hidden or refer to programs which were uninstalled. + +Please see our GitHub releases page for additional details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <!-- _locComment_text="{MaxLength=255} Trailer title 1" -->The new Windows Terminal + + + + + + + + + + + + Multiple tabs + + Full Unicode support + + GPU-accelerated text rendering + + Full customizability + + Split panes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Keyboard + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/PDPs/es-ES/PDP.xml b/build/StoreSubmission/Preview/PDPs/es-ES/PDP.xml new file mode 100644 index 00000000000..0a414940f8d --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/es-ES/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Terminal + + Consola + + + + + + + + + + + + + + + + + + Esta en la compilación de versión preliminar de la Terminal Windows, que contiene las últimas a medida que se desarrollan. Terminal Windows es una aplicación de terminal moderna, rápida, eficaz, eficiente y productiva para los usuarios de herramientas de línea de comandos y shells, como Símbolo del sistema, PowerShell y WSL. Entre las características principales se incluyen varias pestañas, paneles, compatibilidad con caracteres Unicode y UTF-8, un motor de representación de texto acelerado por GPU, y temas, estilos y configuraciones personalizados. + +Este es un proyecto de fuente abierta y animamos a la comunidad a participar. Para colaborar, visita https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Versión __VERSION_NUMBER__ + +- Hemos reescrito cómo se hospedan las aplicaciones de consola en Terminal. Informe de los errores que encuentre. +- Terminal ahora admite sixeles. +- Ahora puede abrir un panel acoplado que contenga fragmentos de comandos que haya guardado para usarlos más adelante +- Los usuarios del símbolo del sistema de la versión más reciente de Windows 11 pueden ver un icono de "sugerencia rápida" que sugiere software instalable de WinGet +- El texto seleccionado ahora será mucho más visible (y personalizable) +- Se han corregido varios errores de fiabilidad, problemas de comodidad y molestias. + +Consulte la página de versiones de GitHub para más información. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + La nueva Terminal Windows + + + + + + + + + + + + Varias pestañas + + Soporte completo de Unicode + + Representación de texto acelerada por GPU + + Totalmente personalizable + + Paneles de división + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Teclado + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/PDPs/fr-FR/PDP.xml b/build/StoreSubmission/Preview/PDPs/fr-FR/PDP.xml new file mode 100644 index 00000000000..d8a1b84250c --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/fr-FR/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Terminal + + Console + + + + + + + + + + + + + + + + + + Ceci est une version d’évaluation du Terminal Windows qui contient les fonctionnalités les plus récentes au fur et à mesure de leur développement. Le terminal Windows est une application de terminal moderne, rapide, efficace, puissante et productive pour les utilisateurs d’outils en ligne de commande et d’environnements tels que l’Invite de commandes, PowerShell et WSL. Ses principales fonctionnalités incluent plusieurs onglets, des volets, une prise en charge des caractères Unicode et UTF-8, un moteur de rendu de texte accéléré par GPU, ainsi que des thèmes, styles et configurations personnalisés. + +Il s’agit d’un projet open source et nous vous invitons à participer dans la communauté. Pour participer, visitez https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Version __VERSION_NUMBER__ + +- Nous avons réécrit la manière dont les applications de console sont hébergées dans Terminal ! Veuillez signaler tout bug que vous rencontrez. +- Le terminal prend désormais en charge Sixels ! +- Vous pouvez désormais ouvrir un panneau ancré contenant des extraits de commandes que vous avez enregistrées pour les utiliser ultérieurement +- Les utilisateurs de l'invite de commande sur la dernière version de Windows 11 peuvent voir une icône « astuce rapide » qui suggère un logiciel installable à partir de WinGet +- Le texte sélectionné sera désormais beaucoup plus visible (et personnalisable !) +- Un certain nombre de bugs de fiabilité, de problèmes de commodité et de désagréments ont été corrigés. + +Veuillez consulter notre page de versions GitHub pour plus de détails. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nouveau Terminal Windows + + + + + + + + + + + + Plusieurs onglets + + Prise en charge complète d’Unicode + + Rendu de texte accéléré par GPU + + Personnalisation complète + + Volets de fractionnement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Clavier + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/PDPs/it-IT/PDP.xml b/build/StoreSubmission/Preview/PDPs/it-IT/PDP.xml new file mode 100644 index 00000000000..aa18255f78a --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/it-IT/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Terminale + + Console + + + + + + + + + + + + + + + + + + Questa è una versione di anteprima del Terminale Windows, che contiene le funzionalità più recenti man mano che vengono sviluppate. Terminale Windows è un'applicazione terminale moderna, veloce, efficiente, utile e produttiva per gli utenti che utilizzano shell e strumenti da riga di comando come il prompt dei comandi, PowerShell e WSL. Le funzionalità principali includono più schede, riquadri, supporto di caratteri Unicode e UTF-8, un motore di rendering del testo con accelerazione GPU e temi, stili e configurazioni personalizzati. + +Si tratta di un progetto open source e la partecipazione della community è molto gradita. Per partecipare, visita la pagina https://github.com/microsoft/terminale + + + + + + + + + + + + + + + + + + + + + + Versione __VERSION_NUMBER__ + +- È stato riscritto il modo in cui le applicazioni della console vengono ospitate all'interno di Terminale. Segnala eventuali bug riscontrati. +- Terminal supporta ora Sixel. +- È ora possibile aprire un pannello ancorato contenente frammenti di comandi salvati per usarli in seguito +- Gli utenti del prompt dei comandi nella versione più recente di Windows 11 potrebbero visualizzare un'icona di "suggerimento rapido" che consiglia il software installabile da WinGet +- Il testo selezionato sarà ora molto più visibile, oltre che personalizzabile. +- Sono stati risolti diversi bug di affidabilità, problemi di praticità e fastidi. + +Per altri dettagli, vedi la pagina delle versioni di GitHub. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Il nuovo Terminale Windows + + + + + + + + + + + + Schede multiple + + Supporto Unicode completo + + Rendering del testo con accelerazione GPU + + Personalizzazione completa + + Riquadri divisi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tastiera + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/PDPs/ja-JP/PDP.xml b/build/StoreSubmission/Preview/PDPs/ja-JP/PDP.xml new file mode 100644 index 00000000000..bc1f0be0fbd --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/ja-JP/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + ターミナル + + コンソール + + + + + + + + + + + + + + + + + + これは Windows ターミナルのプレビュー ビルドで、開発中の最新の機能が含まれています。Windows ターミナルは、コマンド プロンプト、PowerShell、WSL などのコマンドライン ツールおよびシェルのユーザーのための、高速、効率的、強力な、生産性を向上させる最新のターミナル アプリケーションです。主な機能には、複数のタブやウィンドウ、Unicode および UTF-8 文字のサポート、GPU アクセラレータによるテキスト レンダリング エンジン、カスタマイズできるテーマ、スタイル、構成が含まれます。 + +これはオープン ソース プロジェクトです。コミュニティへの参加をお待ちしております。参加する場合は、https://github.com/microsoft/terminal にアクセスしてください + + + + + + + + + + + + + + + + + + + + + + バージョン __VERSION_NUMBER__ + +- ターミナル内でのコンソール アプリケーションのホスト方法を書き換えました。発生したバグを報告してください。 +- ターミナルで Sixels がサポートされるようになりました。 +- 後で使用するために保存したコマンドのスニペットを含むドッキング パネルを開けるようになりました +- 最新の Windows 11 リリースのコマンド プロンプト ユーザーには、WinGet からインストール可能なソフトウェアを提案する "クイック ヒント" アイコンが表示される場合があります +- 選択したテキストが大幅に見やすくなりました (カスタマイズも可能です) +- 信頼性に関するバグ、利便性の問題、不快な問題の多くが修正されました。 + +詳細については、GitHub リリース ページをご覧ください。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 新しい Windows ターミナル + + + + + + + + + + + + 複数のタブ + + Unicode の完全なサポート + + GPU アクセラレータによるテキストのレンダリング + + 完全なカスタマイズ性 + + 分割ウィンドウ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + キーボード + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/PDPs/ko-KR/PDP.xml b/build/StoreSubmission/Preview/PDPs/ko-KR/PDP.xml new file mode 100644 index 00000000000..6a1a5614cab --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/ko-KR/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + 터미널 + + 콘솔 + + + + + + + + + + + + + + + + + + 이것은 Windows 터미널에 대한 미리보기 빌드이며 이 터미널에는 개발된 최신 기능들이 포함되어 있습니다. Windows 터미널은 명령 프롬프트, PowerShell 및 WSL과 같은 명령 줄 도구 및 셸 사용자를 위한 최신의 빠르고 효율적이며 강력한 생산성의 터미널 응용 프로그램입니다. 주요 기능으로는 여러 탭, 창, 유니 코드 및 UTF-8 문자 지원, GPU 가속 텍스트 렌더링 엔진 및 사용자 정의 테마, 스타일 및 구성이 있습니다. + +이것은 오픈 소스 프로젝트이며 커뮤니티 참여를 환영합니다. 참여하려면 https://github.com/microsoft/terminal을 방문하십시오 + + + + + + + + + + + + + + + + + + + + + + 버전 __VERSION_NUMBER__ + +- 콘솔 애플리케이션이 터미널 내에서 호스팅되는 방법을 다시 작성했습니다! 발생한 버그를 보고하세요. +- 터미널에서 이제 Sixels를 지원합니다! +- 이제 나중에 사용하기 위해 저장한 명령 조각이 포함된 도킹된 패널을 열 수 있습니다. +- 최신 Windows 11 릴리스의 명령 프롬프트 사용자는 WinGet에서 설치 가능한 소프트웨어를 제안하는 "빠른 팁" 아이콘을 볼 수 있습니다. +- 이제 선택한 텍스트가 훨씬 더 잘 표시됩니다(사용자 지정도 가능!). +- 여러 신뢰성 버그, 편의 문제 및 성가신 사항이 수정되었습니다. + +자세한 내용은 GitHub 릴리스 페이지를 참조하세요. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 새 Windows 터미널 + + + + + + + + + + + + 복수 탭 + + 모든 유니코드 지원 + + GPU 가속 텍스트 렌더링 + + 완전한 사용자 지정 가능성 + + 분할 창 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 키보드 + + + + + + Copyright Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/PDPs/pt-BR/PDP.xml b/build/StoreSubmission/Preview/PDPs/pt-BR/PDP.xml new file mode 100644 index 00000000000..041743bba60 --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/pt-BR/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Terminal + + Console + + + + + + + + + + + + + + + + + + Esta é a versão prévia do Terminal do Windows, que contém os recursos mais recentes à medida que são desenvolvidos. O Terminal do Windows é um aplicativo de terminal moderno, rápido, eficiente, poderoso e produtivo para usuários de ferramentas de linha de comando e shells como Prompt de Comando, PowerShell e WSL. Seus principais recursos incluem várias guias, painéis, suporte a caracteres Unicode e UTF-8, um mecanismo de renderização de texto acelerado por GPU e temas, estilos e configurações personalizados. + +Este é um projeto de código aberto e a participação da comunidade é bem-vinda. Para participar, visite https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Versão __VERSION_NUMBER__ + +- Reescrevemos a forma como os aplicativos de console são hospedados no Terminal! Certifique-se de reportar os bugs que você encontrar. +- O terminal agora é compatível com o Sixels! +- Agora você pode abrir um painel acoplado contendo snippets de comandos que você salvou para usar mais tarde +- Os usuários do Prompt de Comando na versão mais recente do Windows 11 podem ver um ícone de "dica rápida", que sugere softwares instaláveis a partir do WinGet +- O texto selecionado agora ficará muito mais visível (e personalizável!) +- Vários bugs de confiabilidade, problemas de conveniência e incômodos foram resolvidos. + +Confira nossa página de lançamentos no GitHub para obter mais detalhes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + O novo Terminal do Windows + + + + + + + + + + + + Várias guias + + Suporte completo a Unicode + + Renderização de texto acelerado da GPU + + Capacidade de personalização total + + Dividir Painéis + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Teclado + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/PDPs/qps-ploc/PDP.xml b/build/StoreSubmission/Preview/PDPs/qps-ploc/PDP.xml new file mode 100644 index 00000000000..941d2485dea --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/qps-ploc/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Τэŕмĩņªľ !! + + Ċőñşøľě !! + + + + + + + + + + + + + + + + + + Ţћïŝ įš тнĕ φřэνїëẁ ъцîļđ ǿƒ τħ℮ Шĭηðòẅş Ŧёřmΐиăļ, ώĥϊĉђ čŏηтãįηš тħ℮ ŀдτеŝт ƒèäťύŕзş άš ŧђĕў àřė ðёνεℓŏρёđ. Ŧне Ẅĩŋδōẅѕ Ţęгmίηāł ΐš ă моðεѓñ, ƒäŝŧ, эƒƒιĉϊєητ, φθẁėŗƒũľ, ãиď ряθðύčŧĩνз ŧèѓmíʼnǻł áррļïсąтīóň ƒőŗ üś℮ѓѕ òƒ čømмάńδ-ĺïиè τόõļѕ ăлð şђĕľŀѕ ľĩкě Ćοmмαπď Ρяŏmрτ, ΡòẁέгŠђęļľ, ǻηδ ЩŠ₤. Ìťŝ mąΐή ƒэаτцřéѕ іňçĺūδé мūłţΐφľê тдьŝ, ρàñεś, Ûńϊċбðê àⁿđ ЏΤ₣-8 ćћªřαςťέř ŝųррǿřţ, ą ĠРÚ дссêŀεŗąţєđ ŧė×τ řēήďéřίпğ êňĝĩňè, ăиð čύşтθm ťћемêѕ, śŧỳļěѕ, âπđ сøńƒìġųřатîőήѕ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! + +Ťĥìŝ ΐś åń óφёй ŝõùřçė ρřоĵзĉт ǻńδ ẃě ẅéŀčŏmę ĉõmmüⁿĭτу ρåгŧϊсїφатïοη. Ťŏ ράѓţιċίрªт℮ φļэăśę νΐŝîт ħτţφŝ://ģįτђцъ.сόm/мïςřоѕоƒт/τέřmϊʼnǻŀ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !! + + + + + + + + + + + + + + + + + + + + + + Vėѓѕіöй __VERSION_NUMBER__ !!! !!! ! + +- Ẁē'νё ŕéẁѓĭτťёñ ћοώ ĉòπşõℓε άррℓіċªťįõпѕ αяе ĥθѕťэđ įŋšιďé Ţєямїńąℓ! Рļéаšė яёροřτ αņу ьϋģš ýõμ éпćŏџήţęя. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !! +- Ţëямΐʼnαļ ńóẃ ŝüррöятš Śїхέłś! !!! !!! !!! +- ¥оų ĉåи ńòŵ θρėñ д đбčĸэď ράńέļ ċőлŧăīņϊňģ śⁿіφφëťś оƒ ςōмmàⁿďş ŷŏũ ĥªν℮ şåνěđ τσ üśε łαťэŗ !!! !!! !!! !!! !!! !!! !!! !!! !!! +- Ćοмmäлđ Рřōmφť üş℮ŗѕ öη τће ļāťëšτ Щīйđôώѕ 11 řёℓеаѕĕ måў ŝэε ά "qůïςκ ŧĭр" ιсôñ τĥдт šűğģєѕŧѕ ίńśŧăłłавļз šôƒţẁαгέ ƒґόm ЩĩйĞéţ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! +- Śєļèċťєď ţĕжт ωϊŀļ йǿẃ ьέ mџ¢н мǿѓε νĭŝϊъļė (άŋđ сŭŝтŏмΐżдьļē!) !!! !!! !!! !!! !!! !!! ! +- Ä ņϋmъ℮ŗ ŏƒ ѓēŀїаъïļŧÿ ьüĝś, ςôⁿνėηĭ℮иć℮ îѕšůëş ăπð âлňбγдňçėŝ ћªνε ъēёп ƒΐ×еð. !!! !!! !!! !!! !!! !!! !!! !!! + +Ρĺёàŝ℮ ŝез ǿúг ĢīťНŭъ řěłεαśèŝ φāğ℮ ƒóѓ дďδітĭøиąℓ ð℮тªїľŝ. !!! !!! !!! !!! !!! !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ŧћë иĕẁ Шįπδõωš Тёŗmĭлдŀ !!! !!! ! + + + + + + + + + + + + Μΰℓţіρļę ťăъś !!! + + ₣υłľ Űňìčόďέ şůррοяŧ !!! !!! + + ĞΡÙ-асçêľëřăţєđ ţέхŧ яéʼnδęŗίńğ !!! !!! !!! + + ₣џℓł ćűşŧõmîźăвϊľįтγ !!! !!! + + Ŝφľīť ρªлёѕ !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Κёÿъόáѓď !! + + + + + + Ĉθрўґіġнт (с) Μìĉгōŝŏƒτ Čōяροґąтΐοй !!! !!! !!! ! + + + + + ћťŧφş://ġїţħųъ.ćòm/mįćѓσşòƒţ/ŧέřмїʼnаŀ !!! !!! !!! !! + + ђтťφş://ĝїťнûв.¢ǿm/мíčѓõŝόƒτ/ŧеґmіиάł/ΐѕѕύéѕ/ηëш !!! !!! !!! !!! !! + + ĥţťφş://ģō.mîċґοşоƒт.ĉöм/ƒẃłīик/?₤ϊñķΪÐ=521839 !!! !!! !!! !!! ! + diff --git a/build/StoreSubmission/Preview/PDPs/qps-ploca/PDP.xml b/build/StoreSubmission/Preview/PDPs/qps-ploca/PDP.xml new file mode 100644 index 00000000000..941d2485dea --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/qps-ploca/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Τэŕмĩņªľ !! + + Ċőñşøľě !! + + + + + + + + + + + + + + + + + + Ţћïŝ įš тнĕ φřэνїëẁ ъцîļđ ǿƒ τħ℮ Шĭηðòẅş Ŧёřmΐиăļ, ώĥϊĉђ čŏηтãįηš тħ℮ ŀдτеŝт ƒèäťύŕзş άš ŧђĕў àřė ðёνεℓŏρёđ. Ŧне Ẅĩŋδōẅѕ Ţęгmίηāł ΐš ă моðεѓñ, ƒäŝŧ, эƒƒιĉϊєητ, φθẁėŗƒũľ, ãиď ряθðύčŧĩνз ŧèѓmíʼnǻł áррļïсąтīóň ƒőŗ üś℮ѓѕ òƒ čømмάńδ-ĺïиè τόõļѕ ăлð şђĕľŀѕ ľĩкě Ćοmмαπď Ρяŏmрτ, ΡòẁέгŠђęļľ, ǻηδ ЩŠ₤. Ìťŝ mąΐή ƒэаτцřéѕ іňçĺūδé мūłţΐφľê тдьŝ, ρàñεś, Ûńϊċбðê àⁿđ ЏΤ₣-8 ćћªřαςťέř ŝųррǿřţ, ą ĠРÚ дссêŀεŗąţєđ ŧė×τ řēήďéřίпğ êňĝĩňè, ăиð čύşтθm ťћемêѕ, śŧỳļěѕ, âπđ сøńƒìġųřатîőήѕ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! + +Ťĥìŝ ΐś åń óφёй ŝõùřçė ρřоĵзĉт ǻńδ ẃě ẅéŀčŏmę ĉõmmüⁿĭτу ρåгŧϊсїφатïοη. Ťŏ ράѓţιċίрªт℮ φļэăśę νΐŝîт ħτţφŝ://ģįτђцъ.сόm/мïςřоѕоƒт/τέřmϊʼnǻŀ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !! + + + + + + + + + + + + + + + + + + + + + + Vėѓѕіöй __VERSION_NUMBER__ !!! !!! ! + +- Ẁē'νё ŕéẁѓĭτťёñ ћοώ ĉòπşõℓε άррℓіċªťįõпѕ αяе ĥθѕťэđ įŋšιďé Ţєямїńąℓ! Рļéаšė яёροřτ αņу ьϋģš ýõμ éпćŏџήţęя. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !! +- Ţëямΐʼnαļ ńóẃ ŝüррöятš Śїхέłś! !!! !!! !!! +- ¥оų ĉåи ńòŵ θρėñ д đбčĸэď ράńέļ ċőлŧăīņϊňģ śⁿіφφëťś оƒ ςōмmàⁿďş ŷŏũ ĥªν℮ şåνěđ τσ üśε łαťэŗ !!! !!! !!! !!! !!! !!! !!! !!! !!! +- Ćοмmäлđ Рřōmφť üş℮ŗѕ öη τће ļāťëšτ Щīйđôώѕ 11 řёℓеаѕĕ måў ŝэε ά "qůïςκ ŧĭр" ιсôñ τĥдт šűğģєѕŧѕ ίńśŧăłłавļз šôƒţẁαгέ ƒґόm ЩĩйĞéţ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! +- Śєļèċťєď ţĕжт ωϊŀļ йǿẃ ьέ mџ¢н мǿѓε νĭŝϊъļė (άŋđ сŭŝтŏмΐżдьļē!) !!! !!! !!! !!! !!! !!! ! +- Ä ņϋmъ℮ŗ ŏƒ ѓēŀїаъïļŧÿ ьüĝś, ςôⁿνėηĭ℮иć℮ îѕšůëş ăπð âлňбγдňçėŝ ћªνε ъēёп ƒΐ×еð. !!! !!! !!! !!! !!! !!! !!! !!! + +Ρĺёàŝ℮ ŝез ǿúг ĢīťНŭъ řěłεαśèŝ φāğ℮ ƒóѓ дďδітĭøиąℓ ð℮тªїľŝ. !!! !!! !!! !!! !!! !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ŧћë иĕẁ Шįπδõωš Тёŗmĭлдŀ !!! !!! ! + + + + + + + + + + + + Μΰℓţіρļę ťăъś !!! + + ₣υłľ Űňìčόďέ şůррοяŧ !!! !!! + + ĞΡÙ-асçêľëřăţєđ ţέхŧ яéʼnδęŗίńğ !!! !!! !!! + + ₣џℓł ćűşŧõmîźăвϊľįтγ !!! !!! + + Ŝφľīť ρªлёѕ !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Κёÿъόáѓď !! + + + + + + Ĉθрўґіġнт (с) Μìĉгōŝŏƒτ Čōяροґąтΐοй !!! !!! !!! ! + + + + + ћťŧφş://ġїţħųъ.ćòm/mįćѓσşòƒţ/ŧέřмїʼnаŀ !!! !!! !!! !! + + ђтťφş://ĝїťнûв.¢ǿm/мíčѓõŝόƒτ/ŧеґmіиάł/ΐѕѕύéѕ/ηëш !!! !!! !!! !!! !! + + ĥţťφş://ģō.mîċґοşоƒт.ĉöм/ƒẃłīик/?₤ϊñķΪÐ=521839 !!! !!! !!! !!! ! + diff --git a/build/StoreSubmission/Preview/PDPs/qps-plocm/PDP.xml b/build/StoreSubmission/Preview/PDPs/qps-plocm/PDP.xml new file mode 100644 index 00000000000..941d2485dea --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/qps-plocm/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Τэŕмĩņªľ !! + + Ċőñşøľě !! + + + + + + + + + + + + + + + + + + Ţћïŝ įš тнĕ φřэνїëẁ ъцîļđ ǿƒ τħ℮ Шĭηðòẅş Ŧёřmΐиăļ, ώĥϊĉђ čŏηтãįηš тħ℮ ŀдτеŝт ƒèäťύŕзş άš ŧђĕў àřė ðёνεℓŏρёđ. Ŧне Ẅĩŋδōẅѕ Ţęгmίηāł ΐš ă моðεѓñ, ƒäŝŧ, эƒƒιĉϊєητ, φθẁėŗƒũľ, ãиď ряθðύčŧĩνз ŧèѓmíʼnǻł áррļïсąтīóň ƒőŗ üś℮ѓѕ òƒ čømмάńδ-ĺïиè τόõļѕ ăлð şђĕľŀѕ ľĩкě Ćοmмαπď Ρяŏmрτ, ΡòẁέгŠђęļľ, ǻηδ ЩŠ₤. Ìťŝ mąΐή ƒэаτцřéѕ іňçĺūδé мūłţΐφľê тдьŝ, ρàñεś, Ûńϊċбðê àⁿđ ЏΤ₣-8 ćћªřαςťέř ŝųррǿřţ, ą ĠРÚ дссêŀεŗąţєđ ŧė×τ řēήďéřίпğ êňĝĩňè, ăиð čύşтθm ťћемêѕ, śŧỳļěѕ, âπđ сøńƒìġųřатîőήѕ. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! + +Ťĥìŝ ΐś åń óφёй ŝõùřçė ρřоĵзĉт ǻńδ ẃě ẅéŀčŏmę ĉõmmüⁿĭτу ρåгŧϊсїφатïοη. Ťŏ ράѓţιċίрªт℮ φļэăśę νΐŝîт ħτţφŝ://ģįτђцъ.сόm/мïςřоѕоƒт/τέřmϊʼnǻŀ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !! + + + + + + + + + + + + + + + + + + + + + + Vėѓѕіöй __VERSION_NUMBER__ !!! !!! ! + +- Ẁē'νё ŕéẁѓĭτťёñ ћοώ ĉòπşõℓε άррℓіċªťįõпѕ αяе ĥθѕťэđ įŋšιďé Ţєямїńąℓ! Рļéаšė яёροřτ αņу ьϋģš ýõμ éпćŏџήţęя. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !! +- Ţëямΐʼnαļ ńóẃ ŝüррöятš Śїхέłś! !!! !!! !!! +- ¥оų ĉåи ńòŵ θρėñ д đбčĸэď ράńέļ ċőлŧăīņϊňģ śⁿіφφëťś оƒ ςōмmàⁿďş ŷŏũ ĥªν℮ şåνěđ τσ üśε łαťэŗ !!! !!! !!! !!! !!! !!! !!! !!! !!! +- Ćοмmäлđ Рřōmφť üş℮ŗѕ öη τће ļāťëšτ Щīйđôώѕ 11 řёℓеаѕĕ måў ŝэε ά "qůïςκ ŧĭр" ιсôñ τĥдт šűğģєѕŧѕ ίńśŧăłłавļз šôƒţẁαгέ ƒґόm ЩĩйĞéţ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! +- Śєļèċťєď ţĕжт ωϊŀļ йǿẃ ьέ mџ¢н мǿѓε νĭŝϊъļė (άŋđ сŭŝтŏмΐżдьļē!) !!! !!! !!! !!! !!! !!! ! +- Ä ņϋmъ℮ŗ ŏƒ ѓēŀїаъïļŧÿ ьüĝś, ςôⁿνėηĭ℮иć℮ îѕšůëş ăπð âлňбγдňçėŝ ћªνε ъēёп ƒΐ×еð. !!! !!! !!! !!! !!! !!! !!! !!! + +Ρĺёàŝ℮ ŝез ǿúг ĢīťНŭъ řěłεαśèŝ φāğ℮ ƒóѓ дďδітĭøиąℓ ð℮тªїľŝ. !!! !!! !!! !!! !!! !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ŧћë иĕẁ Шįπδõωš Тёŗmĭлдŀ !!! !!! ! + + + + + + + + + + + + Μΰℓţіρļę ťăъś !!! + + ₣υłľ Űňìčόďέ şůррοяŧ !!! !!! + + ĞΡÙ-асçêľëřăţєđ ţέхŧ яéʼnδęŗίńğ !!! !!! !!! + + ₣џℓł ćűşŧõmîźăвϊľįтγ !!! !!! + + Ŝφľīť ρªлёѕ !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Κёÿъόáѓď !! + + + + + + Ĉθрўґіġнт (с) Μìĉгōŝŏƒτ Čōяροґąтΐοй !!! !!! !!! ! + + + + + ћťŧφş://ġїţħųъ.ćòm/mįćѓσşòƒţ/ŧέřмїʼnаŀ !!! !!! !!! !! + + ђтťφş://ĝїťнûв.¢ǿm/мíčѓõŝόƒτ/ŧеґmіиάł/ΐѕѕύéѕ/ηëш !!! !!! !!! !!! !! + + ĥţťφş://ģō.mîċґοşоƒт.ĉöм/ƒẃłīик/?₤ϊñķΪÐ=521839 !!! !!! !!! !!! ! + diff --git a/build/StoreSubmission/Preview/PDPs/ru-RU/PDP.xml b/build/StoreSubmission/Preview/PDPs/ru-RU/PDP.xml new file mode 100644 index 00000000000..7561a5dd7e3 --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/ru-RU/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Терминал + + Консоль + + + + + + + + + + + + + + + + + + Это предварительная сборка Windows Terminal, которая содержит новейшие функции по мере их разработки. Windows Terminal - это современное, быстрое, эффективное, мощное и продуктивное терминальное приложение для пользователей инструментов командной строки и оболочек, таких как командная строка, PowerShell и WSL. Его основные функции включают в себя несколько вкладок, панелей, поддержку символов Unicode и UTF-8, движок рендеринга текста с GPU-ускорением, а также настраиваемые темы, стили и конфигурации. + +Это проект с открытым исходным кодом, и мы приветствуем участие сообщества. Для участия, пожалуйста, посетите https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Версия __VERSION_NUMBER__ + +– Мы переписали, как консольные приложения размещаются внутри Терминала! Сообщайте о любых ошибках, с которыми вы столкнулись. +– Терминал теперь поддерживает форматы Sixel! +– Теперь вы можете открыть закрепленную панель, содержащую фрагменты команд, которые вы сохранили для использования в дальнейшем +– Пользователи командной строки в новейшем выпуске Windows 11 могут увидеть значок "краткой подсказки", который предлагает устанавливаемые программы из WinGet +– Выделенный текст теперь станет более видимым (и настраиваемым!) +– Исправлено несколько ошибок надежности, проблем с удобством, а также устранены раздражающие моменты. + +Дополнительные сведения см. на странице выпусков GitHub. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Новый Терминал Windows + + + + + + + + + + + + Множественные вкладки + + Полная поддержка Юникода + + Отрисовка текста с использованием графического ускорителя + + Полная настройка + + Разделение областей + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Клавиатура + + + + + + (C) Корпорация Майкрософт (Microsoft Corporation) + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/PDPs/zh-CN/PDP.xml b/build/StoreSubmission/Preview/PDPs/zh-CN/PDP.xml new file mode 100644 index 00000000000..44ef68818ca --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/zh-CN/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + 终端 + + 控制台 + + + + + + + + + + + + + + + + + + 这是 Windows 终端的预览版本,其中包含最新功能。Windows 终端是一款新式、快速、高效、强大且高效的终端应用程序,适用于命令行工具和命令提示符,PowerShell和 WSL 等 Shell 用户。主要功能包括多个选项卡、窗格、Unicode、和 UTF-8 字符支持,GPU 加速文本渲染引擎以及自定义主题、样式和配置。 + +这是一个开源项目,我们欢迎社区参与。如要参与,请访问 https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Version __VERSION_NUMBER__ + +- 我们已改变主机应用程序在终端内的托管方式!请报告遇到的任何 bug。 +- 终端现在支持 Sixels! +- 现在可以打开一个停靠面板,其中包含已保存供以后使用的命令片段 +- 最新 Windows 11 版本上的命令提示用户可能会看到“快速提示”图标,该图标建议从 WinGet 安装软件 +- 所选文本现在将具有更高的可见性(和可自定义性!) +- 修复了许多可靠性 bug、便利性问题和令人烦恼的问题。 + +有关其他详细信息,请参阅我们的 GitHub 发布页面。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 新 Windows 终端 + + + + + + + + + + + + 多选项卡 + + 完全 Unicode 支持 + + GPU 加速文本渲染 + + 全自定义 + + 拆分窗格 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 键盘 + + + + + + 版权所有(c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/PDPs/zh-TW/PDP.xml b/build/StoreSubmission/Preview/PDPs/zh-TW/PDP.xml new file mode 100644 index 00000000000..e902f1a5e06 --- /dev/null +++ b/build/StoreSubmission/Preview/PDPs/zh-TW/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + 終端 + + 主控台 + + + + + + + + + + + + + + + + + + 這是 Windows 終端機的預覽版,其中包含最新開發的功能。Windows 終端機是一種新式、快速、高效、功能強大且具生產力的終端應用程式,適合命令列工具和 Shell (例如命令提示字元、PowerShell 和 WSL) 的使用者。主要功能包括多個索引標籤、窗格、Unicode 和 UTF-8 字元支援、GPU 加速的文字呈現引擎,以及自訂佈景主題、樣式和設定。 + +這是開放原始碼的專案,我們歡迎參與社群。若要參與,請瀏覽 https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + 版本 __VERSION_NUMBER__ + +- 我們已重寫主機應用程式在終端機內託管的方式!請報告您遇到的錯誤。 +- 終端機現在支援 Sixels! +- 現在,您可以開啟包含已儲存命令程式碼片段的固定面板,以供稍後使用 +- 最新 Windows 11 版本中的 [命令提示] 使用者可能會看到「快速提示」圖示,建議可自 WinGet 安裝的軟體 +- 選取的文字現在會更明顯 (且可自訂!) +- 已修正一些可靠性錯誤、便利性問題和令人困擾的問題。 + +如需更多詳細資訊,請參閱我們的 GitHub 發行頁面。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 新的 Windows 終端機 + + + + + + + + + + + + 多重索引標籤 + + 完整 Unicode 支援 + + GPU 加速的文字呈現 + + 完整自訂能力 + + 分割窗格 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 鍵盤 + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Preview/SBConfig.json b/build/StoreSubmission/Preview/SBConfig.json new file mode 100644 index 00000000000..78facc62bbb --- /dev/null +++ b/build/StoreSubmission/Preview/SBConfig.json @@ -0,0 +1,67 @@ +{ + "helpUri": "https:\\\\aka.ms\\StoreBroker_Config", + "schemaVersion": 2, + "packageParameters": { + "PDPRootPath": "PDPs", + "Release": "", + "PDPInclude": ["PDP.xml"], + "PDPExclude": [], + "LanguageExclude": [ + "default", + "qps-ploc", + "qps-ploca", + "qps-plocm" + ], + "MediaRootPath": "..\\Media", + "MediaFallbackLanguage": "en-us", + "PackagePath": [], + "OutPath": "..\\SubmissionPackages", + "OutName": "WindowsTerminalPreview", + "DisableAutoPackageNameFormatting": false + }, + "appSubmission": { + "productId": "00014050269303149694", + "targetPublishMode": "NotSet", + "targetPublishDate": null, + "visibility": "NotSet", + "pricing": { + "priceId": "NotAvailable", + "trialPeriod": "NoFreeTrial", + "marketSpecificPricings": {}, + "sales": [] + }, + "allowTargetFutureDeviceFamilies": { + "Xbox": false, + "Team": false, + "Holographic": false, + "Desktop": false, + "Mobile": false + }, + "allowMicrosoftDecideAppAvailabilityToFutureDeviceFamilies": false, + "enterpriseLicensing": "None", + "applicationCategory": "NotSet", + "hardwarePreferences": [], + "hasExternalInAppProducts": false, + "meetAccessibilityGuidelines": false, + "canInstallOnRemovableMedia": false, + "automaticBackupEnabled": false, + "isGameDvrEnabled": false, + "gamingOptions": [ + { + "genres": [], + "isLocalMultiplayer": false, + "isLocalCooperative": false, + "isOnlineMultiplayer": false, + "isOnlineCooperative": false, + "localMultiplayerMinPlayers": 0, + "localMultiplayerMaxPlayers": 0, + "localCooperativeMinPlayers": 0, + "localCooperativeMaxPlayers": 0, + "isBroadcastingPrivilegeGranted": false, + "isCrossPlayEnabled": false, + "kinectDataForExternal": "Disabled" + } + ], + "notesForCertification": "" + } +} diff --git a/build/StoreSubmission/README.md b/build/StoreSubmission/README.md new file mode 100644 index 00000000000..2e66bc98f33 --- /dev/null +++ b/build/StoreSubmission/README.md @@ -0,0 +1,3 @@ +This directory is intended to be used with the [StoreBroker PowerShell module]. + +[StoreBroker PowerShell module]: https://github.com/microsoft/StoreBroker/tree/v2 diff --git a/build/StoreSubmission/Stable/PDPs/de-DE/PDP.xml b/build/StoreSubmission/Stable/PDPs/de-DE/PDP.xml new file mode 100644 index 00000000000..9b03ca9d011 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/de-DE/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Terminal + + Konsole + + + + + + + + + + + + + + + + + + Das Windows-Terminal ist eine moderne, schnelle, effiziente, leistungsstarke und produktive Terminal-Anwendung für Benutzer von Befehlszeilentools und Shells wie beispielsweise Eingabeaufforderung, PowerShell und WSL. Die wichtigsten Funktionen des Windows-Terminals umfassen mehrere Registerkarten, Bereiche, Unicode- und UTF-8-Zeichenunterstützung, GPU-beschleunigtes Textrendering-Modul sowie benutzerdefinierte Designs, Formatvorlagen und Konfigurationen. + +Dies ist ein Open Source-Projekt, und wir freuen uns über die Teilnahme an der Community. Um teilzunehmen, besuchen Sie bitte die Website https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Version __VERSION_NUMBER__ + +– Terminal speichert jetzt den Inhalt des Fensters, wenn Sie die Sitzungswiederherstellung verwenden. +– Sie können jetzt mehrere Schriftarten gleichzeitig verwenden. +– Kästchenzeichnende Zeichen werden jetzt pixelgenau gerendert. +– Die Verwendung eines IME innerhalb des Terminals wurde erheblich verbessert. +– Die Farbschemas in Ihrer JSON-Datei sind jetzt viel einfacher. +– Eine Reihe von Fehlern im Zusammenhang mit der URL-Verarbeitung, Zeilen mit doppelter Breite, Zeilenumbruch und mehr wurden behoben. + +Weitere Informationen finden Sie auf unserer GitHub-Releaseseite. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Das neue Windows-Terminal + + + + + + + + + + + + Mehrere Registerkarten + + Vollständige Unicode-Unterstützung + + GPU-beschleunigtes Textrendering + + Vollständige Anpassbarkeit + + Geteilte Bereiche + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tastatur + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/PDPs/en-US/PDP.xml b/build/StoreSubmission/Stable/PDPs/en-US/PDP.xml new file mode 100644 index 00000000000..993c27e011c --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/en-US/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Terminal + + Console + + + + + + + + + + + + + + + + + + The Windows Terminal is a modern, fast, efficient, powerful, and productive terminal application for users of command-line tools and shells like Command Prompt, PowerShell, and WSL. Its main features include multiple tabs, panes, Unicode and UTF-8 character support, a GPU accelerated text rendering engine, and custom themes, styles, and configurations. + +This is an open source project and we welcome community participation. To participate please visit https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Version __VERSION_NUMBER__ + +- We've rewritten how console applications are hosted inside Terminal! Please report any bugs you encounter. +- Terminal now supports Sixels! +- You can now open a docked panel containing snippets of commands you have saved to use later +- Command Prompt users on the latest Windows 11 release may see a "quick tip" icon that suggests installable software from WinGet +- Selected text will now be much more visible (and customizable!) +- A number of reliabilty bugs, convenience issues and annoyances have been fixed. + +Please see our GitHub releases page for additional details. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <!-- _locComment_text="{MaxLength=255} Trailer title 1" -->The new Windows Terminal + + + + + + + + + + + + Multiple tabs + + Full Unicode support + + GPU-accelerated text rendering + + Full customizability + + Split panes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Keyboard + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/PDPs/es-ES/PDP.xml b/build/StoreSubmission/Stable/PDPs/es-ES/PDP.xml new file mode 100644 index 00000000000..1d2c1d53309 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/es-ES/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Terminal + + Consola + + + + + + + + + + + + + + + + + + Terminal Windows es una aplicación de terminal moderna, rápida, eficaz, eficiente y productiva para los usuarios de herramientas de línea de comandos y shell, como Símbolo del sistema, PowerShell y WSL. Entre las características principales se incluyen varias pestañas, paneles, compatibilidad con caracteres Unicode y UTF-8, un motor de representación de texto acelerado por GPU, y temas, estilos y configuraciones personalizados. + +Este es un proyecto de fuente abierta y animamos a la comunidad a participar. Para colaborar, visite https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Versión __VERSION_NUMBER__ + +- Terminal recordará ahora el contenido de la ventana cuando use la restauración de la sesión. +- Ahora puede usar varias fuentes al mismo tiempo. +- Los caracteres que dibujan recuadros ahora se representan con precisión de píxel. +- Se ha mejorado significativamente la experiencia de utilizar un IME dentro de Terminal. +- Las combinaciones de colores dentro del archivo JSON ahora serán mucho más sencillas. +- Se han corregido varios errores relacionados con el control de direcciones URL, las filas de ancho doble, el ajuste de líneas y mucho más. + +Consulte la página de versiones de GitHub para más información. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + La nueva Terminal Windows + + + + + + + + + + + + Varias pestañas + + Soporte completo de Unicode + + Representación de texto acelerada por GPU + + Totalmente personalizable + + Paneles de división + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Teclado + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/PDPs/fr-FR/PDP.xml b/build/StoreSubmission/Stable/PDPs/fr-FR/PDP.xml new file mode 100644 index 00000000000..73122c2dba3 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/fr-FR/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Terminal + + Console + + + + + + + + + + + + + + + + + + Le Terminal Windows est une application de terminal moderne, rapide, efficace, puissante et productive pour les utilisateurs d’outils en ligne de commande et d’interpréteurs de commandes tels que l’Invite de commandes, PowerShell et WSL. Ses principales fonctionnalités incluent plusieurs onglets, des volets, une prise en charge des caractères Unicode et UTF-8, un moteur de rendu de texte accéléré par GPU, ainsi que des thèmes, styles et configurations personnalisés. + +Il s’agit d’un projet open source et nous encourageons la participation à la communauté. Pour participer, veuillez visiter le site web https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Version __VERSION_NUMBER__ + +- Le terminal mémorisera désormais le contenu de la fenêtre lorsque vous utiliserez la restauration de session. +- Vous pouvez désormais utiliser plusieurs polices en même temps. +- Les personnages dessinés en boîte sont désormais rendus avec une perfection de pixel. +- L'expérience d'utilisation d'un IME dans le Terminal a été considérablement améliorée. +- Les schémas de couleurs à l'intérieur de votre fichier JSON seront désormais beaucoup plus simples. +- Un certain nombre de bugs concernant la gestion des URL, les lignes à double largeur, le retour à la ligne, etc. ont été corrigés. + +Veuillez consulter notre page de versions GitHub pour plus de détails. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nouveau Terminal Windows + + + + + + + + + + + + Plusieurs onglets + + Prise en charge complète d’Unicode + + Rendu de texte accéléré par GPU + + Personnalisation complète + + Volets de fractionnement + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Clavier + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/PDPs/it-IT/PDP.xml b/build/StoreSubmission/Stable/PDPs/it-IT/PDP.xml new file mode 100644 index 00000000000..1588f404941 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/it-IT/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Terminale + + Console + + + + + + + + + + + + + + + + + + Terminale Windows è un'applicazione terminale moderna, veloce, efficiente, utile e produttiva per gli utenti che utilizzano shell e strumenti da riga di comando come il prompt dei comandi, PowerShell e WSL. Le funzionalità principali includono più schede, riquadri, supporto di caratteri Unicode e UTF-8, un motore di rendering del testo con accelerazione GPU e temi, stili e configurazioni personalizzati. + +Si tratta di un progetto open source e la partecipazione della community è molto gradita. Per partecipare, visita la pagina https://github.com/microsoft/terminale + + + + + + + + + + + + + + + + + + + + + + Versione __VERSION_NUMBER__ + +- Il terminale ricorda ora il contenuto della finestra quando si usa il ripristino della sessione. +- È ora possibile usare più tipi di carattere contemporaneamente. +- I caratteri tracciati vengono ora sottoposti a rendering con pixel di perfezionamento. +- L'esperienza di utilizzo di un IME all'interno di Terminale è stata notevolmente migliorata. +- Le combinazioni di colori all'interno del file JSON saranno ora molto più semplici. +- Sono stati corretti alcuni bug relativi alla gestione degli URL, alle righe a doppia larghezza, al ritorno a capo delle righe e altro ancora. + +Per altri dettagli, vedi la pagina delle versioni di GitHub. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Il nuovo Terminale Windows + + + + + + + + + + + + Schede multiple + + Supporto Unicode completo + + Rendering del testo con accelerazione GPU + + Personalizzazione completa + + Riquadri divisi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tastiera + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/PDPs/ja-JP/PDP.xml b/build/StoreSubmission/Stable/PDPs/ja-JP/PDP.xml new file mode 100644 index 00000000000..8a56c14bbe1 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/ja-JP/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + ターミナル + + コンソール + + + + + + + + + + + + + + + + + + Windows ターミナルは、コマンド プロンプト、PowerShell、WSL などのコマンドライン ツールおよびシェルのユーザーのための、高速、効率的、強力な、生産性を向上させる最新のターミナル アプリケーションです。主な機能には、複数のタブ、ウィンドウ、Unicode および UTF-8 文字のサポート、GPU アクセラレータによるテキスト レンダリング エンジン、カスタマイズできるテーマ、スタイル、構成が含まれます。 + +これはオープン ソース プロジェクトで、コミュニティへの参加をお待ちしております。参加する場合は、https://github.com/microsoft/terminal にアクセスしてください + + + + + + + + + + + + + + + + + + + + + + バージョン __VERSION_NUMBER__ + +- セッションの復元を使用すると、ターミナルがウィンドウの内容を記憶するようになりました。 +- 複数のフォントを同時に使用できるようになりました。 +- ボックス描画文字がピクセル単位の精度でレンダリングされるようになりました。 +- ターミナル内での IME の使用エクスペリエンスが大幅に改善されました。 +- JSON ファイル内の配色がはるかにシンプルになりました。 +- URL 処理、二重幅の行、行の折り返しなどに関するいくつかのバグが修正されました。 + +詳細については、GitHub リリース ページをご覧ください。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 新しい Windows ターミナル + + + + + + + + + + + + 複数のタブ + + Unicode の完全なサポート + + GPU アクセラレータによるテキストのレンダリング + + 完全なカスタマイズ性 + + 分割ウィンドウ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + キーボード + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/PDPs/ko-KR/PDP.xml b/build/StoreSubmission/Stable/PDPs/ko-KR/PDP.xml new file mode 100644 index 00000000000..29be907d860 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/ko-KR/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + 터미널 + + 콘솔 + + + + + + + + + + + + + + + + + + Windows 터미널은 명령 프롬프트, PowerShell 및 WSL과 같은 명령 줄 도구 및 셸 사용자를 위한 최신의 빠르고 효율적이며 강력한 생산성의 터미널 응용 프로그램입니다. 주요 기능으로는 여러 탭, 창, 유니 코드 및 UTF-8 문자 지원, GPU 가속 텍스트 렌더링 엔진 및 사용자 정의 테마, 스타일 및 구성이 있습니다. + +이것은 오픈 소스 프로젝트이며 커뮤니티 참여를 환영합니다. 참여하려면 https://github.com/microsoft/terminal을 방문하십시오 + + + + + + + + + + + + + + + + + + + + + + 버전 __VERSION_NUMBER__ + +- 터미널은 이제 세션 복원을 사용할 때 창의 내용을 기억합니다. +- 이제 여러 글꼴을 동시에 사용할 수 있습니다. +- 상자 그리기 캐릭터가 이제 픽셀 완성도로 렌더링됩니다. +- 터미널 내에서 IME를 사용하는 환경이 크게 개선되었습니다. +- 이제 JSON 파일 내의 색 구성표가 훨씬 더 간단해집니다. +- URL 처리, 이중 너비 행, 줄 바꿈 등과 관련된 여러 버그가 수정되었습니다. + +자세한 내용은 GitHub 릴리스 페이지를 참조하세요. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 새 Windows 터미널 + + + + + + + + + + + + 복수 탭 + + 모든 유니코드 지원 + + GPU 가속 텍스트 렌더링 + + 완전한 사용자 지정 가능성 + + 분할 창 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 키보드 + + + + + + Copyright Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/PDPs/pt-BR/PDP.xml b/build/StoreSubmission/Stable/PDPs/pt-BR/PDP.xml new file mode 100644 index 00000000000..1ddfe8815ca --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/pt-BR/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Terminal + + Console + + + + + + + + + + + + + + + + + + O Terminal do Windows é um aplicativo de terminal moderno, rápido, eficiente, poderoso e produtivo para usuários de ferramentas de linha de comando e shells como Prompt de Comando, PowerShell e WSL. Seus principais recursos incluem várias guias, painéis, suporte a caracteres Unicode e UTF-8, um mecanismo de renderização de texto acelerado por GPU e temas, estilos e configurações personalizados. + +Este é um projeto de código aberto e a participação da comunidade é bem-vinda. Para participar, visite https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Versão __VERSION_NUMBER__ + +- O terminal agora se lembra do conteúdo da janela quando você usa a restauração de sessão. +- Agora você pode usar várias fontes ao mesmo tempo. +- Os caracteres da caixa de desenho agora são renderizados com a perfeição de pixels. +- A experiência de usar uma IME dentro do Terminal foi significativamente aprimorada. +- Os esquemas de cores dentro do seu arquivo JSON agora estão muito mais simples. +- Foram corrigidos vários bugs envolvendo o tratamento de URLs, linhas de largura dupla, quebra de linha automática e muito mais. + +Confira nossa página de lançamentos no GitHub para obter mais detalhes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + O novo Terminal do Windows + + + + + + + + + + + + Várias guias + + Suporte completo a Unicode + + Renderização de texto acelerado da GPU + + Capacidade de personalização total + + Dividir Painéis + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Teclado + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/PDPs/qps-ploc/PDP.xml b/build/StoreSubmission/Stable/PDPs/qps-ploc/PDP.xml new file mode 100644 index 00000000000..5f716b97c42 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/qps-ploc/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Τэŕмĩņªľ !! + + Ċőñşøľě !! + + + + + + + + + + + + + + + + + + Ţћē Windows Ťěřмĭпªļ ΐŝ а mσđ℮ŗⁿ, ƒαšτ, 냃ĭċíèñŧ, ρоώëřƒųļ, ãлđ ρгσďűςťįν℮ тĕгмΐņǻľ аφφľīсàтĭόʼn ƒбř ΰśēřś оƒ ċǿmmάņď-ľιñĕ тθōℓѕ àήδ ŝнέŀłš ℓįкё Ćσммāпď Рřσmρŧ, РощёŕŠћėļℓ, ãπď ŴŜŁ. Īтś мǻĭп ƒзåţųŗêš ιņçłϋðē мΰℓŧìрļέ ţãвš, ράи℮ѕ, Üήιсοδê âиð ŮΤ₣-8 ćћăŗªĉтĕя şΰρφоѓť, ă ĜРЏ äĉçěľēґάţèđ ŧ℮жт яēπđěřĭñģ éπğíńз, åñδ сύšťóм тћêmĕš, śŧŷłéš, âπð ςбήƒīĝџѓáťίόńš. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ! + +Ţĥíŝ ιš άň øρèñ šθūѓςë ρгбјė¢τ ąʼnð ẅ℮ ẃêŀċõмè сοмmúńїťγ φàřτĩĉîрªťϊòη. Ţò ράятїĉîрǻŧê ρĺęαŝě νîŝϊт ħŧťφѕ://ġїтђûь.ĉόm/mìĉřòşοƒţ/τéřmíпâľ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !! + + + + + + + + + + + + + + + + + + + + + + Vėѓѕіöй __VERSION_NUMBER__ !!! !!! ! + +- Ŧēгмíйǻŀ шιļł ñσщ řėmėmвзґ τђз ςоńţëηťŝ σƒ ŧћé ẅιⁿδőщ ẅђеή ýóύ ŭš℮ şεššîóŋ řėşτŏѓдτіόŋ. !!! !!! !!! !!! !!! !!! !!! !!! !!! +- Ύоџ ςàⁿ ŋóώ ũşэ múľŧìφľё ƒоʼnťş àт ťħе ѕâmз тìме. !!! !!! !!! !!! !!! +- Вό×-ðгăшĭиġ ¢ĥаяäςтеřѕ äřę ηоẁ ѓëńđêяεď ẁϊτђ φïжêĺ φėŗƒēςŧΐøй. !!! !!! !!! !!! !!! !!! ! +- Ťħέ ĕхφêŕï℮ηĉε ŏƒ ύѕïйġ ǻʼn ÎМË îńšïďê Τєřmíлäļ нαŝ ьēέň ѕιĝήîƒіčäπţŀý ĩмφґθνзđ. !!! !!! !!! !!! !!! !!! !!! !!! +- Ťĥę čöℓοг şçђėmęš ιʼnśΐδê убџѓ ĴŠОИ ƒϊŀε ωĭŀł ʼnθω вз мúçĥ ѕїмρℓёґ. !!! !!! !!! !!! !!! !!! !! +- Á ήũmьéŕ òƒ вµġŝ άřòūñδ ÛҐĿ ħàŋδľįйģ, ðőџъŀε-ŵĭďτђ ŗōẁš, ŀϊπė ẃяąрρΐηğ, âⁿđ мŏř℮ ĥāνě везŋ ƒï×έð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! + +Ρļēªšê ŝέė őůг ĜīтĤųъ яëŀεäśēś рдġэ ƒõя ãδðìτϊöňãł δèτâĩĺѕ. !!! !!! !!! !!! !!! !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ŧћë иĕẁ Шįπδõωš Тёŗmĭлдŀ !!! !!! ! + + + + + + + + + + + + Μΰℓţіρļę ťăъś !!! + + ₣υłľ Űňìčόďέ şůррοяŧ !!! !!! + + ĞΡÙ-асçêľëřăţєđ ţέхŧ яéʼnδęŗίńğ !!! !!! !!! + + ₣џℓł ćűşŧõmîźăвϊľįтγ !!! !!! + + Ŝφľīť ρªлёѕ !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Κёÿъόáѓď !! + + + + + + Ĉθрўґіġнт (с) Μìĉгōŝŏƒτ Čōяροґąтΐοй !!! !!! !!! ! + + + + + ћťŧφş://ġїţħųъ.ćòm/mįćѓσşòƒţ/ŧέřмїʼnаŀ !!! !!! !!! !! + + ђтťφş://ĝїťнûв.¢ǿm/мíčѓõŝόƒτ/ŧеґmіиάł/ΐѕѕύéѕ/ηëш !!! !!! !!! !!! !! + + ĥţťφş://ģō.mîċґοşоƒт.ĉöм/ƒẃłīик/?₤ϊñķΪÐ=521839 !!! !!! !!! !!! ! + diff --git a/build/StoreSubmission/Stable/PDPs/qps-ploca/PDP.xml b/build/StoreSubmission/Stable/PDPs/qps-ploca/PDP.xml new file mode 100644 index 00000000000..5f716b97c42 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/qps-ploca/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Τэŕмĩņªľ !! + + Ċőñşøľě !! + + + + + + + + + + + + + + + + + + Ţћē Windows Ťěřмĭпªļ ΐŝ а mσđ℮ŗⁿ, ƒαšτ, 냃ĭċíèñŧ, ρоώëřƒųļ, ãлđ ρгσďűςťįν℮ тĕгмΐņǻľ аφφľīсàтĭόʼn ƒбř ΰśēřś оƒ ċǿmmάņď-ľιñĕ тθōℓѕ àήδ ŝнέŀłš ℓįкё Ćσммāпď Рřσmρŧ, РощёŕŠћėļℓ, ãπď ŴŜŁ. Īтś мǻĭп ƒзåţųŗêš ιņçłϋðē мΰℓŧìрļέ ţãвš, ράи℮ѕ, Üήιсοδê âиð ŮΤ₣-8 ćћăŗªĉтĕя şΰρφоѓť, ă ĜРЏ äĉçěľēґάţèđ ŧ℮жт яēπđěřĭñģ éπğíńз, åñδ сύšťóм тћêmĕš, śŧŷłéš, âπð ςбήƒīĝџѓáťίόńš. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ! + +Ţĥíŝ ιš άň øρèñ šθūѓςë ρгбјė¢τ ąʼnð ẅ℮ ẃêŀċõмè сοмmúńїťγ φàřτĩĉîрªťϊòη. Ţò ράятїĉîрǻŧê ρĺęαŝě νîŝϊт ħŧťφѕ://ġїтђûь.ĉόm/mìĉřòşοƒţ/τéřmíпâľ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !! + + + + + + + + + + + + + + + + + + + + + + Vėѓѕіöй __VERSION_NUMBER__ !!! !!! ! + +- Ŧēгмíйǻŀ шιļł ñσщ řėmėmвзґ τђз ςоńţëηťŝ σƒ ŧћé ẅιⁿδőщ ẅђеή ýóύ ŭš℮ şεššîóŋ řėşτŏѓдτіόŋ. !!! !!! !!! !!! !!! !!! !!! !!! !!! +- Ύоџ ςàⁿ ŋóώ ũşэ múľŧìφľё ƒоʼnťş àт ťħе ѕâmз тìме. !!! !!! !!! !!! !!! +- Вό×-ðгăшĭиġ ¢ĥаяäςтеřѕ äřę ηоẁ ѓëńđêяεď ẁϊτђ φïжêĺ φėŗƒēςŧΐøй. !!! !!! !!! !!! !!! !!! ! +- Ťħέ ĕхφêŕï℮ηĉε ŏƒ ύѕïйġ ǻʼn ÎМË îńšïďê Τєřmíлäļ нαŝ ьēέň ѕιĝήîƒіčäπţŀý ĩмφґθνзđ. !!! !!! !!! !!! !!! !!! !!! !!! +- Ťĥę čöℓοг şçђėmęš ιʼnśΐδê убџѓ ĴŠОИ ƒϊŀε ωĭŀł ʼnθω вз мúçĥ ѕїмρℓёґ. !!! !!! !!! !!! !!! !!! !! +- Á ήũmьéŕ òƒ вµġŝ άřòūñδ ÛҐĿ ħàŋδľįйģ, ðőџъŀε-ŵĭďτђ ŗōẁš, ŀϊπė ẃяąрρΐηğ, âⁿđ мŏř℮ ĥāνě везŋ ƒï×έð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! + +Ρļēªšê ŝέė őůг ĜīтĤųъ яëŀεäśēś рдġэ ƒõя ãδðìτϊöňãł δèτâĩĺѕ. !!! !!! !!! !!! !!! !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ŧћë иĕẁ Шįπδõωš Тёŗmĭлдŀ !!! !!! ! + + + + + + + + + + + + Μΰℓţіρļę ťăъś !!! + + ₣υłľ Űňìčόďέ şůррοяŧ !!! !!! + + ĞΡÙ-асçêľëřăţєđ ţέхŧ яéʼnδęŗίńğ !!! !!! !!! + + ₣џℓł ćűşŧõmîźăвϊľįтγ !!! !!! + + Ŝφľīť ρªлёѕ !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Κёÿъόáѓď !! + + + + + + Ĉθрўґіġнт (с) Μìĉгōŝŏƒτ Čōяροґąтΐοй !!! !!! !!! ! + + + + + ћťŧφş://ġїţħųъ.ćòm/mįćѓσşòƒţ/ŧέřмїʼnаŀ !!! !!! !!! !! + + ђтťφş://ĝїťнûв.¢ǿm/мíčѓõŝόƒτ/ŧеґmіиάł/ΐѕѕύéѕ/ηëш !!! !!! !!! !!! !! + + ĥţťφş://ģō.mîċґοşоƒт.ĉöм/ƒẃłīик/?₤ϊñķΪÐ=521839 !!! !!! !!! !!! ! + diff --git a/build/StoreSubmission/Stable/PDPs/qps-plocm/PDP.xml b/build/StoreSubmission/Stable/PDPs/qps-plocm/PDP.xml new file mode 100644 index 00000000000..5f716b97c42 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/qps-plocm/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Τэŕмĩņªľ !! + + Ċőñşøľě !! + + + + + + + + + + + + + + + + + + Ţћē Windows Ťěřмĭпªļ ΐŝ а mσđ℮ŗⁿ, ƒαšτ, 냃ĭċíèñŧ, ρоώëřƒųļ, ãлđ ρгσďűςťįν℮ тĕгмΐņǻľ аφφľīсàтĭόʼn ƒбř ΰśēřś оƒ ċǿmmάņď-ľιñĕ тθōℓѕ àήδ ŝнέŀłš ℓįкё Ćσммāпď Рřσmρŧ, РощёŕŠћėļℓ, ãπď ŴŜŁ. Īтś мǻĭп ƒзåţųŗêš ιņçłϋðē мΰℓŧìрļέ ţãвš, ράи℮ѕ, Üήιсοδê âиð ŮΤ₣-8 ćћăŗªĉтĕя şΰρφоѓť, ă ĜРЏ äĉçěľēґάţèđ ŧ℮жт яēπđěřĭñģ éπğíńз, åñδ сύšťóм тћêmĕš, śŧŷłéš, âπð ςбήƒīĝџѓáťίόńš. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! ! + +Ţĥíŝ ιš άň øρèñ šθūѓςë ρгбјė¢τ ąʼnð ẅ℮ ẃêŀċõмè сοмmúńїťγ φàřτĩĉîрªťϊòη. Ţò ράятїĉîрǻŧê ρĺęαŝě νîŝϊт ħŧťφѕ://ġїтђûь.ĉόm/mìĉřòşοƒţ/τéřmíпâľ !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! !! + + + + + + + + + + + + + + + + + + + + + + Vėѓѕіöй __VERSION_NUMBER__ !!! !!! ! + +- Ŧēгмíйǻŀ шιļł ñσщ řėmėmвзґ τђз ςоńţëηťŝ σƒ ŧћé ẅιⁿδőщ ẅђеή ýóύ ŭš℮ şεššîóŋ řėşτŏѓдτіόŋ. !!! !!! !!! !!! !!! !!! !!! !!! !!! +- Ύоџ ςàⁿ ŋóώ ũşэ múľŧìφľё ƒоʼnťş àт ťħе ѕâmз тìме. !!! !!! !!! !!! !!! +- Вό×-ðгăшĭиġ ¢ĥаяäςтеřѕ äřę ηоẁ ѓëńđêяεď ẁϊτђ φïжêĺ φėŗƒēςŧΐøй. !!! !!! !!! !!! !!! !!! ! +- Ťħέ ĕхφêŕï℮ηĉε ŏƒ ύѕïйġ ǻʼn ÎМË îńšïďê Τєřmíлäļ нαŝ ьēέň ѕιĝήîƒіčäπţŀý ĩмφґθνзđ. !!! !!! !!! !!! !!! !!! !!! !!! +- Ťĥę čöℓοг şçђėmęš ιʼnśΐδê убџѓ ĴŠОИ ƒϊŀε ωĭŀł ʼnθω вз мúçĥ ѕїмρℓёґ. !!! !!! !!! !!! !!! !!! !! +- Á ήũmьéŕ òƒ вµġŝ άřòūñδ ÛҐĿ ħàŋδľįйģ, ðőџъŀε-ŵĭďτђ ŗōẁš, ŀϊπė ẃяąрρΐηğ, âⁿđ мŏř℮ ĥāνě везŋ ƒï×έð. !!! !!! !!! !!! !!! !!! !!! !!! !!! !!! + +Ρļēªšê ŝέė őůг ĜīтĤųъ яëŀεäśēś рдġэ ƒõя ãδðìτϊöňãł δèτâĩĺѕ. !!! !!! !!! !!! !!! !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ŧћë иĕẁ Шįπδõωš Тёŗmĭлдŀ !!! !!! ! + + + + + + + + + + + + Μΰℓţіρļę ťăъś !!! + + ₣υłľ Űňìčόďέ şůррοяŧ !!! !!! + + ĞΡÙ-асçêľëřăţєđ ţέхŧ яéʼnδęŗίńğ !!! !!! !!! + + ₣џℓł ćűşŧõmîźăвϊľįтγ !!! !!! + + Ŝφľīť ρªлёѕ !!! + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Κёÿъόáѓď !! + + + + + + Ĉθрўґіġнт (с) Μìĉгōŝŏƒτ Čōяροґąтΐοй !!! !!! !!! ! + + + + + ћťŧφş://ġїţħųъ.ćòm/mįćѓσşòƒţ/ŧέřмїʼnаŀ !!! !!! !!! !! + + ђтťφş://ĝїťнûв.¢ǿm/мíčѓõŝόƒτ/ŧеґmіиάł/ΐѕѕύéѕ/ηëш !!! !!! !!! !!! !! + + ĥţťφş://ģō.mîċґοşоƒт.ĉöм/ƒẃłīик/?₤ϊñķΪÐ=521839 !!! !!! !!! !!! ! + diff --git a/build/StoreSubmission/Stable/PDPs/ru-RU/PDP.xml b/build/StoreSubmission/Stable/PDPs/ru-RU/PDP.xml new file mode 100644 index 00000000000..16779a44224 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/ru-RU/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + Терминал + + Консоль + + + + + + + + + + + + + + + + + + Терминал Windows — это современное, быстрое, мощное и эффективное приложение терминала для пользователей средств командной строки и оболочек, таких как Командная строка, PowerShell и WSL. В число его основных функций входят множественные вкладки, панели, поддержка символов Юникода и UTF-8, модуль отрисовки текста с использованием графического ускорителя, а также пользовательские темы, стили и конфигурации. + +Это проект с открытым исходным кодом, и мы приглашаем сообщество к участию. Чтобы внести вклад, посетите страницу https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Версия __VERSION_NUMBER__ + +– Терминал теперь будет запоминать содержимое окна при восстановлении сеанса. +– Теперь вы можете использовать несколько шрифтов одновременно. +– Символы псевдографики теперь отрисовываются с пиксельной точностью. +– Значительно улучшена возможность использования IME внутри Терминала. +– Цветовые схемы в JSON-файле теперь будут намного проще. +– Исправлено несколько ошибок в обработке URL-адресов, строках двойной ширины, переносе строк и т. д. + +Дополнительные сведения см. на странице выпусков GitHub. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Новый Терминал Windows + + + + + + + + + + + + Множественные вкладки + + Полная поддержка Юникода + + Отрисовка текста с использованием графического ускорителя + + Полная настройка + + Разделение областей + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Клавиатура + + + + + + (C) Корпорация Майкрософт (Microsoft Corporation) + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/PDPs/zh-CN/PDP.xml b/build/StoreSubmission/Stable/PDPs/zh-CN/PDP.xml new file mode 100644 index 00000000000..17d6c841c56 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/zh-CN/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + 终端 + + 控制台 + + + + + + + + + + + + + + + + + + Windows 终端程序是一款新式、快速、高效、强大且高效的终端应用程序,适用于命令行工具和命令提示符,PowerShell和 WSL 等 Shell 用户。主要功能包括多个选项卡、窗格、Unicode、和 UTF-8 字符支持,GPU 加速文本渲染引擎以及自定义主题、样式和配置。 + +这是一个开源项目,我们欢迎社区参与。如要参与,请访问 https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + Version __VERSION_NUMBER__ + +- 现在,使用会话还原时,终端将记住窗口的内容。 +- 现在可以同时使用多种字体。 +- 现在以像素为单位呈现框绘图字符。 +- 在终端内使用输入法的体验已得到显著提升。 +- JSON 文件中的配色方案现在要简单得多。 +- 已修复有关 URL 处理、双倍行宽、换行等大量 bug。 + +有关其他详细信息,请参阅我们的 GitHub 发布页面。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 新 Windows 终端 + + + + + + + + + + + + 多选项卡 + + 完全 Unicode 支持 + + GPU 加速文本渲染 + + 全自定义 + + 拆分窗格 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 键盘 + + + + + + 版权所有(c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/PDPs/zh-TW/PDP.xml b/build/StoreSubmission/Stable/PDPs/zh-TW/PDP.xml new file mode 100644 index 00000000000..df182dd95a6 --- /dev/null +++ b/build/StoreSubmission/Stable/PDPs/zh-TW/PDP.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + 終端 + + 主控台 + + + + + + + + + + + + + + + + + + Windows 終端機是一種現代化、快速、高效、功能強大且具生產力的終端應用程式,適合命令列工具和 Shell (像是命令提示字元、PowerShell 和 WSL) 的使用者。主要功能包括多個索引標籤、窗格、Unicode 和 UTF-8 字元支援、GPU 加速的文字呈現引擎,以及自訂主題、樣式和設定。 + +這是開放原始碼的專案,我們歡迎參與社群。若要參與,請瀏覽 https://github.com/microsoft/terminal + + + + + + + + + + + + + + + + + + + + + + 版本 __VERSION_NUMBER__ + +- 當您使用工作階段還原時,終端機現在會記住視窗的內容。 +- 現在您可以同時使用多個字型。 +- 製表格圖字元現在會以完美像素模式呈現。 +- 在終端機內使用 IME 的體驗已大幅改善。 +- JSON 檔案內的色彩配置現在將變得更簡單了。 +- 已修正一些 URL 處理、雙寬度列、換行等相關錯誤。 + +如需更多詳細資訊,請參閱我們的 GitHub 發行頁面。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 新的 Windows 終端機 + + + + + + + + + + + + 多重索引標籤 + + 完整 Unicode 支援 + + GPU 加速的文字呈現 + + 完整自訂能力 + + 分割窗格 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 鍵盤 + + + + + + Copyright (c) Microsoft Corporation + + + + + https://github.com/microsoft/terminal + + https://github.com/microsoft/terminal/issues/new + + https://go.microsoft.com/fwlink/?LinkID=521839 + diff --git a/build/StoreSubmission/Stable/SBConfig.json b/build/StoreSubmission/Stable/SBConfig.json new file mode 100644 index 00000000000..c38d53443b9 --- /dev/null +++ b/build/StoreSubmission/Stable/SBConfig.json @@ -0,0 +1,67 @@ +{ + "helpUri": "https:\\\\aka.ms\\StoreBroker_Config", + "schemaVersion": 2, + "packageParameters": { + "PDPRootPath": "PDPs", + "Release": "", + "PDPInclude": ["PDP.xml"], + "PDPExclude": [], + "LanguageExclude": [ + "default", + "qps-ploc", + "qps-ploca", + "qps-plocm" + ], + "MediaRootPath": "..\\Media", + "MediaFallbackLanguage": "en-us", + "PackagePath": [], + "OutPath": "..\\SubmissionPackages", + "OutName": "WindowsTerminal", + "DisableAutoPackageNameFormatting": false + }, + "appSubmission": { + "productId": "00013926773940052066", + "targetPublishMode": "NotSet", + "targetPublishDate": null, + "visibility": "NotSet", + "pricing": { + "priceId": "NotAvailable", + "trialPeriod": "NoFreeTrial", + "marketSpecificPricings": {}, + "sales": [] + }, + "allowTargetFutureDeviceFamilies": { + "Xbox": false, + "Team": false, + "Holographic": false, + "Desktop": false, + "Mobile": false + }, + "allowMicrosoftDecideAppAvailabilityToFutureDeviceFamilies": false, + "enterpriseLicensing": "None", + "applicationCategory": "NotSet", + "hardwarePreferences": [], + "hasExternalInAppProducts": false, + "meetAccessibilityGuidelines": false, + "canInstallOnRemovableMedia": false, + "automaticBackupEnabled": false, + "isGameDvrEnabled": false, + "gamingOptions": [ + { + "genres": [], + "isLocalMultiplayer": false, + "isLocalCooperative": false, + "isOnlineMultiplayer": false, + "isOnlineCooperative": false, + "localMultiplayerMinPlayers": 0, + "localMultiplayerMaxPlayers": 0, + "localCooperativeMinPlayers": 0, + "localCooperativeMaxPlayers": 0, + "isBroadcastingPrivilegeGranted": false, + "isCrossPlayEnabled": false, + "kinectDataForExternal": "Disabled" + } + ], + "notesForCertification": "" + } +} diff --git a/build/config/tsa.json b/build/config/tsa.json index 89874d37fc0..f07bc0b5357 100644 --- a/build/config/tsa.json +++ b/build/config/tsa.json @@ -1,6 +1,6 @@ { "instanceUrl": "https://microsoft.visualstudio.com", "projectName": "OS", - "areaPath": "OS\\Windows Client and Services\\ADEPT\\E4D-Engineered for Developers\\SHINE\\Terminal", + "areaPath": "OS\\Windows Client and Services\\WinPD\\DEEP-Developer Experience, Ecosystem and Partnerships\\SHINE\\Terminal", "notificationAliases": ["condev@microsoft.com", "duhowett@microsoft.com"] } diff --git a/build/packages.config b/build/packages.config index ceadd04ac2c..cc0e0ada0b1 100644 --- a/build/packages.config +++ b/build/packages.config @@ -1,7 +1,7 @@ - + diff --git a/build/pipelines/ci-caching.yml b/build/pipelines/ci-caching.yml new file mode 100644 index 00000000000..e8379b556e9 --- /dev/null +++ b/build/pipelines/ci-caching.yml @@ -0,0 +1,100 @@ +trigger: + batch: true + branches: + include: + - main + - feature/* + - gh-readonly-queue/* + paths: + exclude: + - doc/* + - samples/* + - tools/* + +pr: + branches: + include: + - main + - feature/* + paths: + exclude: + - doc/* + - samples/* + - tools/* + +variables: + - name: runCodesignValidationInjectionBG + value: false + - name: EnablePipelineCache + value: true + +# 0.0.yyMM.dd## +# 0.0.1904.0900 +name: 0.0.$(Date:yyMM).$(Date:dd)$(Rev:rr) + +parameters: + - name: auditMode + displayName: "Build in Audit Mode (x64)" + type: boolean + default: true + - name: runTests + displayName: "Run Tests" + type: boolean + default: true + - name: buildPlatforms + type: object + default: + - x64 + - x86 + - arm64 + +stages: + - ${{ if eq(parameters.auditMode, true) }}: + - stage: Audit_x64 + displayName: Audit Mode + dependsOn: [] + jobs: + - template: ./templates-v2/job-build-project.yml + parameters: + pool: + ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: + name: SHINE-INT-L + ${{ else }}: + name: SHINE-OSS-L + buildPlatforms: [x64] + buildConfigurations: [AuditMode] + buildEverything: true + keepAllExpensiveBuildOutputs: false + + - ${{ each platform in parameters.buildPlatforms }}: + - stage: Build_${{ platform }} + displayName: Build ${{ platform }} + dependsOn: [] + jobs: + - template: ./templates-v2/job-build-project.yml + parameters: + pool: + ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: + name: SHINE-INT-L + ${{ else }}: + name: SHINE-OSS-L + buildPlatforms: + - ${{ platform }} + buildConfigurations: [Release] + buildEverything: true + keepAllExpensiveBuildOutputs: false + ${{ if eq(variables['System.PullRequest.IsFork'], 'False') }}: + enableCaching: true + + - ${{ if eq(parameters.runTests, true) }}: + - stage: Test_${{ platform }} + displayName: Test ${{ platform }} + dependsOn: + - Build_${{ platform }} + condition: succeeded() + jobs: + - template: ./templates-v2/job-test-project.yml + parameters: + platform: ${{ platform }} + # The tests might be run more than once; log one artifact per attempt. + outputArtifactStem: -$(System.JobAttempt) diff --git a/build/pipelines/ci.yml b/build/pipelines/ci.yml index 4ad72566a15..3408846be3e 100644 --- a/build/pipelines/ci.yml +++ b/build/pipelines/ci.yml @@ -4,6 +4,7 @@ trigger: include: - main - feature/* + - gh-readonly-queue/* paths: exclude: - doc/* @@ -54,10 +55,10 @@ stages: - template: ./templates-v2/job-build-project.yml parameters: pool: - ${{ if eq(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: - name: SHINE-OSS-L - ${{ if ne(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: + ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: name: SHINE-INT-L + ${{ else }}: + name: SHINE-OSS-L buildPlatforms: [x64] buildConfigurations: [AuditMode] buildEverything: true @@ -77,10 +78,10 @@ stages: - template: ./templates-v2/job-build-project.yml parameters: pool: - ${{ if eq(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: - name: SHINE-OSS-L - ${{ if ne(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: + ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: name: SHINE-INT-L + ${{ else }}: + name: SHINE-OSS-L buildPlatforms: - ${{ platform }} buildConfigurations: [Release] @@ -99,10 +100,3 @@ stages: platform: ${{ platform }} # The tests might be run more than once; log one artifact per attempt. outputArtifactStem: -$(System.JobAttempt) - - - ${{ if ne(variables['Build.Reason'], 'PullRequest') }}: - - stage: CodeIndexer - displayName: Github CodeNav Indexer - dependsOn: [] - jobs: - - template: ./templates-v2/job-index-github-codenav.yml diff --git a/build/pipelines/daily-loc-submission.yml b/build/pipelines/daily-loc-submission.yml index 890c1f86a47..403501ed322 100644 --- a/build/pipelines/daily-loc-submission.yml +++ b/build/pipelines/daily-loc-submission.yml @@ -8,6 +8,20 @@ schedules: - main always: false # only run if there's code changes! + +parameters: + - name: targetBranch + type: string + default: "automated/loc-update" + - name: submitToTouchdown + displayName: Send New Strings to Touchdown + type: boolean + default: true + - name: checkInLocOutputs + displayName: Submit Pull Request + type: boolean + default: true + pool: vmImage: windows-2019 @@ -16,10 +30,6 @@ resources: - repository: self type: git ref: main - - repository: internal - type: git - name: Terminal.Internal - ref: main steps: @@ -29,35 +39,71 @@ steps: fetchDepth: 1 # Don't need a deep checkout for loc files! fetchTags: false # Tags still result in depth > 1 fetch; we don't need them here persistCredentials: true - path: s # Adding a second repo made Azure DevOps change where we're checked out. -- checkout: internal - clean: true - submodules: false - fetchDepth: 1 - persistCredentials: true - path: s/Terminal.Internal +- pwsh: |- + Install-Module PSGitHub -Scope CurrentUser -Force + git config --local user.email "consvc@microsoft.com" + git config --local user.name "Console Service Bot" + git config --local core.autocrlf true + displayName: Prepare git submission environment -- task: MicrosoftTDBuild.tdbuild-task.tdbuild-task.TouchdownBuildTask@1 +- task: MicrosoftTDBuild.tdbuild-task.tdbuild-task.TouchdownBuildTask@3 displayName: 'Touchdown Build - 7105, PRODEXT' inputs: teamId: 7105 - authId: '$(TouchdownApplicationID)' - authKey: '$(TouchdownApplicationKey)' + TDBuildServiceConnection: $(TouchdownServiceConnection) + authType: SubjectNameIssuer resourceFilePath: | **\en-US\*.resw - Terminal.Internal\PDPs\Stable\PDPs\en-us\PDP.xml - Terminal.Internal\PDPs\Preview\PDPs\en-us\PDP.xml + build\StoreSubmission\Stable\PDPs\en-us\PDP.xml + build\StoreSubmission\Preview\PDPs\en-us\PDP.xml outputDirectoryRoot: LocOutput appendRelativeDir: true pseudoSetting: Included + localizationTarget: ${{ parameters.submitToTouchdown }} -# Saving one of these makes it really easy to inspect the loc output... -- powershell: 'tar czf LocOutput.tar.gz LocOutput' - displayName: 'Archive Loc Output for Submission' +- pwsh: |- + $Files = Get-ChildItem LocOutput -R -Include 'ContextMenu.resw','Resources.resw','PDP.xml' | ? FullName -Like '*en-US\*\*.*' + $Files | % { Move-Item -Verbose $_.Directory $_.Directory.Parent.Parent -EA:Ignore } -- task: PublishBuildArtifacts@1 - displayName: 'Publish Artifact: LocOutput' - inputs: - PathtoPublish: LocOutput.tar.gz - ArtifactName: LocOutput + & tar.exe -c -f LocOutputMunged.tar -C LocOutput . + & tar.exe -x -v -f LocOutputMunged.tar + rm -r -fo LocOutput + & ./build/scripts/Copy-ContextMenuResourcesToCascadiaPackage.ps1 + & ./build/scripts/Generate-PseudoLocalizations.ps1 + displayName: Move Loc files to the right places + +- publish: LocOutputMunged.tar + artifact: loc-outputs + displayName: Publish Loc Outputs for inspection + +- ${{ if eq(parameters.checkInLocOutputs, true) }}: + - pwsh: |- + git add **/*.resw + git add build/StoreSubmission/**/*.xml + git status + git diff --quiet --cached --exit-code + If ($LASTEXITCODE -Ne 0) { + $Now = Get-Date + git commit -m "Localization Updates - $Now" + git push origin HEAD:refs/heads/${{parameters.targetBranch}} -f + Write-Host "##vso[task.setvariable variable=ChangesPushedToRepo]1" + } Else { + Write-Host "##vso[task.setvariable variable=ChangesPushedToRepo]0" + } + displayName: git commit and push + + - pwsh: |- + Import-Module PSGitHub + $BaseBranch = "$(Build.SourceBranch)" -Replace "^refs/heads/","" + Write-Host "Preparing PR against $BaseBranch" + $PSDefaultParameterValues['*GitHub*:Owner'] = "microsoft" + $PSDefaultParameterValues['*GitHub*:RepositoryName'] = "terminal" + $PSDefaultParameterValues['*GitHub*:Token'] = ("$(GithubPullRequestToken)" | ConvertTo-SecureString -AsPlainText -Force) + $existingPr = Get-GitHubPullRequest -HeadBranch "${{parameters.targetBranch}}" -BaseBranch $BaseBranch + If ($null -Eq $existingPr) { + $Now = Get-Date + New-GitHubPullRequest -Head "${{parameters.targetBranch}}" -Base $BaseBranch -Title "Localization Updates - $BaseBranch - $Now" -Verbose + } + displayName: Publish pull request + condition: and(eq(variables['ChangesPushedToRepo'], '1'), succeeded()) diff --git a/build/pipelines/fuzz.yml b/build/pipelines/fuzz.yml index 75b781d33c6..a2e2fadff6e 100644 --- a/build/pipelines/fuzz.yml +++ b/build/pipelines/fuzz.yml @@ -24,10 +24,10 @@ stages: - template: ./templates-v2/job-build-project.yml parameters: pool: - ${{ if eq(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: - name: SHINE-OSS-L - ${{ if ne(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: + ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: name: SHINE-INT-L + ${{ else }}: + name: SHINE-OSS-L buildPlatforms: [x64] buildConfigurations: [Fuzzing] buildEverything: true diff --git a/build/pipelines/ob-nightly.yml b/build/pipelines/ob-nightly.yml index 1c90866f9e2..033d075cd65 100644 --- a/build/pipelines/ob-nightly.yml +++ b/build/pipelines/ob-nightly.yml @@ -28,11 +28,22 @@ extends: official: true branding: Canary buildTerminal: true - pgoBuildMode: Optimize + pgoBuildMode: None # BODGY - OneBranch is on VS 17.10, which is known to be the worst codeSign: true + signingIdentity: + serviceName: $(SigningServiceName) + appId: $(SigningAppId) + tenantId: $(SigningTenantId) + akvName: $(SigningAKVName) + authCertName: $(SigningAuthCertName) + signCertName: $(SigningSignCertName) + useManagedIdentity: $(SigningUseManagedIdentity) + clientId: $(SigningOriginalClientId) publishSymbolsToPublic: true publishVpackToWindows: false symbolExpiryTime: 15 + symbolPublishingSubscription: $(SymbolPublishingServiceConnection) + symbolPublishingProject: $(SymbolPublishingProject) ${{ if eq(true, parameters.publishToAzure) }}: extraPublishJobs: - template: build/pipelines/templates-v2/job-deploy-to-azure-storage.yml@self diff --git a/build/pipelines/ob-release.yml b/build/pipelines/ob-release.yml index ca168e6d337..d7de0e0a3ad 100644 --- a/build/pipelines/ob-release.yml +++ b/build/pipelines/ob-release.yml @@ -27,7 +27,7 @@ parameters: - name: pgoBuildMode displayName: "PGO Build Mode" type: string - default: Optimize + default: None # BODGY - OneBranch is on VS 17.10, which is known to be the worst values: - Optimize - Instrument @@ -78,6 +78,17 @@ extends: buildConfigurations: ${{ parameters.buildConfigurations }} buildPlatforms: ${{ parameters.buildPlatforms }} codeSign: true + signingIdentity: + serviceName: $(SigningServiceName) + appId: $(SigningAppId) + tenantId: $(SigningTenantId) + akvName: $(SigningAKVName) + authCertName: $(SigningAuthCertName) + signCertName: $(SigningSignCertName) + useManagedIdentity: $(SigningUseManagedIdentity) + clientId: $(SigningOriginalClientId) terminalInternalPackageVersion: ${{ parameters.terminalInternalPackageVersion }} publishSymbolsToPublic: ${{ parameters.publishSymbolsToPublic }} publishVpackToWindows: ${{ parameters.publishVpackToWindows }} + symbolPublishingSubscription: $(SymbolPublishingServiceConnection) + symbolPublishingProject: $(SymbolPublishingProject) diff --git a/build/pipelines/pgo.yml b/build/pipelines/pgo.yml index d659c4e2520..d1de2ec7441 100644 --- a/build/pipelines/pgo.yml +++ b/build/pipelines/pgo.yml @@ -40,10 +40,10 @@ stages: - template: ./templates-v2/job-build-project.yml parameters: pool: - ${{ if eq(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: - name: SHINE-OSS-L - ${{ if ne(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: + ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: name: SHINE-INT-L + ${{ else }}: + name: SHINE-OSS-L branding: ${{ parameters.branding }} buildPlatforms: ${{ parameters.buildPlatforms }} buildConfigurations: [Release] diff --git a/build/pipelines/templates-v2/job-build-package-wpf.yml b/build/pipelines/templates-v2/job-build-package-wpf.yml index 9d64e1c7cff..a1f44373d0a 100644 --- a/build/pipelines/templates-v2/job-build-package-wpf.yml +++ b/build/pipelines/templates-v2/job-build-package-wpf.yml @@ -27,6 +27,9 @@ parameters: - name: publishArtifacts type: boolean default: true + - name: signingIdentity + type: object + default: {} jobs: - job: ${{ parameters.jobName }} @@ -56,10 +59,7 @@ jobs: submodules: true persistCredentials: True - - task: PkgESSetupBuild@12 - displayName: Package ES - Setup Build - inputs: - disableOutputRedirect: true + - template: steps-setup-versioning.yml - template: steps-download-bin-dir-artifact.yml parameters: @@ -97,31 +97,32 @@ jobs: flattenFolders: true - ${{ if eq(parameters.codeSign, true) }}: - - task: EsrpCodeSigning@3 - displayName: Submit *.nupkg to ESRP for code signing - inputs: - ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a - FolderPath: $(Build.ArtifactStagingDirectory)/nupkg - Pattern: '*.nupkg' - UseMinimatch: true - signConfigType: inlineSignParams - inlineOperation: >- - [ - { - "KeyCode": "CP-401405", - "OperationCode": "NuGetSign", - "Parameters": {}, - "ToolName": "sign", - "ToolVersion": "1.0" - }, - { - "KeyCode": "CP-401405", - "OperationCode": "NuGetVerify", - "Parameters": {}, - "ToolName": "sign", - "ToolVersion": "1.0" - } - ] + - template: steps-esrp-signing.yml + parameters: + displayName: Submit *.nupkg to ESRP for code signing + signingIdentity: ${{ parameters.signingIdentity }} + inputs: + FolderPath: $(Build.ArtifactStagingDirectory)/nupkg + Pattern: '*.nupkg' + UseMinimatch: true + signConfigType: inlineSignParams + inlineOperation: >- + [ + { + "KeyCode": "CP-401405", + "OperationCode": "NuGetSign", + "Parameters": {}, + "ToolName": "sign", + "ToolVersion": "1.0" + }, + { + "KeyCode": "CP-401405", + "OperationCode": "NuGetVerify", + "Parameters": {}, + "ToolName": "sign", + "ToolVersion": "1.0" + } + ] - ${{ if eq(parameters.generateSbom, true) }}: - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 diff --git a/build/pipelines/templates-v2/job-build-project.yml b/build/pipelines/templates-v2/job-build-project.yml index 35d342236f9..47390bbbf31 100644 --- a/build/pipelines/templates-v2/job-build-project.yml +++ b/build/pipelines/templates-v2/job-build-project.yml @@ -65,6 +65,12 @@ parameters: - name: removeAllNonSignedFiles type: boolean default: false + - name: signingIdentity + type: object + default: {} + - name: enableCaching + type: boolean + default: false jobs: - job: ${{ parameters.jobName }} @@ -92,6 +98,7 @@ jobs: # Yup. BuildTargetParameter: ' ' SelectedSigningFragments: ' ' + MSBuildCacheParameters: ' ' # When building the unpackaged distribution, build it in portable mode if it's Canary-branded ${{ if eq(parameters.branding, 'Canary') }}: UnpackagedBuildArguments: -PortableMode @@ -108,6 +115,7 @@ jobs: clean: true submodules: true persistCredentials: True + # This generates either nothing for BuildTargetParameter, or /t:X;Y;Z, to control targets later. - pwsh: |- If (-Not [bool]::Parse("${{ parameters.buildEverything }}")) { @@ -136,12 +144,29 @@ jobs: } displayName: Prepare Build and Sign Targets + - ${{ if eq(parameters.enableCaching, true) }}: + - pwsh: |- + $MSBuildCacheParameters = "" + $MSBuildCacheParameters += " -graph" + $MSBuildCacheParameters += " -reportfileaccesses" + $MSBuildCacheParameters += " -p:MSBuildCacheEnabled=true" + $MSBuildCacheParameters += " -p:MSBuildCacheLogDirectory=$(Build.SourcesDirectory)\MSBuildCacheLogs" + Write-Host "MSBuildCacheParameters: $MSBuildCacheParameters" + Write-Host "##vso[task.setvariable variable=MSBuildCacheParameters]$MSBuildCacheParameters" + displayName: Prepare MSBuildCache variables + - pwsh: |- .\build\scripts\Generate-ThirdPartyNotices.ps1 -MarkdownNoticePath .\NOTICE.md -OutputPath .\src\cascadia\CascadiaPackage\NOTICE.html displayName: Generate NOTICE.html from NOTICE.md + - template: .\steps-install-vcpkg.yml + - template: .\steps-restore-nuget.yml + - pwsh: |- + .\build\scripts\Set-LatestVCToolsVersion.ps1 + displayName: Work around DD-1541167 (VCToolsVersion) + - ${{ parameters.beforeBuildSteps }} - task: VSBuild@1 @@ -153,21 +178,37 @@ jobs: ${{ parameters.additionalBuildOptions }} /bl:$(Build.SourcesDirectory)\msbuild.binlog $(BuildTargetParameter) + $(MSBuildCacheParameters) platform: $(BuildPlatform) configuration: $(BuildConfiguration) + msbuildArchitecture: x64 maximumCpuCount: true + ${{ if eq(parameters.enableCaching, true) }}: + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) - ${{ if eq(parameters.publishArtifacts, true) }}: - publish: $(Build.SourcesDirectory)/msbuild.binlog artifact: logs-$(BuildPlatform)-$(BuildConfiguration)${{ parameters.artifactStem }} condition: always() displayName: Publish Build Log + - ${{ if eq(parameters.enableCaching, true) }}: + - publish: $(Build.SourcesDirectory)\MSBuildCacheLogs + artifact: logs-msbuildcache-$(BuildPlatform)-$(BuildConfiguration)${{ parameters.artifactStem }} + condition: always() + displayName: Publish MSBuildCache Logs - ${{ else }}: - task: CopyFiles@2 displayName: Copy Build Log inputs: contents: $(Build.SourcesDirectory)/msbuild.binlog TargetFolder: $(Terminal.BinDir) + - ${{ if eq(parameters.enableCaching, true) }}: + - task: CopyFiles@2 + displayName: Copy MSBuildCache Logs + inputs: + contents: $(Build.SourcesDirectory)/MSBuildCacheLogs/** + TargetFolder: $(Terminal.BinDir)/MSBuildCacheLogs # This saves ~2GiB per architecture. We won't need these later. # Removes: @@ -235,13 +276,14 @@ jobs: # Code-sign everything we just put together. # We run the signing in Terminal.BinDir, because all of the signing batches are relative to the final architecture/configuration output folder. - - task: EsrpCodeSigning@3 - displayName: Submit Signing Request - inputs: - ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a - FolderPath: '$(Terminal.BinDir)' - signType: batchSigning - batchSignPolicyFile: '$(Build.SourcesDirectory)/ESRPSigningConfig.json' + - template: steps-esrp-signing.yml + parameters: + displayName: Submit Signing Request + signingIdentity: ${{ parameters.signingIdentity }} + inputs: + FolderPath: '$(Terminal.BinDir)' + signType: batchSigning + batchSignPolicyFile: '$(Build.SourcesDirectory)/ESRPSigningConfig.json' # We only need to re-pack the MSIX if we actually signed, so this can stay in the codeSign conditional - ${{ if or(parameters.buildTerminal, parameters.buildEverything) }}: diff --git a/build/pipelines/templates-v2/job-check-code-format.yml b/build/pipelines/templates-v2/job-check-code-format.yml index e889fc8756d..c26b7f8acae 100644 --- a/build/pipelines/templates-v2/job-check-code-format.yml +++ b/build/pipelines/templates-v2/job-check-code-format.yml @@ -10,6 +10,6 @@ jobs: submodules: false clean: true - - powershell: |- + - pwsh: |- .\build\scripts\Invoke-FormattingCheck.ps1 displayName: 'Run formatters' diff --git a/build/pipelines/templates-v2/job-deploy-to-azure-storage.yml b/build/pipelines/templates-v2/job-deploy-to-azure-storage.yml index 69b82e57bb3..e2ed380fd45 100644 --- a/build/pipelines/templates-v2/job-deploy-to-azure-storage.yml +++ b/build/pipelines/templates-v2/job-deploy-to-azure-storage.yml @@ -80,7 +80,7 @@ jobs: Install-Module -Verbose -AllowClobber -Force Az.Accounts, Az.Storage, Az.Network, Az.Resources, Az.Compute displayName: Install Azure Module Dependencies - - task: AzureFileCopy@5 + - task: AzureFileCopy@6 displayName: Publish to Storage Account inputs: sourcePath: _out/* diff --git a/build/pipelines/templates-v2/job-index-github-codenav.yml b/build/pipelines/templates-v2/job-index-github-codenav.yml deleted file mode 100644 index e2edf55e651..00000000000 --- a/build/pipelines/templates-v2/job-index-github-codenav.yml +++ /dev/null @@ -1,16 +0,0 @@ -jobs: -- job: CodeNavIndexer - displayName: Run Github CodeNav Indexer - pool: { vmImage: windows-2022 } - - steps: - - checkout: self - fetchDepth: 1 - fetchTags: false # Tags still result in depth > 1 fetch; we don't need them here - submodules: false - clean: true - - - task: RichCodeNavIndexer@0 - inputs: - languages: 'cpp,csharp' - continueOnError: true diff --git a/build/pipelines/templates-v2/job-merge-msix-into-bundle.yml b/build/pipelines/templates-v2/job-merge-msix-into-bundle.yml index 6d6ad09cdad..1668dcfb293 100644 --- a/build/pipelines/templates-v2/job-merge-msix-into-bundle.yml +++ b/build/pipelines/templates-v2/job-merge-msix-into-bundle.yml @@ -32,6 +32,9 @@ parameters: - name: afterBuildSteps type: stepList default: [] + - name: signingIdentity + type: object + default: {} jobs: - job: ${{ parameters.jobName }} @@ -66,10 +69,9 @@ jobs: fetchTags: false # Tags still result in depth > 1 fetch; we don't need them here submodules: true persistCredentials: True - - task: PkgESSetupBuild@12 - displayName: Package ES - Setup Build - inputs: - disableOutputRedirect: true + + - template: steps-setup-versioning.yml + - template: steps-download-bin-dir-artifact.yml parameters: buildPlatforms: ${{ parameters.buildPlatforms }} @@ -94,40 +96,41 @@ jobs: displayName: Create msixbundle - ${{ if eq(parameters.codeSign, true) }}: - - task: EsrpCodeSigning@3 - displayName: Submit *.msixbundle to ESRP for code signing - inputs: - ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a - FolderPath: $(System.ArtifactsDirectory)\bundle - Pattern: $(BundleStemName)*.msixbundle - UseMinimatch: true - signConfigType: inlineSignParams - inlineOperation: >- - [ - { - "KeyCode": "Dynamic", - "CertTemplateName": "WINMSAPP1ST", - "CertSubjectName": "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US", - "OperationCode": "SigntoolSign", - "Parameters": { - "OpusName": "Microsoft", - "OpusInfo": "http://www.microsoft.com", - "FileDigest": "/fd \"SHA256\"", - "TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" - }, - "ToolName": "sign", - "ToolVersion": "1.0" - }, - { - "KeyCode": "Dynamic", - "CertTemplateName": "WINMSAPP1ST", - "CertSubjectName": "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US", - "OperationCode": "SigntoolVerify", - "Parameters": {}, - "ToolName": "sign", - "ToolVersion": "1.0" - } - ] + - template: steps-esrp-signing.yml + parameters: + displayName: Submit *.msixbundle to ESRP for code signing + signingIdentity: ${{ parameters.signingIdentity }} + inputs: + FolderPath: $(System.ArtifactsDirectory)\bundle + Pattern: $(BundleStemName)*.msixbundle + UseMinimatch: true + signConfigType: inlineSignParams + inlineOperation: >- + [ + { + "KeyCode": "Dynamic", + "CertTemplateName": "WINMSAPP1ST", + "CertSubjectName": "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US", + "OperationCode": "SigntoolSign", + "Parameters": { + "OpusName": "Microsoft", + "OpusInfo": "http://www.microsoft.com", + "FileDigest": "/fd \"SHA256\"", + "TimeStamp": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256" + }, + "ToolName": "sign", + "ToolVersion": "1.0" + }, + { + "KeyCode": "Dynamic", + "CertTemplateName": "WINMSAPP1ST", + "CertSubjectName": "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US", + "OperationCode": "SigntoolVerify", + "Parameters": {}, + "ToolName": "sign", + "ToolVersion": "1.0" + } + ] - ${{ if eq(parameters.generateSbom, true) }}: - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 diff --git a/build/pipelines/templates-v2/job-package-conpty.yml b/build/pipelines/templates-v2/job-package-conpty.yml index 2f777cdf4f5..b91c2989f35 100644 --- a/build/pipelines/templates-v2/job-package-conpty.yml +++ b/build/pipelines/templates-v2/job-package-conpty.yml @@ -27,6 +27,9 @@ parameters: - name: publishArtifacts type: boolean default: true + - name: signingIdentity + type: object + default: {} jobs: - job: ${{ parameters.jobName }} @@ -54,10 +57,7 @@ jobs: submodules: true persistCredentials: True - - task: PkgESSetupBuild@12 - displayName: Package ES - Setup Build - inputs: - disableOutputRedirect: true + - template: steps-setup-versioning.yml - template: steps-download-bin-dir-artifact.yml parameters: @@ -82,31 +82,32 @@ jobs: versionEnvVar: XES_PACKAGEVERSIONNUMBER - ${{ if eq(parameters.codeSign, true) }}: - - task: EsrpCodeSigning@3 - displayName: Submit *.nupkg to ESRP for code signing - inputs: - ConnectedServiceName: 9d6d2960-0793-4d59-943e-78dcb434840a - FolderPath: $(Build.ArtifactStagingDirectory)/nupkg - Pattern: '*.nupkg' - UseMinimatch: true - signConfigType: inlineSignParams - inlineOperation: >- - [ - { - "KeyCode": "CP-401405", - "OperationCode": "NuGetSign", - "Parameters": {}, - "ToolName": "sign", - "ToolVersion": "1.0" - }, - { - "KeyCode": "CP-401405", - "OperationCode": "NuGetVerify", - "Parameters": {}, - "ToolName": "sign", - "ToolVersion": "1.0" - } - ] + - template: steps-esrp-signing.yml + parameters: + displayName: Submit *.nupkg to ESRP for code signing + signingIdentity: ${{ parameters.signingIdentity }} + inputs: + FolderPath: $(Build.ArtifactStagingDirectory)/nupkg + Pattern: '*.nupkg' + UseMinimatch: true + signConfigType: inlineSignParams + inlineOperation: >- + [ + { + "KeyCode": "CP-401405", + "OperationCode": "NuGetSign", + "Parameters": {}, + "ToolName": "sign", + "ToolVersion": "1.0" + }, + { + "KeyCode": "CP-401405", + "OperationCode": "NuGetVerify", + "Parameters": {}, + "ToolName": "sign", + "ToolVersion": "1.0" + } + ] - ${{ if eq(parameters.generateSbom, true) }}: - task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0 diff --git a/build/pipelines/templates-v2/job-pgo-build-nuget-and-publish.yml b/build/pipelines/templates-v2/job-pgo-build-nuget-and-publish.yml index b61a22c4fc1..e30e23b88c4 100644 --- a/build/pipelines/templates-v2/job-pgo-build-nuget-and-publish.yml +++ b/build/pipelines/templates-v2/job-pgo-build-nuget-and-publish.yml @@ -43,7 +43,7 @@ jobs: - template: steps-ensure-nuget-version.yml - - task: NuGetAuthenticate@0 + - task: NuGetAuthenticate@1 inputs: nuGetServiceConnections: 'Terminal Public Artifact Feed' diff --git a/build/pipelines/templates-v2/job-publish-symbols-using-symbolrequestprod-api.yml b/build/pipelines/templates-v2/job-publish-symbols-using-symbolrequestprod-api.yml new file mode 100644 index 00000000000..12b0ddce868 --- /dev/null +++ b/build/pipelines/templates-v2/job-publish-symbols-using-symbolrequestprod-api.yml @@ -0,0 +1,114 @@ +parameters: + - name: includePublicSymbolServer + type: boolean + default: false + - name: pool + type: object + default: [] + - name: dependsOn + type: object + default: null + - name: artifactStem + type: string + default: '' + - name: jobName + type: string + default: PublishSymbols + - name: symbolExpiryTime + type: string + default: 36530 # This is the default from PublishSymbols@2 + - name: variables + type: object + default: {} + - name: subscription + type: string + - name: symbolProject + type: string + +jobs: +- job: ${{ parameters.jobName }} + ${{ if ne(length(parameters.pool), 0) }}: + pool: ${{ parameters.pool }} + ${{ if eq(parameters.includePublicSymbolServer, true) }}: + displayName: Publish Symbols to Internal and MSDL + ${{ else }}: + displayName: Publish Symbols Internally + dependsOn: ${{ parameters.dependsOn }} + variables: + ${{ insert }}: ${{ parameters.variables }} + steps: + - checkout: self + clean: true + fetchDepth: 1 + fetchTags: false # Tags still result in depth > 1 fetch; we don't need them here + submodules: true + persistCredentials: True + + - template: steps-setup-versioning.yml + + - task: DownloadPipelineArtifact@2 + displayName: Download all PDBs from all prior build phases + inputs: + itemPattern: '**/*.pdb' + targetPath: '$(Build.SourcesDirectory)/bin' + + - powershell: |- + Get-PackageProvider -Name NuGet -ForceBootstrap + Install-Module -Verbose -AllowClobber -Force Az.Accounts, Az.Storage, Az.Network, Az.Resources, Az.Compute + displayName: Install Azure Module Dependencies + + # Transit the Azure token from the Service Connection into a secret variable for the rest of the pipeline to use. + - task: AzurePowerShell@5 + displayName: Generate an Azure Token + inputs: + azureSubscription: ${{ parameters.subscription }} + azurePowerShellVersion: LatestVersion + pwsh: true + ScriptType: InlineScript + Inline: |- + $AzToken = (Get-AzAccessToken -ResourceUrl api://30471ccf-0966-45b9-a979-065dbedb24c1).Token + Write-Host "##vso[task.setvariable variable=SymbolAccessToken;issecret=true]$AzToken" + + + - task: PublishSymbols@2 + displayName: Publish Symbols (to current Azure DevOps tenant) + continueOnError: True + inputs: + SymbolsFolder: '$(Build.SourcesDirectory)/bin' + SearchPattern: '**/*.pdb' + IndexSources: false + DetailedLog: true + SymbolsMaximumWaitTime: 30 + SymbolServerType: 'TeamServices' + SymbolsProduct: 'Windows Terminal Converged Symbols' + SymbolsVersion: '$(XES_APPXMANIFESTVERSION)' + SymbolsArtifactName: 'WindowsTerminal_$(XES_APPXMANIFESTVERSION)' + SymbolExpirationInDays: ${{ parameters.symbolExpiryTime }} + env: + LIB: $(Build.SourcesDirectory) + + - pwsh: |- + # Prepare the defaults for IRM + $PSDefaultParameterValues['Invoke-RestMethod:Headers'] = @{ Authorization = "Bearer $(SymbolAccessToken)" } + $PSDefaultParameterValues['Invoke-RestMethod:ContentType'] = "application/json" + $PSDefaultParameterValues['Invoke-RestMethod:Method'] = "POST" + + $BaseUri = "https://symbolrequestprod.trafficmanager.net/projects/${{ parameters.symbolProject }}/requests" + + # Prepare the request + $expiration = (Get-Date).Add([TimeSpan]::FromDays(${{ parameters.symbolExpiryTime }})) + $createRequestBody = @{ + requestName = "WindowsTerminal_$(XES_APPXMANIFESTVERSION)"; + expirationTime = $expiration.ToString(); + } + Write-Host "##[debug]Starting request $($createRequestBody.requestName) with expiration date of $($createRequestBody.expirationTime)" + Invoke-RestMethod -Uri "$BaseUri" -Body ($createRequestBody | ConvertTo-Json -Compress) -Verbose + + # Request symbol publication + $publishRequestBody = @{ + publishToInternalServer = $true; + publishToPublicServer = $${{ parameters.includePublicSymbolServer }}; + } + Write-Host "##[debug]Submitting request $($createRequestBody.requestName) ($($publishRequestBody | ConvertTo-Json -Compress))" + Invoke-RestMethod -Uri "$BaseUri/$($createRequestBody.requestName)" -Body ($publishRequestBody | ConvertTo-Json -Compress) -Verbose + displayName: Publish Symbols using internal REST API diff --git a/build/pipelines/templates-v2/job-publish-symbols.yml b/build/pipelines/templates-v2/job-publish-symbols.yml index 83c472872b8..7f86c2f1b23 100644 --- a/build/pipelines/templates-v2/job-publish-symbols.yml +++ b/build/pipelines/templates-v2/job-publish-symbols.yml @@ -43,10 +43,7 @@ jobs: submodules: true persistCredentials: True - - task: PkgESSetupBuild@12 - displayName: Package ES - Setup Build - inputs: - disableOutputRedirect: true + - template: steps-setup-versioning.yml - task: DownloadPipelineArtifact@2 displayName: Download all PDBs from all prior build phases diff --git a/build/pipelines/templates-v2/job-run-pgo-tests.yml b/build/pipelines/templates-v2/job-run-pgo-tests.yml index 817d97ff9ce..07d498016d1 100644 --- a/build/pipelines/templates-v2/job-run-pgo-tests.yml +++ b/build/pipelines/templates-v2/job-run-pgo-tests.yml @@ -13,16 +13,16 @@ jobs: OutputBuildPlatform: ${{ parameters.buildPlatform }} Terminal.BinDir: $(Build.SourcesDirectory)/bin/$(OutputBuildPlatform)/$(BuildConfiguration) pool: - ${{ if eq(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: - ${{ if ne(parameters.buildPlatform, 'ARM64') }}: - name: SHINE-OSS-Testing-x64 - ${{ else }}: - name: SHINE-OSS-Testing-arm64 - ${{ if ne(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: + ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: ${{ if ne(parameters.buildPlatform, 'ARM64') }}: name: SHINE-INT-Testing-x64 ${{ else }}: name: SHINE-INT-Testing-arm64 + ${{ else }}: + ${{ if ne(parameters.buildPlatform, 'ARM64') }}: + name: SHINE-OSS-Testing-x64 + ${{ else }}: + name: SHINE-OSS-Testing-arm64 steps: - checkout: self @@ -56,6 +56,7 @@ jobs: - task: PowerShell@2 displayName: 'Run PGO Tests' inputs: + pwsh: true targetType: filePath filePath: build\scripts\Run-Tests.ps1 arguments: >- diff --git a/build/pipelines/templates-v2/job-submit-windows-vpack.yml b/build/pipelines/templates-v2/job-submit-windows-vpack.yml index 2e9cb1e1fe2..20c2aaa9f2e 100644 --- a/build/pipelines/templates-v2/job-submit-windows-vpack.yml +++ b/build/pipelines/templates-v2/job-submit-windows-vpack.yml @@ -38,10 +38,7 @@ jobs: submodules: true persistCredentials: True - - task: PkgESSetupBuild@12 - displayName: Package ES - Setup Build - inputs: - disableOutputRedirect: true + - template: steps-setup-versioning.yml - task: DownloadPipelineArtifact@2 displayName: Download MSIX Bundle Artifact diff --git a/build/pipelines/templates-v2/job-test-project.yml b/build/pipelines/templates-v2/job-test-project.yml index 1cd8e2bef67..804a004bbca 100644 --- a/build/pipelines/templates-v2/job-test-project.yml +++ b/build/pipelines/templates-v2/job-test-project.yml @@ -17,16 +17,16 @@ jobs: OutputBuildPlatform: ${{ parameters.platform }} Terminal.BinDir: $(Build.SourcesDirectory)/bin/$(OutputBuildPlatform)/$(BuildConfiguration) pool: - ${{ if eq(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: - ${{ if ne(parameters.platform, 'ARM64') }}: - name: SHINE-OSS-Testing-x64 - ${{ else }}: - name: SHINE-OSS-Testing-arm64 - ${{ if ne(variables['System.CollectionUri'], 'https://dev.azure.com/ms/') }}: + ${{ if eq(variables['System.CollectionId'], 'cb55739e-4afe-46a3-970f-1b49d8ee7564') }}: ${{ if ne(parameters.platform, 'ARM64') }}: name: SHINE-INT-Testing-x64 ${{ else }}: name: SHINE-INT-Testing-arm64 + ${{ else }}: + ${{ if ne(parameters.platform, 'ARM64') }}: + name: SHINE-OSS-Testing-x64 + ${{ else }}: + name: SHINE-OSS-Testing-arm64 steps: - checkout: self @@ -44,6 +44,7 @@ jobs: - task: PowerShell@2 displayName: 'Run Unit Tests' inputs: + pwsh: true targetType: filePath filePath: build\scripts\Run-Tests.ps1 arguments: -MatchPattern '*unit.test*.dll' -Platform '$(OutputBuildPlatform)' -Configuration '$(BuildConfiguration)' -LogPath '${{ parameters.testLogPath }}' -Root "$(Terminal.BinDir)" @@ -52,6 +53,7 @@ jobs: - task: PowerShell@2 displayName: 'Run Feature Tests' inputs: + pwsh: true targetType: filePath filePath: build\scripts\Run-Tests.ps1 arguments: -MatchPattern '*feature.test*.dll' -Platform '$(OutputBuildPlatform)' -Configuration '$(BuildConfiguration)' -LogPath '${{ parameters.testLogPath }}' -Root "$(Terminal.BinDir)" diff --git a/build/pipelines/templates-v2/pipeline-full-release-build.yml b/build/pipelines/templates-v2/pipeline-full-release-build.yml index 06358de5c5b..8651f545683 100644 --- a/build/pipelines/templates-v2/pipeline-full-release-build.yml +++ b/build/pipelines/templates-v2/pipeline-full-release-build.yml @@ -33,7 +33,7 @@ parameters: - arm64 - name: codeSign type: boolean - default: true + default: false - name: generateSbom type: boolean default: true @@ -92,10 +92,7 @@ stages: generateSbom: ${{ parameters.generateSbom }} codeSign: ${{ parameters.codeSign }} beforeBuildSteps: # Right before we build, lay down the universal package and localizations - - task: PkgESSetupBuild@12 - displayName: Package ES - Setup Build - inputs: - disableOutputRedirect: true + - template: ./build/pipelines/templates-v2/steps-setup-versioning.yml@self - task: UniversalPackages@0 displayName: Download terminal-internal Universal Package @@ -104,10 +101,6 @@ stages: packageListDownload: e82d490c-af86-4733-9dc4-07b772033204 versionListDownload: ${{ parameters.terminalInternalPackageVersion }} - - template: ./steps-fetch-and-prepare-localizations.yml - parameters: - includePseudoLoc: true - - ${{ if eq(parameters.buildWPF, true) }}: # Add an Any CPU build flavor for the WPF control bits - template: ./job-build-project.yml @@ -123,10 +116,7 @@ stages: generateSbom: ${{ parameters.generateSbom }} codeSign: ${{ parameters.codeSign }} beforeBuildSteps: - - task: PkgESSetupBuild@12 - displayName: Package ES - Setup Build - inputs: - disableOutputRedirect: true + - template: ./build/pipelines/templates-v2/steps-setup-versioning.yml@self # WPF doesn't need the localizations or the universal package, but if it does... put them here. - stage: Package diff --git a/build/pipelines/templates-v2/pipeline-onebranch-full-release-build.yml b/build/pipelines/templates-v2/pipeline-onebranch-full-release-build.yml index 271e7d3e121..ae017a9bec8 100644 --- a/build/pipelines/templates-v2/pipeline-onebranch-full-release-build.yml +++ b/build/pipelines/templates-v2/pipeline-onebranch-full-release-build.yml @@ -52,10 +52,17 @@ parameters: - name: publishVpackToWindows type: boolean default: false + - name: symbolPublishingSubscription + type: string + - name: symbolPublishingProject + type: string - name: extraPublishJobs type: object default: [] + - name: signingIdentity + type: object + default: {} resources: repositories: @@ -78,6 +85,10 @@ extends: cloudvault: # https://aka.ms/obpipelines/cloudvault enabled: false globalSdl: # https://aka.ms/obpipelines/sdl + enableCheckCFlags: false # CheckCFlags is broken and exploding our builds; to remove, :g/BAD-FLAGS/d + asyncSdl: + enabled: true + tsaOptionsFile: 'build/config/tsa.json' tsa: enabled: true configFile: '$(Build.SourcesDirectory)\build\config\tsa.json' @@ -100,6 +111,8 @@ extends: parameters: pool: { type: windows } variables: + ob_sdl_checkcflags_enabled: false # BAD-FLAGS + ob_sdl_xfgcheck_enabled: false # BAD-FLAGS ob_git_checkout: false # This job checks itself out ob_git_skip_checkout_none: true ob_outputDirectory: $(JobOutputDirectory) @@ -115,11 +128,9 @@ extends: generateSbom: false # this is handled by onebranch removeAllNonSignedFiles: true # appease the overlords codeSign: ${{ parameters.codeSign }} + signingIdentity: ${{ parameters.signingIdentity }} beforeBuildSteps: # Right before we build, lay down the universal package and localizations - - task: PkgESSetupBuild@12 - displayName: Package ES - Setup Build - inputs: - disableOutputRedirect: true + - template: ./build/pipelines/templates-v2/steps-setup-versioning.yml@self - task: UniversalPackages@0 displayName: Download terminal-internal Universal Package @@ -128,16 +139,14 @@ extends: packageListDownload: e82d490c-af86-4733-9dc4-07b772033204 versionListDownload: ${{ parameters.terminalInternalPackageVersion }} - - template: ./build/pipelines/templates-v2/steps-fetch-and-prepare-localizations.yml@self - parameters: - includePseudoLoc: true - - ${{ if eq(parameters.buildWPF, true) }}: # Add an Any CPU build flavor for the WPF control bits - template: ./build/pipelines/templates-v2/job-build-project.yml@self parameters: pool: { type: windows } variables: + ob_sdl_checkcflags_enabled: false # BAD-FLAGS + ob_sdl_xfgcheck_enabled: false # BAD-FLAGS ob_git_checkout: false # This job checks itself out ob_git_skip_checkout_none: true ob_outputDirectory: $(JobOutputDirectory) @@ -153,11 +162,9 @@ extends: generateSbom: false # this is handled by onebranch removeAllNonSignedFiles: true # appease the overlords codeSign: ${{ parameters.codeSign }} + signingIdentity: ${{ parameters.signingIdentity }} beforeBuildSteps: - - task: PkgESSetupBuild@12 - displayName: Package ES - Setup Build - inputs: - disableOutputRedirect: true + - template: ./build/pipelines/templates-v2/steps-setup-versioning.yml@self # WPF doesn't need the localizations or the universal package, but if it does... put them here. - stage: Package @@ -169,6 +176,8 @@ extends: parameters: pool: { type: windows } variables: + ob_sdl_checkcflags_enabled: false # BAD-FLAGS + ob_sdl_xfgcheck_enabled: false # BAD-FLAGS ob_git_checkout: false # This job checks itself out ob_git_skip_checkout_none: true ob_outputDirectory: $(JobOutputDirectory) @@ -204,6 +213,7 @@ extends: buildPlatforms: ${{ parameters.buildPlatforms }} generateSbom: false # Handled by onebranch codeSign: ${{ parameters.codeSign }} + signingIdentity: ${{ parameters.signingIdentity }} afterBuildSteps: # This directory has to exist, even if we aren't using createvpack, because the Guardian rules demand it. - pwsh: |- @@ -220,6 +230,8 @@ extends: parameters: pool: { type: windows } variables: + ob_sdl_checkcflags_enabled: false # BAD-FLAGS + ob_sdl_xfgcheck_enabled: false # BAD-FLAGS ob_git_checkout: false # This job checks itself out ob_git_skip_checkout_none: true ob_outputDirectory: $(JobOutputDirectory) @@ -229,12 +241,15 @@ extends: buildPlatforms: ${{ parameters.buildPlatforms }} generateSbom: false # this is handled by onebranch codeSign: ${{ parameters.codeSign }} + signingIdentity: ${{ parameters.signingIdentity }} - ${{ if eq(parameters.buildWPF, true) }}: - template: ./build/pipelines/templates-v2/job-build-package-wpf.yml@self parameters: pool: { type: windows } variables: + ob_sdl_checkcflags_enabled: false # BAD-FLAGS + ob_sdl_xfgcheck_enabled: false # BAD-FLAGS ob_git_checkout: false # This job checks itself out ob_git_skip_checkout_none: true ob_outputDirectory: $(JobOutputDirectory) @@ -244,18 +259,22 @@ extends: buildPlatforms: ${{ parameters.buildPlatforms }} generateSbom: false # this is handled by onebranch codeSign: ${{ parameters.codeSign }} + signingIdentity: ${{ parameters.signingIdentity }} - stage: Publish displayName: Publish - dependsOn: [Build, Package] + dependsOn: [Build] jobs: - - template: ./build/pipelines/templates-v2/job-publish-symbols.yml@self + - template: ./build/pipelines/templates-v2/job-publish-symbols-using-symbolrequestprod-api.yml@self parameters: pool: { type: windows } includePublicSymbolServer: ${{ parameters.publishSymbolsToPublic }} - symbolPatGoesInTaskInputs: true # onebranch tries to muck with the PAT variable, so we need to change how it get the PAT symbolExpiryTime: ${{ parameters.symbolExpiryTime }} + subscription: ${{ parameters.symbolPublishingSubscription }} + symbolProject: ${{ parameters.symbolPublishingProject }} variables: + ob_sdl_checkcflags_enabled: false # BAD-FLAGS + ob_sdl_xfgcheck_enabled: false # BAD-FLAGS ob_git_checkout: false # This job checks itself out ob_git_skip_checkout_none: true ob_outputDirectory: $(Build.ArtifactStagingDirectory) diff --git a/build/pipelines/templates-v2/steps-esrp-signing.yml b/build/pipelines/templates-v2/steps-esrp-signing.yml new file mode 100644 index 00000000000..ef5a8d776b9 --- /dev/null +++ b/build/pipelines/templates-v2/steps-esrp-signing.yml @@ -0,0 +1,24 @@ +parameters: + - name: displayName + type: string + default: ESRP Code Signing + - name: inputs + type: object + default: {} + - name: signingIdentity + type: object + default: {} + +steps: + - task: EsrpCodeSigning@5 + displayName: ${{ parameters.displayName }} + inputs: + ConnectedServiceName: ${{ parameters.signingIdentity.serviceName }} + AppRegistrationClientId: ${{ parameters.signingIdentity.appId }} + AppRegistrationTenantId: ${{ parameters.signingIdentity.tenantId }} + AuthAKVName: ${{ parameters.signingIdentity.akvName }} + AuthCertName: ${{ parameters.signingIdentity.authCertName }} + AuthSignCertName: ${{ parameters.signingIdentity.signCertName }} + UseMSIAuthentication: ${{ coalesce(parameters.signingIdentity.useManagedIdentity, 'false') }} + EsrpClientId: ${{ parameters.signingIdentity.clientId }} + ${{ insert }}: ${{ parameters.inputs }} diff --git a/build/pipelines/templates-v2/steps-fetch-and-prepare-localizations.yml b/build/pipelines/templates-v2/steps-fetch-and-prepare-localizations.yml deleted file mode 100644 index 8ace357aad3..00000000000 --- a/build/pipelines/templates-v2/steps-fetch-and-prepare-localizations.yml +++ /dev/null @@ -1,27 +0,0 @@ -parameters: - - name: includePseudoLoc - type: boolean - default: true - -steps: - - task: TouchdownBuildTask@1 - displayName: Download Localization Files - inputs: - teamId: 7105 - authId: $(TouchdownAppId) - authKey: $(TouchdownAppKey) - resourceFilePath: | - src\cascadia\**\en-US\*.resw - appendRelativeDir: true - localizationTarget: false - ${{ if eq(parameters.includePseudoLoc, true) }}: - pseudoSetting: Included - - - pwsh: |- - $Files = Get-ChildItem . -R -Filter 'Resources.resw' | ? FullName -Like '*en-US\*\Resources.resw' - $Files | % { Move-Item -Verbose $_.Directory $_.Directory.Parent.Parent -EA:Ignore } - displayName: Move Loc files into final locations - - - pwsh: |- - ./build/scripts/Copy-ContextMenuResourcesToCascadiaPackage.ps1 - displayName: Copy the Context Menu Loc Resources to CascadiaPackage diff --git a/build/pipelines/templates-v2/steps-install-vcpkg.yml b/build/pipelines/templates-v2/steps-install-vcpkg.yml new file mode 100644 index 00000000000..ec7c3f3c9ac --- /dev/null +++ b/build/pipelines/templates-v2/steps-install-vcpkg.yml @@ -0,0 +1,16 @@ +steps: + - pwsh: |- + $VsInstallRoot = & 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe' -requires Microsoft.VisualStudio.Component.Vcpkg -property installationPath + If ([String]::IsNullOrEmpty($VsInstallRoot)) { + Remove-Item -Recurse -Force dep/vcpkg -ErrorAction:Ignore + git clone https://github.com/microsoft/vcpkg dep/vcpkg + cd dep/vcpkg + & ./bootstrap-vcpkg.bat + $VcpkgRoot = $PWD + Write-Host "Using vcpkg from local checkout ($VcpkgRoot)" + } Else { + $VcpkgRoot = Join-Path $VsInstallRoot "VC\vcpkg" + Write-Host "Using vcpkg from Visual Studio installation ($VcpkgRoot)" + } + echo "##vso[task.setvariable variable=VCPKG_ROOT]$VcpkgRoot" + displayName: Detect VS vcpkg or bootstrap locally diff --git a/build/pipelines/templates-v2/steps-restore-nuget.yml b/build/pipelines/templates-v2/steps-restore-nuget.yml index bd0c067531c..37018efc1a9 100644 --- a/build/pipelines/templates-v2/steps-restore-nuget.yml +++ b/build/pipelines/templates-v2/steps-restore-nuget.yml @@ -1,7 +1,7 @@ steps: - template: steps-ensure-nuget-version.yml -- task: NuGetAuthenticate@0 +- task: NuGetAuthenticate@1 - script: |- echo ##vso[task.setvariable variable=NUGET_RESTORE_MSBUILD_ARGS]/p:Platform=$(BuildPlatform) diff --git a/build/pipelines/templates-v2/steps-setup-versioning.yml b/build/pipelines/templates-v2/steps-setup-versioning.yml new file mode 100644 index 00000000000..8bca260c7cb --- /dev/null +++ b/build/pipelines/templates-v2/steps-setup-versioning.yml @@ -0,0 +1,6 @@ +steps: + - pwsh: |- + nuget install Microsoft.Windows.Terminal.Versioning -OutputDirectory _versioning + $VersionRoot = (Get-Item _versioning\Microsoft.Windows.*).FullName + & "$VersionRoot\build\Setup.ps1" -ProjectDirectory "$(Build.SourcesDirectory)" -Verbose + displayName: Set up versioning via M.W.T.V diff --git a/build/pipelines/templates-v2/variables-onebranch-config.yml b/build/pipelines/templates-v2/variables-onebranch-config.yml index d7180e3e090..d187e701e32 100644 --- a/build/pipelines/templates-v2/variables-onebranch-config.yml +++ b/build/pipelines/templates-v2/variables-onebranch-config.yml @@ -1,2 +1,7 @@ +parameters: + - name: containerVersion + type: string + default: latest + variables: - WindowsContainerImage: 'onebranch.azurecr.io/windows/ltsc2022/vse2022:latest' + WindowsContainerImage: 'onebranch.azurecr.io/windows/ltsc2022/vse2022:${{ parameters.containerVersion }}' diff --git a/build/rules/GenerateFeatureFlags.proj b/build/rules/GenerateFeatureFlags.proj index 686365c0ca2..eb6b9783bce 100644 --- a/build/rules/GenerateFeatureFlags.proj +++ b/build/rules/GenerateFeatureFlags.proj @@ -30,6 +30,7 @@ $(SolutionDir)obj\$(Configuration)\GenerateFeatureFlags\ $(SolutionDir)bin\$(Configuration)\ + <_WTBrandingName Condition="'$(WindowsTerminalBranding)'=='Canary'">Canary <_WTBrandingName Condition="'$(WindowsTerminalBranding)'=='Preview'">Preview <_WTBrandingName Condition="'$(WindowsTerminalBranding)'=='Release'">Release <_WTBrandingName Condition="'$(_WTBrandingName)'==''">Dev diff --git a/build/rules/Microsoft.WindowsPackageManager.ComInterop.Additional.targets b/build/rules/Microsoft.WindowsPackageManager.ComInterop.Additional.targets new file mode 100644 index 00000000000..be2a691bb24 --- /dev/null +++ b/build/rules/Microsoft.WindowsPackageManager.ComInterop.Additional.targets @@ -0,0 +1,22 @@ + + + + + x86 + $(Platform) + + + + true + + + + + + CustomOutputGroupForPackaging + $(ProjectName) + Microsoft.Management.Deployment.winmd + + + + \ No newline at end of file diff --git a/build/scripts/Copy-ContextMenuResourcesToCascadiaPackage.ps1 b/build/scripts/Copy-ContextMenuResourcesToCascadiaPackage.ps1 index 8111b3fc66e..33af3387b42 100644 --- a/build/scripts/Copy-ContextMenuResourcesToCascadiaPackage.ps1 +++ b/build/scripts/Copy-ContextMenuResourcesToCascadiaPackage.ps1 @@ -10,11 +10,12 @@ $LocalizationsFromContextMenu | ForEach-Object { ForEach ($pair in $Languages.GetEnumerator()) { $LanguageDir = "./src/cascadia/CascadiaPackage/Resources/$($pair.Key)" $ResPath = "$LanguageDir/Resources.resw" + $XmlDocument = $null $PreexistingResw = Get-Item $ResPath -EA:Ignore If ($null -eq $PreexistingResw) { Write-Host "Copying $($pair.Value.FullName) to $ResPath" + $XmlDocument = [xml](Get-Content $pair.Value.FullName) New-Item -type Directory $LanguageDir -EA:Ignore - Copy-Item $pair.Value.FullName $ResPath } Else { # Merge Them! Write-Host "Merging $($pair.Value.FullName) into $ResPath" @@ -29,6 +30,20 @@ ForEach ($pair in $Languages.GetEnumerator()) { $newXml.root.data | % { $null = $existingXml.root.AppendChild($existingXml.ImportNode($_, $true)) } - $existingXml.Save($PreexistingResw.FullName) + $XmlDocument = $existingXml # (which has been updated) } + + # Reset paths to be absolute (for .NET) + $LanguageDir = (Get-Item $LanguageDir).FullName + $ResPath = "$LanguageDir/Resources.resw" + # Force the "new" and "preexisting" paths to serialize with XmlWriter, + # to ensure consistency. + $writerSettings = [System.Xml.XmlWriterSettings]::new() + $writerSettings.NewLineChars = "`r`n" + $writerSettings.Indent = $true + $writerSettings.Encoding = [System.Text.UTF8Encoding]::new($false) # suppress the BOM + $writer = [System.Xml.XmlWriter]::Create($ResPath, $writerSettings) + $XmlDocument.Save($writer) + $writer.Flush() + $writer.Close() } diff --git a/build/scripts/Generate-PseudoLocalizations.ps1 b/build/scripts/Generate-PseudoLocalizations.ps1 new file mode 100644 index 00000000000..e6fe713bef6 --- /dev/null +++ b/build/scripts/Generate-PseudoLocalizations.ps1 @@ -0,0 +1,17 @@ +Get-ChildItem -Recurse -Directory -Filter qps-ploc* + | Get-ChildItem -Include *.resw,*.xml + | ForEach-Object { + $source = Join-Path $_.Directory "../en-US/$($_.Name)" + $target = $_ + + $ploc = ./tools/ConvertTo-PseudoLocalization.ps1 -Path $source + + $writerSettings = [System.Xml.XmlWriterSettings]::new() + $writerSettings.NewLineChars = "`r`n" + $writerSettings.Indent = $true + $writerSettings.Encoding = [System.Text.UTF8Encoding]::new($false) # suppress the BOM + $writer = [System.Xml.XmlWriter]::Create($target, $writerSettings) + $ploc.Save($writer) + $writer.Flush() + $writer.Close() + } diff --git a/build/scripts/New-UnpackagedTerminalDistribution.ps1 b/build/scripts/New-UnpackagedTerminalDistribution.ps1 index 9605f132562..9f8d295be85 100644 --- a/build/scripts/New-UnpackagedTerminalDistribution.ps1 +++ b/build/scripts/New-UnpackagedTerminalDistribution.ps1 @@ -34,7 +34,7 @@ Param( ) $filesToRemove = @("*.xml", "*.winmd", "Appx*", "Images/*Tile*", "Images/*Logo*") # Remove from Terminal -$filesToKeep = @("Microsoft.Terminal.Remoting.winmd") # ... except for these +$filesToKeep = @() # ... except for these $filesToCopyFromXaml = @("Microsoft.UI.Xaml.dll", "Microsoft.UI.Xaml") # We don't need the .winmd $ErrorActionPreference = 'Stop' diff --git a/build/scripts/Run-Tests.ps1 b/build/scripts/Run-Tests.ps1 index bd4cf28fc50..c9a37001c72 100644 --- a/build/scripts/Run-Tests.ps1 +++ b/build/scripts/Run-Tests.ps1 @@ -16,22 +16,48 @@ Param( # Find test DLLs based on the provided root, match pattern, and recursion $testDlls = Get-ChildItem -Path $Root -Recurse -Filter $MatchPattern -$args = @() +$teArgs = @() # Check if the LogPath parameter is provided and enable WTT logging if ($LogPath) { - $args += '/enablewttlogging' - $args += '/appendwttlogging' - $args += "/logFile:$LogPath" + $teArgs += '/enablewttlogging' + $teArgs += '/appendwttlogging' + $teArgs += "/logFile:$LogPath" Write-Host "WTT Logging Enabled" } -# Invoke the te.exe executable with arguments and test DLLs -& "$Root\te.exe" $args $testDlls.FullName $AdditionalTaefArguments +$rootTe = "$Root\te.exe" -# Check the exit code of the te.exe process and exit accordingly -if ($LASTEXITCODE -ne 0) { - Exit $LASTEXITCODE +# Some of our test fixtures depend on resources.pri in the same folder as the .exe hosting them. +# Unfortunately, that means that we need to run the te.exe *next to* each test DLL we discover. +# This code establishes a mapping from te.exe to test DLL (or DLLs) +$testDllTaefGroups = $testDlls | % { + $localTe = Get-Item (Join-Path (Split-Path $_ -Parent) "te.exe") -EA:Ignore + If ($null -eq $localTe) { + $finalTePath = $rootTe + } Else { + $finalTePath = $localTe.FullName + } + [PSCustomObject]@{ + TePath = $finalTePath; + TestDll = $_; + } +} + +# Invoke the te.exe executables with arguments and test DLLs +$anyFailed = $false +$testDllTaefGroups | Group-Object TePath | % { + $te = $_.Group[0].TePath + $dlls = $_.Group.TestDll + Write-Verbose "Running $te (for $($dlls.Name))" + & $te $teArgs $dlls.FullName $AdditionalTaefArguments + if ($LASTEXITCODE -ne 0) { + $anyFailed = $true + } +} + +if ($anyFailed) { + Exit 1 } Exit 0 diff --git a/build/scripts/Set-LatestVCToolsVersion.ps1 b/build/scripts/Set-LatestVCToolsVersion.ps1 new file mode 100644 index 00000000000..3156fff1bc5 --- /dev/null +++ b/build/scripts/Set-LatestVCToolsVersion.ps1 @@ -0,0 +1,8 @@ +$VSInstances = ([xml](& 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe' -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -include packages -format xml)) +$VSPackages = $VSInstances.instances.instance.packages.package +$LatestVCPackage = ($VSInstances.instances.instance.packages.package | ? { $_.id -eq "Microsoft.VisualCpp.Tools.Core" }) +$LatestVCToolsVersion = $LatestVCPackage.version; + +Write-Output "Latest VCToolsVersion: $LatestVCToolsVersion" +Write-Output "Updating VCToolsVersion environment variable for job" +Write-Output "##vso[task.setvariable variable=VCToolsVersion]$LatestVCToolsVersion" diff --git a/build/scripts/Test-WindowsTerminalPackage.ps1 b/build/scripts/Test-WindowsTerminalPackage.ps1 index b405d98c212..b492eca05f1 100644 --- a/build/scripts/Test-WindowsTerminalPackage.ps1 +++ b/build/scripts/Test-WindowsTerminalPackage.ps1 @@ -58,7 +58,7 @@ Try { ### Check the activatable class entries for a few DLLs we need. $inProcServers = $Manifest.Package.Extensions.Extension.InProcessServer.Path - $RequiredInProcServers = ("TerminalApp.dll", "Microsoft.Terminal.Control.dll", "Microsoft.Terminal.Remoting.dll", "Microsoft.Terminal.Settings.Editor.dll", "Microsoft.Terminal.Settings.Model.dll", "TerminalConnection.dll") + $RequiredInProcServers = ("TerminalApp.dll", "Microsoft.Terminal.Control.dll", "Microsoft.Terminal.Settings.Editor.dll", "Microsoft.Terminal.Settings.Model.dll", "TerminalConnection.dll") Write-Verbose "InProc Servers: $inProcServers" diff --git a/consolegit2gitfilters.json b/consolegit2gitfilters.json index 3dbcfdc9a20..1d570f24975 100644 --- a/consolegit2gitfilters.json +++ b/consolegit2gitfilters.json @@ -24,8 +24,6 @@ "/doc/specs/", "/doc/cascadia/", "/doc/user-docs/", - "/src/tools/MonarchPeasantSample/", - "/src/tools/MonarchPeasantPackage/", "/src/tools/ansi-color/", "/src/tools/ColorTool/", "/scratch/", diff --git a/custom.props b/custom.props index 328d7042eb2..8e358b3e0bb 100644 --- a/custom.props +++ b/custom.props @@ -3,9 +3,9 @@ true - 2023 + 2025 1 - 20 + 24 Windows Terminal diff --git a/dep/CLI11/CLI11.hpp b/dep/CLI11/CLI11.hpp deleted file mode 100644 index 9e502bf960e..00000000000 --- a/dep/CLI11/CLI11.hpp +++ /dev/null @@ -1,9713 +0,0 @@ -#pragma once - -// CLI11: Version 1.9.1 -// Originally designed by Henry Schreiner -// https://github.com/CLIUtils/CLI11 -// -// This is a standalone header file generated by MakeSingleHeader.py in CLI11/scripts -// from: v1.9.1 -// -// From LICENSE: -// -// CLI11 1.8 Copyright (c) 2017-2019 University of Cincinnati, developed by Henry -// Schreiner under NSF AWARD 1414736. All rights reserved. -// -// Redistribution and use in source and binary forms of CLI11, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// 2. Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// 3. Neither the name of the copyright holder nor the names of its contributors -// may be used to endorse or promote products derived from this software without -// specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR -// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -// Standard combined includes: - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -// Verbatim copy from Version.hpp: - -#define CLI11_VERSION_MAJOR 1 -#define CLI11_VERSION_MINOR 9 -#define CLI11_VERSION_PATCH 1 -#define CLI11_VERSION "1.9.1" - -// Verbatim copy from Macros.hpp: - -// The following version macro is very similar to the one in PyBind11 -#if !(defined(_MSC_VER) && __cplusplus == 199711L) && !defined(__INTEL_COMPILER) -#if __cplusplus >= 201402L -#define CLI11_CPP14 -#if __cplusplus >= 201703L -#define CLI11_CPP17 -#if __cplusplus > 201703L -#define CLI11_CPP20 -#endif -#endif -#endif -#elif defined(_MSC_VER) && __cplusplus == 199711L -// MSVC sets _MSVC_LANG rather than __cplusplus (supposedly until the standard is fully implemented) -// Unless you use the /Zc:__cplusplus flag on Visual Studio 2017 15.7 Preview 3 or newer -#if _MSVC_LANG >= 201402L -#define CLI11_CPP14 -#if _MSVC_LANG > 201402L && _MSC_VER >= 1910 -#define CLI11_CPP17 -#if __MSVC_LANG > 201703L && _MSC_VER >= 1910 -#define CLI11_CPP20 -#endif -#endif -#endif -#endif - -#if defined(CLI11_CPP14) -#define CLI11_DEPRECATED(reason) [[deprecated(reason)]] -#elif defined(_MSC_VER) -#define CLI11_DEPRECATED(reason) __declspec(deprecated(reason)) -#else -#define CLI11_DEPRECATED(reason) __attribute__((deprecated(reason))) -#endif - -// Verbatim copy from Validators.hpp: - -// C standard library -// Only needed for existence checking -#if defined CLI11_CPP17 && defined __has_include && !defined CLI11_HAS_FILESYSTEM -#if __has_include() -// Filesystem cannot be used if targeting macOS < 10.15 -#if defined __MAC_OS_X_VERSION_MIN_REQUIRED && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 -#define CLI11_HAS_FILESYSTEM 0 -#else -#include -#if defined __cpp_lib_filesystem && __cpp_lib_filesystem >= 201703 -#if defined _GLIBCXX_RELEASE && _GLIBCXX_RELEASE >= 9 -#define CLI11_HAS_FILESYSTEM 1 -#elif defined(__GLIBCXX__) -// if we are using gcc and Version <9 default to no filesystem -#define CLI11_HAS_FILESYSTEM 0 -#else -#define CLI11_HAS_FILESYSTEM 1 -#endif -#else -#define CLI11_HAS_FILESYSTEM 0 -#endif -#endif -#endif -#endif - -#if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0 -#include // NOLINT(build/include) -#else -#include -#include -#endif - -// From Version.hpp: - -// From Macros.hpp: - -// From StringTools.hpp: - -namespace CLI -{ - /// Include the items in this namespace to get free conversion of enums to/from streams. - /// (This is available inside CLI as well, so CLI11 will use this without a using statement). - namespace enums - { - /// output streaming for enumerations - template::value>::type> - std::ostream& operator<<(std::ostream& in, const T& item) - { - // make sure this is out of the detail namespace otherwise it won't be found when needed - return in << static_cast::type>(item); - } - - } // namespace enums - - /// Export to CLI namespace - using enums::operator<<; - - namespace detail - { - /// a constant defining an expected max vector size defined to be a big number that could be multiplied by 4 and not - /// produce overflow for some expected uses - constexpr int expected_max_vector_size{ 1 << 29 }; - // Based on http://stackoverflow.com/questions/236129/split-a-string-in-c - /// Split a string by a delim - inline std::vector split(const std::string& s, char delim) - { - std::vector elems; - // Check to see if empty string, give consistent result - if (s.empty()) - elems.emplace_back(); - else - { - std::stringstream ss; - ss.str(s); - std::string item; - while (std::getline(ss, item, delim)) - { - elems.push_back(item); - } - } - return elems; - } - - /// Simple function to join a string - template - std::string join(const T& v, std::string delim = ",") - { - std::ostringstream s; - auto beg = std::begin(v); - auto end = std::end(v); - if (beg != end) - s << *beg++; - while (beg != end) - { - s << delim << *beg++; - } - return s.str(); - } - - /// Simple function to join a string from processed elements - template::value>::type> - std::string join(const T& v, Callable func, std::string delim = ",") - { - std::ostringstream s; - auto beg = std::begin(v); - auto end = std::end(v); - if (beg != end) - s << func(*beg++); - while (beg != end) - { - s << delim << func(*beg++); - } - return s.str(); - } - - /// Join a string in reverse order - template - std::string rjoin(const T& v, std::string delim = ",") - { - std::ostringstream s; - for (std::size_t start = 0; start < v.size(); start++) - { - if (start > 0) - s << delim; - s << v[v.size() - start - 1]; - } - return s.str(); - } - - // Based roughly on http://stackoverflow.com/questions/25829143/c-trim-whitespace-from-a-string - - /// Trim whitespace from left of string - inline std::string& ltrim(std::string& str) - { - auto it = std::find_if(str.begin(), str.end(), [](char ch) { return !std::isspace(ch, std::locale()); }); - str.erase(str.begin(), it); - return str; - } - - /// Trim anything from left of string - inline std::string& ltrim(std::string& str, const std::string& filter) - { - auto it = std::find_if(str.begin(), str.end(), [&filter](char ch) { return filter.find(ch) == std::string::npos; }); - str.erase(str.begin(), it); - return str; - } - - /// Trim whitespace from right of string - inline std::string& rtrim(std::string& str) - { - auto it = std::find_if(str.rbegin(), str.rend(), [](char ch) { return !std::isspace(ch, std::locale()); }); - str.erase(it.base(), str.end()); - return str; - } - - /// Trim anything from right of string - inline std::string& rtrim(std::string& str, const std::string& filter) - { - auto it = - std::find_if(str.rbegin(), str.rend(), [&filter](char ch) { return filter.find(ch) == std::string::npos; }); - str.erase(it.base(), str.end()); - return str; - } - - /// Trim whitespace from string - inline std::string& trim(std::string& str) { return ltrim(rtrim(str)); } - - /// Trim anything from string - inline std::string& trim(std::string& str, const std::string filter) { return ltrim(rtrim(str, filter), filter); } - - /// Make a copy of the string and then trim it - inline std::string trim_copy(const std::string& str) - { - std::string s = str; - return trim(s); - } - - /// remove quotes at the front and back of a string either '"' or '\'' - inline std::string& remove_quotes(std::string& str) - { - if (str.length() > 1 && (str.front() == '"' || str.front() == '\'')) - { - if (str.front() == str.back()) - { - str.pop_back(); - str.erase(str.begin(), str.begin() + 1); - } - } - return str; - } - - /// Make a copy of the string and then trim it, any filter string can be used (any char in string is filtered) - inline std::string trim_copy(const std::string& str, const std::string& filter) - { - std::string s = str; - return trim(s, filter); - } - /// Print a two part "help" string - inline std::ostream& format_help(std::ostream& out, std::string name, std::string description, std::size_t wid) - { - name = " " + name; - out << std::setw(static_cast(wid)) << std::left << name; - if (!description.empty()) - { - if (name.length() >= wid) - out << "\n" - << std::setw(static_cast(wid)) << ""; - for (const char c : description) - { - out.put(c); - if (c == '\n') - { - out << std::setw(static_cast(wid)) << ""; - } - } - } - out << "\n"; - return out; - } - - /// Verify the first character of an option - template - bool valid_first_char(T c) - { - return std::isalnum(c, std::locale()) || c == '_' || c == '?' || c == '@'; - } - - /// Verify following characters of an option - template - bool valid_later_char(T c) - { - return valid_first_char(c) || c == '.' || c == '-'; - } - - /// Verify an option name - inline bool valid_name_string(const std::string& str) - { - if (str.empty() || !valid_first_char(str[0])) - return false; - for (auto c : str.substr(1)) - if (!valid_later_char(c)) - return false; - return true; - } - - /// Verify that str consists of letters only - inline bool isalpha(const std::string& str) - { - return std::all_of(str.begin(), str.end(), [](char c) { return std::isalpha(c, std::locale()); }); - } - - /// Return a lower case version of a string - inline std::string to_lower(std::string str) - { - std::transform(std::begin(str), std::end(str), std::begin(str), [](const std::string::value_type& x) { - return std::tolower(x, std::locale()); - }); - return str; - } - - /// remove underscores from a string - inline std::string remove_underscore(std::string str) - { - str.erase(std::remove(std::begin(str), std::end(str), '_'), std::end(str)); - return str; - } - - /// Find and replace a substring with another substring - inline std::string find_and_replace(std::string str, std::string from, std::string to) - { - std::size_t start_pos = 0; - - while ((start_pos = str.find(from, start_pos)) != std::string::npos) - { - str.replace(start_pos, from.length(), to); - start_pos += to.length(); - } - - return str; - } - - /// check if the flag definitions has possible false flags - inline bool has_default_flag_values(const std::string& flags) - { - return (flags.find_first_of("{!") != std::string::npos); - } - - inline void remove_default_flag_values(std::string& flags) - { - auto loc = flags.find_first_of('{'); - while (loc != std::string::npos) - { - auto finish = flags.find_first_of("},", loc + 1); - if ((finish != std::string::npos) && (flags[finish] == '}')) - { - flags.erase(flags.begin() + static_cast(loc), - flags.begin() + static_cast(finish) + 1); - } - loc = flags.find_first_of('{', loc + 1); - } - flags.erase(std::remove(flags.begin(), flags.end(), '!'), flags.end()); - } - - /// Check if a string is a member of a list of strings and optionally ignore case or ignore underscores - inline std::ptrdiff_t find_member(std::string name, - const std::vector names, - bool ignore_case = false, - bool ignore_underscore = false) - { - auto it = std::end(names); - if (ignore_case) - { - if (ignore_underscore) - { - name = detail::to_lower(detail::remove_underscore(name)); - it = std::find_if(std::begin(names), std::end(names), [&name](std::string local_name) { - return detail::to_lower(detail::remove_underscore(local_name)) == name; - }); - } - else - { - name = detail::to_lower(name); - it = std::find_if(std::begin(names), std::end(names), [&name](std::string local_name) { - return detail::to_lower(local_name) == name; - }); - } - } - else if (ignore_underscore) - { - name = detail::remove_underscore(name); - it = std::find_if(std::begin(names), std::end(names), [&name](std::string local_name) { - return detail::remove_underscore(local_name) == name; - }); - } - else - it = std::find(std::begin(names), std::end(names), name); - - return (it != std::end(names)) ? (it - std::begin(names)) : (-1); - } - - /// Find a trigger string and call a modify callable function that takes the current string and starting position of the - /// trigger and returns the position in the string to search for the next trigger string - template - inline std::string find_and_modify(std::string str, std::string trigger, Callable modify) - { - std::size_t start_pos = 0; - while ((start_pos = str.find(trigger, start_pos)) != std::string::npos) - { - start_pos = modify(str, start_pos); - } - return str; - } - - /// Split a string '"one two" "three"' into 'one two', 'three' - /// Quote characters can be ` ' or " - inline std::vector split_up(std::string str, char delimiter = '\0') - { - const std::string delims("\'\"`"); - auto find_ws = [delimiter](char ch) { - return (delimiter == '\0') ? (std::isspace(ch, std::locale()) != 0) : (ch == delimiter); - }; - trim(str); - - std::vector output; - bool embeddedQuote = false; - char keyChar = ' '; - while (!str.empty()) - { - if (delims.find_first_of(str[0]) != std::string::npos) - { - keyChar = str[0]; - auto end = str.find_first_of(keyChar, 1); - while ((end != std::string::npos) && (str[end - 1] == '\\')) - { // deal with escaped quotes - end = str.find_first_of(keyChar, end + 1); - embeddedQuote = true; - } - if (end != std::string::npos) - { - output.push_back(str.substr(1, end - 1)); - str = str.substr(end + 1); - } - else - { - output.push_back(str.substr(1)); - str = ""; - } - } - else - { - auto it = std::find_if(std::begin(str), std::end(str), find_ws); - if (it != std::end(str)) - { - std::string value = std::string(str.begin(), it); - output.push_back(value); - str = std::string(it + 1, str.end()); - } - else - { - output.push_back(str); - str = ""; - } - } - // transform any embedded quotes into the regular character - if (embeddedQuote) - { - output.back() = find_and_replace(output.back(), std::string("\\") + keyChar, std::string(1, keyChar)); - embeddedQuote = false; - } - trim(str); - } - return output; - } - - /// Add a leader to the beginning of all new lines (nothing is added - /// at the start of the first line). `"; "` would be for ini files - /// - /// Can't use Regex, or this would be a subs. - inline std::string fix_newlines(const std::string& leader, std::string input) - { - std::string::size_type n = 0; - while (n != std::string::npos && n < input.size()) - { - n = input.find('\n', n); - if (n != std::string::npos) - { - input = input.substr(0, n + 1) + leader + input.substr(n + 1); - n += leader.size(); - } - } - return input; - } - - /// This function detects an equal or colon followed by an escaped quote after an argument - /// then modifies the string to replace the equality with a space. This is needed - /// to allow the split up function to work properly and is intended to be used with the find_and_modify function - /// the return value is the offset+1 which is required by the find_and_modify function. - inline std::size_t escape_detect(std::string& str, std::size_t offset) - { - auto next = str[offset + 1]; - if ((next == '\"') || (next == '\'') || (next == '`')) - { - auto astart = str.find_last_of("-/ \"\'`", offset - 1); - if (astart != std::string::npos) - { - if (str[astart] == ((str[offset] == '=') ? '-' : '/')) - str[offset] = ' '; // interpret this as a space so the split_up works properly - } - } - return offset + 1; - } - - /// Add quotes if the string contains spaces - inline std::string& add_quotes_if_needed(std::string& str) - { - if ((str.front() != '"' && str.front() != '\'') || str.front() != str.back()) - { - char quote = str.find('"') < str.find('\'') ? '\'' : '"'; - if (str.find(' ') != std::string::npos) - { - str.insert(0, 1, quote); - str.append(1, quote); - } - } - return str; - } - - } // namespace detail - -} // namespace CLI - -// From Error.hpp: - -namespace CLI -{ -// Use one of these on all error classes. -// These are temporary and are undef'd at the end of this file. -#define CLI11_ERROR_DEF(parent, name) \ -protected: \ - name(std::string ename, std::string msg, int exit_code) : parent(std::move(ename), std::move(msg), exit_code) {} \ - name(std::string ename, std::string msg, ExitCodes exit_code) : parent(std::move(ename), std::move(msg), exit_code) {} \ - \ -public: \ - name(std::string msg, ExitCodes exit_code) : parent(#name, std::move(msg), exit_code) {} \ - name(std::string msg, int exit_code) : parent(#name, std::move(msg), exit_code) {} - -// This is added after the one above if a class is used directly and builds its own message -#define CLI11_ERROR_SIMPLE(name) \ - explicit name(std::string msg) : name(#name, msg, ExitCodes::name) {} - - /// These codes are part of every error in CLI. They can be obtained from e using e.exit_code or as a quick shortcut, - /// int values from e.get_error_code(). - enum class ExitCodes - { - Success = 0, - IncorrectConstruction = 100, - BadNameString, - OptionAlreadyAdded, - FileError, - ConversionError, - ValidationError, - RequiredError, - RequiresError, - ExcludesError, - ExtrasError, - ConfigError, - InvalidError, - HorribleError, - OptionNotFound, - ArgumentMismatch, - BaseClass = 127 - }; - - // Error definitions - - /// @defgroup error_group Errors - /// @brief Errors thrown by CLI11 - /// - /// These are the errors that can be thrown. Some of them, like CLI::Success, are not really errors. - /// @{ - - /// All errors derive from this one - class Error : public std::runtime_error - { - int actual_exit_code; - std::string error_name{ "Error" }; - - public: - int get_exit_code() const { return actual_exit_code; } - - std::string get_name() const { return error_name; } - - Error(std::string name, std::string msg, int exit_code = static_cast(ExitCodes::BaseClass)) : - runtime_error(msg), - actual_exit_code(exit_code), - error_name(std::move(name)) {} - - Error(std::string name, std::string msg, ExitCodes exit_code) : - Error(name, msg, static_cast(exit_code)) {} - }; - - // Note: Using Error::Error constructors does not work on GCC 4.7 - - /// Construction errors (not in parsing) - class ConstructionError : public Error - { - CLI11_ERROR_DEF(Error, ConstructionError) - }; - - /// Thrown when an option is set to conflicting values (non-vector and multi args, for example) - class IncorrectConstruction : public ConstructionError - { - CLI11_ERROR_DEF(ConstructionError, IncorrectConstruction) - CLI11_ERROR_SIMPLE(IncorrectConstruction) - static IncorrectConstruction PositionalFlag(std::string name) - { - return IncorrectConstruction(name + ": Flags cannot be positional"); - } - static IncorrectConstruction Set0Opt(std::string name) - { - return IncorrectConstruction(name + ": Cannot set 0 expected, use a flag instead"); - } - static IncorrectConstruction SetFlag(std::string name) - { - return IncorrectConstruction(name + ": Cannot set an expected number for flags"); - } - static IncorrectConstruction ChangeNotVector(std::string name) - { - return IncorrectConstruction(name + ": You can only change the expected arguments for vectors"); - } - static IncorrectConstruction AfterMultiOpt(std::string name) - { - return IncorrectConstruction( - name + ": You can't change expected arguments after you've changed the multi option policy!"); - } - static IncorrectConstruction MissingOption(std::string name) - { - return IncorrectConstruction("Option " + name + " is not defined"); - } - static IncorrectConstruction MultiOptionPolicy(std::string name) - { - return IncorrectConstruction(name + ": multi_option_policy only works for flags and exact value options"); - } - }; - - /// Thrown on construction of a bad name - class BadNameString : public ConstructionError - { - CLI11_ERROR_DEF(ConstructionError, BadNameString) - CLI11_ERROR_SIMPLE(BadNameString) - static BadNameString OneCharName(std::string name) { return BadNameString("Invalid one char name: " + name); } - static BadNameString BadLongName(std::string name) { return BadNameString("Bad long name: " + name); } - static BadNameString DashesOnly(std::string name) - { - return BadNameString("Must have a name, not just dashes: " + name); - } - static BadNameString MultiPositionalNames(std::string name) - { - return BadNameString("Only one positional name allowed, remove: " + name); - } - }; - - /// Thrown when an option already exists - class OptionAlreadyAdded : public ConstructionError - { - CLI11_ERROR_DEF(ConstructionError, OptionAlreadyAdded) - explicit OptionAlreadyAdded(std::string name) : - OptionAlreadyAdded(name + " is already added", ExitCodes::OptionAlreadyAdded) {} - static OptionAlreadyAdded Requires(std::string name, std::string other) - { - return OptionAlreadyAdded(name + " requires " + other, ExitCodes::OptionAlreadyAdded); - } - static OptionAlreadyAdded Excludes(std::string name, std::string other) - { - return OptionAlreadyAdded(name + " excludes " + other, ExitCodes::OptionAlreadyAdded); - } - }; - - // Parsing errors - - /// Anything that can error in Parse - class ParseError : public Error - { - CLI11_ERROR_DEF(Error, ParseError) - }; - - // Not really "errors" - - /// This is a successful completion on parsing, supposed to exit - class Success : public ParseError - { - CLI11_ERROR_DEF(ParseError, Success) - Success() : - Success("Successfully completed, should be caught and quit", ExitCodes::Success) {} - }; - - /// -h or --help on command line - class CallForHelp : public ParseError - { - CLI11_ERROR_DEF(ParseError, CallForHelp) - CallForHelp() : - CallForHelp("This should be caught in your main function, see examples", ExitCodes::Success) {} - }; - - /// Usually something like --help-all on command line - class CallForAllHelp : public ParseError - { - CLI11_ERROR_DEF(ParseError, CallForAllHelp) - CallForAllHelp() : - CallForAllHelp("This should be caught in your main function, see examples", ExitCodes::Success) {} - }; - - /// Does not output a diagnostic in CLI11_PARSE, but allows to return from main() with a specific error code. - class RuntimeError : public ParseError - { - CLI11_ERROR_DEF(ParseError, RuntimeError) - explicit RuntimeError(int exit_code = 1) : - RuntimeError("Runtime error", exit_code) {} - }; - - /// Thrown when parsing an INI file and it is missing - class FileError : public ParseError - { - CLI11_ERROR_DEF(ParseError, FileError) - CLI11_ERROR_SIMPLE(FileError) - static FileError Missing(std::string name) { return FileError(name + " was not readable (missing?)"); } - }; - - /// Thrown when conversion call back fails, such as when an int fails to coerce to a string - class ConversionError : public ParseError - { - CLI11_ERROR_DEF(ParseError, ConversionError) - CLI11_ERROR_SIMPLE(ConversionError) - ConversionError(std::string member, std::string name) : - ConversionError("The value " + member + " is not an allowed value for " + name) {} - ConversionError(std::string name, std::vector results) : - ConversionError("Could not convert: " + name + " = " + detail::join(results)) {} - static ConversionError TooManyInputsFlag(std::string name) - { - return ConversionError(name + ": too many inputs for a flag"); - } - static ConversionError TrueFalse(std::string name) - { - return ConversionError(name + ": Should be true/false or a number"); - } - }; - - /// Thrown when validation of results fails - class ValidationError : public ParseError - { - CLI11_ERROR_DEF(ParseError, ValidationError) - CLI11_ERROR_SIMPLE(ValidationError) - explicit ValidationError(std::string name, std::string msg) : - ValidationError(name + ": " + msg) {} - }; - - /// Thrown when a required option is missing - class RequiredError : public ParseError - { - CLI11_ERROR_DEF(ParseError, RequiredError) - explicit RequiredError(std::string name) : - RequiredError(name + " is required", ExitCodes::RequiredError) {} - static RequiredError Subcommand(std::size_t min_subcom) - { - if (min_subcom == 1) - { - return RequiredError("A subcommand"); - } - return RequiredError("Requires at least " + std::to_string(min_subcom) + " subcommands", - ExitCodes::RequiredError); - } - static RequiredError - Option(std::size_t min_option, std::size_t max_option, std::size_t used, const std::string& option_list) - { - if ((min_option == 1) && (max_option == 1) && (used == 0)) - return RequiredError("Exactly 1 option from [" + option_list + "]"); - if ((min_option == 1) && (max_option == 1) && (used > 1)) - { - return RequiredError("Exactly 1 option from [" + option_list + "] is required and " + std::to_string(used) + - " were given", - ExitCodes::RequiredError); - } - if ((min_option == 1) && (used == 0)) - return RequiredError("At least 1 option from [" + option_list + "]"); - if (used < min_option) - { - return RequiredError("Requires at least " + std::to_string(min_option) + " options used and only " + - std::to_string(used) + "were given from [" + option_list + "]", - ExitCodes::RequiredError); - } - if (max_option == 1) - return RequiredError("Requires at most 1 options be given from [" + option_list + "]", - ExitCodes::RequiredError); - - return RequiredError("Requires at most " + std::to_string(max_option) + " options be used and " + - std::to_string(used) + "were given from [" + option_list + "]", - ExitCodes::RequiredError); - } - }; - - /// Thrown when the wrong number of arguments has been received - class ArgumentMismatch : public ParseError - { - CLI11_ERROR_DEF(ParseError, ArgumentMismatch) - CLI11_ERROR_SIMPLE(ArgumentMismatch) - ArgumentMismatch(std::string name, int expected, std::size_t received) : - ArgumentMismatch(expected > 0 ? ("Expected exactly " + std::to_string(expected) + " arguments to " + name + - ", got " + std::to_string(received)) : - ("Expected at least " + std::to_string(-expected) + " arguments to " + name + - ", got " + std::to_string(received)), - ExitCodes::ArgumentMismatch) {} - - static ArgumentMismatch AtLeast(std::string name, int num, std::size_t received) - { - return ArgumentMismatch(name + ": At least " + std::to_string(num) + " required but received " + - std::to_string(received)); - } - static ArgumentMismatch AtMost(std::string name, int num, std::size_t received) - { - return ArgumentMismatch(name + ": At Most " + std::to_string(num) + " required but received " + - std::to_string(received)); - } - static ArgumentMismatch TypedAtLeast(std::string name, int num, std::string type) - { - return ArgumentMismatch(name + ": " + std::to_string(num) + " required " + type + " missing"); - } - static ArgumentMismatch FlagOverride(std::string name) - { - return ArgumentMismatch(name + " was given a disallowed flag override"); - } - }; - - /// Thrown when a requires option is missing - class RequiresError : public ParseError - { - CLI11_ERROR_DEF(ParseError, RequiresError) - RequiresError(std::string curname, std::string subname) : - RequiresError(curname + " requires " + subname, ExitCodes::RequiresError) {} - }; - - /// Thrown when an excludes option is present - class ExcludesError : public ParseError - { - CLI11_ERROR_DEF(ParseError, ExcludesError) - ExcludesError(std::string curname, std::string subname) : - ExcludesError(curname + " excludes " + subname, ExitCodes::ExcludesError) {} - }; - - /// Thrown when too many positionals or options are found - class ExtrasError : public ParseError - { - CLI11_ERROR_DEF(ParseError, ExtrasError) - explicit ExtrasError(std::vector args) : - ExtrasError((args.size() > 1 ? "The following arguments were not expected: " : "The following argument was not expected: ") + - detail::rjoin(args, " "), - ExitCodes::ExtrasError) {} - ExtrasError(const std::string& name, std::vector args) : - ExtrasError(name, - (args.size() > 1 ? "The following arguments were not expected: " : "The following argument was not expected: ") + - detail::rjoin(args, " "), - ExitCodes::ExtrasError) {} - }; - - /// Thrown when extra values are found in an INI file - class ConfigError : public ParseError - { - CLI11_ERROR_DEF(ParseError, ConfigError) - CLI11_ERROR_SIMPLE(ConfigError) - static ConfigError Extras(std::string item) { return ConfigError("INI was not able to parse " + item); } - static ConfigError NotConfigurable(std::string item) - { - return ConfigError(item + ": This option is not allowed in a configuration file"); - } - }; - - /// Thrown when validation fails before parsing - class InvalidError : public ParseError - { - CLI11_ERROR_DEF(ParseError, InvalidError) - explicit InvalidError(std::string name) : - InvalidError(name + ": Too many positional arguments with unlimited expected args", ExitCodes::InvalidError) - { - } - }; - - /// This is just a safety check to verify selection and parsing match - you should not ever see it - /// Strings are directly added to this error, but again, it should never be seen. - class HorribleError : public ParseError - { - CLI11_ERROR_DEF(ParseError, HorribleError) - CLI11_ERROR_SIMPLE(HorribleError) - }; - - // After parsing - - /// Thrown when counting a non-existent option - class OptionNotFound : public Error - { - CLI11_ERROR_DEF(Error, OptionNotFound) - explicit OptionNotFound(std::string name) : - OptionNotFound(name + " not found", ExitCodes::OptionNotFound) {} - }; - -#undef CLI11_ERROR_DEF -#undef CLI11_ERROR_SIMPLE - - /// @} - -} // namespace CLI - -// From TypeTools.hpp: - -namespace CLI -{ - // Type tools - - // Utilities for type enabling - namespace detail - { - // Based generally on https://rmf.io/cxx11/almost-static-if - /// Simple empty scoped class - enum class enabler - { - }; - - /// An instance to use in EnableIf - constexpr enabler dummy = {}; - } // namespace detail - - /// A copy of enable_if_t from C++14, compatible with C++11. - /// - /// We could check to see if C++14 is being used, but it does not hurt to redefine this - /// (even Google does this: https://github.com/google/skia/blob/master/include/private/SkTLogic.h) - /// It is not in the std namespace anyway, so no harm done. - template - using enable_if_t = typename std::enable_if::type; - - /// A copy of std::void_t from C++17 (helper for C++11 and C++14) - template - struct make_void - { - using type = void; - }; - - /// A copy of std::void_t from C++17 - same reasoning as enable_if_t, it does not hurt to redefine - template - using void_t = typename make_void::type; - - /// A copy of std::conditional_t from C++14 - same reasoning as enable_if_t, it does not hurt to redefine - template - using conditional_t = typename std::conditional::type; - - /// Check to see if something is a vector (fail check by default) - template - struct is_vector : std::false_type - { - }; - - /// Check to see if something is a vector (true if actually a vector) - template - struct is_vector> : std::true_type - { - }; - - /// Check to see if something is a vector (true if actually a const vector) - template - struct is_vector> : std::true_type - { - }; - - /// Check to see if something is bool (fail check by default) - template - struct is_bool : std::false_type - { - }; - - /// Check to see if something is bool (true if actually a bool) - template<> - struct is_bool : std::true_type - { - }; - - /// Check to see if something is a shared pointer - template - struct is_shared_ptr : std::false_type - { - }; - - /// Check to see if something is a shared pointer (True if really a shared pointer) - template - struct is_shared_ptr> : std::true_type - { - }; - - /// Check to see if something is a shared pointer (True if really a shared pointer) - template - struct is_shared_ptr> : std::true_type - { - }; - - /// Check to see if something is copyable pointer - template - struct is_copyable_ptr - { - static bool const value = is_shared_ptr::value || std::is_pointer::value; - }; - - /// This can be specialized to override the type deduction for IsMember. - template - struct IsMemberType - { - using type = T; - }; - - /// The main custom type needed here is const char * should be a string. - template<> - struct IsMemberType - { - using type = std::string; - }; - - namespace detail - { - // These are utilities for IsMember and other transforming objects - - /// Handy helper to access the element_type generically. This is not part of is_copyable_ptr because it requires that - /// pointer_traits be valid. - - /// not a pointer - template - struct element_type - { - using type = T; - }; - - template - struct element_type::value>::type> - { - using type = typename std::pointer_traits::element_type; - }; - - /// Combination of the element type and value type - remove pointer (including smart pointers) and get the value_type of - /// the container - template - struct element_value_type - { - using type = typename element_type::type::value_type; - }; - - /// Adaptor for set-like structure: This just wraps a normal container in a few utilities that do almost nothing. - template - struct pair_adaptor : std::false_type - { - using value_type = typename T::value_type; - using first_type = typename std::remove_const::type; - using second_type = typename std::remove_const::type; - - /// Get the first value (really just the underlying value) - template - static auto first(Q&& pair_value) -> decltype(std::forward(pair_value)) - { - return std::forward(pair_value); - } - /// Get the second value (really just the underlying value) - template - static auto second(Q&& pair_value) -> decltype(std::forward(pair_value)) - { - return std::forward(pair_value); - } - }; - - /// Adaptor for map-like structure (true version, must have key_type and mapped_type). - /// This wraps a mapped container in a few utilities access it in a general way. - template - struct pair_adaptor< - T, - conditional_t, void>> : std::true_type - { - using value_type = typename T::value_type; - using first_type = typename std::remove_const::type; - using second_type = typename std::remove_const::type; - - /// Get the first value (really just the underlying value) - template - static auto first(Q&& pair_value) -> decltype(std::get<0>(std::forward(pair_value))) - { - return std::get<0>(std::forward(pair_value)); - } - /// Get the second value (really just the underlying value) - template - static auto second(Q&& pair_value) -> decltype(std::get<1>(std::forward(pair_value))) - { - return std::get<1>(std::forward(pair_value)); - } - }; - -// Warning is suppressed due to "bug" in gcc<5.0 and gcc 7.0 with c++17 enabled that generates a Wnarrowing warning -// in the unevaluated context even if the function that was using this wasn't used. The standard says narrowing in -// brace initialization shouldn't be allowed but for backwards compatibility gcc allows it in some contexts. It is a -// little fuzzy what happens in template constructs and I think that was something GCC took a little while to work out. -// But regardless some versions of gcc generate a warning when they shouldn't from the following code so that should be -// suppressed -#ifdef __GNUC__ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wnarrowing" -#endif - // check for constructibility from a specific type and copy assignable used in the parse detection - template - class is_direct_constructible - { - template - static auto test(int, std::true_type) -> decltype( -// NVCC warns about narrowing conversions here -#ifdef __CUDACC__ -#pragma diag_suppress 2361 -#endif - TT { std::declval() } -#ifdef __CUDACC__ -#pragma diag_default 2361 -#endif - , - std::is_move_assignable()); - - template - static auto test(int, std::false_type) -> std::false_type; - - template - static auto test(...) -> std::false_type; - - public: - static constexpr bool value = decltype(test(0, typename std::is_constructible::type()))::value; - }; -#ifdef __GNUC__ -#pragma GCC diagnostic pop -#endif - - // Check for output streamability - // Based on https://stackoverflow.com/questions/22758291/how-can-i-detect-if-a-type-can-be-streamed-to-an-stdostream - - template - class is_ostreamable - { - template - static auto test(int) -> decltype(std::declval() << std::declval(), std::true_type()); - - template - static auto test(...) -> std::false_type; - - public: - static constexpr bool value = decltype(test(0))::value; - }; - - /// Check for input streamability - template - class is_istreamable - { - template - static auto test(int) -> decltype(std::declval() >> std::declval(), std::true_type()); - - template - static auto test(...) -> std::false_type; - - public: - static constexpr bool value = decltype(test(0))::value; - }; - - /// Templated operation to get a value from a stream - template::value, detail::enabler> = detail::dummy> - bool from_stream(const std::string& istring, T& obj) - { - std::istringstream is; - is.str(istring); - is >> obj; - return !is.fail() && !is.rdbuf()->in_avail(); - } - - template::value, detail::enabler> = detail::dummy> - bool from_stream(const std::string& /*istring*/, T& /*obj*/) - { - return false; - } - - // Check for tuple like types, as in classes with a tuple_size type trait - template - class is_tuple_like - { - template - // static auto test(int) - // -> decltype(std::conditional<(std::tuple_size::value > 0), std::true_type, std::false_type>::type()); - static auto test(int) -> decltype(std::tuple_size::value, std::true_type{}); - template - static auto test(...) -> std::false_type; - - public: - static constexpr bool value = decltype(test(0))::value; - }; - - /// Convert an object to a string (directly forward if this can become a string) - template::value, detail::enabler> = detail::dummy> - auto to_string(T&& value) -> decltype(std::forward(value)) - { - return std::forward(value); - } - - /// Construct a string from the object - template::value && !std::is_convertible::value, - detail::enabler> = detail::dummy> - std::string to_string(const T& value) - { - return std::string(value); - } - - /// Convert an object to a string (streaming must be supported for that type) - template::value && !std::is_constructible::value && - is_ostreamable::value, - detail::enabler> = detail::dummy> - std::string to_string(T&& value) - { - std::stringstream stream; - stream << value; - return stream.str(); - } - - /// If conversion is not supported, return an empty string (streaming is not supported for that type) - template::value && !is_ostreamable::value && - !is_vector::type>::type>::value, - detail::enabler> = detail::dummy> - std::string to_string(T&&) - { - return std::string{}; - } - - /// convert a vector to a string - template::value && !is_ostreamable::value && - is_vector::type>::type>::value, - detail::enabler> = detail::dummy> - std::string to_string(T&& variable) - { - std::vector defaults; - defaults.reserve(variable.size()); - auto cval = variable.begin(); - auto end = variable.end(); - while (cval != end) - { - defaults.emplace_back(CLI::detail::to_string(*cval)); - ++cval; - } - return std::string("[" + detail::join(defaults) + "]"); - } - - /// special template overload - template::value, detail::enabler> = detail::dummy> - auto checked_to_string(T&& value) -> decltype(to_string(std::forward(value))) - { - return to_string(std::forward(value)); - } - - /// special template overload - template::value, detail::enabler> = detail::dummy> - std::string checked_to_string(T&&) - { - return std::string{}; - } - /// get a string as a convertible value for arithmetic types - template::value, detail::enabler> = detail::dummy> - std::string value_string(const T& value) - { - return std::to_string(value); - } - /// get a string as a convertible value for enumerations - template::value, detail::enabler> = detail::dummy> - std::string value_string(const T& value) - { - return std::to_string(static_cast::type>(value)); - } - /// for other types just use the regular to_string function - template::value && !std::is_arithmetic::value, detail::enabler> = detail::dummy> - auto value_string(const T& value) -> decltype(to_string(value)) - { - return to_string(value); - } - - /// This will only trigger for actual void type - template - struct type_count - { - static const int value{ 0 }; - }; - - /// Set of overloads to get the type size of an object - template - struct type_count::value>::type> - { - static constexpr int value{ std::tuple_size::value }; - }; - /// Type size for regular object types that do not look like a tuple - template - struct type_count< - T, - typename std::enable_if::value && !is_tuple_like::value && !std::is_void::value>::type> - { - static constexpr int value{ 1 }; - }; - - /// Type size of types that look like a vector - template - struct type_count::value>::type> - { - static constexpr int value{ is_vector::value ? expected_max_vector_size : type_count::value }; - }; - - /// This will only trigger for actual void type - template - struct expected_count - { - static const int value{ 0 }; - }; - - /// For most types the number of expected items is 1 - template - struct expected_count::value && !std::is_void::value>::type> - { - static constexpr int value{ 1 }; - }; - /// number of expected items in a vector - template - struct expected_count::value>::type> - { - static constexpr int value{ expected_max_vector_size }; - }; - - // Enumeration of the different supported categorizations of objects - enum class object_category : int - { - integral_value = 2, - unsigned_integral = 4, - enumeration = 6, - boolean_value = 8, - floating_point = 10, - number_constructible = 12, - double_constructible = 14, - integer_constructible = 16, - vector_value = 30, - tuple_value = 35, - // string assignable or greater used in a condition so anything string like must come last - string_assignable = 50, - string_constructible = 60, - other = 200, - - }; - - /// some type that is not otherwise recognized - template - struct classify_object - { - static constexpr object_category value{ object_category::other }; - }; - - /// Set of overloads to classify an object according to type - template - struct classify_object::value && std::is_signed::value && - !is_bool::value && !std::is_enum::value>::type> - { - static constexpr object_category value{ object_category::integral_value }; - }; - - /// Unsigned integers - template - struct classify_object< - T, - typename std::enable_if::value && std::is_unsigned::value && !is_bool::value>::type> - { - static constexpr object_category value{ object_category::unsigned_integral }; - }; - - /// Boolean values - template - struct classify_object::value>::type> - { - static constexpr object_category value{ object_category::boolean_value }; - }; - - /// Floats - template - struct classify_object::value>::type> - { - static constexpr object_category value{ object_category::floating_point }; - }; - - /// String and similar direct assignment - template - struct classify_object< - T, - typename std::enable_if::value && !std::is_integral::value && - std::is_assignable::value && !is_vector::value>::type> - { - static constexpr object_category value{ object_category::string_assignable }; - }; - - /// String and similar constructible and copy assignment - template - struct classify_object< - T, - typename std::enable_if::value && !std::is_integral::value && - !std::is_assignable::value && - std::is_constructible::value && !is_vector::value>::type> - { - static constexpr object_category value{ object_category::string_constructible }; - }; - - /// Enumerations - template - struct classify_object::value>::type> - { - static constexpr object_category value{ object_category::enumeration }; - }; - - /// Handy helper to contain a bunch of checks that rule out many common types (integers, string like, floating point, - /// vectors, and enumerations - template - struct uncommon_type - { - using type = typename std::conditional::value && !std::is_integral::value && - !std::is_assignable::value && - !std::is_constructible::value && !is_vector::value && - !std::is_enum::value, - std::true_type, - std::false_type>::type; - static constexpr bool value = type::value; - }; - - /// Assignable from double or int - template - struct classify_object::value && type_count::value == 1 && - is_direct_constructible::value && - is_direct_constructible::value>::type> - { - static constexpr object_category value{ object_category::number_constructible }; - }; - - /// Assignable from int - template - struct classify_object::value && type_count::value == 1 && - !is_direct_constructible::value && - is_direct_constructible::value>::type> - { - static constexpr object_category value{ object_category::integer_constructible }; - }; - - /// Assignable from double - template - struct classify_object::value && type_count::value == 1 && - is_direct_constructible::value && - !is_direct_constructible::value>::type> - { - static constexpr object_category value{ object_category::double_constructible }; - }; - - /// Tuple type - template - struct classify_object::value >= 2 && !is_vector::value) || - (is_tuple_like::value && uncommon_type::value && - !is_direct_constructible::value && - !is_direct_constructible::value)>::type> - { - static constexpr object_category value{ object_category::tuple_value }; - }; - - /// Vector type - template - struct classify_object::value>::type> - { - static constexpr object_category value{ object_category::vector_value }; - }; - - // Type name print - - /// Was going to be based on - /// http://stackoverflow.com/questions/1055452/c-get-name-of-type-in-template - /// But this is cleaner and works better in this case - - template::value == object_category::integral_value || - classify_object::value == object_category::integer_constructible, - detail::enabler> = detail::dummy> - constexpr const char* type_name() - { - return "INT"; - } - - template::value == object_category::unsigned_integral, detail::enabler> = detail::dummy> - constexpr const char* type_name() - { - return "UINT"; - } - - template::value == object_category::floating_point || - classify_object::value == object_category::number_constructible || - classify_object::value == object_category::double_constructible, - detail::enabler> = detail::dummy> - constexpr const char* type_name() - { - return "FLOAT"; - } - - /// Print name for enumeration types - template::value == object_category::enumeration, detail::enabler> = detail::dummy> - constexpr const char* type_name() - { - return "ENUM"; - } - - /// Print name for enumeration types - template::value == object_category::boolean_value, detail::enabler> = detail::dummy> - constexpr const char* type_name() - { - return "BOOLEAN"; - } - - /// Print for all other types - template::value >= object_category::string_assignable, detail::enabler> = detail::dummy> - constexpr const char* type_name() - { - return "TEXT"; - } - - /// Print name for single element tuple types - template::value == object_category::tuple_value && type_count::value == 1, - detail::enabler> = detail::dummy> - inline std::string type_name() - { - return type_name::type>(); - } - - /// Empty string if the index > tuple size - template - inline typename std::enable_if::value, std::string>::type tuple_name() - { - return std::string{}; - } - - /// Recursively generate the tuple type name - template - inline typename std::enable_if < I::value, std::string>::type tuple_name() - { - std::string str = std::string(type_name::type>()) + ',' + tuple_name(); - if (str.back() == ',') - str.pop_back(); - return str; - } - - /// Print type name for tuples with 2 or more elements - template::value == object_category::tuple_value && type_count::value >= 2, - detail::enabler> = detail::dummy> - std::string type_name() - { - auto tname = std::string(1, '[') + tuple_name(); - tname.push_back(']'); - return tname; - } - - /// This one should not be used normally, since vector types print the internal type - template::value == object_category::vector_value, detail::enabler> = detail::dummy> - inline std::string type_name() - { - return type_name(); - } - - // Lexical cast - - /// Convert a flag into an integer value typically binary flags - inline std::int64_t to_flag_value(std::string val) - { - static const std::string trueString("true"); - static const std::string falseString("false"); - if (val == trueString) - { - return 1; - } - if (val == falseString) - { - return -1; - } - val = detail::to_lower(val); - std::int64_t ret; - if (val.size() == 1) - { - if (val[0] >= '1' && val[0] <= '9') - { - return (static_cast(val[0]) - '0'); - } - switch (val[0]) - { - case '0': - case 'f': - case 'n': - case '-': - ret = -1; - break; - case 't': - case 'y': - case '+': - ret = 1; - break; - default: - throw std::invalid_argument("unrecognized character"); - } - return ret; - } - if (val == trueString || val == "on" || val == "yes" || val == "enable") - { - ret = 1; - } - else if (val == falseString || val == "off" || val == "no" || val == "disable") - { - ret = -1; - } - else - { - ret = std::stoll(val); - } - return ret; - } - - /// Signed integers - template::value == object_category::integral_value, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - try - { - std::size_t n = 0; - std::int64_t output_ll = std::stoll(input, &n, 0); - output = static_cast(output_ll); - return n == input.size() && static_cast(output) == output_ll; - } - catch (const std::invalid_argument&) - { - return false; - } - catch (const std::out_of_range&) - { - return false; - } - } - - /// Unsigned integers - template::value == object_category::unsigned_integral, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - if (!input.empty() && input.front() == '-') - return false; // std::stoull happily converts negative values to junk without any errors. - - try - { - std::size_t n = 0; - std::uint64_t output_ll = std::stoull(input, &n, 0); - output = static_cast(output_ll); - return n == input.size() && static_cast(output) == output_ll; - } - catch (const std::invalid_argument&) - { - return false; - } - catch (const std::out_of_range&) - { - return false; - } - } - - /// Boolean values - template::value == object_category::boolean_value, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - try - { - auto out = to_flag_value(input); - output = (out > 0); - return true; - } - catch (const std::invalid_argument&) - { - return false; - } - catch (const std::out_of_range&) - { - // if the number is out of the range of a 64 bit value then it is still a number and for this purpose is still - // valid all we care about the sign - output = (input[0] != '-'); - return true; - } - } - - /// Floats - template::value == object_category::floating_point, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - try - { - std::size_t n = 0; - output = static_cast(std::stold(input, &n)); - return n == input.size(); - } - catch (const std::invalid_argument&) - { - return false; - } - catch (const std::out_of_range&) - { - return false; - } - } - - /// String and similar direct assignment - template::value == object_category::string_assignable, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - output = input; - return true; - } - - /// String and similar constructible and copy assignment - template< - typename T, - enable_if_t::value == object_category::string_constructible, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - output = T(input); - return true; - } - - /// Enumerations - template::value == object_category::enumeration, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - typename std::underlying_type::type val; - bool retval = detail::lexical_cast(input, val); - if (!retval) - { - return false; - } - output = static_cast(val); - return true; - } - - /// Assignable from double or int - template< - typename T, - enable_if_t::value == object_category::number_constructible, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - int val; - if (lexical_cast(input, val)) - { - output = T(val); - return true; - } - else - { - double dval; - if (lexical_cast(input, dval)) - { - output = T{ dval }; - return true; - } - } - return from_stream(input, output); - } - - /// Assignable from int - template< - typename T, - enable_if_t::value == object_category::integer_constructible, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - int val; - if (lexical_cast(input, val)) - { - output = T(val); - return true; - } - return from_stream(input, output); - } - - /// Assignable from double - template< - typename T, - enable_if_t::value == object_category::double_constructible, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - double val; - if (lexical_cast(input, val)) - { - output = T{ val }; - return true; - } - return from_stream(input, output); - } - - /// Non-string parsable by a stream - template::value == object_category::other, detail::enabler> = detail::dummy> - bool lexical_cast(const std::string& input, T& output) - { - static_assert(is_istreamable::value, - "option object type must have a lexical cast overload or streaming input operator(>>) defined, if it " - "is convertible from another type use the add_option(...) with XC being the known type"); - return from_stream(input, output); - } - - /// Assign a value through lexical cast operations - template< - typename T, - typename XC, - enable_if_t::value && (classify_object::value == object_category::string_assignable || - classify_object::value == object_category::string_constructible), - detail::enabler> = detail::dummy> - bool lexical_assign(const std::string& input, T& output) - { - return lexical_cast(input, output); - } - - /// Assign a value through lexical cast operations - template::value && classify_object::value != object_category::string_assignable && - classify_object::value != object_category::string_constructible, - detail::enabler> = detail::dummy> - bool lexical_assign(const std::string& input, T& output) - { - if (input.empty()) - { - output = T{}; - return true; - } - return lexical_cast(input, output); - } - - /// Assign a value converted from a string in lexical cast to the output value directly - template< - typename T, - typename XC, - enable_if_t::value && std::is_assignable::value, detail::enabler> = detail::dummy> - bool lexical_assign(const std::string& input, T& output) - { - XC val{}; - bool parse_result = (!input.empty()) ? lexical_cast(input, val) : true; - if (parse_result) - { - output = val; - } - return parse_result; - } - - /// Assign a value from a lexical cast through constructing a value and move assigning it - template::value && !std::is_assignable::value && - std::is_move_assignable::value, - detail::enabler> = detail::dummy> - bool lexical_assign(const std::string& input, T& output) - { - XC val{}; - bool parse_result = input.empty() ? true : lexical_cast(input, val); - if (parse_result) - { - output = T(val); // use () form of constructor to allow some implicit conversions - } - return parse_result; - } - /// Lexical conversion if there is only one element - template< - typename T, - typename XC, - enable_if_t::value && !is_tuple_like::value && !is_vector::value && !is_vector::value, - detail::enabler> = detail::dummy> - bool lexical_conversion(const std::vector& strings, T& output) - { - return lexical_assign(strings[0], output); - } - - /// Lexical conversion if there is only one element but the conversion type is for two call a two element constructor - template::value == 1 && type_count::value == 2, detail::enabler> = detail::dummy> - bool lexical_conversion(const std::vector& strings, T& output) - { - typename std::tuple_element<0, XC>::type v1; - typename std::tuple_element<1, XC>::type v2; - bool retval = lexical_assign(strings[0], v1); - if (strings.size() > 1) - { - retval = retval && lexical_assign(strings[1], v2); - } - if (retval) - { - output = T{ v1, v2 }; - } - return retval; - } - - /// Lexical conversion of a vector types - template::value == expected_max_vector_size && - expected_count::value == expected_max_vector_size && type_count::value == 1, - detail::enabler> = detail::dummy> - bool lexical_conversion(const std::vector& strings, T& output) - { - output.clear(); - output.reserve(strings.size()); - for (const auto& elem : strings) - { - output.emplace_back(); - bool retval = lexical_assign(elem, output.back()); - if (!retval) - { - return false; - } - } - return (!output.empty()); - } - - /// Lexical conversion of a vector types with type size of two - template::value == expected_max_vector_size && - expected_count::value == expected_max_vector_size && type_count::value == 2, - detail::enabler> = detail::dummy> - bool lexical_conversion(const std::vector& strings, T& output) - { - output.clear(); - for (std::size_t ii = 0; ii < strings.size(); ii += 2) - { - typename std::tuple_element<0, typename XC::value_type>::type v1; - typename std::tuple_element<1, typename XC::value_type>::type v2; - bool retval = lexical_assign(strings[ii], v1); - if (strings.size() > ii + 1) - { - retval = retval && lexical_assign(strings[ii + 1], v2); - } - if (retval) - { - output.emplace_back(v1, v2); - } - else - { - return false; - } - } - return (!output.empty()); - } - - /// Conversion to a vector type using a particular single type as the conversion type - template::value == expected_max_vector_size) && (expected_count::value == 1) && - (type_count::value == 1), - detail::enabler> = detail::dummy> - bool lexical_conversion(const std::vector& strings, T& output) - { - bool retval = true; - output.clear(); - output.reserve(strings.size()); - for (const auto& elem : strings) - { - output.emplace_back(); - retval = retval && lexical_assign(elem, output.back()); - } - return (!output.empty()) && retval; - } - // This one is last since it can call other lexical_conversion functions - /// Lexical conversion if there is only one element but the conversion type is a vector - template::value && !is_vector::value && is_vector::value, detail::enabler> = - detail::dummy> - bool lexical_conversion(const std::vector& strings, T& output) - { - if (strings.size() > 1 || (!strings.empty() && !(strings.front().empty()))) - { - XC val; - auto retval = lexical_conversion(strings, val); - output = T{ val }; - return retval; - } - output = T{}; - return true; - } - - /// function template for converting tuples if the static Index is greater than the tuple size - template - inline typename std::enable_if= type_count::value, bool>::type tuple_conversion(const std::vector&, - T&) - { - return true; - } - /// Tuple conversion operation - template - inline typename std::enable_if < - I::value, bool>::type tuple_conversion(const std::vector& strings, T& output) - { - bool retval = true; - if (strings.size() > I) - { - retval = retval && lexical_assign::type, - typename std::conditional::value, - typename std::tuple_element::type, - XC>::type>(strings[I], std::get(output)); - } - retval = retval && tuple_conversion(strings, output); - return retval; - } - - /// Conversion for tuples - template::value, detail::enabler> = detail::dummy> - bool lexical_conversion(const std::vector& strings, T& output) - { - static_assert( - !is_tuple_like::value || type_count::value == type_count::value, - "if the conversion type is defined as a tuple it must be the same size as the type you are converting to"); - return tuple_conversion(strings, output); - } - - /// Lexical conversion of a vector types with type_size >2 - template::value == expected_max_vector_size && - expected_count::value == expected_max_vector_size && (type_count::value > 2), - detail::enabler> = detail::dummy> - bool lexical_conversion(const std::vector& strings, T& output) - { - bool retval = true; - output.clear(); - std::vector temp; - std::size_t ii = 0; - std::size_t icount = 0; - std::size_t xcm = type_count::value; - while (ii < strings.size()) - { - temp.push_back(strings[ii]); - ++ii; - ++icount; - if (icount == xcm || temp.back().empty()) - { - if (static_cast(xcm) == expected_max_vector_size) - { - temp.pop_back(); - } - output.emplace_back(); - retval = retval && lexical_conversion(temp, output.back()); - temp.clear(); - if (!retval) - { - return false; - } - icount = 0; - } - } - return retval; - } - /// Sum a vector of flag representations - /// The flag vector produces a series of strings in a vector, simple true is represented by a "1", simple false is - /// by - /// "-1" an if numbers are passed by some fashion they are captured as well so the function just checks for the most - /// common true and false strings then uses stoll to convert the rest for summing - template::value && std::is_unsigned::value, detail::enabler> = detail::dummy> - void sum_flag_vector(const std::vector& flags, T& output) - { - std::int64_t count{ 0 }; - for (auto& flag : flags) - { - count += detail::to_flag_value(flag); - } - output = (count > 0) ? static_cast(count) : T{ 0 }; - } - - /// Sum a vector of flag representations - /// The flag vector produces a series of strings in a vector, simple true is represented by a "1", simple false is - /// by - /// "-1" an if numbers are passed by some fashion they are captured as well so the function just checks for the most - /// common true and false strings then uses stoll to convert the rest for summing - template::value && std::is_signed::value, detail::enabler> = detail::dummy> - void sum_flag_vector(const std::vector& flags, T& output) - { - std::int64_t count{ 0 }; - for (auto& flag : flags) - { - count += detail::to_flag_value(flag); - } - output = static_cast(count); - } - - } // namespace detail -} // namespace CLI - -// From Split.hpp: - -namespace CLI -{ - namespace detail - { - // Returns false if not a short option. Otherwise, sets opt name and rest and returns true - inline bool split_short(const std::string& current, std::string& name, std::string& rest) - { - if (current.size() > 1 && current[0] == '-' && valid_first_char(current[1])) - { - name = current.substr(1, 1); - rest = current.substr(2); - return true; - } - return false; - } - - // Returns false if not a long option. Otherwise, sets opt name and other side of = and returns true - inline bool split_long(const std::string& current, std::string& name, std::string& value) - { - if (current.size() > 2 && current.substr(0, 2) == "--" && valid_first_char(current[2])) - { - auto loc = current.find_first_of('='); - if (loc != std::string::npos) - { - name = current.substr(2, loc - 2); - value = current.substr(loc + 1); - } - else - { - name = current.substr(2); - value = ""; - } - return true; - } - return false; - } - - // Returns false if not a windows style option. Otherwise, sets opt name and value and returns true - inline bool split_windows_style(const std::string& current, std::string& name, std::string& value) - { - if (current.size() > 1 && current[0] == '/' && valid_first_char(current[1])) - { - auto loc = current.find_first_of(':'); - if (loc != std::string::npos) - { - name = current.substr(1, loc - 1); - value = current.substr(loc + 1); - } - else - { - name = current.substr(1); - value = ""; - } - return true; - } - return false; - } - - // Splits a string into multiple long and short names - inline std::vector split_names(std::string current) - { - std::vector output; - std::size_t val; - while ((val = current.find(",")) != std::string::npos) - { - output.push_back(trim_copy(current.substr(0, val))); - current = current.substr(val + 1); - } - output.push_back(trim_copy(current)); - return output; - } - - /// extract default flag values either {def} or starting with a ! - inline std::vector> get_default_flag_values(const std::string& str) - { - std::vector flags = split_names(str); - flags.erase(std::remove_if(flags.begin(), - flags.end(), - [](const std::string& name) { - return ((name.empty()) || (!(((name.find_first_of('{') != std::string::npos) && - (name.back() == '}')) || - (name[0] == '!')))); - }), - flags.end()); - std::vector> output; - output.reserve(flags.size()); - for (auto& flag : flags) - { - auto def_start = flag.find_first_of('{'); - std::string defval = "false"; - if ((def_start != std::string::npos) && (flag.back() == '}')) - { - defval = flag.substr(def_start + 1); - defval.pop_back(); - flag.erase(def_start, std::string::npos); - } - flag.erase(0, flag.find_first_not_of("-!")); - output.emplace_back(flag, defval); - } - return output; - } - - /// Get a vector of short names, one of long names, and a single name - inline std::tuple, std::vector, std::string> - get_names(const std::vector& input) - { - std::vector short_names; - std::vector long_names; - std::string pos_name; - - for (std::string name : input) - { - if (name.length() == 0) - { - continue; - } - if (name.length() > 1 && name[0] == '-' && name[1] != '-') - { - if (name.length() == 2 && valid_first_char(name[1])) - short_names.emplace_back(1, name[1]); - else - throw BadNameString::OneCharName(name); - } - else if (name.length() > 2 && name.substr(0, 2) == "--") - { - name = name.substr(2); - if (valid_name_string(name)) - long_names.push_back(name); - else - throw BadNameString::BadLongName(name); - } - else if (name == "-" || name == "--") - { - throw BadNameString::DashesOnly(name); - } - else - { - if (pos_name.length() > 0) - throw BadNameString::MultiPositionalNames(name); - pos_name = name; - } - } - - return std::tuple, std::vector, std::string>( - short_names, long_names, pos_name); - } - - } // namespace detail -} // namespace CLI - -// From ConfigFwd.hpp: - -namespace CLI -{ - class App; - - /// Holds values to load into Options - struct ConfigItem - { - /// This is the list of parents - std::vector parents{}; - - /// This is the name - std::string name{}; - - /// Listing of inputs - std::vector inputs{}; - - /// The list of parents and name joined by "." - std::string fullname() const - { - std::vector tmp = parents; - tmp.emplace_back(name); - return detail::join(tmp, "."); - } - }; - - /// This class provides a converter for configuration files. - class Config - { - protected: - std::vector items{}; - - public: - /// Convert an app into a configuration - virtual std::string to_config(const App*, bool, bool, std::string) const = 0; - - /// Convert a configuration into an app - virtual std::vector from_config(std::istream&) const = 0; - - /// Get a flag value - virtual std::string to_flag(const ConfigItem& item) const - { - if (item.inputs.size() == 1) - { - return item.inputs.at(0); - } - throw ConversionError::TooManyInputsFlag(item.fullname()); - } - - /// Parse a config file, throw an error (ParseError:ConfigParseError or FileError) on failure - std::vector from_file(const std::string& name) - { - std::ifstream input{ name }; - if (!input.good()) - throw FileError::Missing(name); - - return from_config(input); - } - - /// Virtual destructor - virtual ~Config() = default; - }; - - /// This converter works with INI/TOML files; to write proper TOML files use ConfigTOML - class ConfigBase : public Config - { - protected: - /// the character used for comments - char commentChar = ';'; - /// the character used to start an array '\0' is a default to not use - char arrayStart = '\0'; - /// the character used to end an array '\0' is a default to not use - char arrayEnd = '\0'; - /// the character used to separate elements in an array - char arraySeparator = ' '; - /// the character used separate the name from the value - char valueDelimiter = '='; - - public: - std::string - to_config(const App* /*app*/, bool default_also, bool write_description, std::string prefix) const override; - - std::vector from_config(std::istream& input) const override; - /// Specify the configuration for comment characters - ConfigBase* comment(char cchar) - { - commentChar = cchar; - return this; - } - /// Specify the start and end characters for an array - ConfigBase* arrayBounds(char aStart, char aEnd) - { - arrayStart = aStart; - arrayEnd = aEnd; - return this; - } - /// Specify the delimiter character for an array - ConfigBase* arrayDelimiter(char aSep) - { - arraySeparator = aSep; - return this; - } - /// Specify the delimiter between a name and value - ConfigBase* valueSeparator(char vSep) - { - valueDelimiter = vSep; - return this; - } - }; - - /// the default Config is the INI file format - using ConfigINI = ConfigBase; - - /// ConfigTOML generates a TOML compliant output - class ConfigTOML : public ConfigINI - { - public: - ConfigTOML() - { - commentChar = '#'; - arrayStart = '['; - arrayEnd = ']'; - arraySeparator = ','; - valueDelimiter = '='; - } - }; -} // namespace CLI - -// From Validators.hpp: - -namespace CLI -{ - class Option; - - /// @defgroup validator_group Validators - - /// @brief Some validators that are provided - /// - /// These are simple `std::string(const std::string&)` validators that are useful. They return - /// a string if the validation fails. A custom struct is provided, as well, with the same user - /// semantics, but with the ability to provide a new type name. - /// @{ - - /// - class Validator - { - protected: - /// This is the description function, if empty the description_ will be used - std::function desc_function_{ []() { return std::string{}; } }; - - /// This is the base function that is to be called. - /// Returns a string error message if validation fails. - std::function func_{ [](std::string&) { return std::string{}; } }; - /// The name for search purposes of the Validator - std::string name_{}; - /// A Validator will only apply to an indexed value (-1 is all elements) - int application_index_ = -1; - /// Enable for Validator to allow it to be disabled if need be - bool active_{ true }; - /// specify that a validator should not modify the input - bool non_modifying_{ false }; - - public: - Validator() = default; - /// Construct a Validator with just the description string - explicit Validator(std::string validator_desc) : - desc_function_([validator_desc]() { return validator_desc; }) {} - /// Construct Validator from basic information - Validator(std::function op, std::string validator_desc, std::string validator_name = "") : - desc_function_([validator_desc]() { return validator_desc; }), - func_(std::move(op)), - name_(std::move(validator_name)) {} - /// Set the Validator operation function - Validator& operation(std::function op) - { - func_ = std::move(op); - return *this; - } - /// This is the required operator for a Validator - provided to help - /// users (CLI11 uses the member `func` directly) - std::string operator()(std::string& str) const - { - std::string retstring; - if (active_) - { - if (non_modifying_) - { - std::string value = str; - retstring = func_(value); - } - else - { - retstring = func_(str); - } - } - return retstring; - } - - /// This is the required operator for a Validator - provided to help - /// users (CLI11 uses the member `func` directly) - std::string operator()(const std::string& str) const - { - std::string value = str; - return (active_) ? func_(value) : std::string{}; - } - - /// Specify the type string - Validator& description(std::string validator_desc) - { - desc_function_ = [validator_desc]() { return validator_desc; }; - return *this; - } - /// Specify the type string - Validator description(std::string validator_desc) const - { - Validator newval(*this); - newval.desc_function_ = [validator_desc]() { return validator_desc; }; - return newval; - } - /// Generate type description information for the Validator - std::string get_description() const - { - if (active_) - { - return desc_function_(); - } - return std::string{}; - } - /// Specify the type string - Validator& name(std::string validator_name) - { - name_ = std::move(validator_name); - return *this; - } - /// Specify the type string - Validator name(std::string validator_name) const - { - Validator newval(*this); - newval.name_ = std::move(validator_name); - return newval; - } - /// Get the name of the Validator - const std::string& get_name() const { return name_; } - /// Specify whether the Validator is active or not - Validator& active(bool active_val = true) - { - active_ = active_val; - return *this; - } - /// Specify whether the Validator is active or not - Validator active(bool active_val = true) const - { - Validator newval(*this); - newval.active_ = active_val; - return newval; - } - - /// Specify whether the Validator can be modifying or not - Validator& non_modifying(bool no_modify = true) - { - non_modifying_ = no_modify; - return *this; - } - /// Specify the application index of a validator - Validator& application_index(int app_index) - { - application_index_ = app_index; - return *this; - } - /// Specify the application index of a validator - Validator application_index(int app_index) const - { - Validator newval(*this); - newval.application_index_ = app_index; - return newval; - } - /// Get the current value of the application index - int get_application_index() const { return application_index_; } - /// Get a boolean if the validator is active - bool get_active() const { return active_; } - - /// Get a boolean if the validator is allowed to modify the input returns true if it can modify the input - bool get_modifying() const { return !non_modifying_; } - - /// Combining validators is a new validator. Type comes from left validator if function, otherwise only set if the - /// same. - Validator operator&(const Validator& other) const - { - Validator newval; - - newval._merge_description(*this, other, " AND "); - - // Give references (will make a copy in lambda function) - const std::function& f1 = func_; - const std::function& f2 = other.func_; - - newval.func_ = [f1, f2](std::string& input) { - std::string s1 = f1(input); - std::string s2 = f2(input); - if (!s1.empty() && !s2.empty()) - return std::string("(") + s1 + ") AND (" + s2 + ")"; - else - return s1 + s2; - }; - - newval.active_ = (active_ & other.active_); - newval.application_index_ = application_index_; - return newval; - } - - /// Combining validators is a new validator. Type comes from left validator if function, otherwise only set if the - /// same. - Validator operator|(const Validator& other) const - { - Validator newval; - - newval._merge_description(*this, other, " OR "); - - // Give references (will make a copy in lambda function) - const std::function& f1 = func_; - const std::function& f2 = other.func_; - - newval.func_ = [f1, f2](std::string& input) { - std::string s1 = f1(input); - std::string s2 = f2(input); - if (s1.empty() || s2.empty()) - return std::string(); - - return std::string("(") + s1 + ") OR (" + s2 + ")"; - }; - newval.active_ = (active_ & other.active_); - newval.application_index_ = application_index_; - return newval; - } - - /// Create a validator that fails when a given validator succeeds - Validator operator!() const - { - Validator newval; - const std::function& dfunc1 = desc_function_; - newval.desc_function_ = [dfunc1]() { - auto str = dfunc1(); - return (!str.empty()) ? std::string("NOT ") + str : std::string{}; - }; - // Give references (will make a copy in lambda function) - const std::function& f1 = func_; - - newval.func_ = [f1, dfunc1](std::string& test) -> std::string { - std::string s1 = f1(test); - if (s1.empty()) - { - return std::string("check ") + dfunc1() + " succeeded improperly"; - } - return std::string{}; - }; - newval.active_ = active_; - newval.application_index_ = application_index_; - return newval; - } - - private: - void _merge_description(const Validator& val1, const Validator& val2, const std::string& merger) - { - const std::function& dfunc1 = val1.desc_function_; - const std::function& dfunc2 = val2.desc_function_; - - desc_function_ = [=]() { - std::string f1 = dfunc1(); - std::string f2 = dfunc2(); - if ((f1.empty()) || (f2.empty())) - { - return f1 + f2; - } - return std::string(1, '(') + f1 + ')' + merger + '(' + f2 + ')'; - }; - } - }; // namespace CLI - - /// Class wrapping some of the accessors of Validator - class CustomValidator : public Validator - { - public: - }; - // The implementation of the built in validators is using the Validator class; - // the user is only expected to use the const (static) versions (since there's no setup). - // Therefore, this is in detail. - namespace detail - { - /// CLI enumeration of different file types - enum class path_type - { - nonexistent, - file, - directory - }; - -#if defined CLI11_HAS_FILESYSTEM && CLI11_HAS_FILESYSTEM > 0 - /// get the type of the path from a file name - inline path_type check_path(const char* file) noexcept - { - std::error_code ec; - auto stat = std::filesystem::status(file, ec); - if (ec) - { - return path_type::nonexistent; - } - switch (stat.type()) - { - case std::filesystem::file_type::none: - case std::filesystem::file_type::not_found: - return path_type::nonexistent; - case std::filesystem::file_type::directory: - return path_type::directory; - case std::filesystem::file_type::symlink: - case std::filesystem::file_type::block: - case std::filesystem::file_type::character: - case std::filesystem::file_type::fifo: - case std::filesystem::file_type::socket: - case std::filesystem::file_type::regular: - case std::filesystem::file_type::unknown: - default: - return path_type::file; - } - } -#else - /// get the type of the path from a file name - inline path_type check_path(const char* file) noexcept - { -#if defined(_MSC_VER) - struct __stat64 buffer; - if (_stat64(file, &buffer) == 0) - { - return ((buffer.st_mode & S_IFDIR) != 0) ? path_type::directory : path_type::file; - } -#else - struct stat buffer; - if (stat(file, &buffer) == 0) - { - return ((buffer.st_mode & S_IFDIR) != 0) ? path_type::directory : path_type::file; - } -#endif - return path_type::nonexistent; - } -#endif - /// Check for an existing file (returns error message if check fails) - class ExistingFileValidator : public Validator - { - public: - ExistingFileValidator() : - Validator("FILE") - { - func_ = [](std::string& filename) { - auto path_result = check_path(filename.c_str()); - if (path_result == path_type::nonexistent) - { - return "File does not exist: " + filename; - } - if (path_result == path_type::directory) - { - return "File is actually a directory: " + filename; - } - return std::string(); - }; - } - }; - - /// Check for an existing directory (returns error message if check fails) - class ExistingDirectoryValidator : public Validator - { - public: - ExistingDirectoryValidator() : - Validator("DIR") - { - func_ = [](std::string& filename) { - auto path_result = check_path(filename.c_str()); - if (path_result == path_type::nonexistent) - { - return "Directory does not exist: " + filename; - } - if (path_result == path_type::file) - { - return "Directory is actually a file: " + filename; - } - return std::string(); - }; - } - }; - - /// Check for an existing path - class ExistingPathValidator : public Validator - { - public: - ExistingPathValidator() : - Validator("PATH(existing)") - { - func_ = [](std::string& filename) { - auto path_result = check_path(filename.c_str()); - if (path_result == path_type::nonexistent) - { - return "Path does not exist: " + filename; - } - return std::string(); - }; - } - }; - - /// Check for an non-existing path - class NonexistentPathValidator : public Validator - { - public: - NonexistentPathValidator() : - Validator("PATH(non-existing)") - { - func_ = [](std::string& filename) { - auto path_result = check_path(filename.c_str()); - if (path_result != path_type::nonexistent) - { - return "Path already exists: " + filename; - } - return std::string(); - }; - } - }; - - /// Validate the given string is a legal ipv4 address - class IPV4Validator : public Validator - { - public: - IPV4Validator() : - Validator("IPV4") - { - func_ = [](std::string& ip_addr) { - auto result = CLI::detail::split(ip_addr, '.'); - if (result.size() != 4) - { - return std::string("Invalid IPV4 address must have four parts (") + ip_addr + ')'; - } - int num; - for (const auto& var : result) - { - bool retval = detail::lexical_cast(var, num); - if (!retval) - { - return std::string("Failed parsing number (") + var + ')'; - } - if (num < 0 || num > 255) - { - return std::string("Each IP number must be between 0 and 255 ") + var; - } - } - return std::string(); - }; - } - }; - - /// Validate the argument is a number and greater than 0 - class PositiveNumber : public Validator - { - public: - PositiveNumber() : - Validator("POSITIVE") - { - func_ = [](std::string& number_str) { - double number; - if (!detail::lexical_cast(number_str, number)) - { - return std::string("Failed parsing number: (") + number_str + ')'; - } - if (number <= 0) - { - return std::string("Number less or equal to 0: (") + number_str + ')'; - } - return std::string(); - }; - } - }; - /// Validate the argument is a number and greater than or equal to 0 - class NonNegativeNumber : public Validator - { - public: - NonNegativeNumber() : - Validator("NONNEGATIVE") - { - func_ = [](std::string& number_str) { - double number; - if (!detail::lexical_cast(number_str, number)) - { - return std::string("Failed parsing number: (") + number_str + ')'; - } - if (number < 0) - { - return std::string("Number less than 0: (") + number_str + ')'; - } - return std::string(); - }; - } - }; - - /// Validate the argument is a number - class Number : public Validator - { - public: - Number() : - Validator("NUMBER") - { - func_ = [](std::string& number_str) { - double number; - if (!detail::lexical_cast(number_str, number)) - { - return std::string("Failed parsing as a number (") + number_str + ')'; - } - return std::string(); - }; - } - }; - - } // namespace detail - - // Static is not needed here, because global const implies static. - - /// Check for existing file (returns error message if check fails) - const detail::ExistingFileValidator ExistingFile; - - /// Check for an existing directory (returns error message if check fails) - const detail::ExistingDirectoryValidator ExistingDirectory; - - /// Check for an existing path - const detail::ExistingPathValidator ExistingPath; - - /// Check for an non-existing path - const detail::NonexistentPathValidator NonexistentPath; - - /// Check for an IP4 address - const detail::IPV4Validator ValidIPV4; - - /// Check for a positive number - const detail::PositiveNumber PositiveNumber; - - /// Check for a non-negative number - const detail::NonNegativeNumber NonNegativeNumber; - - /// Check for a number - const detail::Number Number; - - /// Produce a range (factory). Min and max are inclusive. - class Range : public Validator - { - public: - /// This produces a range with min and max inclusive. - /// - /// Note that the constructor is templated, but the struct is not, so C++17 is not - /// needed to provide nice syntax for Range(a,b). - template - Range(T min, T max) - { - std::stringstream out; - out << detail::type_name() << " in [" << min << " - " << max << "]"; - description(out.str()); - - func_ = [min, max](std::string& input) { - T val; - bool converted = detail::lexical_cast(input, val); - if ((!converted) || (val < min || val > max)) - return std::string("Value ") + input + " not in range " + std::to_string(min) + " to " + - std::to_string(max); - - return std::string(); - }; - } - - /// Range of one value is 0 to value - template - explicit Range(T max) : - Range(static_cast(0), max) - { - } - }; - - /// Produce a bounded range (factory). Min and max are inclusive. - class Bound : public Validator - { - public: - /// This bounds a value with min and max inclusive. - /// - /// Note that the constructor is templated, but the struct is not, so C++17 is not - /// needed to provide nice syntax for Range(a,b). - template - Bound(T min, T max) - { - std::stringstream out; - out << detail::type_name() << " bounded to [" << min << " - " << max << "]"; - description(out.str()); - - func_ = [min, max](std::string& input) { - T val; - bool converted = detail::lexical_cast(input, val); - if (!converted) - { - return std::string("Value ") + input + " could not be converted"; - } - if (val < min) - input = detail::to_string(min); - else if (val > max) - input = detail::to_string(max); - - return std::string{}; - }; - } - - /// Range of one value is 0 to value - template - explicit Bound(T max) : - Bound(static_cast(0), max) - { - } - }; - - namespace detail - { - template::type>::value, detail::enabler> = detail::dummy> - auto smart_deref(T value) -> decltype(*value) - { - return *value; - } - - template< - typename T, - enable_if_t::type>::value, detail::enabler> = detail::dummy> - typename std::remove_reference::type& smart_deref(T& value) - { - return value; - } - /// Generate a string representation of a set - template - std::string generate_set(const T& set) - { - using element_t = typename detail::element_type::type; - using iteration_type_t = typename detail::pair_adaptor::value_type; // the type of the object pair - std::string out(1, '{'); - out.append(detail::join( - detail::smart_deref(set), - [](const iteration_type_t& v) { return detail::pair_adaptor::first(v); }, - ",")); - out.push_back('}'); - return out; - } - - /// Generate a string representation of a map - template - std::string generate_map(const T& map, bool key_only = false) - { - using element_t = typename detail::element_type::type; - using iteration_type_t = typename detail::pair_adaptor::value_type; // the type of the object pair - std::string out(1, '{'); - out.append(detail::join( - detail::smart_deref(map), - [key_only](const iteration_type_t& v) { - std::string res{ detail::to_string(detail::pair_adaptor::first(v)) }; - - if (!key_only) - { - res.append("->"); - res += detail::to_string(detail::pair_adaptor::second(v)); - } - return res; - }, - ",")); - out.push_back('}'); - return out; - } - - template - struct has_find - { - template - static auto test(int) -> decltype(std::declval().find(std::declval()), std::true_type()); - template - static auto test(...) -> decltype(std::false_type()); - - static const auto value = decltype(test(0))::value; - using type = std::integral_constant; - }; - - /// A search function - template::value, detail::enabler> = detail::dummy> - auto search(const T& set, const V& val) -> std::pair - { - using element_t = typename detail::element_type::type; - auto& setref = detail::smart_deref(set); - auto it = std::find_if(std::begin(setref), std::end(setref), [&val](decltype(*std::begin(setref)) v) { - return (detail::pair_adaptor::first(v) == val); - }); - return { (it != std::end(setref)), it }; - } - - /// A search function that uses the built in find function - template::value, detail::enabler> = detail::dummy> - auto search(const T& set, const V& val) -> std::pair - { - auto& setref = detail::smart_deref(set); - auto it = setref.find(val); - return { (it != std::end(setref)), it }; - } - - /// A search function with a filter function - template - auto search(const T& set, const V& val, const std::function& filter_function) - -> std::pair - { - using element_t = typename detail::element_type::type; - // do the potentially faster first search - auto res = search(set, val); - if ((res.first) || (!(filter_function))) - { - return res; - } - // if we haven't found it do the longer linear search with all the element translations - auto& setref = detail::smart_deref(set); - auto it = std::find_if(std::begin(setref), std::end(setref), [&](decltype(*std::begin(setref)) v) { - V a{ detail::pair_adaptor::first(v) }; - a = filter_function(a); - return (a == val); - }); - return { (it != std::end(setref)), it }; - } - - // the following suggestion was made by Nikita Ofitserov(@himikof) - // done in templates to prevent compiler warnings on negation of unsigned numbers - - /// Do a check for overflow on signed numbers - template - inline typename std::enable_if::value, T>::type overflowCheck(const T& a, const T& b) - { - if ((a > 0) == (b > 0)) - { - return ((std::numeric_limits::max)() / (std::abs)(a) < (std::abs)(b)); - } - else - { - return ((std::numeric_limits::min)() / (std::abs)(a) > -(std::abs)(b)); - } - } - /// Do a check for overflow on unsigned numbers - template - inline typename std::enable_if::value, T>::type overflowCheck(const T& a, const T& b) - { - return ((std::numeric_limits::max)() / a < b); - } - - /// Performs a *= b; if it doesn't cause integer overflow. Returns false otherwise. - template - typename std::enable_if::value, bool>::type checked_multiply(T& a, T b) - { - if (a == 0 || b == 0 || a == 1 || b == 1) - { - a *= b; - return true; - } - if (a == (std::numeric_limits::min)() || b == (std::numeric_limits::min)()) - { - return false; - } - if (overflowCheck(a, b)) - { - return false; - } - a *= b; - return true; - } - - /// Performs a *= b; if it doesn't equal infinity. Returns false otherwise. - template - typename std::enable_if::value, bool>::type checked_multiply(T& a, T b) - { - T c = a * b; - if (std::isinf(c) && !std::isinf(a) && !std::isinf(b)) - { - return false; - } - a = c; - return true; - } - - } // namespace detail - /// Verify items are in a set - class IsMember : public Validator - { - public: - using filter_fn_t = std::function; - - /// This allows in-place construction using an initializer list - template - IsMember(std::initializer_list values, Args&&... args) : - IsMember(std::vector(values), std::forward(args)...) - { - } - - /// This checks to see if an item is in a set (empty function) - template - explicit IsMember(T&& set) : - IsMember(std::forward(set), nullptr) - { - } - - /// This checks to see if an item is in a set: pointer or copy version. You can pass in a function that will filter - /// both sides of the comparison before computing the comparison. - template - explicit IsMember(T set, F filter_function) - { - // Get the type of the contained item - requires a container have ::value_type - // if the type does not have first_type and second_type, these are both value_type - using element_t = typename detail::element_type::type; // Removes (smart) pointers if needed - using item_t = typename detail::pair_adaptor::first_type; // Is value_type if not a map - - using local_item_t = typename IsMemberType::type; // This will convert bad types to good ones - // (const char * to std::string) - - // Make a local copy of the filter function, using a std::function if not one already - std::function filter_fn = filter_function; - - // This is the type name for help, it will take the current version of the set contents - desc_function_ = [set]() { return detail::generate_set(detail::smart_deref(set)); }; - - // This is the function that validates - // It stores a copy of the set pointer-like, so shared_ptr will stay alive - func_ = [set, filter_fn](std::string& input) { - local_item_t b; - if (!detail::lexical_cast(input, b)) - { - throw ValidationError(input); // name is added later - } - if (filter_fn) - { - b = filter_fn(b); - } - auto res = detail::search(set, b, filter_fn); - if (res.first) - { - // Make sure the version in the input string is identical to the one in the set - if (filter_fn) - { - input = detail::value_string(detail::pair_adaptor::first(*(res.second))); - } - - // Return empty error string (success) - return std::string{}; - } - - // If you reach this point, the result was not found - std::string out(" not in "); - out += detail::generate_set(detail::smart_deref(set)); - return out; - }; - } - - /// You can pass in as many filter functions as you like, they nest (string only currently) - template - IsMember(T&& set, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args&&... other) : - IsMember( - std::forward(set), - [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); }, - other...) - { - } - }; - - /// definition of the default transformation object - template - using TransformPairs = std::vector>; - - /// Translate named items to other or a value set - class Transformer : public Validator - { - public: - using filter_fn_t = std::function; - - /// This allows in-place construction - template - Transformer(std::initializer_list> values, Args&&... args) : - Transformer(TransformPairs(values), std::forward(args)...) - { - } - - /// direct map of std::string to std::string - template - explicit Transformer(T&& mapping) : - Transformer(std::forward(mapping), nullptr) - { - } - - /// This checks to see if an item is in a set: pointer or copy version. You can pass in a function that will filter - /// both sides of the comparison before computing the comparison. - template - explicit Transformer(T mapping, F filter_function) - { - static_assert(detail::pair_adaptor::type>::value, - "mapping must produce value pairs"); - // Get the type of the contained item - requires a container have ::value_type - // if the type does not have first_type and second_type, these are both value_type - using element_t = typename detail::element_type::type; // Removes (smart) pointers if needed - using item_t = typename detail::pair_adaptor::first_type; // Is value_type if not a map - using local_item_t = typename IsMemberType::type; // Will convert bad types to good ones - // (const char * to std::string) - - // Make a local copy of the filter function, using a std::function if not one already - std::function filter_fn = filter_function; - - // This is the type name for help, it will take the current version of the set contents - desc_function_ = [mapping]() { return detail::generate_map(detail::smart_deref(mapping)); }; - - func_ = [mapping, filter_fn](std::string& input) { - local_item_t b; - if (!detail::lexical_cast(input, b)) - { - return std::string(); - // there is no possible way we can match anything in the mapping if we can't convert so just return - } - if (filter_fn) - { - b = filter_fn(b); - } - auto res = detail::search(mapping, b, filter_fn); - if (res.first) - { - input = detail::value_string(detail::pair_adaptor::second(*res.second)); - } - return std::string{}; - }; - } - - /// You can pass in as many filter functions as you like, they nest - template - Transformer(T&& mapping, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args&&... other) : - Transformer( - std::forward(mapping), - [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); }, - other...) - { - } - }; - - /// translate named items to other or a value set - class CheckedTransformer : public Validator - { - public: - using filter_fn_t = std::function; - - /// This allows in-place construction - template - CheckedTransformer(std::initializer_list> values, Args&&... args) : - CheckedTransformer(TransformPairs(values), std::forward(args)...) - { - } - - /// direct map of std::string to std::string - template - explicit CheckedTransformer(T mapping) : - CheckedTransformer(std::move(mapping), nullptr) - { - } - - /// This checks to see if an item is in a set: pointer or copy version. You can pass in a function that will filter - /// both sides of the comparison before computing the comparison. - template - explicit CheckedTransformer(T mapping, F filter_function) - { - static_assert(detail::pair_adaptor::type>::value, - "mapping must produce value pairs"); - // Get the type of the contained item - requires a container have ::value_type - // if the type does not have first_type and second_type, these are both value_type - using element_t = typename detail::element_type::type; // Removes (smart) pointers if needed - using item_t = typename detail::pair_adaptor::first_type; // Is value_type if not a map - using local_item_t = typename IsMemberType::type; // Will convert bad types to good ones - // (const char * to std::string) - using iteration_type_t = typename detail::pair_adaptor::value_type; // the type of the object pair - - // Make a local copy of the filter function, using a std::function if not one already - std::function filter_fn = filter_function; - - auto tfunc = [mapping]() { - std::string out("value in "); - out += detail::generate_map(detail::smart_deref(mapping)) + " OR {"; - out += detail::join( - detail::smart_deref(mapping), - [](const iteration_type_t& v) { return detail::to_string(detail::pair_adaptor::second(v)); }, - ","); - out.push_back('}'); - return out; - }; - - desc_function_ = tfunc; - - func_ = [mapping, tfunc, filter_fn](std::string& input) { - local_item_t b; - bool converted = detail::lexical_cast(input, b); - if (converted) - { - if (filter_fn) - { - b = filter_fn(b); - } - auto res = detail::search(mapping, b, filter_fn); - if (res.first) - { - input = detail::value_string(detail::pair_adaptor::second(*res.second)); - return std::string{}; - } - } - for (const auto& v : detail::smart_deref(mapping)) - { - auto output_string = detail::value_string(detail::pair_adaptor::second(v)); - if (output_string == input) - { - return std::string(); - } - } - - return "Check " + input + " " + tfunc() + " FAILED"; - }; - } - - /// You can pass in as many filter functions as you like, they nest - template - CheckedTransformer(T&& mapping, filter_fn_t filter_fn_1, filter_fn_t filter_fn_2, Args&&... other) : - CheckedTransformer( - std::forward(mapping), - [filter_fn_1, filter_fn_2](std::string a) { return filter_fn_2(filter_fn_1(a)); }, - other...) - { - } - }; - - /// Helper function to allow ignore_case to be passed to IsMember or Transform - inline std::string ignore_case(std::string item) { return detail::to_lower(item); } - - /// Helper function to allow ignore_underscore to be passed to IsMember or Transform - inline std::string ignore_underscore(std::string item) { return detail::remove_underscore(item); } - - /// Helper function to allow checks to ignore spaces to be passed to IsMember or Transform - inline std::string ignore_space(std::string item) - { - item.erase(std::remove(std::begin(item), std::end(item), ' '), std::end(item)); - item.erase(std::remove(std::begin(item), std::end(item), '\t'), std::end(item)); - return item; - } - - /// Multiply a number by a factor using given mapping. - /// Can be used to write transforms for SIZE or DURATION inputs. - /// - /// Example: - /// With mapping = `{"b"->1, "kb"->1024, "mb"->1024*1024}` - /// one can recognize inputs like "100", "12kb", "100 MB", - /// that will be automatically transformed to 100, 14448, 104857600. - /// - /// Output number type matches the type in the provided mapping. - /// Therefore, if it is required to interpret real inputs like "0.42 s", - /// the mapping should be of a type or . - class AsNumberWithUnit : public Validator - { - public: - /// Adjust AsNumberWithUnit behavior. - /// CASE_SENSITIVE/CASE_INSENSITIVE controls how units are matched. - /// UNIT_OPTIONAL/UNIT_REQUIRED throws ValidationError - /// if UNIT_REQUIRED is set and unit literal is not found. - enum Options - { - CASE_SENSITIVE = 0, - CASE_INSENSITIVE = 1, - UNIT_OPTIONAL = 0, - UNIT_REQUIRED = 2, - DEFAULT = CASE_INSENSITIVE | UNIT_OPTIONAL - }; - - template - explicit AsNumberWithUnit(std::map mapping, - Options opts = DEFAULT, - const std::string& unit_name = "UNIT") - { - description(generate_description(unit_name, opts)); - validate_mapping(mapping, opts); - - // transform function - func_ = [mapping, opts](std::string& input) -> std::string { - Number num; - - detail::rtrim(input); - if (input.empty()) - { - throw ValidationError("Input is empty"); - } - - // Find split position between number and prefix - auto unit_begin = input.end(); - while (unit_begin > input.begin() && std::isalpha(*(unit_begin - 1), std::locale())) - { - --unit_begin; - } - - std::string unit{ unit_begin, input.end() }; - input.resize(static_cast(std::distance(input.begin(), unit_begin))); - detail::trim(input); - - if (opts & UNIT_REQUIRED && unit.empty()) - { - throw ValidationError("Missing mandatory unit"); - } - if (opts & CASE_INSENSITIVE) - { - unit = detail::to_lower(unit); - } - - bool converted = detail::lexical_cast(input, num); - if (!converted) - { - throw ValidationError(std::string("Value ") + input + " could not be converted to " + - detail::type_name()); - } - - if (unit.empty()) - { - // No need to modify input if no unit passed - return {}; - } - - // find corresponding factor - auto it = mapping.find(unit); - if (it == mapping.end()) - { - throw ValidationError(unit + - " unit not recognized. " - "Allowed values: " + - detail::generate_map(mapping, true)); - } - - // perform safe multiplication - bool ok = detail::checked_multiply(num, it->second); - if (!ok) - { - throw ValidationError(detail::to_string(num) + " multiplied by " + unit + - " factor would cause number overflow. Use smaller value."); - } - input = detail::to_string(num); - - return {}; - }; - } - - private: - /// Check that mapping contains valid units. - /// Update mapping for CASE_INSENSITIVE mode. - template - static void validate_mapping(std::map& mapping, Options opts) - { - for (auto& kv : mapping) - { - if (kv.first.empty()) - { - throw ValidationError("Unit must not be empty."); - } - if (!detail::isalpha(kv.first)) - { - throw ValidationError("Unit must contain only letters."); - } - } - - // make all units lowercase if CASE_INSENSITIVE - if (opts & CASE_INSENSITIVE) - { - std::map lower_mapping; - for (auto& kv : mapping) - { - auto s = detail::to_lower(kv.first); - if (lower_mapping.count(s)) - { - throw ValidationError(std::string("Several matching lowercase unit representations are found: ") + - s); - } - lower_mapping[detail::to_lower(kv.first)] = kv.second; - } - mapping = std::move(lower_mapping); - } - } - - /// Generate description like this: NUMBER [UNIT] - template - static std::string generate_description(const std::string& name, Options opts) - { - std::stringstream out; - out << detail::type_name() << ' '; - if (opts & UNIT_REQUIRED) - { - out << name; - } - else - { - out << '[' << name << ']'; - } - return out.str(); - } - }; - - /// Converts a human-readable size string (with unit literal) to uin64_t size. - /// Example: - /// "100" => 100 - /// "1 b" => 100 - /// "10Kb" => 10240 // you can configure this to be interpreted as kilobyte (*1000) or kibibyte (*1024) - /// "10 KB" => 10240 - /// "10 kb" => 10240 - /// "10 kib" => 10240 // *i, *ib are always interpreted as *bibyte (*1024) - /// "10kb" => 10240 - /// "2 MB" => 2097152 - /// "2 EiB" => 2^61 // Units up to exibyte are supported - class AsSizeValue : public AsNumberWithUnit - { - public: - using result_t = std::uint64_t; - - /// If kb_is_1000 is true, - /// interpret 'kb', 'k' as 1000 and 'kib', 'ki' as 1024 - /// (same applies to higher order units as well). - /// Otherwise, interpret all literals as factors of 1024. - /// The first option is formally correct, but - /// the second interpretation is more wide-spread - /// (see https://en.wikipedia.org/wiki/Binary_prefix). - explicit AsSizeValue(bool kb_is_1000) : - AsNumberWithUnit(get_mapping(kb_is_1000)) - { - if (kb_is_1000) - { - description("SIZE [b, kb(=1000b), kib(=1024b), ...]"); - } - else - { - description("SIZE [b, kb(=1024b), ...]"); - } - } - - private: - /// Get mapping - static std::map init_mapping(bool kb_is_1000) - { - std::map m; - result_t k_factor = kb_is_1000 ? 1000 : 1024; - result_t ki_factor = 1024; - result_t k = 1; - result_t ki = 1; - m["b"] = 1; - for (std::string p : { "k", "m", "g", "t", "p", "e" }) - { - k *= k_factor; - ki *= ki_factor; - m[p] = k; - m[p + "b"] = k; - m[p + "i"] = ki; - m[p + "ib"] = ki; - } - return m; - } - - /// Cache calculated mapping - static std::map get_mapping(bool kb_is_1000) - { - if (kb_is_1000) - { - static auto m = init_mapping(true); - return m; - } - else - { - static auto m = init_mapping(false); - return m; - } - } - }; - - namespace detail - { - /// Split a string into a program name and command line arguments - /// the string is assumed to contain a file name followed by other arguments - /// the return value contains is a pair with the first argument containing the program name and the second - /// everything else. - inline std::pair split_program_name(std::string commandline) - { - // try to determine the programName - std::pair vals; - trim(commandline); - auto esp = commandline.find_first_of(' ', 1); - while (detail::check_path(commandline.substr(0, esp).c_str()) != path_type::file) - { - esp = commandline.find_first_of(' ', esp + 1); - if (esp == std::string::npos) - { - // if we have reached the end and haven't found a valid file just assume the first argument is the - // program name - esp = commandline.find_first_of(' ', 1); - break; - } - } - vals.first = commandline.substr(0, esp); - rtrim(vals.first); - // strip the program name - vals.second = (esp != std::string::npos) ? commandline.substr(esp + 1) : std::string{}; - ltrim(vals.second); - return vals; - } - - } // namespace detail - /// @} - -} // namespace CLI - -// From FormatterFwd.hpp: - -namespace CLI -{ - class Option; - class App; - - /// This enum signifies the type of help requested - /// - /// This is passed in by App; all user classes must accept this as - /// the second argument. - - enum class AppFormatMode - { - Normal, ///< The normal, detailed help - All, ///< A fully expanded help - Sub, ///< Used when printed as part of expanded subcommand - }; - - /// This is the minimum requirements to run a formatter. - /// - /// A user can subclass this is if they do not care at all - /// about the structure in CLI::Formatter. - class FormatterBase - { - protected: - /// @name Options - ///@{ - - /// The width of the first column - std::size_t column_width_{ 30 }; - - /// @brief The required help printout labels (user changeable) - /// Values are Needs, Excludes, etc. - std::map labels_{}; - - ///@} - /// @name Basic - ///@{ - - public: - FormatterBase() = default; - FormatterBase(const FormatterBase&) = default; - FormatterBase(FormatterBase&&) = default; - - /// Adding a destructor in this form to work around bug in GCC 4.7 - virtual ~FormatterBase() noexcept {} // NOLINT(modernize-use-equals-default) - - /// This is the key method that puts together help - virtual std::string make_help(const App*, std::string, AppFormatMode) const = 0; - - ///@} - /// @name Setters - ///@{ - - /// Set the "REQUIRED" label - void label(std::string key, std::string val) { labels_[key] = val; } - - /// Set the column width - void column_width(std::size_t val) { column_width_ = val; } - - ///@} - /// @name Getters - ///@{ - - /// Get the current value of a name (REQUIRED, etc.) - std::string get_label(std::string key) const - { - if (labels_.find(key) == labels_.end()) - return key; - else - return labels_.at(key); - } - - /// Get the current column width - std::size_t get_column_width() const { return column_width_; } - - ///@} - }; - - /// This is a specialty override for lambda functions - class FormatterLambda final : public FormatterBase - { - using funct_t = std::function; - - /// The lambda to hold and run - funct_t lambda_; - - public: - /// Create a FormatterLambda with a lambda function - explicit FormatterLambda(funct_t funct) : - lambda_(std::move(funct)) {} - - /// Adding a destructor (mostly to make GCC 4.7 happy) - ~FormatterLambda() noexcept override {} // NOLINT(modernize-use-equals-default) - - /// This will simply call the lambda function - std::string make_help(const App* app, std::string name, AppFormatMode mode) const override - { - return lambda_(app, name, mode); - } - }; - - /// This is the default Formatter for CLI11. It pretty prints help output, and is broken into quite a few - /// overridable methods, to be highly customizable with minimal effort. - class Formatter : public FormatterBase - { - public: - Formatter() = default; - Formatter(const Formatter&) = default; - Formatter(Formatter&&) = default; - - /// @name Overridables - ///@{ - - /// This prints out a group of options with title - /// - virtual std::string make_group(std::string group, bool is_positional, std::vector opts) const; - - /// This prints out just the positionals "group" - virtual std::string make_positionals(const App* app) const; - - /// This prints out all the groups of options - std::string make_groups(const App* app, AppFormatMode mode) const; - - /// This prints out all the subcommands - virtual std::string make_subcommands(const App* app, AppFormatMode mode) const; - - /// This prints out a subcommand - virtual std::string make_subcommand(const App* sub) const; - - /// This prints out a subcommand in help-all - virtual std::string make_expanded(const App* sub) const; - - /// This prints out all the groups of options - virtual std::string make_footer(const App* app) const; - - /// This displays the description line - virtual std::string make_description(const App* app) const; - - /// This displays the usage line - virtual std::string make_usage(const App* app, std::string name) const; - - /// This puts everything together - std::string make_help(const App* /*app*/, std::string, AppFormatMode) const override; - - ///@} - /// @name Options - ///@{ - - /// This prints out an option help line, either positional or optional form - virtual std::string make_option(const Option* opt, bool is_positional) const - { - std::stringstream out; - detail::format_help( - out, make_option_name(opt, is_positional) + make_option_opts(opt), make_option_desc(opt), column_width_); - return out.str(); - } - - /// @brief This is the name part of an option, Default: left column - virtual std::string make_option_name(const Option*, bool) const; - - /// @brief This is the options part of the name, Default: combined into left column - virtual std::string make_option_opts(const Option*) const; - - /// @brief This is the description. Default: Right column, on new line if left column too large - virtual std::string make_option_desc(const Option*) const; - - /// @brief This is used to print the name on the USAGE line - virtual std::string make_option_usage(const Option* opt) const; - - ///@} - }; - -} // namespace CLI - -// From Option.hpp: - -namespace CLI -{ - using results_t = std::vector; - /// callback function definition - using callback_t = std::function; - - class Option; - class App; - - using Option_p = std::unique_ptr